パソコン鳥のブログ

アクセスカウンタ

zoom RSS SSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策とその効果

<<   作成日時 : 2013/06/08 22:00   >>

トラックバック 10 / コメント 0

IDやパスワードを変えて何度もssh接続を試みてくるSSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策の1つに、SSHGuard の導入があります。
SSHGuard のインストール・設定方法と、iptablesを使用する場合の設定方法、導入による効果を説明します。

なお、iptablesサンプルのiptables設定を利用されている場合は、以降のファイアウォールへの設定の箇所の作業はする必要はありません。先の記事にて既に設定済みです。

7/4修正:
先の記事と本記事にて下記を修正
変更前:$IPTABLES -A INPUT -p tcp -m state --state NEW -j sshguard
変更後:$IPTABLES -A INPUT -p tcp -j sshguard


sshguardインストール



SSHGuardはサーバのログを監視し、IDやパスワードを変えて何度もssh接続を試行する攻撃を検出すると、一定時間、その接続をブロックします。
ブロックは、SSHGuardが自動的にファイアウォールへ設定を行うことで実施されます。
以下が対応しているファイアウォールです。
  • PF(OpenBSD,FreeBSD,NetBSD,DragonFly BSD)
  • netfilter/iptables (Linux)
  • IPFIREWALL/ipfw (FreeBSD, Mac OS X)
  • IPFILTER (FreeBSD, NetBSD, Solaris)
  • hostsファイル(hosts.allow)

CentOSの場合/ソースビルドの場合

最新版の sshguard-1.5.tar.bz2 をここからダウンロードします。

インストールは以下で行います。
./configure --with-firewall=で使用するファイアウォールを指定します。
ここには、その他ipfw(FreeBSD, Mac OS Xの場合)、pf(FreeBSDの場合)、hosts(hostsファイル(hosts.allow)の場合) が指定できます。

tar -jxf sshguard-1.5.tar.bz2
cd sshguard-1.5
./configure --with-firewall=iptables
make
make install



Ubuntuの場合

sudo apt-get install sshguard




ファイアウォールへの設定



Ubuntuの場合
ここで行うことはありません。


CentOSの場合/ソースビルドの場合

インストール時、ファイアウォールに hosts(hostsファイル(hosts.allow)の場合)を指定した場合
ここで行うことはありません。
SSHGuardで攻撃を検出すると、/etc/hosts.allow に
ALL : xxx.xxx.xxx.xxx : DENY
のような記述がSSHGuardにより自動的に追加されます。

ファイアウォールに iptables を指定した場合
注:すでにiptablesサンプルのiptables設定を利用されている場合は、ここでの作業はする必要はありません。先の記事にて既に設定済みです。

SSHGuardで攻撃を検出すると、チェイン sshguard に
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
のようなルールが追加されます。
そこで、

iptables -N sshguard

にてチェイン sshguard を作成しておきます。
また、SSHGuardで検出した攻撃元からの接続をブロックする次の記述を追加しておきます。

iptables -A INPUT -p tcp -j sshguard


7/4修正:
変更前:$IPTABLES -A INPUT -p tcp -m state --state NEW -j sshguard
変更後:$IPTABLES -A INPUT -p tcp -j sshguard


iptablesでのサンプルや解説はiptablesサンプルを参照してください。

その他については、SSHGuard - Defend from brute force attacks | Setup のページ下部の Blocking Backends の箇所にファイアウォールごとの説明へのリンクがあります。



SSHGuard起動設定



Ubuntuの場合
ここで行うことはありません。

CentOSの場合/ソースビルドの場合
OS起動時に自動的に SSHGuardが動作するように設定します。
/etc/rc.local

/usr/local/sbin/sshguard -l /var/log/secure

/var/log/secure が無い場合は、/var/log/auth.log を指定してください。



SSHGuard動作確認


SSHGuardのデフォルトの挙動では、20分間に4回攻撃を検出すると、そのIPアドレスからの接続をブロックします。
接続ブロックは一定時間経過すると解除します。
但し、接続ブロックから20分以内に再度攻撃を検出すると、ブロック時間を長くしていきます。
ブロック回数とブロック時間は以下のようになります。

