2018-12-20 15:36:02 weixin_43369306 阅读数 35

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

在客户端测试

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

 

 

2018-04-25 11:00:24 u012485698 阅读数 999
安装firewalld:yum install firewalld
把firewalld加入系统服务:systemctl enable firewalld
把firewalld从系统服务中移除:systemctl enable firewalld
启动firewalld:systemctl start firewalld
关闭firewalld:systemctl stop firewalld
查看firewalld状态,是否running:firewall-cmd --state
永久开放8080端口:firewall-cmd --add-port=8080/tcp --permanent(或者打开vi /etc/firewalld/zones/public.xml,然后添加<port protocol="tcp" port="8080"/>)
查看配置文件cat /etc/firewalld/zones/public.xml
重载firewalld,使配置生效:firewall-cmd --reload
2018-01-21 19:29:06 death05 阅读数 5633

博主使用的Redhat本身没有iptables服务,也不能联网安装,因此,只能使用firewalld添加开放端口,以下是一些最基本的关于firewalld的命令:
启动:
systemctl start firewalld
查看状态:
systemctl status firewalld
或者
firewall-cmd --state
停止:
systemctl disable firewalld
禁用:
systemctl stop firewald
接下来是相关教程:

1、查看firewall是否运行,下面两个命令都可以:

systemctl status firewalld.service
firewall-cmd --state

2、查看default zone和active zone(暂时我也不知道这是干什么用的):

我们还没有做任何配置,default zone和active zone都应该是public,命令为:

firewall-cmd --get-default-zone
firewall-cmd --get-active-zones

3、查看当前开了哪些服务:

firewall-cmd --list-services

其实这里的每一个服务名对应对应/usr/lib/firewalld/services下面一个xml文件,文件有描述该服务用了什么协议,对应的端口号,这些端口即为外界可以访问的端口。

4、查看还有哪些服务可以打开

firewall-cmd --get-services

你可以现在这里找找有没有你需要开启的服务(例如WebSphere或者db2),如果没有的话,根据上面说的,每一个服务对应一个xml,这时你就需要自己创建一个xml文件了。
5、查看所有打开的端口(博主在执行这条命令后没有显示任何东西,不知道是什么原因):

firewall-cmd --zone=public --list-ports

6、自己添加一个服务:

在/usr/lib/firewalld/services,随便拷贝一个xml文件到一个新名字,比如ssh.xml,把里面的short(这个改不改基本没有什么问题)、protocolport,其中protocol可以通过命令:

netstat -anp | grep 你的端口号

显示的第一列就是你所用到的协议,有时可能显示tcp6这种协议加序号的格式,依旧是tcp协议。例如WebSphere就是tcp协议,端口号为9060文件添加好后,记住改名字,例如:WebSphere.xml,保存在/usr/lib/firewalld/services目录下。
然后更新防火墙规则:

firewall-cmd --reload 

查看还有哪些服务可以打开,现在应该可以看到你添加的WebSphere服务。
此时就可以添加你的WebSphere服务到firewalld,执行命令:

firewall-cmd --add-service=WebSphere

这样添加的service当前立刻生效,但系统下次启动就失效,可以测试使用。要永久开发一个service,加上 –permanent:

firewall-cmd --permanent --add-service=WebSphere

这时候你的9060端口就可以被外网访问,你可以试试telnet命令看看有没有成功。
网上有的说此时还得再重启一下firewalld服务才可以真正成功,假如你的外网依旧无法telnet的话,可以试试重启一下firewalld服务。
下面是一篇关于讲解firewalld的文章:Firewalld的结构,有兴趣的小伙伴可以自己看看。

2018-06-07 13:53:40 yyyxxxs 阅读数 233

###1、防火墙
######使用firewalld

[root@client ~]# systemctl stop iptables
[root@client ~]# systemctl disable iptables
[root@client ~]# systemctl start firewalld
[root@client ~]# systemctl enable firewalld

######firewalld域
这里写图片描述
######使用命令行接口配置防火墙

[root@client ~]# firewall-cmd --state #查看火墙状态
[root@client ~]# firewall-cmd --list-all #查看防火墙规则
[root@client ~]# firewall-cmd --get-active-zones #查看当前生效的域

