LinuxでDDoS攻撃をブロックする方法〜psadによる攻撃IPの検知と防御ガイド〜
本ガイドでは、Linuxユーザー向けに、サービス拒否(DoS)攻撃やDDoS攻撃に使用される不正なIPアドレスを検知し、それらをブロックする方法を解説します。
数日前に「Linuxでiptablesを使ってIPアドレスをブロックする方法」という記事を公開しましたが、今回はその姉妹編として、DoS(サービス拒否)攻撃を受けた際に攻撃者のIPアドレスを特定する手順をご紹介します。
ここで活躍するのが、無料ソフトウェアの「psad」です。psadはiptablesと連携して動作し、iptablesのログを常時監視することで、ポートスキャンや不審なトラフィック――つまり、第三者がLinuxサーバーへの侵入を試みている兆候――を自動的に検出します。
psadのインストール
まずはpsadをインストールしましょう。UbuntuやFedoraのようにパッケージ管理システムが充実しているディストリビューションをお使いであれば、以下のいずれかのコマンドで簡単に導入できます。
# sudo apt-get install psad
または
# yum install psad
これらのコマンドがうまく動作しない場合は、psadのダウンロードページにアクセスし、お使いの環境に合った形式のパッケージをダウンロードしてください。
syslogの設定(Ubuntuの場合)
以降の手順はUbuntu Linuxサーバーを前提に説明しますが、多少の調整を加えれば他のディストリビューションでも同様に利用できます。まず、お好みのテキストエディタでsyslog.confファイルを開きます。
# vim /etc/syslog.conf
ファイルの末尾に次の1行を追加します。
kern.info |/var/lib/psad/psadfifo
同じ操作は、以下のコマンド一発でも実行できます。
# echo -e 'kern.info\t|/var/lib/psad/psadfifo' >> /etc/syslog.conf
続いて、sysklogdとklogdの各デーモンを再起動します。
/etc/init.d/sysklogd restart
/etc/init.d/klogd restart
安全なIPアドレスのホワイトリストを作成する
psadは不審なIPアドレスを検知すると、iptablesに対してそのブロックを指示します。ただし場合によっては、自分自身が使用しているIPアドレスまで誤ってブロックされることがあります。これを防ぐために、「安全なIPアドレス」の一覧ファイルをあらかじめ作成しておきましょう。
# vim /home/calvin/safeiplist.cfg
psadにホワイトリストとして扱わせたいIPアドレスを記述します。
127.0.0.0/24
192.168.0.0/24
122.164.34.240
iptablesの設定スクリプトを作成する
次に、以下のようなスクリプトを使って、必要なルールをiptablesに適用します。注意:このスクリプトは既存のiptables設定をすべて消去した上で動作するため、運用中の環境で実行する際は十分ご注意ください。スクリプトをLinuxサーバーにコピー&ペーストし、変数WORKDIRとSAFEIPLISTをご自身の環境に合わせて書き換えてください。
WORKDIR="/home/calvin/" INTERVAL="5" HITCOUNT="5" SAFEIPLIST="safeiplist.cfg" cd $WORKDIR iptables -F if [ -f $SAFEIPLIST ]; then IPS=$(grep -Ev "^#" $SAFEIPLIST) for i in $IPS do iptables -A INPUT -s $i -j ACCEPT done fi iptables -A INPUT -m state --state NEW -m recent --set iptables -A INPUT -m state --state NEW -m recent --update --seconds $INTERVAL --hitcount $HITCOUNT -j LOG
このスクリプトは、5秒間のうちに5回以上の接続試行を行ったIPアドレスをログに記録します。内容を十分理解しているのでない限り、スクリプトはそのまま使うことをおすすめします。編集が完了したら、実行権限を付与して実行しましょう。
# chmod +x /home/calvin/ipblock.sh
# /home/calvin/ipblock.sh
psadの設定ファイルを編集する
続いてpsad本体の設定です。設定ファイルを開いて編集しましょう。以下の変更を行うことをおすすめします。詳しくはpsadの公式ドキュメントを参照し、必要に応じて他の項目も調整してください。
通知先のメールアドレスを設定します。
EMAIL_ADDRESSES you@yourdomain.com;
サーバーのホスト名を設定します。
HOSTNAME yourdomain.com;
ネットワークインターフェースが1つだけのサーバーであれば、HOME_NETを次のように設定します。
HOME_NET NOT_USED;
さらに、psadの危険度レベル(danger levels)の調整や、無視するポートの指定も可能です。例えば、UDPポート80と8080を無視させたい場合は、次のように設定します。
IGNORE_PORTS udp/80, udp/8080;
編集が終わったらファイルを保存して閉じ、psadを再起動します。
# /etc/init.d/psad restart
psadのレポート確認とブロック解除
これで準備は完了です。psadのレポートを確認するには、以下のコマンドを実行します。
# psad -S
自動的にブロックされたIPアドレスを解除したい場合は、次のコマンドを使用します。
# psad -F
psadは非常に多機能かつ強力なツールです。使いこなせばサーバー防御に大きな効果を発揮しますが、扱い方を誤るとシステムに深刻な影響を及ぼす可能性もあります。必ず慎重に運用してください。
-
LinuxにOpenRazerをインストールしてRazerデバイスを最大限に活用する方法
Linux向けに新しいPCを組み立てる際、最も頭を悩ませるのが周辺機器の問題です。特に、マウスやキーボードに多彩な機能を求めるゲーマーにとっては深刻な課題となります。しかし、Razer製の周辺機器をお持ちなら朗報です。オープンソースプロジェクト「OpenRazer」がその解決策を提供してくれます。この記事では、LinuxにOpenRazerをインストールする手順を詳しく解説します。 はじめに確認すべきこと まずはプロジェクトの公式GitHub.ioページをチェックしましょう。対応デバイスの一覧やインストール手順に関する詳細な情報を確認できます。インストール作業自体はそれほど難しくありませ
-
現代のDDoS攻撃の進化:知っておくべき脅威の歴史と最新動向
DDoS(Distributed Denial of Service、分散型サービス拒否攻撃)とは、複数のボットネットシステムが単一のシステムを標的にし、膨大なトラフィックで圧倒することで運用を妨害するサイバー攻撃です。攻撃者の目的は、ウェブサイト上のサービスを停止させることにあります。対象となるのは、アプリケーション、ネットワーク、各種サービス、デバイス、サーバー、さらにはソフトウェア内の特定のトランザクションなど、あらゆるサービスへのアクセスです。 DoS攻撃では1台のシステムが悪意あるデータやリクエストを送信するのに対し、DDoS攻撃は複数のシステムから同時に攻撃が仕掛けられる点が最大の