3週間ほど前に海外からの攻撃を受けていたサーバ。最近は順調に動いています。
それでも「定期的にログは見よう」と思っていたのに、気がつくと3週間経っていました。
久しぶりに見てみると、、、
今度はSSHポート
前回ほどではないのですが、SSHポートに攻撃を受けていました。
今度はサーバに負荷のかからない程度で。
もう、堪忍袋の緒が切れた!
奴らの辞書攻撃で実害を喰らうような使い方はしていないが、チマチマしていて実に目障りだ。
全て海外からの不正アクセスだったので、海外からのSSHアクセスは遮断することにした。
アクセスを許可するPCは、.jpで終わるプロバイダ経由なので、こうしてやる!
/etc/hosts.allow ファイル
ALL : localhost : allow
sshd : .jp : allow
sshd : ALL : deny
in.proftpd : .jp : allow
in.proftpd : ALL : deny
dovecot : .jp : allow
dovecot : ALL : deny
(ついでに、前回ポート自体を塞いでしまった POP3 も、国内からなら接続できるようにしておきました)
そして、それ以外は全て拒否だ!
/etc/hosts.deny ファイル
ALL : ALL
ところで、hosts.deny ですべてを拒否するのは非常に強力なだけに、間違えると一大事です。
hosts.allow を間違えると、外部から SSH 接続ができなくなるので、修正できなくなるからです。
特に今回はレンタルサーバなので、修正するためにローカルからログインすることができません。
で、ビビリんぼうの私は、1時間後に hosts.deny をクリアするように仕込んでおきました。
具体的な方法は、crontab -e で
0 11 * * * /bin/echo > /etc/hosts.deny
を加えておきました。
こうしておけば、間違えて外部からSSH接続できなくなっても、午前11時には拒否が解除されるというわけです。
まあ、結局取り越し苦労で、うまく設定できました。
本当は
本当は、iptables を使って「1分間に8回失敗したら、そのIPアドレスからはしばらく拒否」ということがしたかったのですが、お名前VPS では ipt_recent モジュールが使えないようなので諦めました。