Firewalld 命令的指南 一、centos7 版本对防火墙进行加强,不再使用原来的 iptables,启用 firewalld
1. firewalld 的基本使用 1 2 3 4 5 6 7 8 9 启动: systemctl start firewalld 查状态:systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firewalld 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl --failed
2. 配置 firewalld-cmd 1 2 3 4 5 6 7 8 9 10 查看版本: firewall-cmd --version 查看帮助: firewall-cmd --help 显示状态: firewall-cmd --state 查看所有打开的端口: firewall-cmd --zone=public --list-ports 更新防火墙规则: firewall-cmd --reload 查看区域信息: firewall-cmd --get-active-zones 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 拒绝所有包:firewall-cmd --panic-on 取消拒绝状态: firewall-cmd --panic-off 查看是否拒绝: firewall-cmd --query-panic
3. 那怎么开启一个端口呢 添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效) firewall-cmd --zone=public --add-service=http --permanent # 重新载入,更新防火墙规则 firewall-cmd --reload # 查看 firewall-cmd --zone= public --query-port=80/tcp # 删除 firewall-cmd --zone= public --remove-port=80/tcp --permanent firewall-cmd --list-services firewall-cmd --get-services firewall-cmd --add-service=<service> firewall-cmd --delete-service=<service>
在每次修改端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改,所以也可以在文件中之间修改,然后重新加载 使用命令实际也是在修改文件,需要重新加载才能生效。
1 2 3 4 5 6 7 8 9 10 11 firewall-cmd --zone=public --query-port=80/tcp firewall-cmd --zone=public --query-port=8080/tcp firewall-cmd --zone=public --query-port=3306/tcp firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --query-port=3306/tcp firewall-cmd --zone=public --query-port=8080/tcp # 重新加载后才能生效 firewall-cmd --reload firewall-cmd --zone=public --query-port=3306/tcp firewall-cmd --zone=public --query-port=8080/tcp
4. 参数解释 1 2 3 4 5 6 7 8 # 添加的服务 --add-service # 作用域 --zone # 添加端口,格式为:端口/通讯协议 --add-port=80/tcp # 永久生效,没有此参数重启后失效 --permanent
5. 详细使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # 设置某个 ip 访问某个服务 firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' # 删除配置 firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' # 设置某个ip访问某个端口 firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/24 port port=80 protocol=tcp accept' # 删除配置 firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/24 port port=80 protocol=tcp accept' # 检查是否允许伪装 IP firewall-cmd --query-masquerade # 允许防火墙伪装 IP firewall-cmd --add-masquerade # 禁止防火墙伪装 IP firewall-cmd --remove-masquerade # 将 80 端口的流量转发至 8080 firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将 80 端口的流量转发至192.168.0.1 firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将 80 端口的流量转发至 192.168.0.1 的 8080 端口 firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080
二、更改 firewalld 配置文件进行配置防火墙 1. 修改 /etc/firewalld/zones/public.xml 1 vi /etc/firewalld/zones/public.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="dhcpv6-client"/> <service name="ssh"/> <port protocol="udp" port="4789"/> <port protocol="tcp" port="5222"/> <port protocol="udp" port="161"/> <rule family="ipv4"> <source address="218.193.144.200"/> <port protocol="tcp" port="3306"/> <accept/> </rule> <rule family="ipv4"> <source address="218.193.144.144"/> <port protocol="tcp" port="3306"/> <accept/> </rule> </zone>
2. 应用配置
三、centos7 以下版本(使用 iptables 开放端口) 简单参数说明
参数
说明
-A
添加一条 INPUT 的规则
-p
指定是什么协议 (TCP/UDP)
–dport
就是目标端口,当前数据从外部进入服务器为目标端口
–sport
数据从服务器出去,则为数据原端口
-j
就是指定是 ACCEPT 接受或阻止 DROP
1. iptables 操作案例 允许所有 IP 访问
1 2 3 /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
允许指定 IP 访问
1 iptables -A INPUT -s 192.168.10.2 -p tcp -m tcp --dport 80 -j ACCEPT
不允许 IP 访问
1 iptables -A INPUT -s 192.168.10.2 -p tcp -m tcp --sport 80 -j DROP
2. 保存 1 /etc/rc.d/init.d/iptables save
3. 查看打开的端口 1 /etc/init.d/iptables status
1 2 3 iptables -L -n 或者 iptables -L -n --line-number
4. 删除规则 1 2 # 根据序号删除,序号从 iptables -L -n --line-number 中获得 iptables -D INPUT 1
5. 关闭防火墙 1) 永久性生效,重启后不会复原
1 2 开启: chkconfig iptables on 关闭: chkconfig iptables off
2) 即时生效,重启后复原
1 2 开启: service iptables start 关闭: service iptables stop
四、其他 FTP 策略配置 放行 20、21 端口还是不能连接 FTP,因为在 PASV 模式下,建立数据传输会随机开放端口,这个端口显然是没有处于 firewall 的允许策略之下的,因为需要修改配置文件,指定端口范围。
1 vi /etc/vsftpd/vsftpd.conf
在最后加入以下内容,端口尽量选择高范围,提高安全性
1 2 3 4 5 6 # 开启被动模式 pasv_enable=YES # 随机最小端口 pasv_min_port=30000 # 随机最大端口 pasv_max_port=31000
然后对指定的 IP 开放指定的端口段
1 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="30000-31000" accept"