サーバーへの不正アクセス対策「fail2ban」

fail2ban+firewalldでサーバーへの不正アクセスをブロックします。

※epelがインストールされていなければインストール
# yum -y install epel-release

●fail2banインストール
# yum -y install fail2ban fail2ban-systemd

※firewalldがインストールされていなければインストール
# yum -y install firewalld

●firewalld設定
初期設定ではsshのみ許可になっているので、WWW,FTP,Postfix,Dovecot等を使用している場合はそれぞれpbulicゾーンに許可設定する
(例:サービス名で指定)
# firewall-cmd –zone=public –add-service=ftp –permanent
(例:ポートで指定)
# firewall-cmd –zone=public –add-port=587/tcp –permanent

※定義されているサービス一覧を確認するときは
# firewall-cmd –get-services

※ゾーン情報を確認するときは
# firewall-cmd –list-all

※全てのゾーン情報を確認するときは
# firewall-cmd –list-all-zone

●firewalld起動
# systemctl start firewalld

●firewalld自動起動設定
# systemctl enable firewalld

●fail2ban設定
設定ファイルをコピー
# cp -p /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local

●設定ファイル編集(変更ヶ所のみ)
# vi /etc/fail2ban/jail.d/jail.local

[DEFAULT]
(監視対象外IPアドレスにLAN内IPアドレスを追加)
ignoreip = 127.0.0.1/8

ignoreip = 127.0.0.1/8 192.168.1.0/24

(拒否時間を86400秒=1日に変更)
bantime = 86400

(不正アクセスのカウント時間を3600秒=1時間に変更)
findtime = 3600

※[DEFAULT]のbantimeを変更した場合は「/etc/fail2ban/action.d/firewallcmd-ipset.conf」のbantimeも同様に変更すること

(何回リトライ失敗したらBANするかを5回から3回に変更)
maxretry = 5

maxretry = 3

[ACTIONS]
(fail2banのスタート・ストップ時、BAN実行時にメール通知を受ける場合はメールアドレスを入力)
destemail = メールアドレス
sender = fail2ban@サーバードメイン名

(banaction設定をfirewalldに変更)
banaction = iptables-multiport
banaction_allports = iptables-allports

banaction = firewallcmd-ipset
banaction_allports = firewallcmd-allports

(sshdを監視する場合追記)
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
※sshdでBANしたIPアドレス情報をメール通知する場合追記
(BANしたIPアドレスのみ通知の場合は不要)
action = %(action_mw)s (BANしたIPアドレス+そのIPアドレスのWHOIS情報も通知)
action = %(action_mwl)s (上記+そのIPアドレスが記録されたログの行も転記して通知)

(vsftpdを監視する場合追記)
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
logpath = /var/log/vsftpd.log
backend = systemd
※vsftpdでBANしたIPアドレス情報をメール通知する場合追記
(BANしたIPアドレスのみ通知の場合は不要)
action = %(action_mw)s (BANしたIPアドレス+そのIPアドレスのWHOIS情報も通知)
action = %(action_mwl)s (上記+そのIPアドレスが記録されたログの行も転記して通知)

※vsftpdのログ出力設定はCentOS7「vsftpdインストール・設定」を参照

(Postfixを監視する場合追記)
[Postfix]
enabled = true
port = smtp,465,submission
logpath = %(postfix_log)s
backend = systemd
※postfixでBANしたIPアドレス情報をメール通知する場合追記
(BANしたIPアドレスのみ通知の場合は不要)
action = %(action_mw)s (BANしたIPアドレス+そのIPアドレスのWHOIS情報も通知)
action = %(action_mwl)s (上記+そのIPアドレスが記録されたログの行も転記して通知)

(Dovecotを監視する場合追記)
[Dovecot]
enabled = true
port = pop3,pop3s,imap,imaps,submission,465,sieve
logpath = %(dovecot_log)s
backend = systemd
※dovecotでBANしたIPアドレス情報をメール通知する場合追記
(BANしたIPアドレスのみ通知の場合は不要)
action = %(action_mw)s (BANしたIPアドレス+そのIPアドレスのWHOIS情報も通知)
action = %(action_mwl)s (上記+そのIPアドレスが記録されたログの行も転記して通知)

(Postfix-saslを監視する場合追記)
[Postfix-sasl]
enabled = true
port = smtp,465,submission,imap3,imaps,pop3,pop3s
logpath = %(postfix_log)s
backend = systemd
bantime = 604800
findtime = 86400
maxretry = 4
※postfix-saslでBANしたIPアドレス情報をメール通知する場合追記
(BANしたIPアドレスのみ通知の場合は不要)
action = %(action_mw)s (BANしたIPアドレス+そのIPアドレスのWHOIS情報も通知)
action = %(action_mwl)s (上記+そのIPアドレスが記録されたログの行も転記して通知)

※Postfix-saslへの不正アクセスは変則的だったので1日に4回の不正アクセスで1週間ブロックする設定にしています。
(Postfix-sasl以外は[DEFAULT]のbantime,findtime,maxretry設定で動作)

●ログレベルの変更 (/var/log/fail2ban.logにINFOが大量に出るのがうるさい場合)
# vi /etc/fail2ban/fail2ban.conf
[Definition]
loglevel = INFO

loglevel = NOTICE

●fail2ban起動
# systemctl start fail2ban

●fail2ban自動起動設定
# systemctl enable fail2ban

●fail2banのステータスを確認
# systemctl -l status fail2ban

●fail2banのログを確認
vi /var/log/fail2ban.log

●fail2banでブロックしたIPアドレスのリストを表示
(全ブロックリスト)
# ipset –list

(sshdのブロックリスト)
# ipset –list fail2ban-sshd

(postfix-saslのブロックリスト)
# ipset –list fail2ban-postfix-sasl

※sshdの不正ログインでBANしたIPアドレスの通知メール

※メールに「missing whois program」と書いてあった場合、whoisがインストールされていないのでwhoisをインストールする
(yumではwhoisではなくjwhoisでインストール)
# yum -y install jwhois

・whois動作確認(実行コマンドはjwhoisではなくwhois)
# whois yahoo.co.jp

※whoisインストール後の通知メール
(BANしたIPアドレスとwhois情報が記載されている)

カテゴリー: CentOS7 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です