Centos6 防火墙配置
vi /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state –-state NEW -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m state –-state NEW -m tcp –dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
说明
#CentOS6
#开放端口运行外部访问(不指定源IP)
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
#定向开放本地端口允许访问
iptables -I INPUT -s 10.86.87.0/24 -p tcp --dport 10050 -j ACCEPT
#然后保存:
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status
#防火墙启停
/etc/init.d/iptables start
/etc/init.d/iptables stop
禁止linux向外建立新连接(INPUT 向内)
1、iptables -I OUTPUT -m state --state NEW -j DROP
#拒绝IP所有请求
iptables -I INPUT -s 10.86.87.123 -j DROP
service iptables save
iptables -L
Centos7 防火墙配置
1、端口访问策略
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8080-8085/tcp
# 开放IP网段
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="139.129.0.0/24" port protocol="tcp" port="8000-9000" accept"
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
# 查看防火墙的开放的端口
firewall-cmd --permanent --list-ports
# 移除ssh默认策略
firewall-cmd --permanent --remove-service=ssh
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
2、端口转发策略
#端口转发配置
#先开启防火墙伪装
firewall-cmd --add-masquerade --permanent //开启后才能转发端口
#将本机80端口转发到192.168.1.1的8080端口上
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.1 --permanent
#删除转发规则
firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.1 --permanent
#查看当前转发规则列表
firewall-cmd --list-forward-ports
参数说明
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
服务配置
启动服务:systemctl start firewalld
关闭服务:systemctl stop firewalld
重启服务:systemctl restart firewalld
查看服务状态:systemctl status firewalld
开机自启服务:systemctl enable firewalld
开机禁用服务:systemctl disable firewalld
查看是否开机自启:systemctl is-enable firewalld
PS:systemctl常见其他命令:
查看已启动的服务列表:systemctl list-unit-files | grep enabled
查看启动失败的服务列表:systemctl --failed
规则配置
查看版本:firewall-cmd --version
查看帮助:firewall-cmd --help
查看状态:firewall-cmd --state
查看所有打开的端口:firewall-cmd --list-ports
查看所有规则:firewall-cmd --list-all
重载规则:firewall-cmd --reload
查看区域信息:firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=enp4s0
拒绝所有包:firewall-cmd --panic-on
取消拒绝所有包: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
端口转发可能的错误
如果配置完以上规则后仍不生效,可能是由于内核参数文件sysctl.conf未配置ip转发功能,具体配置如下:
vi /etc/sysctl.conf
在文本内容中添加:net.ipv4.ip_forward = 1
保存文件后,输入命令sysctl -p生效
执行完所有的命令,都需要reload,不然不生效。
firewall-cmd --reload
Docker 容器出现无法与宿主机通信的情况,可尝试以下操作
firewall-cmd --permanent --zone=trusted --change-interface=docker
# 重新加载生效
firewall-cmd --reload