sshへのbrute force攻撃を防ぐ

| コメント(0) | トラックバック(0)
fedoraを始め多くのLinuxディストリビューションでは、OpenSSHが標準装備されており、サーバのリモート操作が容易にできるようになっている。

便利である半面、ユーザ名・パスワードの総当たり攻撃(brute forceアタック)は現在でも常習的に行なわれており、Logwatchなどの情報を見ると特にsshdを狙った攻撃が非常に多く、プログラムにより断続的に行なわれているのが分かる。


■とある日のLogwatch
################### Logwatch 7.3.6 (05/19/07) ####################


(中略)

--------------------- pam_unix Begin ------------------------

sshd:
Authentication Failures:
unknown (202.169.30.25): 1719 Time(s)
root (202.169.30.25): 393 Time(s)
unknown (65.90.252.67): 294 Time(s)
unknown (213.192.73.162): 127 Time(s)
unknown (125.35.11.211): 60 Time(s)
root (61.134.27.234): 59 Time(s)
root (65.90.252.67): 46 Time(s)
unknown (61.134.27.234): 42 Time(s)
root (125.35.11.211): 32 Time(s)
unknown (122.128.96.6): 28 Time(s)
root (122.128.96.6): 25 Time(s)
root (213.192.73.162): 15 Time(s)
apache (202.169.30.25): 5 Time(s)
hsqldb (202.169.30.25): 5 Time(s)
mysql (125.35.11.211): 5 Time(s)
adm (65.90.252.67): 4 Time(s)
avahi (202.169.30.25): 4 Time(s)
gopher (202.169.30.25): 4 Time(s)
smmsp (202.169.30.25): 4 Time(s)
distcache (202.169.30.25): 3 Time(s)
news (202.169.30.25): 3 Time(s)
unknown (202.165.235.2): 3 Time(s)
adm (61.134.27.234): 2 Time(s)
bin (65.90.252.67): 2 Time(s)
clamav (65.90.252.67): 2 Time(s)
daemon (65.90.252.67): 2 Time(s)
games (65.90.252.67): 2 Time(s)
gopher (65.90.252.67): 2 Time(s)
haldaemon (202.169.30.25): 2 Time(s)
halt (65.90.252.67): 2 Time(s)
lp (65.90.252.67): 2 Time(s)
mail (65.90.252.67): 2 Time(s)
mailnull (65.90.252.67): 2 Time(s)
mysql (202.169.30.25): 2 Time(s)
mysql (65.90.252.67): 2 Time(s)
news (65.90.252.67): 2 Time(s)
nfsnobody (202.169.30.25): 2 Time(s)
nfsnobody (65.90.252.67): 2 Time(s)
nobody (65.90.252.67): 2 Time(s)
operator (65.90.252.67): 2 Time(s)
rpc (65.90.252.67): 2 Time(s)
rpcuser (65.90.252.67): 2 Time(s)
shutdown (65.90.252.67): 2 Time(s)
smmsp (65.90.252.67): 2 Time(s)
sshd (65.90.252.67): 2 Time(s)
sync (65.90.252.67): 2 Time(s)
uucp (65.90.252.67): 2 Time(s)
adm (213.192.73.162): 1 Time(s)
amavis (202.169.30.25): 1 Time(s)
apache (213.192.73.162): 1 Time(s)
apache (61.134.27.234): 1 Time(s)
apache (65.90.252.67): 1 Time(s)
bin (202.169.30.25): 1 Time(s)
bin (213.192.73.162): 1 Time(s)
clamav (213.192.73.162): 1 Time(s)
daemon (202.169.30.25): 1 Time(s)
daemon (213.192.73.162): 1 Time(s)
dbus (202.169.30.25): 1 Time(s)
dovecot (202.169.30.25): 1 Time(s)
ftp (213.192.73.162): 1 Time(s)
games (202.169.30.25): 1 Time(s)
games (213.192.73.162): 1 Time(s)
gdm (202.169.30.25): 1 Time(s)
gopher (213.192.73.162): 1 Time(s)
halt (213.192.73.162): 1 Time(s)
lp (213.192.73.162): 1 Time(s)
mail (202.169.30.25): 1 Time(s)
mail (213.192.73.162): 1 Time(s)
mailnull (213.192.73.162): 1 Time(s)
mysql (122.128.96.6): 1 Time(s)
mysql (213.192.73.162): 1 Time(s)
mysql (61.134.27.234): 1 Time(s)
named (213.192.73.162): 1 Time(s)
named (65.90.252.67): 1 Time(s)
news (213.192.73.162): 1 Time(s)
nfsnobody (213.192.73.162): 1 Time(s)
nobody (213.192.73.162): 1 Time(s)
nobody (61.134.27.234): 1 Time(s)
nscd (202.169.30.25): 1 Time(s)
ntp (202.169.30.25): 1 Time(s)
operator (213.192.73.162): 1 Time(s)
operator (61.134.27.234): 1 Time(s)
polkituser (202.169.30.25): 1 Time(s)
postfix (213.192.73.162): 1 Time(s)
postfix (65.90.252.67): 1 Time(s)
pulse (202.169.30.25): 1 Time(s)
root (202.165.235.2): 1 Time(s)
rpc (213.192.73.162): 1 Time(s)
rpcuser (213.192.73.162): 1 Time(s)
shutdown (213.192.73.162): 1 Time(s)
smmsp (213.192.73.162): 1 Time(s)
smolt (202.169.30.25): 1 Time(s)
sshd (213.192.73.162): 1 Time(s)
sync (213.192.73.162): 1 Time(s)
tcpdump (202.169.30.25): 1 Time(s)
torrent (202.169.30.25): 1 Time(s)
uucp (202.169.30.25): 1 Time(s)
uucp (213.192.73.162): 1 Time(s)
Invalid Users:
Unknown Account: 2273 Time(s)


