最近更新时间:2024-08-28 10:27:29
通过iptables可以为Linux服务器配置有状态的防火墙,能够指定并记住为发送或接收信息包所建立的连接的状态,是一套用来设置、维护和检查Linux内核的IP包过滤规则的命令包。
Linux的iptables防火墙默认有三种表,Filter、NAT与Mangle,当然还有自定义的,其中Filter即是默认使用的表格,chain–条链,比如filter有INPUT、OUTPUT、FORWARD三条链。
下面以建一个filter表防火墙为例
[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则
[root@tp ~]# iptables -P INPUT DROP
[root@tp ~]# iptables -P OUTPUT ACCEPT
[root@tp ~]# iptables -P FORWARD DROP
远程SSH登录(开启22端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
WEB服务器(开启80端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
邮件服务器(开启25、110端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
FTP服务器(开启21端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
DNS服务器(开启53端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
HTTPS(开启443端口)
[root@tp ~]# iptables -A INPUT -p tcp --dport 443-j ACCEPT
445端口为运营商封禁端口,不可用
如果你还做了其他的服务器,需要开启哪个端口,照写就行了
上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
允许ICMP(允许ping)
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
允许loopback(不然会导致DNS无法正常关闭等问题)
iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
纯净模式