防火墙

防火墙
firewalld
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
添加端口
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入:firewall-cmd --reload
查看端口:firewall-cmd --zone= public --query-port=80/tcp
删除端口:firewall-cmd --zone= public --remove-port=80/tcp --permanent

iptables
四表:filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理
五链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
白名单规则
开通本机的22端口、保存规则,重启iptables
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
NAT转发设置
访问本机(192.168.1.7)的8088端口转发到192.168.1.160的80端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.1.160:80
删除INPUT链的第一条规则:iptables -D INPUT 1
拒绝进入防火墙的所有ICMP协议数据包:iptables -I INPUT -p icmp -j REJECT
允许防火墙转发除ICMP协议以外的所有数据包:iptables -A FORWARD -p ! icmp -j ACCEPT
拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据
ptables -A FORWARD -s 192.168.1.11 -j REJECT 
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
说明:注意一定要把拒绝的放在前面不然就不起作用了!
允许本机开放从TCP端口20-1024提供的应用服务
iptables -A INPUT -p tcp -m tcp -m state --state NEW --dport 20:1024 -j ACCEPT
屏蔽指定的IP地址:iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP;BLOCK_THIS_IP="x.x.x.x"
屏蔽环回(loopback)访问
iptables -A INPUT -i lo -j DROP && iptables -A OUTPUT -o lo -j DROP
屏蔽来自外部的ping,即禁止外部机器ping本机
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP
屏蔽从本机ping外部主机,禁止本机ping外部机器
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -p icmp --icmp-type echo-reply -j DROP

禁止其他主机ping本机,但是允许本机ping其他主机(禁止别人ping本机,也可以使用echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all)
iptables -I INPUT -p icmp --icmp-type echo-request -j DROP 
iptables -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT 
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包
iptables -A INPUT -p tcp -m state --state NEW -j DROP 
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
说明:“ESTABLISHED”表示已经响应请求或者已经建立连接的数据包,“RELATED”表示与已建立的连接有相关性的,比如FTP数据连接等
防止DoS攻击
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
-m limit: 启用limit扩展,限制速度。
--limit 25/minute: 允许最多每分钟25个连接
--limit-burst 100: 当达到100个连接后,才启用上述25/minute限制
--icmp-type 8 表示 Echo request——回显请求(Ping请求)。下面表示本机ping主机192.168.1.109时候的限速设置:
iptables -I INPUT -d 192.168.1.109 -p icmp --icmp-type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
原文地址:https://www.cnblogs.com/effortsing/p/10405282.html