Project

General

Profile

ssh認証失敗に対する設定

sshへの辞書攻撃で発生するssh認証失敗に対する設定を行います。

設定

ssh攻撃へのログ監視設定のポリシーはデフォルトで下記の場所にあります。
sshdのログのパスやログ形式をカスタマイズしていなければ、そのまま利用することができると思います。

  • /etc/fail2ban/filter.d/sshd.conf
    特定の文字列を検出時にレコードを無視する場合、下記に設定を行う。
    ignoreregex = 
    ↓
    ignoreregex = .*(文字列1|文字列2)
    

次のアクセス制限の設定を行います。以下のファイルに追記していきます。

  • /etc/fail2ban/filter.d/jail.local
    [ssh-iptables]
    enabled  = true
    filter   = sshd
    action   = iptables[name=SSH, port=ssh, protocol=tcp]
               sendmail-whois[name=SSH, dest=root, sender=fail2ban@localhost, sendername="Fail2Ban-SSH"]
    logpath  = /var/log/secure
    bantime  = 10800
    maxretry = 3
    

    ここでは「ssh-iptables」という名前で設定を作り有効化します。
    フィルタは前述の「filter.d/sshd.conf」を使用します。
    iptablesでポリシーを追加する際に使用する「名前、ポート、プロトコル」を指定します。
    次の行では、banした際に送信するメールの名前、送り先、送信者アドレス、送信者名を指定します。
    次に監視するログのパス、banする時間(10800=1時間)、banするまでの試行回数を指定します。

設定の有効化

fail2ban設定を再読み込みします。

# systemctl reload fail2ban

動作確認

iptablesにポリシーが追加されていることを確認します。

# iptables -L -n
Chain f2b-SSH (1 references)
target     prot opt source               destination
REJECT     all  --  xxx.xxx.xxx.xxx      0.0.0.0/0           reject-with icmp-port-unreachable
……
…
RETURN     all  --  0.0.0.0/0            0.0.0.0/0