在企业7以上的版本,,是一款类似于windows界面的可以图形化设置防火墙策略的工具。
一.firewalld服务的安装与启用
网络区域名 | 默认配置 |
---|---|
trust(信任) | 可以接受所有的网络连接 |
home(家庭) | 用于家庭网络 仅接受ssh,mdns,ipp-client,samba-client,dhcpv6-client连接 |
intetnal(内部) | 用于内部网络连接,仅接受ssh,mdns,ipp-client,samba-client,dhcpv6-client连接 |
work(工作) | 用于工作区域 仅接受ssh,ipp-client,dhcpv6-client 连接 |
public(公共) | 在公共区域内使用 仅接受 ssh ,dhcpv-client连接 为firewalld的默认区域 |
external(外部) | 出去的ipv4网络连接通过此区域伪装转发,仅接受ssh服务连接 |
dmz(非军事) | 仅接受ssh连接 |
block(限制) | 拒绝所有网络连接 |
drop(丢弃) | 任何接受的网络数据包都被丢弃 没有任何回复 |
firewall-cmd --state ##查看firewall服务当前状态
firewall-cmd --get-active-zones ##查看当前活跃域(已经激活的域)
firewall-cmd --get-default-zone ##查看当前默认域
firewall-cmd --get-zones ##列出所有域
firewall-cmd --zone=public --list-all ##列出public域的所有策略
firewall-cmd --get-services ##查看firewall管控的所有服务
firewall-cmd --list-all-zones ##列出所有域
firewall-cmd --set-default-zone=trusted ##设置默认域为trusted
firewall-cmd --get-services ##查看firewall管控的所有服务
所有服务的信息控制:/usr/lib/firewalld/services/*.xml,这些服务也是firewalld服务所能管理的所有服务
在默认域名为public的情况下,该域无httpd策略,客户机1,客户机2均无法访问httpd服务,添加httpd服务到trusted后,public虽无httpd服务策略,但两台客户机均能访问htppd服务
这里是我的主机配置
另外一台 为 192.168.122.83
还有一台为 192.168.122.1
下载httpd
由于火墙的关系是无法链接到的
将默认的域更改为trusted 便可以连接了
firewalld策略:服务器网卡管控实验 先将第二台主机ip改为192.168.2.83 并设置网关 192.168.2.84
默认域public 激活网卡接口eth0:192.168.122.84,无httpd服务,trusted添加httpd服务,激活网卡eth1:192.168.2.84 ,这时客户端2: 192.168.122.1可以访问httpd服务, 客户端1:192.168.2.83无法访问,因为httpd服务在域trusted也就是说任何相同主机都可以访问该域的服务,且通过该域的eth1192.168.2.84网卡接口传输数据,所以客户机2:192.168.2.83可以访问httpd服务,客户主机1:192.168.122.1,首先通过服务主机eth0:192.168.122.84接口进入内核,但是eth0:192.168.122.84网卡接口由public域管控,该域无httpd服务,所以客户机192.168.122.1无法访问httpd
firewall-cmd –set-default-zone=public ##设置默认域为public
firewall-cmd –add-interface=eth0 –zone=public ##添加网口eth0到public域
firewall-cmd –add-interface=eth1 –zone=trusted ##添加网口eth1到trusted域
firewall-cmd –add-service=http –zone=trusted ##添加服务httpd到trusted域
firewall-cmd –list-all (–zone=public) ##列出(当前域)所有的策略
firewall-cmd –get-active-zones ##查看当前激活域
remove掉public域的eth0,添加到trusted域上 ,也就是说trusted域中,有httpd服务,eth0,eth1,当然不论那台主机都可以访问了
对指定ip或网段的控制:
在2.3实验中客户主机192.168.2.83是无法访问httpd服务的,策略如下,
通过设置特定网段来是192.168.2.83使用httpd服务,使用该域
服务端口的控制
firewalld读取服务信息的文件:/usr/lib/firewalld/services/*.xml
以httpd服务为例说明
vim /etc/httpd/conf/httpd.conf
--->>port 8080
vim /usr/lib/firewalld/services/http.xml
--->>port 8080
systemctl restart httpd
systemctl restart firewalld
客户端2:192.168.122.1测试:firefox http://192.168.122.84:8080
vim /etc/httpd/conf/httpd.conf
vim /usr/lib/firewalld/services/http.xml
systemctl restart httpd
systemctl restart firewalld
注意:因为之前的设置都是临时的,重启firewalld后设置会失效,重新设置策略
重新在public域中加入http
不改/usr/lib/firewalld/services/http.xml中的端口,使用默认端口80,改动 /etc/httpd/conf/httpd.conf端口为8080,实验中 –permanent永久设定
ssh控制
在没有从public域中remove ssh服务,之前客户机ssh连接上服务器,remove ssh服务之后,已经链接上的shell还能继续使用,在重新开一个shell却无法链接了
firewall高级管理 (默认域public)
vim /usr/lib/firewalld/services/http.xml
-->>port 80) 不用改上边的实验已经改为80了
vim /etc/httpd/conf/httpd.conf
--->>port 80 要改上边的实验此配置文件端口为8080
systemctl restart httpd
netstat -antlpue | grep httpd 查看80端口状态。处于开启状态
firewall-cmd --add-service=http --permanent --zone=public
firewall-cmd --reload
firewall-cmd --direct --get-all-rules ##查看rules
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.122.1 -p tcp --dport 80 -j REJECT ##添加rules
firewall-cmd --direct --get-all-rules ##查看rules
移除
firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -s 192.168.122.1 -p tcp --dport 80 -j REJECT ##删除rules
firewall-cmd --direct --get-all-rules
###firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 192.168.122.84/24 -p tcp --dport 80 -j
ssh服务转到指定主机
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
firewall-cmd --permanent --zone=public --add-forward- port=port=22:proto=tcp:toport=22:toaddr=192.168.122.84
地址伪装
实验前执行以下代码,清除环境上边实验的环境
firewall-cmd --permanent --zone=public --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.122.84
firewall-cmd --permanent --remove-masquerade
firewall-cmd --reload
DIRECT RULES
systemctl start httpd
firewall-cmd --list-all 列出域内允许的服务
firewall-cmd --permanent --add-service=http 添加http服务
ifconfig
firewall-cmd --reload 刷新
这种每个终端都能连接
firewall-cmd --permanent --remove-service=http 删除
firewall-cmd --reload
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.244 -j ACCEPT 添加244可以连接 -p 传输协议 --dport 目的地端口 -s 数据来源 -j 执行的动作 accept 通过 drop 丢弃 reject 拒绝
firewall-cmd --direct --get-all-rules
rich rules
地址转换
1 ifconfig
5 firewall-cmd --list-all
6 firewall-cmd --add-masquerade 开启masquerade 这一步应该放在后面 应为刷新之后就又没有开启 或者永久添加
7 firewall-cmd --list-all
8 firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.44 当别人连接你时 转换到44 这台主机上
9 firewall-cmd --list-all
10 firewall-cmd --reload 刷新
11 firewall-cmd --list-all
首先 将一台机器加入两块网卡
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.254.144 netmask 255.255.255.0 broadcast 172.25.254.255
inet6 fe80::5054:ff:fef9:a6fe prefixlen 64 scopeid 0x20<link>
ether 52:54:00:f9:a6:fe txqueuelen 1000 (Ethernet)
RX packets 48966 bytes 7300894 (6.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2266 bytes 305618 (298.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.2.144 netmask 255.255.255.0 broadcast 172.25.2.255
inet6 fe80::5054:ff:fea6:fc6c prefixlen 64 scopeid 0x20<link>
ether 52:54:00:a6:fc:6c txqueuelen 1000 (Ethernet)
RX packets 4766 bytes 560459 (547.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26 bytes 3811 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@desktop network-scripts]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@desktop network-scripts]# vim /etc/sysctl.conf
[root@desktop network-scripts]# sysctl -p
net.ipv4.ip_forward = 1 将内核上的文件路由器打开
14 firewall-cmd --list-all
15 firewall-cmd --permanent --add-masquerade
16 firewall-cmd --reload
17 firewall-cmd --list-all
18 ifconfig
19 cd /etc/sysconfig/network-scripts/
20 ls
21 cp ifcfg-eth0 ifcfg-eth1
22 vim ifcfg-eth1 配置第二块网卡的ip 为2 网段的
23 systemctl restart network
24 ifconfig
25 firewall-cmd --list-all
26 sysctl -a | grep ip_forward
27 ifconfig
28 nm-connection-editor
29 sysctl -a | grep ip_forward
30 vim /etc/sysctl.conf
31 sysctl -p
32 firewall-cmd --list-all
在另外一台机器上修改ip 与eth1的网段相同
并将其设置成网管
然后就可以连接了
last 伪装
kiosk pts/4 :0 Sat Jun 9 11:41 still logged in
root pts/0 www.westos.com Sat Jun 9 11:34 still logged in
wtmp begins Sat Jun 9 11:34:17 2018
firewalld ip转换 以及地质伪装
之所以会显示,music.westos.com 是因为设置的本地解析 可以看到使用2网段的主机连接122.1记录为122.84连接的