这里写图片描述

[root@client ~]# firewall-cmd --get-default-zone #查看默认域
[root@client ~]# firewall-cmd --get-zones #查看所有的域
[root@client ~]# firewall-cmd --zone=public --list-all #查看public域的规则
[root@client ~]# firewall-cmd --get-services #查看系统中用名称代表的服务
[root@client ~]# firewall-cmd --list-all-zones #查看所有域的规则
[root@client ~]# firewall-cmd --set-default-zone=trusted #修改默认域为trusted

这里写图片描述
######firewalld域的设置

[root@client Desktop]# firewall-cmd --list-all
[root@client Desktop]# firewall-cmd --add-source=172.25.254.168 --zone=trusted #添加168主机到trusted域
[Desktop]# systemctl start httpd
[root@client Desktop]# echo westos > /var/www/html/index.html
[Desktop]# systemctl restart httpd

168主机测试:
这里写图片描述
其他主机测试:
这里写图片描述

[root@client Desktop]# firewall-cmd --remove-source=172.25.254.168 --zone=trusted 

######多网卡下的firewalld配置
为虚拟机添加网卡
这里写图片描述

[root@client Desktop]# firewall-cmd --list-interfaces #查看网卡
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0 #查看eth0的默认域
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth1 #查看eth1的默认域
[root@client Desktop]# firewall-cmd --change-interface=eth0 --zone=trusted #修改eth0默认域为trusted域
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0 #查看eth0的默认域
[root@client Desktop]# firewall-cmd --remove-interface=eth0 --zone=trusted #将eth0从trusted域上移除
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0 
no zone
[root@client Desktop]# firewall-cmd --add-interface=eth0 --zone=public #添加eth0到public域
[root@client Desktop]# firewall-cmd --get-zone-of-interface=eth0
public

这里写图片描述
###2、firewalld临时与永久设置
#######临时设置source

[root@client Desktop]# firewall-cmd --add-source=172.25.254.168
[root@client Desktop]# firewall-cmd --list-all
[root@client Desktop]# systemctl restart firewalld
[root@client Desktop]# firewall-cmd --list-all #重启后消失,是临时的

这里写图片描述
#######永久设置source

[root@client Desktop]# firewall-cmd --permanent --add-source=172.25.254.168 #-permanent表示永久
[root@client Desktop]# firewall-cmd --reload #重新加载
[root@client Desktop]# firewall-cmd --list-all

这里写图片描述
可以在配置文件中查看永久设置

[root@client Desktop]# cd /etc/firewalld/
[root@client firewalld]# ls
[root@client firewalld]# cd zones/
[root@client zones]# ls
[root@client zones]# vim public.xml #配置文件中有添加配置行

这里写图片描述

######一般,与服务相关的配置文件在/usr/lib/firewalld下:

[root@client zones]# cd /usr/lib/firewalld
[root@client firewalld]# ls
[root@client firewalld]# cd services/
[root@client services]# ls #可以看到多个服务的相关文件
[root@client services]# vim http.xml #查看http的配置文件

这里写图片描述
######这也解释了为什么http的服务端口是80
#######firewalld支持服务的移除与添加

[root@client services]# firewall-cmd --remove-service=ssh #移除ssh
[root@client services]# firewall-cmd --reload #重新加载
[root@client services]# firewall-cmd --list-all #ssh再次出现
[root@client services]# firewall-cmd --permanent --remove-service=ssh #永久移除
[root@client services]# firewall-cmd --reload #重新加载,已经连接的ssh不会受到影响,新的连接失败
[root@client services]# firewall-cmd --list-all #移除成功
[root@client services]# firewall-cmd --complete-reload #完全重新加载,已经连接的ssh被停止,不能操作

######reload重新加载会影响新的连接,新连接失败:
这里写图片描述
######reload重新加载不影响已经建立的连接,可以正常使用
######但使用complete-reload重新加载后,已经建立的连接被停止,不能正常使用了
这里写图片描述

2018-06-13 22:52:57 l675655077 阅读数 109

