2021-05-31に更新

サーバ入門5 fail2banのインストールと動作確認

fail2banとは

サーバのアクセスログを解析してパスワード総当たり攻撃を行っているIPアドレスを自動でブロックするソフトウェア。インターネットにサーバを公開すると、攻撃されるので、不正アクセス地策が必要。

EPELリポジトリのインストール

fail2banはCentOS7の標準リポジトリでは公開されていない。EPEL(Extra Packages for Enterprise Linux)リポジトリで公開されている。

リポジトリ

・・・ソフトウェア(パッケージ)が公開されているサーバのこと。EPELリポジトリにアクセスするには、別途インストールが必要。
※EPELリポジトリが使えない状態でfail2banをインストールしようとするとエラー表示になる。
・EPELリポジトリが使える状態にするため、「epel-release」をインストールする。
#yum -y install epel-release
インストールが完了した直後から、EPELサーバへアクセスができる。

fail2banのインストール

fail2banをインストールする。
#yum -y install fail2ban
fail2banはインストールしてもすぐに使えない
設定ファイルに、足りない情報(どのような不正アクセスをブロックするか)の記述が必要

fail2ban設定ファイルのコピー

設定テンプレートファイルjail.confをディレクトリ/etc/fail2ban/jail.d/にjail.localという名前でコピーし、編集を行う。
#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local  ファイルをコピーする
#ll /etc/fail2ban/jail.d/jail.local   ちゃんとコピーできたかどうか確認
#vim /etc/fail2ban/jail.d/jail.local   jail.localをvimで編集する。

設定ファイル(jail.local)の編集

3行だけ変える内容がある。
23: # [sshd]  →  23:[sshd] (先頭の#とスペースの2つを削除する)
24: # enable = true → 24:enabled = ture (先頭の#とスペースの2つを削除する)
208:banaction = iptables-multiport → 208:banaction = fairewallcmd-ipset (文字列変更)
23、24行目はsshでfail2banを有効(enable)にする意味
208行目はfail2banはfairewalldと連携してブロックするという意味
※fail2banのバージョンによって、編集対象の文字列がある行や位置が変わるので注意。

diffコマンド

ファイルの差分を見られる便利なコマンド。変更作業の実務でよく使う。元ファイルとの差分を見れば、変更すべき行だけ変更したのかすぐわかる。
$diff [比較元ファイル] [比較先ファイル]
・diffの出力は、数字が変更のある行数、「<」の記号が比較元の文字を表し、「>」の記号が比較先の文字を表す。
※fail2banのバージョンによって、編集対象の文字列がある行や位置が変わるので注意。

fail2banの起動及び自動起動

Apache HTTP Serverの時と同じ要領で、systemctlコマンドを使う。サービス名は「fail2ban」
1.fail2banを起動#systemstl start fail2ban
2.起動したことを確認#systemctl status fail2ban
3.自動起動の有効化#systemctl enabled fail2ban
4.自動起動が有効化になったことを確認#systemctl is-enabled fail2ban
※設定ファイルの記述がおかしいとfail2banはエラーで起動しない。エラーの場合は設定ファイルの記述を見直すこと。
・fail2banが起動すると、攻撃元のIPアドレスを一定時間(600秒)ファイアウォールでブロックする。※ログイン回数や遮断時間はfail2banのデフォルト設定値。

fail2banの状態確認

fail2banには、攻撃背れた回数、ブロックした回数、ブロックしたIPアドレスの統計情報を出力するコマンドがある。
#fail2ban-client status [サービス名]
※SSHに設定している場合は、サービス名は「sshd」となる。

fail2banおまけ

・実際にfail2banを運用する場合、ブロックする時間は600秒では短い。長めの時間に設定することがほとんど。時間を変更したい場合は、jail.localに「bantime=(秒)」を追記する。なお、vimで修正しても、systemctlコマンドでfail2banを再起動させないと新しい設定が反映されない
・ブロック中のIPアドレスのbantimeは「ipset --list」で確認できる。※ipsetはfirewalldの管理ユーティリティの1種。
・ブロックしたIPアドレスをbantimeを待たずに解除させる方法は
#fail2ban-client set sshd unbanip [IPアドレス]

ツイッターでシェア
みんなに共有、忘れないようにメモ

ko00w1

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント