防火墙 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