CentOS 7

  (最終更新日:2020.02.13)

【vsftpdを守る】CentOS 7にfail2banをインストールする手順(iptables版)

vsftpdでFTPを立てたCentOS 7のサーバに、iptablesとfail2banをインストールして不正攻撃を自動でブロックするまでの手順をメモ的に残しておきたいなと思います。

尚、前述していますようにOS側のファイアウォールとしてはCentOS 7で標準となった firewalld ではなく、とりあえず慣れ親しんだ iptables を利用していますのであしからず。またvsftpdのインストール手順については省いてますが、パッシブアドレスの範囲としてはとりあえず 4000-4500 としています。

iptablesのインストールと初期設定

まずは iptables をインストールしてOSファイアウォールを有効化するまでの作業を実施。 FTPでの接続ができるように事前にファイアウォールの設定まで行っておきます。

iptablesをインストールしてfirewalldを無効化。

$ yum install iptables-services
$ systemctl stop firewalld
$ systemctl disable firewalld
$ systemctl status firewalld

下記手順で一旦全てのポリシーを削除してFTPのみ有効する綺麗サッパリした設定としておきます。

$ iptables -F
$ iptables -L
  全てのポリシーが削除されていることを確認。
$ iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$ iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
$ iptables -A INPUT -p tcp -m tcp --dport 4000:4500 -j ACCEPT
$ iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -P INPUT DROP
$ iptables -P OUTPUT ACCEPT
$ service iptables save
$ iptables -L
  FTP(ポート21とパッシブ用ポート4000~4500)が許可されている事を確認
$ systemctl enable iptables.service
$ systemctl start iptables

ファイアウォールの設定はここまで。

fail2banのインストールと設定

続いてfail2banをインストールします。

インストールはEPELリポジトリによるyumインストールを実施。必要に応じてepelリポジトリも追加インストールします。

$ yum install epel-release   ←  必要に応じて実施
$ yum install fail2ban fail2ban-systemd

既存の設定をオーバーライドすることができる /etc/fail2ban/jail.d/jail.local ファイルを新規で作成して vsftpd の監視を有効化します。

$ vi /etc/fail2ban/jail.d/jail.local

細かなオプションについての説明は省きますが、今回は下記を記載します。

[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を起動します。

$ systemctl start fail2ban

状態を確認しvsftpdのみ対象となっていることを確認します。

$ fail2ban-client status

Status
|- Number of jail:      1
`- Jail list:   vsftpd

vsftpdの監視状況を確認してみます。今のところはなにも無いはず。

$ fail2ban-client status vsftpd

Status for the jail: vsftpd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches: 
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list: 

ためしに攻撃してみる

とりあえずここまでで準備は完了なので試しに攻撃してみます。今回の設定では、適当なユーザーとパスワードでFTP接続を連続5回以上試みてみればOK。

攻撃後に状態を確認。

$ fail2ban-client status vsftpd

Status for the jail: vsftpd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- Journal matches:
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx.xxx.xxx.xxx

想定通り、攻撃元のグローバルIPをブロックしてます。
また念の為にiptablesも確認してみます。

$ iptables -nL

Chain f2b-vsftpd (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

iptablesでもブロックされていました!!

スポンサーリンク
スポンサーリンク

関連記事

  1. CentOS 7

    【CentOS 7】ルーティングを複数追加する方法

    CentOS 7になってから、今までのコマンドが使えなくなってストレス…

  2. CentOS 7

    【CentOS 7】firewalldでとりあえず特定のIPからのみSSHを許可する

    CentOS 7から標準ファイアウォールとなった firewalld …

  3. CentOS 7

    【CentOS 7】nkfをyumでインストールする方法

    CentOS 7からはnkfが標準リポジトリに入らなくなったので、yu…

  4. CentOS 7

    Elasticsearch(全文検索エンジン)の初回起動に失敗するとき

    Elasticsearch(全文検索エンジン)のインストール後の初めて…

  5. CentOS 7

    【CentOS 7】デフォルトゲートウェイの設定方法

    CentOS 7からネットワークの設定方法やコマンドがいろいろと変わっ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. ColdFusion 2018にUpdate 8を適用したら…
  2. 【vsftpdを守る】CentOS 7にfail2banをイ…
  3. nologinを指定したユーザーでFTP接続するとパスワード…
  4. CentOS 7にTomcatをインストールして起動したらエ…
  5. NetApp / cDot : AutoSupport Ma…
PAGE TOP