システム管理者にとって、セキュリティは継続的な闘争です。システムを不要な攻撃から保護するのに十分なセキュリティを確保する必要がありますが、ユーザーの生産性が妨げられるほどではないからです。バランスを保つのは難しいです。 「セキュリティが多すぎる」という苦情は常にありますが、システムが危険にさらされると、「十分なセキュリティがなかった」から「なぜより優れたセキュリティ制御を使用しなかったのか」という苦情が出てきます。闘争は本物です。侵入者の攻撃に対して効果的でありながら、ユーザーが一般的に自由な方法で操作できるように十分にステルスである、配置できるコントロールがあります。 Fail2banは、ブルートフォースやその他の自動化された攻撃からサービスを保護するための答えです。
注:Fail2banは、ユーザー名/パスワード認証を必要とするサービスを保護するためにのみ使用できます。たとえば、fail2banでpingを保護することはできません。
この記事では、ブルートフォース攻撃からSSHデーモン(SSHD)を保護する方法を示します。 fail2ban
のようにフィルターを設定できます システム上のほぼすべてのリスニングサービスを保護するために、それらを呼び出します。
インストールと初期設定
幸い、fail2ban
用のすぐにインストールできるパッケージがあります これには、システムのすべての依存関係が含まれます。
$ sudo dnf -y install fail2ban
fail2ban
を有効にして開始します 。
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban
fail2ban
に何らかの構文上の問題がない限り 構成では、標準の出力メッセージは表示されません。
次に、fail2ban
でいくつかの基本的なことを構成します システム自体に干渉することなくシステムを保護します。 /etc/fail2ban/jail.conf
をコピーします /etc/fail2ban/jail.local
へのファイル 。 jail.local
fileは、私たちが関心を持っている構成ファイルです。
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
/etc/fail2van/jail.local
を開きます お気に入りのエディターで次の変更を行うか、これらのいくつかのパラメーターが設定されていることを確認してください。設定ignoreip
を探します ロックアウトの可能性なしにアクセスできる必要があるすべてのIPアドレスをこの回線に追加します。デフォルトでは、ループバックアドレスと、保護されたシステムにローカルなすべてのIPアドレスを追加する必要があります。
ignoreip = 127.0.0.1/8 192.168.1.10 192.168.1.20
IPアドレスのネットワーク全体を追加することもできますが、これにより、fail2ban
を使用したい保護の多くが失われます。 にとって。今のところ、シンプルでローカルなものにしてください。 jail.local
を保存します ファイルを作成してfail2ban
を再起動します サービス。
$ sudo systemctl restart fail2ban
fail2ban
を再起動する必要があります 構成を変更するたび。
フィルタリングされたサービスの設定
fail2ban
の新規インストール あまり役に立たない。保護したいサービスには、いわゆるフィルターを設定する必要があります。ほとんどすべてのLinuxシステムはSSHでアクセス可能でなければなりません。システムのセキュリティを強化するためにSSHDを停止して無効にする状況がいくつかありますが、すべてのLinuxシステムでSSH接続が許可されていると思います。
誰もが知っているように、パスワードは優れたセキュリティソリューションではありません。しかし、それは私たちが生きる基準であることがよくあります。したがって、ユーザーまたは管理者のアクセスがSSHに制限されている場合は、SSHを保護するための手順を実行する必要があります。 fail2ban
を使用する SSHDでアクセス試行の失敗を「監視」し、その後の禁止を行うことは良いスタートです。
注:ユーザーのシステムへのアクセスを妨げる可能性のあるセキュリティ制御を実装する前に、失敗したログイン試行がしきい値設定を超えた場合、この新しい制御が10分間(または決定した期間)システムからユーザーをロックアウトする可能性があることをユーザーに通知してください。
フィルタリングされたサービスを設定するには、/etc/fail2ban/jail.d
の下に対応する「jail」ファイルを作成する必要があります。 ディレクトリ。 SSHDの場合、sshd.local
という名前の新しいファイルを作成します それにサービスフィルタリングの指示を入力します。
[sshd]
enabled = true
port = ssh
action = iptables-multiport
logpath = /var/log/secure
maxretry = 3
bantime = 600
[sshd]を作成します 見出しを入力し、上記の設定を開始点として入力します。ほとんどの設定は一目瞭然です。直感的にわかりにくい2つの場合、「アクション」設定は、fail2ban
で必要なアクションを表します。 違反の場合に取る。私たちにとって、fail2ban
iptables
を使用します 問題のあるシステムのIPアドレスを600秒(10分)の「禁止時間」で禁止します。
もちろん、ニーズに合わせてこれらの設定を変更することもできます。 10分は、ボットまたはスクリプトが安全性の低いホストに「移動」するのに十分な長さのようです。ただし、パスワードを3回以上間違えたユーザーを遠ざけるのに10分もかかりません。
設定に問題がなければ、fail2ban
を再起動します サービス。
禁止はどのように見えるか
保護されたシステム(192.168.1.83)では、tail
/var/log/fail2ban.log
現在の禁止措置を確認します。
2020-05-15 09:12:06,722 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:06
2020-05-15 09:12:07,018 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:07
2020-05-15 09:12:07,286 fail2ban.actions [25417]: NOTICE [sshd] Ban 192.168.1.69
2020-05-15 09:22:08,931 fail2ban.actions [25417]: NOTICE [sshd] Unban 192.168.1.69
IPアドレス192.168.1.69が09:12に禁止され、10分後の09:22に禁止が解除されたことがわかります。
リモートシステム192.168.1.69では、禁止アクションは次のようになります。
$ ssh 192.168.1.83
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ ssh 192.168.1.83
ssh: connect to host 192.168.1.83 port 22: Connection refused
禁止される前に、パスワードを3回間違って入力したことがわかります。禁止されたユーザーは、明示的に通知されない限り、ターゲットシステムに到達できなくなった理由を知りません。 fail2ban
フィルタはサイレント禁止アクションを実行します。リモートユーザーには説明がなく、禁止が解除されたときにユーザーに通知されることもありません。
システムの禁止を解除する
必然的に、システムが禁止され、すぐに禁止を解除する必要があります。つまり、禁止期間が終了するのを待つことはできません。次のコマンドは、システムの禁止をすぐに解除します。
$ sudo fail2ban-client set sshd unbanip 192.168.1.69
このコマンドを発行した後、fail2banデーモンを再起動する必要はありません。
まとめ
これが基本的にfail2ban
の方法です 動作します。フィルタを設定し、条件が満たされると、リモートシステムが禁止されます。長期間禁止することができ、システムを保護するために複数のフィルターを設定することができます。 fail2ban
であることを忘れないでください は単一のソリューションであり、他の脆弱性からシステムを保護するものではありません。セキュリティに対する階層化された多面的なアプローチは、追求したい戦略です。十分なセキュリティを提供する単一のソリューションはありません。
他のフィルターといくつかの高度なfail2ban
の例を見つけることができます fail2ban.orgで説明されている実装。
[セキュリティについてもっと知りたいですか? ITセキュリティとコンプライアンスのチェックリストを確認してください。 ]