一、防火墙基础说明
CentOS7及以上默认使用firewalld动态防火墙,CentOS6为iptables,两者不能同时运行。防火墙默认拦截所有外部入站请求,服务启动后外网依旧无法访问,必须放行对应端口/服务。
二、firewalld 防火墙(CentOS7+默认,主推)
1. 防火墙基础启停命令
# 启动防火墙 systemctl start firewalld # 关闭防火墙 systemctl stop firewalld # 查看状态 systemctl status firewalld # 设置开机自启/关闭开机自启 systemctl enable firewalld systemctl disable firewalld2. 核心放行命令(永久生效,无需重启防火墙)
# 格式:放行端口,永久生效 firewall-cmd --permanent --add-port=端口号/tcp # 放行服务(直接写服务名,无需记端口) firewall-cmd --permanent --add-service=服务名 # 重载防火墙,规则立即生效 firewall-cmd --reload3. 生产实战常用放行案例
# 放行ssh 22端口 firewall-cmd --permanent --add-port=22/tcp # 放行http 80、https 443端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp # 放行mysql 3306端口 firewall-cmd --permanent --add-port=3306/tcp # 直接放行nginx服务 firewall-cmd --permanent --add-service=http # 放行一段连续端口 firewall-cmd --permanent --add-port=8080-8090/tcp # 重载生效 firewall-cmd --reload# 查看所有放行规则 firewall-cmd --list-all # 删除指定端口规则 firewall-cmd --permanent --remove-port=3306/tcp # 删除服务规则 firewall-cmd --permanent --remove-service=http # 重载生效 firewall-cmd --reload三、iptables 传统防火墙(兼容旧版本)
1. 切换iptables,关闭默认firewalld
# 关闭firewalld systemctl stop firewalld systemctl disable firewalld # 安装iptables服务 yum install iptables-services -y # 启动并开机自启 systemctl start iptables systemctl enable iptables2. iptables放行端口实操
# 放行80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 放行22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 查看所有规则 iptables -L -n # 保存规则(防止重启失效) service iptables save四、生产环境防火墙规范
生产环境禁止关闭防火墙,最小化放行业务端口
优先使用firewalld,命令简单、支持动态重载
放行端口必须加--permanent永久参数,否则重启失效
规则修改后必须执行reload重载