tag:crieit.net,2005:https://crieit.net/tags/fail2ban/feed
「fail2ban」の記事 - Crieit
Crieitでタグ「fail2ban」に投稿された最近の記事
2021-05-31T14:41:12+09:00
https://crieit.net/tags/fail2ban/feed
tag:crieit.net,2005:PublicArticle/17327
2021-05-31T14:38:45+09:00
2021-05-31T14:41:12+09:00
https://crieit.net/posts/5-fail2ban
サーバ入門5 fail2banのインストールと動作確認
<h2 id="fail2banとは"><a href="#fail2ban%E3%81%A8%E3%81%AF">fail2banとは</a></h2>
<p>サーバのアクセスログを解析してパスワード総当たり攻撃を行っているIPアドレスを自動でブロックするソフトウェア。インターネットにサーバを公開すると、攻撃されるので、不正アクセス地策が必要。</p>
<h2 id="EPELリポジトリのインストール"><a href="#EPEL%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">EPELリポジトリのインストール</a></h2>
<p>fail2banはCentOS7の標準リポジトリでは公開されていない。EPEL(Extra Packages for Enterprise Linux)リポジトリで公開されている。</p>
<h3 id="リポジトリ"><a href="#%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA">リポジトリ</a></h3>
<p>・・・ソフトウェア(パッケージ)が公開されているサーバのこと。EPELリポジトリにアクセスするには、別途インストールが必要。<br />
※EPELリポジトリが使えない状態でfail2banをインストールしようとするとエラー表示になる。<br />
・EPELリポジトリが使える状態にするため、「epel-release」をインストールする。<br />
<code>#yum -y install epel-release</code><br />
インストールが完了した直後から、EPELサーバへアクセスができる。</p>
<h2 id="fail2banのインストール"><a href="#fail2ban%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">fail2banのインストール</a></h2>
<p>fail2banをインストールする。<br />
<code>#yum -y install fail2ban</code><br />
・<strong>fail2banはインストールしてもすぐに使えない</strong>。<br />
・<strong>設定ファイルに、足りない情報(どのような不正アクセスをブロックするか)の記述が必要</strong>。</p>
<h2 id="fail2ban設定ファイルのコピー"><a href="#fail2ban%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC">fail2ban設定ファイルのコピー</a></h2>
<p>設定テンプレートファイルjail.confをディレクトリ/etc/fail2ban/jail.d/にjail.localという名前でコピーし、編集を行う。<br />
<code>#cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local ファイルをコピーする</code><br />
<code>#ll /etc/fail2ban/jail.d/jail.local ちゃんとコピーできたかどうか確認</code><br />
<code>#vim /etc/fail2ban/jail.d/jail.local jail.localをvimで編集する。</code></p>
<h2 id="設定ファイル(jail.local)の編集"><a href="#%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%28jail.local%29%E3%81%AE%E7%B7%A8%E9%9B%86">設定ファイル(jail.local)の編集</a></h2>
<p>3行だけ変える内容がある。<br />
<code>23: # [sshd] → 23:[sshd] (先頭の#とスペースの2つを削除する)</code><br />
<code>24: # enable = true → 24:enabled = ture (先頭の#とスペースの2つを削除する)</code><br />
<code>208:banaction = iptables-multiport → 208:banaction = fairewallcmd-ipset (文字列変更)</code><br />
23、24行目は<strong>sshでfail2banを有効(enable)にする意味</strong><br />
208行目は<strong>fail2banはfairewalldと連携してブロックするという意味</strong><br />
※fail2banのバージョンによって、編集対象の文字列がある行や位置が変わるので注意。</p>
<h2 id="diffコマンド"><a href="#diff%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89">diffコマンド</a></h2>
<p><strong>ファイルの差分を見られる</strong>便利なコマンド。<strong>変更作業の実務でよく使う</strong>。元ファイルとの差分を見れば、変更すべき行だけ変更したのかすぐわかる。<br />
<code>$diff [比較元ファイル] [比較先ファイル]</code><br />
・diffの出力は、数字が変更のある行数、「<」の記号が比較元の文字を表し、「>」の記号が比較先の文字を表す。<br />
※fail2banのバージョンによって、編集対象の文字列がある行や位置が変わるので注意。</p>
<h2 id="fail2banの起動及び自動起動"><a href="#fail2ban%E3%81%AE%E8%B5%B7%E5%8B%95%E5%8F%8A%E3%81%B3%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95">fail2banの起動及び自動起動</a></h2>
<p>Apache HTTP Serverの時と同じ要領で、systemctlコマンドを使う。サービス名は「fail2ban」<br />
1.fail2banを起動<code>#systemstl start fail2ban</code><br />
2.起動したことを確認<code>#systemctl status fail2ban</code><br />
3.自動起動の有効化<code>#systemctl enabled fail2ban</code><br />
4.自動起動が有効化になったことを確認<code>#systemctl is-enabled fail2ban</code><br />
※設定ファイルの記述がおかしいとfail2banはエラーで起動しない。エラーの場合は設定ファイルの記述を見直すこと。<br />
・fail2banが起動すると、攻撃元のIPアドレスを<strong>一定時間(600秒)ファイアウォールでブロックする</strong>。※ログイン回数や遮断時間はfail2banのデフォルト設定値。</p>
<h2 id="fail2banの状態確認"><a href="#fail2ban%E3%81%AE%E7%8A%B6%E6%85%8B%E7%A2%BA%E8%AA%8D">fail2banの状態確認</a></h2>
<p>fail2banには、攻撃背れた回数、ブロックした回数、ブロックしたIPアドレスの統計情報を出力するコマンドがある。<br />
<code>#fail2ban-client status [サービス名]</code><br />
※SSHに設定している場合は、サービス名は「<strong>sshd</strong>」となる。</p>
<h2 id="fail2banおまけ"><a href="#fail2ban%E3%81%8A%E3%81%BE%E3%81%91">fail2banおまけ</a></h2>
<p>・実際にfail2banを運用する場合、ブロックする時間は600秒では短い。長めの時間に設定することがほとんど。時間を変更したい場合は、<strong>jail.local</strong>に「<strong>bantime=(秒)</strong>」を追記する。なお、vimで修正しても、systemctlコマンドで<strong>fail2banを再起動させないと新しい設定が反映されない</strong>。<br />
・ブロック中のIPアドレスのbantimeは「<strong>ipset --list</strong>」で確認できる。※ipsetはfirewalldの管理ユーティリティの1種。<br />
・ブロックしたIPアドレスをbantimeを待たずに解除させる方法は<br />
<code>#fail2ban-client set sshd unbanip [IPアドレス]</code></p>
ko00w1