1回目:420〜630秒間の範囲内でブロック
2回目:840〜1260秒間の範囲内でブロック
3回目:永久にブロック

SSHGuardにて攻撃を検出すると、/var/log/messages に以下のログが出力され、接続がブロックされます。

sshguard[1441]: Blocking xxx.xxx.xxx.xxx:4 for >630secs: 40 danger in 4 attacks over 44 seconds (all: 40d in 1 abuses over 44s).

意味は、IPアドレス xxx.xxx.xxx.xxx から 44秒間に4回攻撃があったので、630秒間接続をブロックした、です。

ファイアウォールに iptables を使用している場合は、/sbin/iptables -L -n で確認すると、チェイン sshguard に下記のようなルールが追加されています。

Chain sshguard (1 references)
target prot opt source destination
DROP all -- xxx.xxx.xxx.xxx 0.0.0.0/0


このまま攻撃が続くと出力されるログは以下のようになります。

sshguard[1441]: Blocking xxx.xxx.xxx.xxx:4 for >630secs: 40 danger in 4 attacks over 44 seconds (all: 40d in 1 abuses over 44s).

sshguard[1441]: Blocking xxx.xxx.xxx.xxx:4 for >945secs: 40 danger in 4 attacks over 29 seconds (all: 80d in 2 abuses over 847s).

sshguard[1441]: Blocking xxx.xxx.xxx.xxx:4 for >0secs: 40 danger in 4 attacks over 44 seconds (all: 120d in 3 abuses over 1924s).



630secs の次は 945secs とブロック時間が長くなり、最後は 0secs となっています。
0secs は該当IPアドレスからの接続は永久にブロックされたことを示します。


なお、この20分間に4回攻撃検出でブロック、3回ブロックで永久にブロックする、等の挙動はSSHGuard起動時に指定するオプションで変更できます。
オプションは以下を参照してください。








オプション説明
-a sAfety_threshsAfety_thresh には 10×N の値を指定する。N回の攻撃を検出したら、そのアドレスからの接続をブロックする
デフォルト値は 40 なので、4回の攻撃でブロックする。
-p S接続ブロックを解除する秒数を指定する。解除は S秒〜1.5xS秒経過後に行われる。
デフォルト値は 7*60 なので、420秒〜630秒経過でブロックを解除する。
-s SS秒経過後にそのアドレスを忘れる。この秒数を超えての攻撃は決してブロックされない。
デフォルトは 20*60 なので、間隔が20分以内の攻撃がブロックされる。
逆に言うと、間隔が20分以上の攻撃はブロックされない。
-l sourceSSHGuardで監視するログファイルを source で指定する。source に - を指定すると、標準入力から読み込む。
-w addr/host/block/file決してブロックしない対象(ホワイトリスト)を指定する。
指定はIPアドレス、ホスト名、CIDR形式によるアドレス範囲、またはそれらを記述したファイル、いずれかで行う。
-b [num:]filenameブラックリストを有効にする。接続ブロックがnum回繰り返されると、filenameで指定されたファイルに該当IPアドレスを記録する。
numはデフォルト値は3なので、3回の接続ブロック後は、ブラックリストに登録する。



導入の効果


2012/7/29以降のssh辞書攻撃を受けた日と、その時のID/パスワードの試行回数です。
下記回数以降は、SSHGuardにより接続がブロックされたので、最大でも12回の試行を受けただけで、後は撃退できたことがわかります。
なお、下記接続は日本国内からのみです。海外からの接続は、先の記事
iptables - 国内からの接続のみ許可して海外からの接続を遮断する にて接続をブロックしています。

2012/7/29   4回
2012/7/31   11回
2012/8/14   4回
2012/8/14   1回
2012/9/24   9回
2012/9/24   5回
2012/9/24   4回
2012/10/7   1回
2012/10/13   5回
2012/11/23   2回
2012/11/23   1回
2012/11/23   1回
2012/12/19   11回
2012/12/29   12回
2013/1/17   11回
2013/3/19   4回




参考



