ペチパーノート

WEB開発系Tipsブログです。

CentOS6でdos攻撃をbanする

fail2banのインストール

# yum install fail2ban

設定ファイルの変更

/etc/fail2ban/fail2ban.conf

#logtarget = SYSLOG
↓
logtarget = /var/log/fail2ban.log

loglotateの設定ファイル

vi /etc/logrotate.d/fail2ban

/var/log/fail2ban.log {
     missingok
     notifempty
     size 30k
     create 0600 root root
     postrotate
         /sbin/service fail2ban reload 2> /dev/null || true
     endscript
 }

ban設定を追記

/etc/fail2ban/jail.conf

[wplogin-iptables]
 enabled = true
 filter = apache-wplogin
 action = iptables[name=HTTP, port=http, protocol=tcp]
 logpath = /var/log/httpd/xxx_access_log
 maxretry = 5
 findtime = 60
 bantime = 1800
項目 説明
enabled 有効(=true)/無効(=false)を設定
filter ログパターンの指定(後述)
action パケットフィルタによるアクセスの遮断を実現する
logpath Apacheアクセスログを指定
maxretry パターンの出現回数閾値を設定
findtime パターンの出現回数を数えるときの単位時間(秒)
bantime アクセス遮断を行う時間(秒)

jailのfilterを書く

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

[Definition]

 failregex = ^<HOST> -.*"POST /wp-login.php HTTP.*$
 ignoreregex =

fail2ban再起動

# service fail2ban restart

本設定を行うと/wp-login.phpへのリクエストが60間に5回リクエストされると接続できなくなる。