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が自動的にファイアウォールへ設定を行うことで実施されます。 以下が対応しているファイアウォールです。
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起動時に指定するオプションで変更できます。 オプションは以下を参照してください。
導入の効果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 - 国内からの接続のみ許可して海外からの接続を遮断する パソコン鳥のブログ/ウェブリブログ |
<< 前記事(2013/06/07) | ブログのトップへ | 後記事(2013/06/11) >> |
タイトル (本文) | ブログ名/日時 |
---|---|
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 |
内 容 | ニックネーム/日時 |
---|
<< 前記事(2013/06/07) | ブログのトップへ | 後記事(2013/06/11) >> |