さくらのVPSを借りてから3ヶ月。ようやくiptablesのコマンドや設定をかなりの範囲で理解できるようになったので、自力で設定してみた。(今までは様々なサイトで公開している設定の丸写し)
iptablesは設定を間違えると「サイトに繋がらなくなる」とか、「自宅からサーバーへの接続すら出来なくなる」とかの注意書きに恐れをなして、今まで後回しにしていた。しかし覚悟を決めてアレコレと設定を弄ったりコマンド入力してみたりすると、意外とアッサリ理解できた。う~む。案ずるより生むが易し。
覚えとけコマンド
iptables状態確認
# iptables -L
iptables 設定保存
# /etc/rc.d/init.d/iptables save
または
# iptables-save > /etc/sysconfig/iptables
iptables再起動
# /etc/rc.d/init.d/iptables restart
設定後のiptables の中身
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 41.250.109.45 -j DROP
-A INPUT -s 41.251.155.240 -j DROP
-A INPUT -s 59.106.179.151 -j DROP
-A INPUT -s 62.193.234.37 -j DROP
-A INPUT -s 64.62.231.209 -j DROP
-A INPUT -s 64.244.95.2 -j DROP
-A INPUT -s 70.33.246.224 -j DROP
-A INPUT -s 71.87.16.186 -j DROP
-A INPUT -s 72.167.52.115 -j DROP
-A INPUT -s 82.98.144.44 -j DROP
-A INPUT -s 82.129.237.5 -j DROP
-A INPUT -s 85.25.141.136 -j DROP
-A INPUT -s 87.233.183.99 -j DROP
-A INPUT -s 88.191.93.78 -j DROP
-A INPUT -s 89.238.169.210 -j DROP
-A INPUT -s 92.60.67.4 -j DROP
-A INPUT -s 92.240.68.153 -j DROP
-A INPUT -s 94.76.229.159 -j DROP
-A INPUT -s 112.78.193.229 -j DROP
-A INPUT -s 114.215.29.210 -j DROP
-A INPUT -s 114.80.96.84 -j DROP
-A INPUT -s 114.80.0.0/16 -j DROP
-A INPUT -s 114.215.0.0/16 -j DROP
-A INPUT -s 123.123.123.123 -j DROP
-A INPUT -s 125.224.206.94 -j DROP
-A INPUT -s 125.215.205.180 -j DROP
-A INPUT -s 124.42.126.8 -j DROP
-A INPUT -s 173.192.163.98 -j DROP
-A INPUT -s 193.164.138.89 -j DROP
-A INPUT -s 193.164.138.35 -j DROP
-A INPUT -s 196.40.74.18 -j DROP
-A INPUT -s 209.172.34.202 -j DROP
-A INPUT -s 209.20.67.34 -j DROP
-A INPUT -s 208.109.119.64 -j DROP
-A INPUT -s 212.24.158.205 -j DROP
-A INPUT -s 218.75.124.151 -j DROP
-A INPUT -s 218.5.17.116 -j DROP
-A INPUT -s 219.153.62.81 -j DROP
-A INPUT -s 219.151.9.139 -j DROP
-A INPUT -s 220.225.127.234 -j DROP
-A INPUT -s 222.186.25.143 -j DROP
-A INPUT -s 222.122.34.249 -j DROP
-A INPUT -s 222.114.39.152 -j DROP
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport XXXX -j ACCEPT
#SSHのポートは一応非公開
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
とりあえず、この3ヶ月で不正にログインしようとして来たり、MySQLやMovableTypeのディレクトリに総当り攻撃をかけてきたIPは全部iptablesで遮断。
SSHのポートはセキュリティのために一応非公開。
FORWARDはDROPの方が良いかなーと思いつつ、今の段階ではそのまま。いずれ閉じると思う。
メール関連はこれからお勉強なのでまだ閉じたまま。
謎
途中、手抜きしてrootでログインしてWinSCPで直接/etc/sysconfig/iptablesを編集していたら、iptablesファイルが消滅、iptablesの設定も勝手にリセットがかかってしまった。
どこで、どういう操作ミスをしたのか、全く心当たりなし。。。
う~む。大事なファイルは面倒臭がらずviで編集した方が良いのか。。。
追記:謎解けた。特定IPをiptablesで遮断する方法・編集方法
iptables -A INPUT -s 10.0.0.0/8 -j DROP
とか
iptables -A INPUT -s 59.106.179.151 -j DROP
とか、
一個一個アクセス拒否するIPアドレスを入力して行って、最後に
# /etc/rc.d/init.d/iptables save
で保存。
# /etc/rc.d/init.d/iptables restart
で再起動。
vi でiptablesを書き換えた場合は、「# /etc/rc.d/init.d/iptables save 」とか「# iptables-save > /etc/sysconfig/iptables 」とかやるとiptablesがおかしくなるっぽい。
異なる編集方法を紹介している複数のサイトの方法を同時に真似すると、おかしな事になるみたい。
参考にしたサイト
iptables を使ったパケットの許可/破棄の設定をしファイアウォールとして活用する。
さくらのVPS - iptablesの設定メモ - Rubellum fly light
iptables で特定IPからのアクセスを拒否 - Hidde's Tips
当初 設定を丸写しさせて頂いたサイト
さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