はじめに
こちらはほぼまるまる参考にさせて頂いたサイトのコピーです
補足
ほとんど同じですがわけあって記事を書き直しました。
→さくらvpsの設定自分メモ - iptables②(パケットフィルタリング)
設定する
以下を好きな場所に保存してたたくだけ
今回は/root/sh/init_iptables.shとかにしました
#!/bin/bash # フィルタリングルールを消去する /sbin/iptables -F # デフォルトポリシーを設定 /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT DROP # ループバックを許可する /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # プライベートアドレスが使われているパケットを破棄 /sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP /sbin/iptables -A INPUT -i eth0 -d 10.0.0.0/8 -j DROP /sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP /sbin/iptables -A INPUT -i eth0 -d 172.16.0.0/12 -j DROP /sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP /sbin/iptables -A INPUT -i eth0 -d 192.168.0.0/16 -j DROP # 基本サービスを許可。とりあえずSSH、HTTP、HTTPSのみ /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT # すでにコネクションを確立しているものは許可 /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Ping of Death対策 /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # 外への接続は全て許可 /sbin/iptables -P OUTPUT ACCEPT # 保存 + iptables再起動 /etc/init.d/iptables save /etc/init.d/iptables restart # 設定が適用されているか確認 /sbin/iptables -L
たたく
# chmod 700 init_iptables.sh # ./init_iptables.sh iptables: ファイアウォールのルールを /etc/sysconfig/iptable[ OK ]中: iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ] iptables: ファイアウォールルールを消去中: [ OK ] iptables: モジュールを取り外し中: [ OK ] iptables: ファイアウォールルールを適用中: [ OK ] Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- localhost localhost DROP all -- 10.0.0.0/8 anywhere DROP all -- anywhere 10.0.0.0/8 DROP all -- 172.16.0.0/12 anywhere DROP all -- anywhere 172.16.0.0/12 DROP all -- 192.168.0.0/16 anywhere DROP all -- anywhere 192.168.0.0/16 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere icmp echo-request limit: avg 1/sec burst 5 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- localhost localhost
参考サイト
→iptablesの基本設定(ファイアウォール)
補足
上記の設定だと一部こまることがあったので現在はこっちにしてます
viでiptablesを開いてまるっとこれに置き換えて問題ないはずです
# sudo vi /etc/sysconfig/iptables --vi編集-- *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -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, HTTPS, SSH(22) -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -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 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT ---------- ※再起動 # sudo /etc/init.d/iptables restart ※気になる場合は確認 # sudo /sbin/iptables -L
iptables難しい(><)
ちなみにこちらを参考にさせて頂きました
→さくら VPS のサーバーに iptables の設定をしてみた