centos7默认使用的防火墙是firewalld
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload 重新启动防火墙 :service firewalld restart 拒绝所有包:firewall-cmd --panic-on ####xshell等工具慎用 取消拒绝状态: firewall-cmd --panic-off 查看是否拒绝: firewall-cmd --query-panic 添加端口规则:firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 查询端口是否有效:firewall-cmd --zone=public --query-port=80/tcp 删除端口:firewall-cmd --zone= public --remove-port=80/tcp --permanent
iptables用于过滤数据包,属于网络层防火墙. firewall能够允许哪些服务可用,那些端口可用.... 属于更高一层的防火墙。 firewall的底层是使用iptables进行数据过滤,建立在iptables之上。
1、安装iptable iptable-service #先检查是否安装了iptables service iptables status #安装iptables yum install -y iptables #升级iptables(安装的最新版本则不需要) yum update iptables #安装iptables-services yum install iptables-services
2、禁用/停止自带的firewalld服务 #停止firewalld服务:systemctl stop firewalld #禁用firewalld服务:systemctl mask firewalld
3、设置现有规则 #查看iptables现有规则 iptables -L -n #先允许所有规则,防止断开工具链接 iptables -P INPUT ACCEPT #清空所有默认规则 iptables -F #清空所有自定义规则 iptables -X #所有计数器归0 iptables -Z #允许来自于lo接口的数据包(本地访问) iptables -A INPUT -i lo -j ACCEPT #开放22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #开放21端口(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT #开放80端口(HTTP) iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放443端口(HTTPS) iptables -A INPUT -p tcp --dport 443 -j ACCEPT #允许ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #允许接受本机请求之后的返回数据 RELATED,是为FTP设置的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #其他入站一律丢弃 iptables -P INPUT DROP #所有出站一律绿灯 iptables -P OUTPUT ACCEPT #所有转发一律丢弃 iptables -P FORWARD DROP
4、其他规则设定 #如果要添加内网ip信任(接受其所有TCP请求)iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT #过滤所有非以上规则的请求 iptables -P INPUT DROP #要封停一个IP,使用下面这条命令:iptables -I INPUT -s ***.***.***.*** -j DROP #要解封一个IP,使用下面这条命令: iptables -D INPUT -s ***.***.***.*** -j DROP
5、保存规则设定 #保存上述规则 service iptables save
6、开启iptables服务 #注册iptables服务 相当于以前的chkconfig iptables on systemctl enable iptables.service #开启服务 systemctl start iptables.service #查看状态 systemctl status iptables.service
7、映射端口(如将mysql默认的3306端口映射成1306对外提供服务) iptables -t mangle -I PREROUTING -p tcp --dport 1306 -j MARK --set-mark 883306 iptables -t nat -I PREROUTING -p tcp --dport 1306 -j REDIRECT --to-ports 3306 iptables -I INPUT -p tcp --dport 3306 -m mark --mark 883306 -j ACCEPT
注:iptables文件目录在 /etc/sysconfig/iptables