linux 的firewalld 管理

Filewalld(动态防火墙)作为redhat7系统中变更对于netfilter内核模块的管理工具;
iptables service 管理防火墙规则的模式(静态):用户将新的防火墙规则添加进 /etc/sysconfig/iptables 配置文件当中,
再执行命令 /etc/init.d/iptables reload 使变更的规则生效。在这整个过程的背后,iptables service 首先对旧的防火墙规则进行了清空,
然后重新完整地加载所有新的防火墙规则,如果加载了防火墙的模块,需要在重新加载后进行手动加载防火墙的模块;
firewalld 管理防火墙规则的模式(动态):任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。
还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口。

Centos7-----firewalld详解

一、服务配置

1. 启动服务

2. 图形化管理

3. 域

相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。
简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,
从而实现防火墙策略之间的快速切换。例如,我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。
按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。
当前,我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;
在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。
在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,
然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。
firewalld中常见的区域名称(默认为public);

区域:
firewalld将网卡对应到不同的区域(zone),zone 默认共有9个:block(拒绝)
block(拒绝) dmz(非军事化) drop(丢弃) external(外部) home(家庭) internal(内部) public(公开) trusted(信任) work(工作区).
不同的区域之间的差异是其对待数据包的默认行为不同,firewalld的默认区域为public;

4. 命令行配置

firewall的状态:
--state ##查看防火墙的状态
--reload ##重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置
--complete-reload ##重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
--panic-on ##紧急模式,强制关闭所有网络连接,--panic-off是关闭紧急模式

动作中查看操作:
--get-icmptypes ##查看支持的所有ICMP类型
--get-zones ##查看所有区域
--get-default-zone ##查看当前的默认区域
--get-active-zones ##查看当前正在使用的区域
--get-services ##查看当前区域支持的服务
--list-services ##查看当前区域开放的服务列表
--list-all ##查看此区域内的所有配置,类似与iptables -L -n

更改区域操作:
--set-default-zone=work ##更改默认的区域

新建--add或删除--remove规则:
--add-interface=eth0 ##将网络接口添加到默认的区域内
--add-port=12222/tcp --permanent ##添加端口到区域开放列表中
--add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中;
--add-service=ftp --permanent ##添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
--add-source=192.168.1.1 ##添加源地址的流量到指定区域
--remove-source=192.168.1.1 ##删除源地址的流量到指定区域
--change-interface=eth1 ##改变指定的接口到其他区域
--remove-service=http ##在home区域内将http服务删除在开放列表中删除
--add-masquerade ##开启SNAT(源地址转换)
--query-masquerade ##查询SNAT的状态
--remove-interface=eth0 ##将网络接口在默认的区域内删除
--query-interface=eth0 ##确定该网卡接口是否存在于此区域
--add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101 ##端口转发

二、设置firewalld

查看默认域空间

查看正在活动的域空间

查看所有的域

查看防火墙管理的服务

查看默认域的信息

使服务永久加入默认的域中

重新加载配置

添加源地址的流量到信任域中

将源地址流量从指定域中删除

添加源地址的流量到丢弃域中

此时被加入的源地址则无法与防火墙服务端进行通行,同时没有任何提示

但加入拒绝域则会有提示

三、配置文件

文件:
/usr/lib/firewalld/services/ :firewalld服务默认在此目录下定义了70+种服务供我们使用,格式:服务名.xml;
/etc/firewalld/zones/ : 默认区域配置文件,配置文件中指定了编写完成的规则(规则中的服务名必须与上述文件名一致);
分为多个文件的优点 :
第一,通过服务名字来管理规则更加人性化,
第二,通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式;

域配置信息保存在.xml 文件中

进入服务配置目录中:/usr/lib/firewalld/services/

复制文件

编辑文件

更改端口

新的服务已经生成

完全重新加载:firewall-cmd --complete-reload

当使用firewall-cmd --reload 加载时

正在进行的连接不会断开

但使用--complete-reload 加载时,则连接会断开

四、Direct Rules

通过firewall-cmd 工具,可以使用--direct 选项在运行时间里增加或者移除链。如果不熟悉 iptables,使用直接接口非常危险,因为可能会无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。

使ip 地址为82 的主机可以访问http 服务,httpd 默认端口为80

firewall-cmd    --direct   --add-rule   ipv4    filter    INPUT  1  -p   tcp   --dport   80   -s    172.25.254.82   -j   ACCEPT

此时便可访问apache

查看所有的规则

删除规则

使ip 地址为82 的主机不能访问http 服务

使用REJECT

此时便不能访问apache

五、firewalld 端口转发

首先打开地址伪装功能

设置ssh 连接本机时,调转到172.25.254.200

然后进行测试:

发现连接的ip 为200

删除端口转发

六、firewalld 的地址伪装设置

在服务端加入一块网卡

并配置ip

配置客户端的ip

在客户端测试

发现可以连接不同网段的主机

猜你喜欢

转载自blog.csdn.net/weixin_43369306/article/details/85119266
今日推荐