みなさんこんにちは、masa です。今日はインフラネタの中でも、VPS を取り上げたいと思います。AWS や Azure などのクラウドサービスだと画面上から「セキュリティグループ」を設定すれば必要最低限のセキュリティ設定はできるのですが、VPS の場合はサーバーにログインして iptables を設定しなくてはいけないことが多いです。
ということで、手っ取り早くコピペで設定する方法をご紹介します。
まずはサーバーに SSH でログインしてください。
次に以下のコマンドで iptables ファイルを開きます。
# vim /etc/sysconfig/iptables
以下を貼り付けてください。
# Generated by iptables-save v1.4.7 on Wed Mar 4 20:57:21 2015 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4:528] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT COMMIT
7行目: データがないパケットの接続を破棄
8行目: SYNflood(接続をあぶれさせる)攻撃の接続を破棄する
9行目: ステルススキャン(足跡を残さずに空いているポートをスキャンしに来る)接続を破棄する
10行目:localhostからの通信を許可
11行目:Ping通信を許可
12行目以降:各サービスの接続を許可 (SSH, HTTP, POP3, SMTP, SUBMISSION, HTTPS)
必要最低限のものは上で空いています。他にも空けたいポートがある場合は、同じように追記してみてください。
次に、上記設定を iptables へ反映させるため iptables を再起動します。
# /etc/sysconfig/iptables restart
実際に設定が反映されたか確認してみます。
# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG ACCEPT all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:https Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
いかがでしたか?今日は VPS で必要最低限な iptables をする方法をご紹介しました。契約したまま何も設定していないの、裸でゲットーを歩いているのと同じですので すぐに対処してくださいね。