web-dev-qa-db-ja.com

SSHブルートフォース攻撃への対応方法

最近、OSSEC HIDSから、SSHDブルートフォース攻撃について警告する通知を受け取りました。以下に、完全を期すためにメッセージ全体を報告します。

OSSEC HIDS Notification.
2020 Mar 03 12:00:17

Received From: Commodore->/var/log/auth.log
Rule: 5712 fired (level 10) -> "SSHD brute force trying to get access to the system."
Src IP: 188.166.xxx.xxx
Portion of the log(s):

Mar  3 12:00:16 Commodore sshd[21661]: Disconnected from invalid user www 188.166.xxx.xxx port 45788 [preauth]
Mar  3 12:00:16 Commodore sshd[21661]: Invalid user www from 188.166.xxx.xxx port 45788
Mar  3 11:59:53 Commodore sshd[21204]: Disconnected from invalid user weblogic 188.166.xxx.xxx port 34582 [preauth]
Mar  3 11:59:53 Commodore sshd[21204]: Invalid user weblogic from 188.166.xxx.xxx port 34582
Mar  3 11:59:08 Commodore sshd[21198]: Disconnected from invalid user stack 188.166.xxx.xxx port 40352 [preauth]
Mar  3 11:59:08 Commodore sshd[21198]: Invalid user stack from 188.166.xxx.xxx port 40352
Mar  3 11:58:28 Commodore sshd[21193]: Disconnected from invalid user jira 188.166.xxx.xxx port 46186 [preauth]
Mar  3 11:58:28 Commodore sshd[21193]: Invalid user jira from 188.166.xxx.xxx port 46186

マシンへのSSHアクセスを強化するために、公開鍵をVPSにアップロードし、SSHパスワード認証を無効にしました。まとめると、/etc/ssh/sshd_config 次のように:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
Banner none
AllowTcpForwarding no
GatewayPorts no
AddressFamily inet

現在、私のiptablesルールは:

-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

私は経験豊富な管理者ではないので、この種の攻撃に対してどのような対応を期待するかを教えていただければ幸いです。私のsshdとファイアウォールの設定は十分ですか、それとも188.166.xxx.xxx IPアドレスをブロックするなどの追加のアクションが必要ですか?

5
Asarluhi

fail2banを使用できます。試行回数が多すぎると、一時的にIPアドレスがブロックされます。

これを確認できます: buntu Server 18.04にfail2banをインストールする方法 。他のバージョンでも動作します。

5

Iptablesのrecentモジュールを使用して、悪者を自動的に識別して禁止できます。ただし、近年、大手プレーヤー(主に中国)が同じサブネット上の別のIPアドレスに切り替えて攻撃を続けているため、任意のビットマスクでブロックしています。 (付随的な損傷は気にしませんが、他の人はそうかもしれません。)実際、私は現在ipsecを使用して中国全体をブロックしていますが、それは別の問題です。 iptablesルールの例:

# Dynamic Badguy List. Detect and DROP Bad IPs that do password attacks on SSH.
# Once they are on the BADGUY list then DROP all packets from them.
# Sometimes make the lock time very long. Typically to try to get rid of coordinated attacks from China.
$IPTABLES -A INPUT -i $EXTIF -m recent --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
$IPTABLES -A INPUT -i $EXTIF -m recent --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m recent --mask $BIT_MASK --set --name BADGUY_SSH -j ACCEPT

これらのルールがどこかでこれによって先行された場合:

# Allow any related traffic coming back to the server in.
#
#
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT

そして私の場合:

#Arbitrary bit mask for the automatic IP blocking stuff (v2.08)
#
BIT_MASK="255.255.252.0"

接続ごとのログイン試行回数を減らすために、/etc/ssh/sshd_configファイルに他の1つの変更を加えることにも注意してください。

#Smythies.com
#Limit the number of bad passwords per connection to 2. Default is 6.
#Then the iptables connection counter will kick in sooner to drop
#password attack hackers.
MaxAuthTries 2
3
Doug Smythies