查看内核发行号:uname -r
查看内核版本:uname -v
清除原有规则,不改变默认策略
iptables -F -t [filter|nat|mangle]
例:
iptables -F
iptables -X
iptables -Z
添加策略:
打开管理端口(注意nat转换用外网口地址)
iptables -A INPUT -s 192.168.101.0/24 -p tcp --dport 22 -j ACCEPT
打开icmp
iptables -A INPUT -s 192.168.101.0/24 -p icmp -j ACCEPT
添加dns服务器的53端口
iptables -A INPUT -s dns-ip -p udp --sport 53 -j ACCEPT
放行本机80端口访问
iptables -A INPUT -d 192.168.101.141(本机ip) -p tcp --sport 80 -j ACCEPT
添加业务策略
删除某条规则
iptables -D INPUT ...
修改默认策略:
iptables [-t filter|nat|mangle] -P [INPUT|OUTPUT|FORWARD] [ACCEPT|DROP]
例:iptables -P INPUT DROP
保存原配置:
iptables-save > iptables.old
还原配置
iptables-restore < iptables.old
添加启动脚本:
chmod +x /etc/rc.d/rc.local
cp iptables.old /etc/rc.d/
在rc.local脚本中添加
iptables -F
iptables -X
iptables -Z
iptables-restore < /etc/rc.d/iptables.old
设置开机启动防火墙:
systemctl start firewalld.service
系统自带规则重启时无法清除
使用cron计划执行命令:
vi /etc/crontab
* * */1 * * root iptables-restore /etc/rc.d/iptables.old
重启cron服务
systemctl restart crond.service
删除指定规则
iptables -L -n --line-number
iptables -D INPUT 2
添加状态监测机制
解释一下状态
NEW:如果你的主机向远程机器发时一个连接请求,这个数据包状态是NEW.
ESTABLISHED:当联接建立之后,远程主机和你主机通信数据状态为ESTABLISHED
RELATED: 像ftp这样的服务,用21端口传送命令,而用20端口(port模式)或其他端口(PASV模式)传送数据。在已有21端口上建立好连接后发送命令,用20传送的数据,状态是RELATED
TCP连接
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
UDP连接
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
1, 默认规则,对所以进入你机器的数据都丢弃,iptables -P INPUT DROP
2, 禁止其他机器主动发起对你机器的连接,但你却可以主动的连接其他机器, 这条可以省去由默认规则处理,iptables -A INPUT -m state --state NEW -j DROP
3, 当你主动连接其他机器之后,再进来的数据就是ESTABLISHED状态了,
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4, 接下来如果你的机器提供pasv模式的ftp服务(会使用动态的端口来传送数据,这对于有状态的防火墙轻易做到,甚至不用知道它用了哪些端口,因为它会认识到这些数据是RELATED的),
iptables -A INPUT -i ppp0 -p tcp -dport 21 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp -dport 21 -j ACCEPT
两条命令就解决了内部用户上网收发E_mail、浏览网页、使用msn聊天等需求
#iptables –A FORWARD –i eth0 –p tcp –m multiport --dports 25,80,110,443,1863 –j ACCEPT
#iptables –A FORWARD –i eth0 –p udp --dport 53 –j ACCEPT
在子网计算机上访问外部网络:
[root@wpaliyun ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
#禁用并停止firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalld
#安装iptables防火墙
[root@localhost ~]# yum install -y iptables-services
#启用并开启iptables
[root@localhost ~]# systemctl start iptables
[root@localhost ~]# systemctl enable iptables
#在eno16777736接口上开启地址伪装
[root@localhost ~]# iptables -t nat -I POSTROUTING -o eno16777736 -j MASQUERADE
[root@wpaliyun ~]# service iptables save