Fail2ban ログを集計して不正アクセスを防ぐ
Fail2banは、定期的にログを集計して不正なアクセスを検知し、アクセス元のIPアドレスをファイアウォールで一定時間ブロックしたりメールアラートを送信したりするパッケージです。
Fail2ban
公式サイト
- Fail2banのマニュアル
- インストール
- 旧バージョンの脆弱性
- Fail2banのバージョン確認
- 設定ファイル
- 設定変更の注意点
- ログファイル
- コマンド
- サービス起動
- サービス停止
- サービス再起動
- サービス自動起動有効
- サービス自動起動無効
- サービスステータス表示
インストール
Fail2banは標準リポジトリには含まれていないので、epel拡張リポジトリを使用します。
epelのリポジトリのインストール
# yum install epel-release
epelを利用して、Fail2banをインストール
# yum --enablerepo=epel install fail2ban
旧バージョンの脆弱性
0.8.11より前のバージョンには、サービス運用妨害 (DoS) の脆弱性が存在します。
https://jvn.jp/vu/JVNVU97877909/index.html
攻撃者のアクセス元ではない、IPアドレスをブロック対象としてしまうようです。
Fail2banのバージョン確認
バージョンの確認を行うには、fail2ban-clientを使用します。
# fail2ban-client version 0.9.7
設定ファイル
/etc/fail2ban/ ├── action.d │ ├── dummy.conf │ ├── hostsdeny.conf │ ├── iptables.conf │ ├── mail-whois.conf │ ├── mail.conf │ └── shorewall.conf ├── fail2ban.conf ├── fail2ban.local (このファイルは設定変更時に作成する) ├── filter.d │ ├── apache-auth.conf │ ├── apache-noscript.conf │ ├── couriersmtp.conf │ ├── postfix.conf │ ├── proftpd.conf │ ├── qmail.conf │ ├── sasl.conf │ ├── sshd.conf │ └── vsftpd.conf ├── jail.conf └── jail.local (このファイルは設定変更時に作成する)
設定変更の注意点
Fail2banは fail2ban.confとjail.conf に設定が書かれていますが、この2つのファイルを変更してはいけません。
設定は fail2ban.localとjail.local を作成し、fail2ban.confとjail.conf の内容を上書きするかたちで設定を行うのが正しい操作です。
アップデートで fail2ban.confとjail.conf は変更されることがあるからとマニュアルに書かれています。
Fail2banのマニュアル 設定ファイル
Every .conf file can be overridden with a file named .local. The .conf file is read first, then .local, with later settings overriding earlier ones. Thus, a .local file doesn't have to include everything in the corresponding .conf file, only those settings that you wish to override. すべての.confファイルは、.localという名前のファイルでオーバーライドできます。 .confファイルが最初に読み込まれ、次に.localが読み込まれ、後の設定が前の設定を上書きします。したがって、.localファイルは、対応する.confファイルにすべてを含める必要はなく、上書きしたい設定のみを含めます。
Modifications should take place in the .local and not in the .conf. This avoids merging problem when upgrading. These files are well documented and detailed information should be available there. 変更は.confではなく.localで行う必要があります。これにより、アップグレード時のマージ問題が回避されます。これらのファイルは十分に文書化されており、詳細な情報がそこにあります。
ログファイル
かつては標準でSYSLOGに出力されていたものを、設定ファイルでfail2ban.logに変更しログローテートを設定する、というのが一般的でした。
現在は標準で /var/log/fail2ban.log に出力され、ログローテートも標準で設定が組み込まれています。
このためログファイルの出力先などは、特に変更する必要がなくなっています。
コマンド
サービス起動
CentOS7 systemctl start fail2ban.service CentOS6以前 service fail2ban start
サービス停止
CentOS7 systemctl stop fail2ban.service CentOS6以前 service fail2ban stop
サービス再起動
CentOS7 systemctl restart fail2ban.service CentOS6以前 service fail2ban restart
サービス自動起動有効
CentOS7 systemctl enable fail2ban.service CentOS6以前 chkconfig fail2ban on
サービス自動起動無効
CentOS7 systemctl disable fail2ban.service CentOS6以前 chkconfig fail2ban off
サービスステータス表示
fail2ban全体の状況
# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd
ルールごとの状況
# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 4 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 192.168.1.100
関連記事
- コマンドやプロセス名から検索して一括でkillする方法
- PostgreSQLでSCRAM authentication requires libpq version 10 or aboveと出るとき
- Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合
- SSDの現在のTBWを調べる方法 SSDの残り寿命 (Windows Linux CentOS)
- RAIDの種類
- ソフトウエアRAIDでストレージを構築しマウントする方法 ディスクの高速化・冗長化
- NTFSのディスクをLinuxにマウントすると読み込み専用でマウントされてしまう
- Ubuntu/Debian/Raspberry PiでChia Network(XCH)をHDDマイニングする方法
- CentOSでChia Network(XCH)をHDDマイニングする方法
- CentOSにHomeBridgeをインストールする方法
- GnuTLS: The Diffie-Hellman prime sent by the server is not acceptable (not long enough).の解決法
- Linux・WindowsでMTUを変更する方法(ジャンボフレーム)
- LinuxでPDFを画像に変換したりテキストを抽出する方法
- Logitec HDDケース(HDD4台用) ガチャベイ LHR-4BNHEU3 LGB-4BNHEU3
- Linuxにffmpegをインストールする方法 CentOS Stream
- SELinuxのpermissiveとdisableの違い
- SELinuxを無効にする方法
- SELinuxの管理で使用するsemanageコマンドをインストールする方法
- LinuxにImageMagickをインストールする方法 CentOS Stream
- Linuxでrarファイルを圧縮・解凍する方法(CentOS)
- NTFSフォーマットのストレージの読み書きが異常に遅い場合
- Linuxで接続されているUSBのバージョンを確認する方法
- Linuxでストレージの型番やシリアルを確認する方法(HDD SSD NVMe)
- CPUやストレージの温度を調べる方法(CPU HDD SSD NVMe)
- CentOS7からCentOS8へのアップグレード
- 各ストレージの速度一覧 規格速度や実効速度(HDD/SSD/M2/NVMe/USBメモリ)
- Poderosa5で「インデックスが配列の境界外です。」と出る場合の対処法(CentOS8 Ubuntu)
- マウントするときに、$MFTMirr does not match $MFT NTFS is either inconsistent, or there is a hardware faultのエラーが出る場合
- Sambaで認証パスワードなし(ゲストユーザー)でアクセスする方法
- Amazon Linux2をローカルのVirtualBoxで起動する方法
- VirtualBox Interfaceが起動していてシャットダウンができないとき
- Gitを自動的にpullする方法(常に最新の状態にする)
- Gitの最新版をインストールする方法(CentOS7に2系をインストール)
- SSHで初めて接続するホストで、接続するかどうかyes/noを聞かれないようにする
- HPのパソコンでVirtualBoxが起動しない(HP ProtectTools Security Manager)
- yumのius(iuscommunity.org)でエラーが出る場合
- iusリポジトリで公開されているパッケージの一覧
- GoogleChromeでSSL接続を強制される設定(HSTS)のキャッシュを消す方法
- phpMyAdminでログイン画面を出さずにデータベースに接続する方法
- さくらサーバ(さくらのレンタルサーバ)でcronを使ってPHPを定時実行する
- php.ini が見つからない時
- PHPでMySQLなどにPDO接続をすると、could not find driverのエラーが出る場合
- ホスト名(ドメイン)をローカルIPに名前解決させる方法(ローカルDNS不要)
- MySQLやMariaDBは標準ではログローテートされない
- SONYのnasneをLinuxにマウントする方法
- 数日おきに設定したcronの実行が1日ずれる理由
- LinuxでNTFS(Windows形式)のフォーマットをする方法
- target is busyやdevice is busyをumountする方法
- /dev/random と /dev/urandom の違い
- 2TBを超えるHDDを増設する方法(パーティション・フォーマット)
- 破損したストレージからのデータ復旧
- HDDやSSDなどのストレージをリスト形式で表示する方法
- blkidコマンドでUUIDが表示されない場合
- HDDやSSDなどのストレージのUUIDを調べる方法
- glibcを更新するとdateコマンドが新元号の令和に対応します
- cron設定ファイルの実体の保存先
- mvコマンドの挙動(コピーが完了したものから削除する方法)
- 『Table is marked as crashed and should be repaired』の修復方法
- PostfixサーバからGmailサーバへメールを送信できない場合の対処法
- ImageMagick更新で『PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/imagick.so'』エラーが出る場合
- 起動時に『UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.』と出た場合の修復方法
- kernel-develのインストール
- LinuxサーバでWindowsのファイルシステムNTFSを読み込む方法
- 拡張リポジトリEPELを使用する方法(インストール)
- wgetが遅い場合の対処法
- WgetがFTPでダウンロードできない場合
- WgetがSSLでダウンロードできない場合
- Wgetの基本的な使い方など(ユーザーエージェントの設定・POSTデータの送信)
- lsコマンドで秒を表示する方法(タイムスタンプの書式指定)
- PDO_MYSQLをインストールする方法
- PEAR・PECLをインストールする方法
- シェルスクリプトを実行すると『そのようなファイルやディレクトリはありません』や『コマンドが見つかりません』と出る場合
- 画面のバックライトを消す方法(モニタ電源を消す) vbetool
- telnetの反応がなくなった時に接続を強制的に切断する方法
- サーバの負荷や使用率などを見るコマンドの一覧
- PHPでロードアベレージを表示させる方法
- Apacheで出力されるログを変更する方法 レスポンスにかかった時間やリファラ、ユーザーエージェントを記録する
- ログをリアルタイムに表示させて監視する方法
- 起動時にネットワークを有効にする方法(eth0を起動する方法)
- IPアドレスを変更する方法
- cron実行時の標準出力のメールを飛ばさない方法(cron実行時に毎回メールを飛ばさない)
- cron実行時のPATHなどの環境変数を確認する方法
- cronのメール送信先を指定する方法(cronごとに送信先のメールアドレスを指定する方法)
- cron実行時に『/bin/sh: 〜〜: command not found』と出てcronが実行されない場合
- 『crontab -r』でcronの設定を間違って消してしまった場合の対処法
- cronを実行すると『TERM environment variable not set.』というエラーメールが飛ぶ
- Apacheから2GB以上のファイルをダウンロードしようとすると403エラーが出ます
- Linux起動時の自動ファイルシステムチェックの間隔を変更する、無効にする方法
- [warn] _default_ VirtualHost overlap on port 80, the first has precedence エラー
- yumでupdateするときにconflictsエラーが出る場合 file xxx from install of xxx-jason conflicts with file from package xx.remi
- Gitをyumでインストールする方法
- vsftpdでファイルの所有者をUID(数字)ではなくユーザー名で表示する方法 chrootするとtext_userdb_names=YESできない
- SELinuxが有効になっているサーバではvsftpdのデータ転送が使用できない
- サービスに接続できるユーザー(IP)を制限する Connection closed by foreign host.
- 1枚のNIC(ネットワークカード)に複数のIPアドレスを設定する方法(Linux)
- Apacheを起動するときに、ほかのプロセスによってポートが使用されていた場合
- PEARを更新する方法
- zend_mm_heap corrupted とは
- yum コマンドでTransaction Check Error
- yumを自動で更新チェックする、自動で更新する
- httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
- Apacheをyumでインストールする
- KNOPPIX
- ディレクトリ以下のファイル数、ファイル容量を調べる
- PHPをyumでインストールする
- Linuxでホスト名を変更する方法
- Postfixからpostmaster宛に451Server configuration errorメールが届く
- Postfixの容量制限 (main.cfの設定)
- Debianのインストール
- memcachedのインストール
- Linuxのカーネル情報やディストリビューションを調べるコマンド
- Rubyのインストール
- PostgreSQLのインストール
- PHPのインストール
- zlibのインストール
- Apacheのインストール
- MySQLのインストール
- IPアドレスを調べる
- ファイルを検索するコマンド locate (updatedbの高速化)
- スペシャルファイル
- MergeLog 複数のログファイルを時系列に並べ替える
- CentOS5のインストール
- Another app is currently holding the yum lockとは
- yumで、より新しいパッケージをインストールする方法(CentOS)
- apacheのSSL設定
- Subversionのインストール
- 毎朝午前4時に行われる動作
- /tmpや/var/tmpのファイル消えるタイミング
- ユーザーとグループ
- ログインできるユーザーに変更する
- SSHのインストール
- OpenSSL
- RFC2142で定められた「組織で用意したほうがよいメールアドレス」のガイドライン
- named.local [Bindの設定ファイル]のデフォルト
- localhost.zone [Bindの設定ファイル]のデフォルト
- named.ca [Bindの設定ファイル]のデフォルト
- named.conf [Bindの設定ファイル]のデフォルト
- vsftpd.conf [vsftpd設定ファイル]のデフォルト
- proftpd.conf [Proftpd設定ファイル]のデフォルト
- php.ini [PHP設定ファイル]のデフォルト
- main.cf [Postfix設定ファイル]のデフォルト
- sendmail.mc のデフォルト
- httpd.conf [apache設定ファイル]のデフォルト fedora
- httpd.conf [apache設定ファイル]のデフォルト
- ディレクトリの削除
スポンサーリンク