SSHGuard - Defend from brute force attacks
SSHブルート・フォース・アタック対策 - SSHGuradを使ってカウンター防御する
hollyなblog:sshguard試してみた

iptablesサンプル パソコン鳥のブログ/ウェブリブログ
iptables - 国内からの接続のみ許可して海外からの接続を遮断する パソコン鳥のブログ/ウェブリブログ

テーマ

関連テーマ 一覧


月別リンク

トラックバック(10件)

タイトル (本文) ブログ名/日時
iptablesサンプル
Linux でサーバを構築する際のiptablesでのファイアウォールのサンプルです。 サンプルではssh接続を受け入れるようにしています。 サンプル中のコメントを外すと、メールサーバやwebサーバにも対応できます。 ...続きを見る
パソコン鳥のブログ
2013/06/08 22:11
メールサーバへの総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処
IDやパスワードを変えて何度も接続を試みる総当たり攻撃(辞書攻撃/ブルートフォースアタック)は、ssh以外にメールサーバにも行われます。 sshへの攻撃の対策は、先の SSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策とその効果 で説明しましたが、同様に SSHGuard を利用して、メールサーバへの攻撃にも対処できます。 ...続きを見る
パソコン鳥のブログ
2013/07/05 22:21
1年間にサーバが受けた不正アクセスを接続元の国別に集計しました
管理しているサーバの内1台について、過去1年間に不正アクセスしてきたIPアドレスを国別に集計してみました。 以下で紹介した総当たり攻撃(辞書攻撃)を防ぐ sshguard で攻撃として検出された回数を集計しました。 ...続きを見る
パソコン鳥のブログ
2013/10/16 20:58
apacheユーザ認証(HTTP認証)への総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処
IDやパスワードを変えて何度も接続を試みる総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処として、これまで下記を紹介しました。 ...続きを見る
パソコン鳥のブログ
2013/11/26 22:23
sshへの攻撃に対する6個の防御方法
sshサーバへの攻撃に対する色々な防御方法を、おすすめ度つきで紹介します。 ...続きを見る
パソコン鳥のブログ
2013/11/28 21:07
SSHGuard使用時の iptables再起動の注意点と、SSHGuard起動・停止スクリプト
以下で紹介した SSHGuard使用時の iptables再起動の注意点です。 また、SSHGuard起動・停止スクリプトを作りましたので、紹介します。 ...続きを見る
パソコン鳥のブログ
2014/01/28 22:33
メールサーバのSMTP-Authへの総当たり攻撃(辞書攻撃/ブルートフォースアタック)への対処
SMTP認証へ辞書攻撃されるのでメールサーバをSMTPS-AUTH のみ利用にする で SMTPS-AUTH の設定方法について説明しました。 SSHGuard を使用している場合は、SMTPS-AUTH への辞書攻撃へ対処できるようにする設定を説明します。 ...続きを見る
パソコン鳥のブログ
2014/02/05 22:13
sshへの攻撃を防ぐSSHGuard のインストール・設定用スクリプト
これまで sshへの攻撃を防ぐ SSHGuardについて下記記事で紹介してきましたが、これらの設定を行うスクリプトファイルを用意しました。 なお、スクリプトは CentOS用です。 ...続きを見る
パソコン鳥のブログ
2014/06/22 14:07
Ubuntu14.04 の SSHGuard で iptables のルールを自分で書く場合の設定
下記で紹介した SSHGuard を Ubuntu14.04 で 使用し、かつ、自分で iptables のルールを細かく書いている場合の設定についてです。 ...続きを見る
パソコン鳥のブログ
2015/05/09 22:46
1年間にサーバが受けた不正アクセスの国別接続元(2014年5月〜2015年5月分)
管理しているサーバの内1台について、過去1年間に不正アクセスしてきたIPアドレスを国別に集計しました。 以前、下記記事で 2012年10月〜2013年10月までの分を公開しましたが、今回は 2014年5月〜2015年5月分になります。 ...続きを見る
パソコン鳥のブログ
2015/05/19 22:00

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
SSH総当たり攻撃(辞書攻撃/ブルートフォースアタック)の対策とその効果 パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる