SSHブルートフォースアタック(ID, PASS 総当たり攻撃、辞書攻撃)に負けない設定にする




投稿日:

ブルートフォースアタックへの対応は必須です。知り合いのSSH設定が甘いサーバも最近やられてしまいました。

ハッキングに遭って、踏み台にされた話 | 田舎に住みたいエンジニアの日記
http://blog.ybbo.net/2013/12/18/%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%AB%E9%81%AD%E3%81%A3%E3%81%A6%E3%80%81%E8%B8%8F%E3%81%BF%E5%8F%B0%E3%81%AB%E3%81%95%E3%82%8C%E3%81%9F%E8%A9%B1/


そもそもインターネットにSSHをさらさないことが何より良いのですが、どうしても、、という場合もあります。

そんなときは、攻撃対象になっても負けないように最低限の設定は絶対にしましょう。

もし、攻撃にあったら?慌てずに、調査しましょう。

対策1 ポートを変更する。

簡単で一番効果があります。ポートを変更するだけで攻撃がぐっと減ります。

vi /etc/ssh/sshd_config

#Port 22
Port xxxxx 



対策2 ログインには鍵認証を利用する。パスワード認証は絶対に使用しない。

別記事で書きます。


対策3 IP制限を入れる。(TCP wrappersを利用する)

※ 自動で拒否ホストを追加することもできます。

設定するときは、間違えると自分もログイン出来なくなるので注意が必要。
一つのターミナルで設定したら、そのまま違うターミナルを立ち上げて確認します。

vi /etc/hosts.allow
sshd : 192.168.1.0/255.255.255.0  #ローカルネットワークを許可 書き方を帰ると、「192.168.1. 」でも良い。
sshd : 111.111.222. #前方一致の書き方。
sshd : .xxx.jp # ドメインでも記述可能。これが便利。

vi /etc/hosts.deny
sshd : all

/etc/ini.d/sshd restart



対策4 最大同時認証数数の設定変更

こちらを参考にしました。

http://logic.moo.jp/data/archives/644.html


# 最大同時認証数数を3にする

MaxAuthTries 3

# 2つを超える認証受付は90%の確率で遮断。4つを超えると全て遮断

MaxStartups 2:90:4

MaxAuthTries (最大認証試行回数)
1接続あたりの認証を最大で何回まで試みることができるかを指定しま
す。ここで指定された半数以上の認証が失敗すると、それ以降の失敗は
ログに記録されます。デフォルトの値は 6 です。

MaxStartups (最大起動数)
認証されていない段階の接続を sshd デーモンが最大でどれだけ受けつ
けるかを指定します。この値を超えた (認証されていない段階の) 接続
は捨てられます。この状態は (すでに接続したクライアントの) 認証が
成功するか、その LoginGraceTime (ログイン猶予時間) が切れるまで続
きます。デフォルトではこの数は 10 です。

もうひとつの方法は、早いうちからランダムに接続を拒否するよう指定
することです。これはこのオプションにコロンで区切った 3つの値を与
えることによりおこないます。この値は “start:rate:full” (“開始
時:確率:最大数”) の形をとります (例: “10:30:60″ など)。 sshd は
認証されていない段階の接続が “start” (この例では 10) 個を超える
と、これ以後の接続要求を “rate/100” (この例では 30%) の確率で拒
否しはじめます。この確率は “full” (この例では 60) 個の接続が来
るまで線形に増えつづけ、最大数に達した時点でそれ以降すべての接続
を拒否するようになります。



対策5 ユーザを制限する。

SSHで利用する予定がなくても、存在するユーザはSSHで確認ができてしまいます。
それを狙われる事が多いので、あらかじめ絞っておきましょう。


AllowUsers hogehoge


対策6 iptablesで制御する。

やり方は色々あります。例えばこちらの方法。

セキュリティ – iptablesを利用したsshのブルートフォースアタック対策 – Qiita [キータ]
http://qiita.com/dkkoma@github/items/aacd9b65051c78516a5e