vsftpdでFTPを立てたCentOS 7のサーバに、iptablesとfail2banをインストールして不正攻撃を自動でブロックするまでの手順をメモ的に残しておきたいなと思います。
尚、前述していますようにOS側のファイアウォールとしてはCentOS 7で標準となった firewalld ではなく、とりあえず慣れ親しんだ iptables を利用していますのであしからず。またvsftpdのインストール手順については省いてますが、パッシブアドレスの範囲としてはとりあえず 4000-4500 としています。
iptablesのインストールと初期設定
まずは iptables をインストールしてOSファイアウォールを有効化するまでの作業を実施。 FTPでの接続ができるように事前にファイアウォールの設定まで行っておきます。
iptablesをインストールしてfirewalldを無効化。
下記手順で一旦全てのポリシーを削除してFTPのみ有効する綺麗サッパリした設定としておきます。
ファイアウォールの設定はここまで。
fail2banのインストールと設定
続いてfail2banをインストールします。
インストールはEPELリポジトリによるyumインストールを実施。必要に応じてepelリポジトリも追加インストールします。
既存の設定をオーバーライドすることができる /etc/fail2ban/jail.d/jail.local ファイルを新規で作成して vsftpd の監視を有効化します。
細かなオプションについての説明は省きますが、今回は下記を記載します。
[vsftpd] enabled = true
filter = vsftpd
action = iptables-multiport[name=vsftpd, port=ftp, protocol=tcp] logpath = /var/log/vsftpd.log
maxretry = 5
findtime = 1200
bantime = 300
保存後、fail2banを起動します。
状態を確認しvsftpdのみ対象となっていることを確認します。
vsftpdの監視状況を確認してみます。今のところはなにも無いはず。
ためしに攻撃してみる
とりあえずここまでで準備は完了なので試しに攻撃してみます。今回の設定では、適当なユーザーとパスワードでFTP接続を連続5回以上試みてみればOK。
攻撃後に状態を確認。
想定通り、攻撃元のグローバルIPをブロックしてます。
また念の為にiptablesも確認してみます。
iptablesでもブロックされていました!!