BLOGTIMES
«Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
2021/02/28

Windows には OpenSSH が標準で入っている?

windows10  cli  ssh 
ssh - Windows には OpenSSH が標準で入っている?

Windows のコマンドプロンプトにいつものクセで ssh と打ち込んでしまったら、なぜか反応があってびっくり。最近の Windows 10 には curl や tar など Linux でよく使われるコマンドが標準搭載されていますが、いつのまにか OpenSSH も標準搭載されていたようです。

システムのフォルダを探してみると C:\Windows\System32\OpenSSH にインストールされているみたいですね。scp 等もあるので、簡単な作業の場合には PuTTY や WinSCP などをインストールせずにこれだけで済ませることもできそうです。


    at 22:23 |
    2021/02/28

    CentOS 8 へのブルートフォースアタックを SSHGuard で防御

    ssh  centos8  firewalld 

    SSH に対する攻撃の対策については iptables でやるのであれば昔は ipt_recent、最近は hashlimit を使ったりするようですが、単純なレートリミットだと正常なログインでも引っかかってしまう可能性があるので 今回は SSHGuard をインスト-ルしてみました。

    SSHGuard はログを監視して ssh に関するログインの失敗が一定以上ある IP を自動的に一定期間ブロック(場合によっては永久にブロック)するという機能を持ったdaemon です。機能的には fail2ban とかと同じカテゴリのソフトウェアです。

    インストールから起動まで

    メインの設定ファイル /etc/sshguard.confdnf でインストールしただけでは作成されないので、man sshguard-setup の内容を参考に自分で設定する必要があります。CentOS 8(パケットフィルタは firewalld、ログの監視先はjournalctl という構成)の場合には、以下のような感じでセットアップすることができるはずです。sshguard.whitelistの IP アドレス等は適当に調整してください。

    # install package dnf -y install sshguard # create conf cp /usr/share/doc/sshguard/examples/sshguard.conf.sample /etc/sshguard.conf cp -a /etc/sshguard.whitelist{,.org} # change conf pushd /etc patch -p2 <<'EOF' --- /etc/sshguard.whitelist.org 2020-08-02 14:53:08.000000000 +0900 +++ /etc/sshguard.whitelist 2021-02-28 16:20:01.621414766 +0900 @@ -5,9 +5,9 @@ #2001:0db8:85a3:08d3:1319:8a2e:0370:7344 # address blocks in CIDR notation -#127.0.0.0/8 +127.0.0.0/8 #10.11.128.0/17 -#192.168.0.0/24 +192.168.0.0/16 # hostnames #rome-fw.enterprise.com EOF patch -p2 <<'EOF' --- /usr/share/doc/sshguard/examples/sshguard.conf.sample 2018-12-16 11:41:51.000000000 +0900 +++ /etc/sshguard.conf 2021-03-02 09:22:13.490714460 +0900 @@ -6,14 +6,14 @@ #### REQUIRED CONFIGURATION #### # Full path to backend executable (required, no default) -#BACKEND="/usr/local/libexec/sshg-fw-iptables" +BACKEND="/usr/libexec/sshguard/sshg-fw-firewalld" # Space-separated list of log files to monitor. (optional, no default) -#FILES="/var/log/auth.log /var/log/authlog /var/log/maillog" +#FILES="/var/log/secure" # Shell command that provides logs on standard output. (optional, no default) # Example 1: ssh and sendmail from systemd journal: -#LOGREADER="LANG=C /usr/bin/journalctl -afb -p info -n1 -t sshd -t sendmail -o cat" +LOGREADER="LANG=C /usr/bin/journalctl -afb -p info -n1 -t sshd -t sendmail -o cat" # Example 2: ssh from os_log (macOS 10.12+) #LOGREADER="/usr/bin/log stream --style syslog --predicate '(processImagePath contains \"sshd\")'" @@ -24,17 +24,17 @@ # Block attackers for initially BLOCK_TIME seconds after exceeding THRESHOLD. # Subsequent blocks increase by a factor of 1.5. (optional, default 120) -BLOCK_TIME=120 +BLOCK_TIME=300 # Remember potential attackers for up to DETECTION_TIME seconds before # resetting their score. (optional, default 1800) -DETECTION_TIME=1800 +DETECTION_TIME=86400 # Size of IPv6 'subnet to block. Defaults to a single address, CIDR notation. (optional, default to 128) IPV6_SUBNET=128 # Size of IPv4 subnet to block. Defaults to a single address, CIDR notation. (optional, default to 32) -IPV4_SUBNET=32 +IPV4_SUBNET=24 #### EXTRAS #### # !! Warning: These features may not work correctly with sandboxing. !! @@ -44,8 +44,8 @@ # Colon-separated blacklist threshold and full path to blacklist file. # (optional, no default) -#BLACKLIST_FILE=90:/var/lib/sshguard/enemies +BLACKLIST_FILE=60:/var/lib/sshguard/enemies # IP addresses listed in the WHITELIST_FILE are considered to be # friendlies and will never be blocked. -#WHITELIST_FILE=/etc/friends +WHITELIST_FILE=/etc/sshguard.whitelist EOF popd # enable/start daemon systemctl enable --now sshguard.service

    動作確認

    SSHGuard はバックエンドが firewalld の場合、対象となるログを監視して、一定の閾値を超えた場合にsshguard4/sshguard6という名前のブラックリスト用 ipset に IP アドレスを追加するという動作を行います。よって、フィルタがきちんと動作するためには firewalld から sshguard4/sshguard6 がきちんと参照されているかということと、sshguard4/sshguard6 が SSHGuard によってきちんと読み書きされていることが必要になります。

    前者については、以下のコマンドの rich rules: 欄を見ると確認ができます。

    # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv6" source ipset="sshguard6" drop rule family="ipv4" source ipset="sshguard4" drop

    後者については例えばログを見てみたときに以下のようなログ(999.999.999.999は例なので、実際には攻撃元の IP が入ります)が残っていれば SSHGuard が実際にログを読み取って処理を行っていることが分かります(ただし、これは実際に攻撃を受けないといけませんが)。

    # journalctl -u sshguard Feb 28 16:58:51 sshhost.example.com sshguard[57453]: Attack from "999.999.999.999" on service SSH with danger 2. Feb 28 16:58:51 sshhost.example.com sshguard[57453]: Attack from "999.999.999.999" on service SSH with danger 2. Feb 28 16:59:23 sshhost.example.com sshguard[57453]: Attack from "999.999.999.999" on service SSH with danger 2. Feb 28 16:59:23 sshhost.example.com sshguard[57453]: Blocking "999.999.999.999/32" for 120 secs (3 attacks in 32 secs, after 1 abuses over 32 secs.)

    さらに、実際にブロックが行われていれば、以下のように ipset を使って登録されている IP アドレスを見ることができます。

    # ipset list sshguard4 Name: sshguard4 Type: hash:net Revision: 6 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 440 References: 0 Number of entries: 1 Members: 999.999.999.999

      at 17:56 |
      2021/02/27

      IIJmio が 4 月からの新プラン「ギガプラン」をスタート

      iij  mvno 

      音声通話がついたプランの場合、現行で最も廉価なのはミニマムスタートプランの 3GB で 1,600 円ですが、これがギガプランになると 2GB で 780円 と半額以下になります。

      既存ユーザーのギガプランへの変更は 4/1 受け付け開始、最短で 5/1 からのプラン変更反映となるようです。これはシステム的な都合もあるようで、その分の埋め合わせのための先行受付キャンペーンをやるみたいです。僕はもともとモバイルの通信容量はあまり使っていないので、780 円のプランに乗り換える予定です。

      IIJmio:シンプルで自由度の高い新プラン「IIJmioモバイルサービス ギガプラン」を提供開始

      さて、この度弊社では、2021年4月1日より新プラン「ギガプラン」を提供開始いたします。
      あわせて、既存のIIJmioモバイルサービス(ミニマムスタートプラン、ライトスタートプラン、ファミリーシェアプラン、ケータイプラン)で音声回線をご利用のお客様を対象に、3月1日より先行エントリーキャンペーンを実施いたします。


        at 22:19 |
        2021/02/27

        確定申告が完了してた

        etax  nta  アパート経営 
        確定申告完了報告 - 確定申告が完了してた

        忙しくてメールを見落としていましたが、今年も早々に税理士さんが確定申告を済ませてくれていました。

        今期は結構な税額に・・・

        昨年は物件の修繕も少なくて稼働率も高かったので、予想よりもだいぶ黒字が大きくなってしまい、そのぶん所得税も高くなってしまいましたが、これはもう調整しようがないのでしょうがないですね。こういう状況で、交通費も交際費もほとんど使えませんでしたし。。。


          at 16:35 |
          2021/02/26

          シン・エヴァンゲリオン劇場版は 3/8 公開に

          anime 

          1月に再延期が発表されていたシン・エヴァンゲリオン劇場版の公開日が 3/8 に決まったようです。

          相変わらず緊急事態宣言の状況下ですが、今度こそ無事公開になることを期待したいと思います。


            at 20:32 |

            ドコモや au が MNP や解約 ページに noindex を設定していたことが問題に

            docomo  au 

            ドコモや au が MNP や解約 ページに noindex を設定していたことがニュースになっていたのでメモ。

            この設定については現在は削除されているようです。
            ちょっとセコい感じもしますが、スイッチングコストを高くするのは作戦の一環なのでしょうがないのかなという感じもします。

            解約ページ/MNP転出ページに検索サイト避けの「noindex」――総務省指摘でドコモとKDDIがタグ削除 - ケータイ Watch

            NTTドコモとauは、解約やMNP転出手続の方法を紹介するWebページ内に付与していた「noindex」タグを削除した。総務省の「スイッチング円滑化タスクフォース」での事業者間協議で指摘されていたもの。「noindex」タグが付与されていることで、検索サイトにこれらのページが表示されないようになっていた。


              at 19:38 |
              2021/02/25

              SoftEther を CentOS 8 にインストール

              softether  centos8 

              久しぶりに SoftEther を CentOS 8 にインストールしてみました。
              これも Dokcer 化しても良かったのですが、ネットワーク周りとかいろいろと面倒なことになりそうなので、これは直接に VM にインストールしてしまうことにしました。

              手順としてはこんな感じでしょうか。

              dnf -y groupinstall "Development Tools" dnf -y install readline-devel ncurses-devel openssl-devel wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz tar zxvf softether-vpnserver-v4.27-9668-beta-2018.05.29-linux-x64-64bit.tar.gz chmod 700 vpnserver pushd vpnserver make i_read_and_agree_the_license_agreement cat << EOS > ./adminip.txt 192.168.0.0/16 EOS popd mv vpnserver /usr/local/bin cat << EOS > /etc/systemd/system/softether.service [Unit] Description=SoftEther VPN Server After=network.target [Service] Type=forking ExecStart=/usr/local/vpnserver/vpnserver start ExecStartPre=/sbin/ip link set dev ens224 arp off promisc on ExecStop=/usr/local/vpnserver/vpnserver stop [Install] WantedBy=multi-user.target EOS systemctl daemon-reload systemctl enable softether.service systemctl status softether.service cat << EOS > /etc/firewalld/services/softether.xml <service> <short>Softether</short> <description>Softether VPN Server</description> <port protocol="tcp" port="443"/> <port protocol="tcp" port="5555"/> <port protocol="udp" port="443"/> <port protocol="udp" port="5555"/> </service> EOS firewall-cmd --reload firewall-cmd --add-service=softether firewall-cmd --runtime-to-permanent nmcli connection show ens224 connection.zone nmcli connection up ens224

              AES-NI に対応させるとか、リージョンロックを外すとか

              上記だけでも普通に使うことはできますが、スマートカードとか証明書対応したい場合にはさらに以下の手順が必要です。

              最近の OpenSSL は AES-NI が有効になっているので、もしかしたら以前やっていた AES-NI 対応は意味がないかもしれません。ちなみに Intel のライブラリは CPUID で GenuineIntel かどうかを見ているので、CPU が AMD の場合には AuthenticAMD を認識できるようにしてやる必要もあります。

              具体的な手順としては以下のような感じになります。

              wget https://software.intel.com/sites/default/files/article/181731/intel-aesni-sample-library-v1.2.zip wget https://jp.softether-download.com/files/softether/v4.34-9744-beta-2020.03.20-tree/Source_Code/softether-src-v4.34-9744-beta.tar.gz wget https://raw.githubusercontent.com/el1n/OpenWRT-package-softether/master/softethervpn/patches/102-regionunlock.patch unzip intel-aesni-sample-library-v1.2.zip cat << EOS >./intel_aes_lib.patch --- Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c.org 2010-10-01 17:37:14.000000000 -0400 +++ Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c 2021-02-20 04:49:34.126103061 -0500 @@ -293,17 +293,30 @@ * ECX = 'l' 'e' 't' 'n' */ +// See: https://github.com/rrnewton/intel-aes/blob/master/cbits/Intel_AESNI_Sample_Library_v1.0/intel_aes_lib/src/intel_aes.c +// AuthenticAMD + + int intel = 1; + int amd = 1; if (memcmp((unsigned char *)&cpuid_results[1], "Genu", 4) != 0 || memcmp((unsigned char *)&cpuid_results[3], "ineI", 4) != 0 || memcmp((unsigned char *)&cpuid_results[2], "ntel", 4) != 0) - return no; + intel = 0; - __cpuid(cpuid_results,1); + if (memcmp((unsigned char *)&cpuid_results[1], "Auth", 4) != 0 || + memcmp((unsigned char *)&cpuid_results[3], "enti", 4) != 0 || + memcmp((unsigned char *)&cpuid_results[2], "cAMD", 4) != 0) + amd = 0; - if (cpuid_results[2] & AES_INSTRCTIONS_CPUID_BIT) - return yes; + if (intel || amd) + { + __cpuid(cpuid_results,1); - return no; + if (cpuid_results[2] & AES_INSTRCTIONS_CPUID_BIT) + return yes; + } + else + return no; } EOS sed -i "s/\r//g" Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c patch -p0 --ignore-whitespace < intel_aes_lib.patch pushd ./Intel_AESNI_Sample_Library_v1.2/intel_aes_lib ./mk_lnx_lib64.sh popd cat << EOS > ./enable_aesni.patch --- src/makefiles/linux_64bit.mak.org 2021-02-20 03:15:08.467625594 -0500 +++ src/makefiles/linux_64bit.mak 2021-02-20 03:15:57.523605859 -0500 @@ -66,9 +66,9 @@ OPTIONS_LINK_DEBUG=-g -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz -OPTIONS_COMPILE_RELEASE=-DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 +OPTIONS_COMPILE_RELEASE=-DUSE_INTEL_AESNI_LIBRARY -DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 -OPTIONS_LINK_RELEASE=-O2 -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz +OPTIONS_LINK_RELEASE=-O2 ../Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64/intel_aes64.a -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz INSTALL_BINDIR=/usr/bin/ INSTALL_VPNSERVER_DIR=/usr/vpnserver/ EOS tar zxvf softether-src-v4.34-9744-beta.tar.gz cd v4.34-9744/ patch -p1 < ../102-regionunlock.patch patch -p0 < ../enable_aesni.patch ./configure make cp -af ./bin/vpnserver/* /usr/local/vpnserver systemctl restart softether.service

                at 21:56 |

                logspout を使って Docker のログを集約してみる

                docker 
                logspout - logspout を使って Docker のログを集約してみる

                ログサーバができたので、あとはログを投げ込むだけですが Dokcer のコンテナ1つ1つにログ用の設定を入れていくのも大変なので、何か良い方法がないかと思って調べてみたらコンテナのログを集約して投げ込んでくれる gliderlabs/logspout というものを見つけました。

                これを使うと /var/run/docker.sock をマウントする必要があるものの、個別のコンテナの設定を変更することなく、ログサーバに stdout/stderr の内容を送ることが可能になります。これを Docker のホストにつき1つずつ起動させておけば OK です。

                ファイル構成

                docker-logspout/  ├ docker-compose.yml  └ logspout/    └ Dockerfile


                  at 01:08 |
                  2021/02/24

                  Dokcer で Elasticsearch + Kibana + Logstash を立ててみた

                  docker  elasticsearch 

                  既存環境の Docker 化は ntp, DNS, gitbucket, svn, redmine, リバースプロキシと一通り揃ってきたので、最後にログサーバを立てていくことにします。

                  これまでログ集約用のサーバは rsyslogを立てていましたが、ログの内容をチェックするのがやはり面倒くさいということで、可視化もできる Elasticsearch + Kibana + Logstash という構成に移行することにしました。

                  Elasticsearch + Kibana は最近あまり使っていなかったのですが、いつの間にかちゃんと画面にパスワードが設定できるようになっていたんですね。Logstash もフィルタであれこれできそうなので良い感じです。

                  ファイル構成

                  docker-es-kibana-logstash/  ├ docker-compose.yml  └ pipeline/    └ logstash.conf


                    at 22:46 |
                    2021/02/23

                    Firefox の HTTP/3 を有効にしてみる

                    firefoxquantum  http3 
                    Firefox 86 の HTTP/3 - Firefox の HTTP/3 を有効にしてみる

                    せっかく HTTP/3 に対応したサーバを立てたので、僕が普段使っているFirefox の HTTP/3 を有効にしてみました。

                    以下の説明だと nightly でないとできない感じですが、現行の Firefox 86 でも about:confignetwork.http.http3.enabledtrue にすることで有効化することができました。

                    How to test HTTP/3 and QUIC with Firefox Nightly

                    Then open Firefox and enable HTTP/3 by visiting "about:config" and setting "network.http.http3.enabled" to true.


                      at 22:12 |
                      «Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»