---------------------- pam_unix End -------------------------

(以下略)



かといって、SSHによる管理をやめてしまうと、うちのような小規模な団体だったらいいが、企業などでは、一元管理上、非常に業務上支障をきたすと思う。



このようなbrutet force攻撃に対しては昔から以下のような対策が慣例になっている。

・rootログインを不許可にする
 sshd_config ファイル内にて、
 #PermitRootLogin yes
    ↓
 PermitRootLogin no
 に変更後、sshd再起動。
・MaxStartupsを利用し、アクセス元に制限をかける
 参考)http://www.itmedia.co.jp/help/tips/linux/l0541.html
・IPを動的検知してファイアーウォールに登録する
 参考)http://www.otsune.com/diary/2004/10/29/7.html#200410297
・指定した期間に受け入れる(match する)パケットの数を制限
 参考)http://dsas.blog.klab.org/archives/50208645.html


しかし、いずれにせよ全てルーターから内側の対策術であり、少なからずCPUやパケットが無駄に浪費されていることに変わりはないし、IPフィルタリングにおいては、アクセス元を無作為に増やされると、それに伴ってこちらのテーブルやログもどんどん肥大化していっていしまう。

くだらないやつらのために、こちらの環境までアップデートを繰り返さなければならないのは非常に頭にくるので今回はsshのポートを変更することにした。


ポート番号は使用されていない番号(10000番代?)あたりで設定。

1./etc/sshd/sshd_configを

 #Port 22
   ↓
 Port 10004

 に変更。(※コメントアウトした状態だと勝手に22番が指定される)

2.ファイアウォールの設定で、22番ポートを閉じ、10004番ポートを新規作成しTCPを許可する。

3.ルータの静的マスカレード設定で、22番ポートを削除し、新しく10004番ポートを追加し開く。

4.sshデーモンを再起動する。


これだけでも、少なくても22番を想定してアクセスしてくるものは全てLANに侵入する前に跳ね返される。

トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/100

コメントする

このブログ記事について

このページは、管理人が2009年1月12日 11:16に書いたブログ記事です。

ひとつ前のブログ記事は「DATE型の日付差を求めるSQL文」です。

次のブログ記事は「無停電電源装置(APC ES725)の導入」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.22-ja