Fail2banの導入

Fail2banは、ログを監視し、大量アクセスなどの攻撃の兆候を検知したら、自動的に対象IPアドレスからのアクセスを拒否してくれる。

インストール

リポジトリの追加を参考に、EPELリポジトリを使えるようにしておく。

fail2banをインストールする。

dnf install fail2ban fail2ban-systemd

設定

/etc/fail2ban/にあるjail.confを/etc/fail2ban/jail.dにjail.localとしてコピーし、監視設定を行う。

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local
vi /etc/fail2ban/jail.d/jail.local

[DEFAULT]

destemail = admin@hogehoge.com (不正アクセスを検知したときに送られるメールの送り先を指定する。)

action_allports_mwl = %(banaction_allports)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
                      %(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 12
findtime = 3
bantime = 86400
action = %(action_mwl)s

[dovecot]
enabled  = true
filter   = dovecot
port     = pop3,pop3s,imap,imaps,submission,465,sieve
logpath  = %(dovecot_log)s
backend  = %(dovecot_backend)s
maxretry = 5
findtime = 1200
bantime  = 1200
action   = %(action_mwl)s

[postfix]
enabled  = true
mode     = more
filter   = postfix
port     = smtp,465,submission
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s
maxretry = 5
findtime = 1200
bantime  = 1200
action   = %(action_mwl)s

[postfix-sasl]
enabled  = true
filter   = postfix[mode=auth]
port     = smtp,465,submission,imap,imaps,pop3,pop3s
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s
maxretry = 2
findtime = 86400
bantime  = 604800
action   = %(action_mwl)s

[vsftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = %(vsftpd_log)s
maxretry = 5
findtime = 1200
bantime  = 300
action = %(action_mwl)s

[recidive]
enable = true
logpath  = /var/log/fail2ban.log
maxretry = 5
findtime = 86400
bantime = 604800
banaction = %(action_allports_mwl)s

[apache-ddos]
enabled = true
port = http,https
filter = apache-ddos
logpath = %(apache_access_log)s
maxretry = 15
findtime = 3
bantime = 86400
action = %(action_mwl)s

[apache-dirtra]
enabled = true
port = http,https
filter = apache-dirtra
logpath = %(apache_access_log)s
maxretry = 15
findtime = 3
bantime = 86400
action = %(action_mwl)s

vi /etc/fail2ban/filter.d/apache-ddos.conf

[Definition]
failregex = .*"(HEAD|GET|POST).*
ignoreregex = \.(?i)(jpe?g|gif|png|bmp|pdf|js|css|woff|eot|ttf|ico|txt|xml|swf|xlsx?|docx?|pptx?)
              \/wp-admin.*

検知した時のアクションの設定

検知したときは、対象のIPアドレスからのパケットをREJECT(拒否)ではなくDROP(破棄)するように設定する。REJECTだと攻撃者にエラーメッセージを返してしまうため。

vi /etc/fail2ban/action.d/iptables-common.conf

blocktype = DROP

サービス起動、自動起動設定

fail2banサービスを起動、自動起動設定する。

systemctl start fail2ban
systemctl enable fail2ban

BANされているIPアドレスの確認方法

fail2ban-client status [Jail名]

BANされたIPアドレスの解除方法

自分のIPアドレスが誤ってBANされた場合は、以下のようにして解除する。

fail2ban-client set [Jail名] unbanip [IPアドレス]

%d人のブロガーが「いいね」をつけました。