1、与iptables不同
2、配置防火墙
# (查看状态)
# firewall-cmd --state
#(更新配置)
# firewall-cmd --reload
3、firewalld区域概念
zone
trusted 信任区域 默认允许所有流量传入
public 公共区域 (默认区域)默认允许ssh 服务 dhcp
external 外部区域 默认允许ssh其余均拒绝
home 家庭区域 有ssh, 预定于服务等
internal 内部区域 默认允许ssh 服务 dhcp服务等
work 工作区域 默认ssh
dmz 隔离区
block 限制区域 默认拒绝所有流量传入
drop 丢弃区域 默认丢弃所有流量传入
工作原理:
管理数据包时:
1、先根据数据包的源IP进行相应区域的防火墙规则匹配; 如果源地址关联到特定的区域,则按特定区域的规则执行; 如果未关联到特定的区域,则按默认区域的规则执行。
2、根据传入的网络接口,进行相应区域的防火墙规则匹配; 如果源地址关联到特定的区域,则按特定区域的规则执行; 如果未关联到特定的区域,则按默认区域的规则执行。
绑定源地址的区域规则> 网卡绑定的区域规则> 默认区域规则
4、filewalld 配置生效
运行时配置:
永久配置
5、firewalld服务
# systemctl status firewalld
# systemctl start firewalld
# systemctl enable firewalld
# 显示所有可用区域
# firewall-cmd --get-zones
# 显示当前默认区域
# firewall-cmd --get-default-zone
# 设置默认区域
# firewall-cmd --set-default-zone=public
# 显示当前使用的区域和对应网卡
# firewall-cmd --get-active-zones
# 显示指定接口绑定的区域
# firewall-cmd --get-zone-of-interface=ens33
# 为指定接口绑定区域
# firewall-cmd --zone=dmz --add-interface=ens37
# 为指定的区域更改绑定的网络接口
# firewall-cmd --zone=dmz --change-interface=ens33
# 为指定的区域删除绑定的网络接口
# firewall-cmd --zone=dmz --remove-interface=ens37
# 查看默认区域设置
# firewall-cmd --list-all
# 查看指定的区域设置
# firewall-cmd --zone=dmz --list-all
# 显示指定区域可以访问的服务
# firewall-cmd --zone=public --list-services
# 显示系统预定义的服务名
# firewall-cmd --get-service
# 为指定区域添加允许访问的服务
# firewall-cmd --zone=public --add-service=http
# 为指定区域删除允许访问的服务
# firewall-cmd --zone=public --remove-service=http
# 添加多个服务
# firewall-cmd --zone=public --add-services={http,https,redis,ssh}
# 永久生效,运行时配置结束后统一执行
# firewall-cmd --runtime-to-permanent
# 永久生效,需要在设置时加--permanent选项,但是并不是运行时生效,需要重启启动firewalld或者重
新reload
# firewall-cmd --permanent --zone=public --add-services=http
# firewall-cmd --reload 或者 systemctl restart firewalld
# 显示指定域中允许访问的端口
# firewall-cmd --zone=public --list-port
# 位指定域中添加允许访问的端口
# firewall-cmd --zone=public --add-port=22/tcp --add-port=80-100/tcp
#位指定域中删除允许访问的端口
# firewall-cmd --zone=public --remove-port=22/tcp --remove-port=80-100/tcp
如果执行命令显示success但是效果没有出现,使用firewall-cmd --reload
firewalld 端口映射
# 设置禁止来源IP为192.168.100.134的ip地址访问
# firewall-cmd --add-source=192.168.100.134/24 --zone=drop --类似于iptables中
DROP
# firewall-cmd --add-source=192.168.100.134/24 --zone=block --类似于iptables中
REJECT
# 设置允许来源IP为192.168.100.134的ip地址访问
# firewall-cmd --add-source=192.168.100.134/24 --zone=trusted
# 地址转发端口映射
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
# firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.100.134
(在访问添加了这个规则的ip的数据包会转发到192.168.100.134的80端口)
当你修改了http配置文件(改端口为8080,并且重启了httpd),也添加了转发端口映射,查看服务也有http服务,为什么curl还是不通?
因为没对外没有提供相应的8080端口;
虽然系统起的是8080端口,但是对外来说我们的端口是80端口,必须通过80端口连进来,在、才能经过映射访问到8080端口;
所以没添加8080端口,却访问了8080端口是不行的;
如果添加了8080端口,直接用8080端口进行httpd访问,而不是通过连接80端口再经端口映射转发从8080端口进行访问;
富规则 rich-rule
只用firewalld的服务以及端口进行配置的时候限制比较多;为了解决这一问题,所以用富规则;
# 查看帮助手册
# man 5 firewalld.richlanguage
# 列出富规则
# firewall-cmd --list-rich-rule
# 添加富规则
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source
address="192.168.100.134" accept'
(添加富规则,允许192.168.100.134访问)
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source
address="192.168.100.134" port port=22 protocol=tcp reject'
(拒绝来自这个ip的22端口的访问)
# 删除富规则
# firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source
address="192.168.100.134" forward-port port=80 protocol=tcp to-port=8080 '
请求连接时被拒绝;
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/4613.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏微信支付宝扫一扫,打赏作者吧~
休息一下~~