答え1
通常、次のようなiptablesルールがあります。
# define standard chains and default behaviour (here ACCEPT, could be DROP)
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# everything as a continuation is OK, This will be the bulk => 1st rule
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# drop garbage packages
-A INPUT -m conntrack --ctstate INVALID -j DROP
# server services including your new web server
-A INPUT -p tcp -m tcp --dport 12345 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2103 -m conntrack --ctstate NEW -j ACCEPT
# (perhaps some more, do include SSH!)
# allow incoming ping (good for testing)
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
# rest / default: DROP!
-A INPUT -j DROP
# Again, everything related is allowed
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# allow DNS, both UDP and TCP
-A OUTPUT -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
# allow access to time servers (NTP)
-A OUTPUT -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT
# Allow anything else you need, e.g. for OS update servers
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
# Allow outgoing ping
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# disallow the rest!
-A OUTPUT -j DROP
# Forward usually not needed except for routing and NAT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
RELATED 状態がありません。
上記のルールは通常ファイルに書き込まれます。
# /etc/sysconfig/iptables
コマンドで保存できます。
# iptables-save > /etc/sysconfig/iptables
そのファイルから回復
# iptables-restore < /etc/sysconfig/iptables
iptables.service
起動時にこのファイルからテーブルを復元できるシステムサービスがあります。システムによっては、このサービスがある場合と存在しない場合もあり、無効になる場合もあります(systemctl status iptables
)。
サービスがある場合(yum install iptables-services
CentOSに)、iptablesルールをテストして一度保存します。
# iptables-save > /etc/sysconfig/iptables
その後、サービスを有効にします。
# systemctl enable iptables
# systemctl start iptables
次の起動後、次のコマンドを実行して現在のエントリを確認し、これが機能していることをテストします(ここのすべてのコマンドと同じようにrootとして)。
# iptables -L -nv