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