一、Firewalld概述

      1.firewalld概念

        动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口

       系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信。

      2.firewalld和iptables service

       firewalld 和 iptables service 之间最本质的不同是 :

  • iptables service 在 /etc/sysconfig/iptables 中储存配置
  • firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 .

3.firewalld域

二、Firewalld的配置

1.firewalld的启用

[root@client ~]# yum  install firewalld  firewall-config -y    ##安装firewalld服务
[root@client ~]# systemctl start firewalld
[root@client ~]# systemctl enable firewalld.service            ##开启firewalld
[root@client ~]# systemctl stop iptable                        
[root@client ~]# systemctl disable iptable                     ##关闭iptables

[root@client ~]# firewall-config

2.防火墙的管理

firewalld管理常用命令
firewall-cmd --state查看当前域的状态
firewall-cmd --get-active-zones查看火墙当前生效的域
firewall-cmd --get-default-zone查看默认的域
firewall-cmd --get-zones查看所有的域
firewall-cmd --zone=public --list-all查看public域里面的信息
firewall-cmd --zone=block --list-all查看block域里面的信息
firewall-cmd --get-services查看firewall管控的所有服务
firewall-cmd --list-all-zones列出所有域
firewall-cmd --list-all列出当前域的所有信息
firewall-cmd --set-default-zone=trusted设置默认域为trusted


3.防火墙默认域的修改

[root@client ~]# yum install httpd -y                     ##安装httpd服务
[root@client ~]# systemctl start httpd                    ##开启httpd服务
[root@client ~]# echo hello >  /var/www/html/index.html   ##编辑默认文件
[root@client ~]# firewall-cmd --get-default-zone          ##查看默认域

测试:


[root@client ~]# firewall-cmd --set-default-zone=trusted 

测试:

4.对指定ip或网端的控制

[root@client ~]# firewall-cmd --list-all
[root@client ~]# firewall-cmd  --list-interfaces 
[root@client ~]# firewall-cmd  --get-zone-of-interface=eth1
[root@client ~]# firewall-cmd  --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd  --change-interface=eth0  --zone=trusted             ##若eth0的默认域为trusted,则不用执行该命令
[root@client ~]# firewall-cmd  --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd --remove-interface=eth0  --zone=trusted              ##删除eth0的trusted域
[root@client ~]# firewall-cmd  --get-zone-of-interface=eth0
[root@client ~]# firewall-cmd --add-interface=eth0  --zone=public 
[root@client ~]# firewall-cmd  --get-zone-of-interface=eth0

  • 命令添加
[root@client ~]# firewall-cmd --add-source=172.25.254.168  --zone=trusted  ##把168的默认域设置为trusted域
[root@client ~]# firewall-cmd --list-all --zone=trusted
[root@client ~]# systemctl restart firewalld.service 

[root@client ~]# firewall-cmd  --permanent--add-source=172.25.254.168  --zone=trusted       ##给168主机永久添加trusted域
[root@client ~]# firewall-cmd --reload      ##重新加载防火墙配置
[root@client ~]# systemctl restart firewalld
[root@client ~]# firewall-cmd --list-all --zone=trusted

[root@client ~]# firewall-cmd --remove-source=172.25.254.62 --zone=trusted 

  • 文本添加
[root@client ]# cd /etc/firewalld/zones
[root@client zones]# ls
[root@client zones]# vim  public.xml 

[root@client zones]# systemctl restart firewalld
[root@client zones]# firewall-cmd --list-all

5.端口的修改

[root@client zones]# firewall-cmd --add-port=8080/tcp --zone=public 


6.firewalld支持服务的删除

  • 临时性删除
[root@client zones]# firewall-cmd --remove-service=ssh 
[root@client zones]# firewall-cmd --list-all

[root@client zones]# firewall-cmd --reload
[root@client zones]# firewall-cmd --list-all

  • 永久性删除
[root@client zones]# firewall-cmd --permanent --remove-service=ssh 
[root@client zones]# firewall-cmd  --reload 
[root@client zones]# firewall-cmd --list-all      ##删除后ssh服务将无法使用 


没有更多推荐了,返回首页