セキュリティ対策 - fail2ban - apache


クラウディア 


1. 概要
2. フィルタ
3. 設定
4. 追加
5. 参考サイト

1. 概要

 メールサーバの設定はともかくとして、実は、これが本丸だったりする。

2. フィルタ

 「apache」のフィルタとして、デフォルトで下記が用意されています。

/usr/local/etc/fail2ban/filter.d/apache-auth.conf
/usr/local/etc/fail2ban/filter.d/apache-badbots.conf
/usr/local/etc/fail2ban/filter.d/apache-botsearch.conf
/usr/local/etc/fail2ban/filter.d/apache-common.conf
/usr/local/etc/fail2ban/filter.d/apache-fakegooglebot.conf
/usr/local/etc/fail2ban/filter.d/apache-modsecurity.conf
/usr/local/etc/fail2ban/filter.d/apache-nohome.conf
/usr/local/etc/fail2ban/filter.d/apache-noscript.conf
/usr/local/etc/fail2ban/filter.d/apache-overflows.conf
/usr/local/etc/fail2ban/filter.d/apache-pass.conf
/usr/local/etc/fail2ban/filter.d/apache-shellshock.conf
 とりあえず、このうち、下記のものを使ってみます。 ・apache-auth: 管理画面などのパスワード間違い(401エラー)を監視。 ・apache-noscript: php, pl, cgi などのスクリプトを狙った攻撃(403, 404エラー)を監視。 ・apache-botsearch: 脆弱性スキャナー(phpMyAdmin などを探す動き)を監視。

3. 設定


vi /usr/local/etc/fail2ban/jail.local
 下記を記述します。

[apache-auth]
enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/www/error.log
banaction = ipfw
maxretry = 3

[apache-noscript]
enabled = true
port    = http,https
filter  = apache-noscript
logpath = /var/log/www/access.log
banaction = ipfw
maxretry = 3

[apache-botsearch]
enabled = true
port    = http,https
filter  = apache-botsearch
logpath = /var/log/www/access.log
banaction = ipfw
maxretry = 2
 設定をチェックします。

fail2ban-client -d
 特にエラーが出なければ。  再読み込みして有効化します。

service fail2ban reload

4. 追加

 前項のみでは、まだ不十分なので。  最近のログを「Gemini」伍長に分析してもらいました。  それで、わかったのが、海外からのクローラーのアクセスが急増しております。  「client denied by server configuration」という、ボットがアクセス禁止領域を強引に読み取ろうとしている形跡。  また、「/actuator/health」「/awstatsicons/browser/...」という存在しない、おそらくは脆弱性をついたアクセス。  「/blog/wp-login.php」、「WordPress」のログインを狙ったアクセス。  が、多数あるようです。  これらを「fail2ban」にかけます。  まず、海外クローラー(アグレッシブなボット)を制限します。

vi /usr/local/etc/fail2ban/filter.d/apache-bot-limit.conf
 下記を記述します。

[Definition]
failregex = ^<HOST> -.*"(?:TikTokSpider|serpstatbot|SemrushBot|AhrefsBot).*".*

vi /usr/local/etc/fail2ban/jail.local
 下記を追加します。

[apache-bot-limit]
enabled  = true
filter   = apache-bot-limit
logpath  = /var/log/www/access.log
maxretry = 20
findtime = 60
bantime  = 86400
 上記は、「bot」が、1分間に20回以上アクセスしてきたら1日「BAN」します。

vi /usr/local/etc/fail2ban/filter.d/apache-scan.conf
 下記を記述します。

[Definition]
failregex = ^<HOST> -.*"GET .*(?:\.env|\.git|actuator|wp-login|config\.php|setup\.cgi).* HTTP\/.*" (?:403|404)

vi /usr/local/etc/fail2ban/jail.local
 下記を追加します。

[apache-scan]
enabled = true
filter  = apache-scan
logpath = /var/log/www/access.log
banaction = ipfw
maxretry = 1
bantime = 2592000
 上記は、悪質なスキャンなので、1発で長期間(1ヶ月) 「BAN」します。  設定をチェックして。

fail2ban-client -d
 再読み込みして有効化します。

service fail2ban reload

5. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

TikTok Shop 【リピート用プログラム】
AbemaTV 無料体験
【usus ウズウズ】