SSH接続で特定国(中国、ロシア)からの接続をブロックする(ipsetを使って)(その1)
インターネットに接続しているサーバのSSHのポートに海外からブルートフォースアタックが来たりしますよね。
日本人が運用している日本人のためのサーバであれば、基本IPは日本国からになるので、海外からのアタックは防止したいところです。
IPが数個~数十個であればiptablesの選択で間違いないんですが、海外のIPを丸ごとごっそりブラックリスト化したい場合は、ipsetを使った方がよさそうです。
まずは上記ウェブとても参考になります。cnやruの最新IPを取得できます。
インターネット的にとても評判の良いページ、これさえあればほとんど設定できるんじゃないかと思わされます。
ただipsetでリストを作った後にサーバを再起動するとリストがなくなるよ、というあたりで、じゃあ、一度作ったリストをちゃんと読み込むためにはどうすればよいのか?という最後の最後の記述が少し足りない気がします。
ipsetとiptablesでSSHを日本国内からの接続に限定する (CentOS 6)
といって、上記ページで書いてある「view /etc/init.d/ipset」はRedHat用のipsetのRPMにはありません。(CentOS独自なのか?)
手元の環境で見ると
[root@ipset]# rpm -qa|grep ipset
ipset-6.11-1.el6.x86_64
[root@ipset]# rpm -ql ipset-6.11-1.el6.x86_64
/usr/lib64/libipset.so.2
/usr/lib64/libipset.so.2.0.0
/usr/sbin/ipset
/usr/share/doc/ipset-6.11
/usr/share/doc/ipset-6.11/COPYING
/usr/share/doc/ipset-6.11/ChangeLog
/usr/share/man/man8/ipset.8.gz
とipsetの起動スクリプトは明らかにない。たしかにipset saveとかでファイルとしては書き出せるが、それでは起動時に自動読み込みするまでは至らない...と思っていたら、ただ単にRPMが古いだけだった。6.11-2以降であれば含まれている模様。
Changelog
* Wed Feb 25 2015 Thomas Woerner <twoerner@redhat.com> - 6.11-4 - move ipset_port_usage into library (RHBZ#1121665) * Tue Aug 26 2014 Thomas Woerner <twoerner@redhat.com> - 6.11-3 - fixed init script according to according to rhbz#1130570 and rhbz#888571#c28 * Fri Jun 13 2014 Thomas Woerner <twoerner@redhat.com> - 6.11-2 - added ipset init script (rhbz#888571) * Fri Feb 10 2012 Thomas Woerner <twoerner@redhat.com> - 6.11-1 - new version 6.11 with so library version 2, includes - cleaned up spec file for 6.11, dropped patch, no kernel will be built - adapted for RHEL-6: added clean tag, BuildRoot
RPMのバージョンを新しくして試してみる。
詳細は後日書きます。