无聊又玩了下linux系统,这里记录一下linux的防火墙配置
首先确保你开启了iptables服务,如果没有的话,通过以下命令开启:
# systemctl start iptables
清除现在的配置,使之回复到默认状态:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t raw -F # iptables -t raw -X # iptables -t mangle -F # iptables -t mangle -X # iptables -t security -F # iptables -t security -X
在filter表中添加TCP和UDP两条chian,分别用来处理tcp连接和udp连接:
# iptables -N TCP # iptables -N UDP
修改filter表中几条默认chian的policy:
# iptables -P OUPUT ACCEPT # iptables -P INPUT DROP # iptables -P FORWARD DROP
接受状态为RELATED
和ESTABLISHED
的包:
# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
接受来着本地回环lo
的包:
# iptables -A INPUT -i lo -j ACCEPT
丢弃状态为INVALID
的包:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
接受来自ICMP
协议的echo-request的第一个请求包:
# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
将第一个udp包或者连接请求tcp包分别交给UDP
chian和TCP
chain处理:
# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
添加两条INPUT
规则(rule),使得Linux系统默认分别使用icmp-port-unreachable
和tcp-rst
拒绝udp协议和tcp协议的包:
# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
添加INPUTchian的最后一条规则,使得Linux拒绝所有的其他包:
# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
最后,将以上的iptables配置保存到配置文件,以便下一次启动iptables时可以自动生效以上配置:
# iptables-save > /etc/iptables/iptables.rules
这是示例配置文件:
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable COMMIT
发表回复