偽のスプーフィング IP からの大量のログイン失敗を防ぐには?

偽のスプーフィング IP からの大量のログイン失敗を防ぐには?

私のシステム ログ ファイル (/var/log/auth.log) には、システムにログインしようとしている何百もの異なる IP アドレスが表示されています。これらすべての攻撃を防ぐにはどうすればよいですか? すべての IP アドレスが偽物 (「pin」または「traceroute」) のようですが、auth.log ファイルには常に何百もの異なる IP アドレスが表示されます。

本当に助けが必要です! ありがとう!

他の人が提案しているのを読んでいます

  • StrictModes はい (これは何をするのでしょうか?)
  • hosts.allow ALL : (IP アドレスがカフェからのもので、それが「私私」である場合、接続が許可されますか?)

私のファイアウォールの「iptables」は次のようになります。

asher@starparty:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

他の人が推奨していると読んでいますが...

  • iptables -I 入力 -s -p tcp -m tcp --dport 22 -j 受け入れる

SSH リモート ログイン出力の例: "tail /var/log/auth.log"

Dec  3 21:24:31 StarParty sshd[66702]: Failed password for root from 51.210.122.207 port 45722 ssh2
Dec  3 21:24:32 StarParty sshd[66702]: Received disconnect from 51.210.122.207 port 45722:11: Bye Bye [preauth]
Dec  3 21:24:32 StarParty sshd[66702]: Disconnected from authenticating user root 51.210.122.207 port 45722 [preauth]
Dec  3 21:24:38 StarParty sshd[66712]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:24:40 StarParty sshd[66712]: Failed password for root from 150.158.171.64 port 55444 ssh2
Dec  3 21:24:41 StarParty sshd[66721]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=142.93.34.237  user=root
Dec  3 21:24:41 StarParty sshd[66712]: Received disconnect from 150.158.171.64 port 55444:11: Bye Bye [preauth]
Dec  3 21:24:41 StarParty sshd[66712]: Disconnected from authenticating user root 150.158.171.64 port 55444 [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Failed password for root from 142.93.34.237 port 58226 ssh2
Dec  3 21:24:44 StarParty sshd[66721]: Received disconnect from 142.93.34.237 port 58226:11: Bye Bye [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Disconnected from authenticating user root 142.93.34.237 port 58226 [preauth]
Dec  3 21:25:00 StarParty sshd[66728]: Unable to negotiate with 218.92.0.212 port 45440: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 [preauth]
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session closed for user root
Dec  3 21:25:26 StarParty sshd[66776]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:25:27 StarParty sshd[66776]: Failed password for root from 150.158.171.64 port 33534 ssh2
Dec  3 21:25:30 StarParty sshd[66776]: Received disconnect from 150.158.171.64 port 33534:11: Bye Bye [preauth]
Dec  3 21:25:30 StarParty sshd[66776]: Disconnected from authenticating user root 150.158.171.64 port 33534 [preauth]

「tcpdump -A」

curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256...Arsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,[email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1....none,[email protected],[email protected].......................
21:27:59.780431 IP 46.101.194.220.40238 > starparty.ssh: Flags [.], ack 1098, win 501, options [nop,nop,TS val 431378467 ecr 1031716663], length 0
21:27:59.781114 IP 46.101.194.220.40238 > starparty.ssh: Flags [P.], seq 22:462, ack 1098, win 501, options [nop,nop,TS val 431378471 ecr 1031716663], length 440
[email protected],ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1...#ecdsa-sha2-nistp256,ssh-rsa,ssh-dss...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...   hmac-sha1...    hmac-sha1....none....none......
21:27:59.781131 IP starparty.ssh > 46.101.194.220.40238: Flags [.], ack 462, win 507, options [nop,nop,TS val 1031716853 ecr 431378471], length 0
21:27:59.983564 STP 802.1d, Config, Flags [none], bridge-id 8000.14:cc:20:b5:54:68.8003, length 35

私が見つけた他の助けは... https://help.ubuntu.com/community/IptablesHowTo

答え1

Fail2Banプログラムを試すことができますhttps://www.fail2ban.org/wiki/index.php/Main_Page

これにより、失敗したログイン試行からソース IP が自動的にブロックされます。

非常にうまく機能しており、設定するためのオプションも多数あります。たとえば、禁止されるまでの試行回数や禁止期間などです。

しかし、本当に全世界に SSH を開放したいのかどうかを検討する必要があります。マシンがインターネットに直接接続されている場合、デフォルトですべてがブロックされるファイアウォールを使用することをお勧めします。そして、開放する必要がある IP からの SSH のみを開放します。

答え2

SSH を世界に公開することで生じるセキュリティ リスクを排除できる方法がいくつかあります。

  • Fail2ban (すでに説明済み) は優れています。ファイアウォールで永続的に、または一定時間だけブロックすることをサポートします。

  • SSH を 8000 以上の奇妙な高レベル ポートで実行します。これによって何も停止することはありませんが、ほとんどのスクリプト キディがポート 22 をプローブするため、トラフィックが大幅に減少します。

  • sshd_config の PermitRootLogin が Yes の値で実行されていないことを確認します。SSH 経由でルート ログインを行う必要はありません。通常のユーザーとして ssh でログインしてから su を実行できます。この方法では、管理者アクセスを取得するのに 2 つのパスワードが必要です (通常のユーザーが sudo 権限を持っている Ubuntu または類似のシステムでない限り)。

  • 二要素認証を検討してください。これは、Duo などの市販製品、または Google 認証システムなどを使用して実行できます。設定手順はベンダーから提供されます。

  • ログインが成功したときに電子メールが送信されるようにします。これにより、ハッカーが安全策を破る前に、アクセスがあったかどうかをすぐに知ることができます。これを行うには、次のようなセッション ラインを /etc/pam.d/sshd に追加する必要があります。

    セッションが必要です pam_exec.so /root/scripts/send-ssh-notice.sh

    変数の詳細を提供できるスクリプトのサンプルがあり、github で入手できます。Github でホストされている sshlogin_alert.sh

    (はい、私は回答にリンクを提供しました。なぜそうしないのでしょうか? Github コードはメンテナンスされており、フォークをサポートし、良好なフィードバックを得ています。私が投稿した回答は、今後数か月または数年にわたって私が再検討することはありません。さらに、正当な場合はクレジットを与えるべきであり、この Github ユーザーは良い仕事をしました。)

答え3

悲しい…本当に悲しい?

「sshd サーバーを停止」する必要があるだけでしょうか?

:(

おそらく、追加のソフトウェアをインストールせずに「シンプルな」方法があるのでしょうか?

これはまだ問題を解決していませんが、正しい方向に向かっていると思いますか?

sudo gedit /etc/ssh/ssh_config 
sudo systemctl restart ssh.service

「ssh_config」は次のようになります...

Include /etc/ssh/ssh_config.d/*.conf

Host *
# PermitRootLogin no
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
Port 22
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected]
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes

「iptable」に何らかの変更を加えることも可能でしょうか?

関連情報