Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

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

続いて、sysklogdklogdの各デーモンを再起動します。

/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サーバーにコピー&ペーストし、変数WORKDIRSAFEIPLISTをご自身の環境に合わせて書き換えてください。

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は非常に多機能かつ強力なツールです。使いこなせばサーバー防御に大きな効果を発揮しますが、扱い方を誤るとシステムに深刻な影響を及ぼす可能性もあります。必ず慎重に運用してください。

  1. LinuxにOpenRazerをインストールしてRazerデバイスを最大限に活用する方法

    Linux向けに新しいPCを組み立てる際、最も頭を悩ませるのが周辺機器の問題です。特に、マウスやキーボードに多彩な機能を求めるゲーマーにとっては深刻な課題となります。しかし、Razer製の周辺機器をお持ちなら朗報です。オープンソースプロジェクト「OpenRazer」がその解決策を提供してくれます。この記事では、LinuxにOpenRazerをインストールする手順を詳しく解説します。 はじめに確認すべきこと まずはプロジェクトの公式GitHub.ioページをチェックしましょう。対応デバイスの一覧やインストール手順に関する詳細な情報を確認できます。インストール作業自体はそれほど難しくありませ

  2. 現代のDDoS攻撃の進化:知っておくべき脅威の歴史と最新動向

    DDoS(Distributed Denial of Service、分散型サービス拒否攻撃)とは、複数のボットネットシステムが単一のシステムを標的にし、膨大なトラフィックで圧倒することで運用を妨害するサイバー攻撃です。攻撃者の目的は、ウェブサイト上のサービスを停止させることにあります。対象となるのは、アプリケーション、ネットワーク、各種サービス、デバイス、サーバー、さらにはソフトウェア内の特定のトランザクションなど、あらゆるサービスへのアクセスです。 DoS攻撃では1台のシステムが悪意あるデータやリクエストを送信するのに対し、DDoS攻撃は複数のシステムから同時に攻撃が仕掛けられる点が最大の