linux系统中的防火墙(firewall)

 

一.“防火墙”的概述

1、什么是“防火墙
     防火墙技术是通过有机结合各类用于==安全管理与筛选==的软件和硬件设备,帮助计算机网络与其==内、外网之间==构建一道相对隔绝的==保护屏障==,以保护用户资料与信息安全性的一种技术。
外网通过IP访问内网时,只有在防火墙同意情况下,用户才能够进入计算机内,如果不同意就会被阻挡于外。

2、“防火墙”的作用是什么
      防火墙技术的功能主要在于==及时发现并处理==计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括==隔离与保护==,同时可对计算机网络安全当中的各项操作实施==记录与检测==,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。

3、可使用哪些软件管理“防火墙”
     可使用==firewalld==以及==iptables==对防火墙进行管理,下面会介绍这两个软件如何管理防火墙。

4、“防火墙”其实由三张表构成

(1)==filter==表(数据过滤表)

 (2)==nat==表(地址转换表)

(3)==mangle==表(附加表)
当filter表和nat表不够用时,才会启用mangle表

 

 

 

二、使用firewalld对防火墙的管理

 

## 1、firewalld的管理和存储方式

### (1)firewalld的安装
yum search firewalld        |查看firewalld相关安装包
yum install firewalld -y    |安装firewalld
rpm -qa |grep firewalld        |查看firewalld是否安装上

### (2)使用firewalld时的环境配置
##### ==firewalld==不能与==iptables==共同开启,所以使用firewalld前应对iptables进行管理
systemctl stop iptables        |关闭iptables
systemctl disable iptables    |设定开机不启动iptables
systemctl mask iptables        |将iptables锁住
systemctl start firewalld    |开启firewalld
systemctl enable firewalld    |设定开机自动启动firewalld

 

 

 

 三、firewalld的管理与存储文件

/etc/firewalld/zones			|firewalld更改支持的服务时,所生成的文件放置在此目录
/etc/firewalld/zones/public.xml		|firewalld支持的服务的文件,当添加新的支持服务时,会生成新的该文件,且原先文件会自动重命名为public.xml.old
/usr/lib/firewalld/services		|firewalld存放服务配置的目录,该目录下为.xml文件
mv /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/httpd.xml				|给服务配置文件重命名,可以修改添加该服务时的服务名称
systemctl restart firewalld		|修改文件名后需重启firewalld服务生效,若修改名称的服务是firewalld已添加的支持服务,则该服务从支持列表中消失,需重新添加

 

1、查看存放irewall目录列表

 

2、对系统服务进行添加、查看对应文件的内容

 

3、查看各个服务的信息文件

 

4、修改服务的文件名称

 

5、修改文件名称后原来的文件名称不会自动识别

6、重新添加修改后文件的名称

 

 

7、firewalld的图形化管理

firewall-config			|使用该命令打开firewalld的图形化管理界面,即可对firewalld进行图形化管理

 

 

 

四、firewalld域信息概述

firewall中各个域对应的列表如下:

网络区名称该区域默认的策略配置
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复,仅能有发送出去的网络连接
block(限制) 任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝
public(公共)在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成危害,仅接收经过选择的连接
external(外部) 特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算机,仅接收经过选择的连接
dmz(非军事区) 用于你的非军事区的电脑,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接收经过选择的连接
work(工作)   用于工作区,你可以基本相信网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接
home(家庭)    用于家庭网络,可以基本信任网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接
internal(内部)

 用于内部网络,你可以基本上信任网络内的其他电脑不会危害你的电脑,仅接收经过选择的连接

trusted(信任) 可以接收所有的网络连接

 

1、允许所有人可以访问(public)

firewall-cmd --set-defautl-zone=public         ##将默认域设为 public   
firewall-cmd --list-all                        ##查看列表

(1)、设置如下

 

(2)、测试:登录172.25.66.66登录成功

 

 

2、限制所有人禁止登录(block)

firewall-cmd --set-defautl-zone=block        ##将默认域设为 block  
firewall-cmd --list-all                        ##查看列表

(1)、设置如下:

 

(2)、测试:登录172.25.66.66 登录失败

 

 

3、将默认域设置为可以接收所有的网络连接(trusted)

firewall-cmd --set-defautl-zone=trusted         ##将默认域设为 trusted 
firewall-cmd --list-all                        ##查看列表

 

(2)、测试:登录成功

 

 

 

 

五、firewalld域的配置

 

firewall-cmd --state            |查看firewalld的状态
firewall-cmd --get-services        |查看所有能添加的服务
firewall-cmd --get-zones        |查看所有能使用的firewalld域
firewall-cmd --get-default-zone        |查看当前默认的firewalld域
firewall-cmd --get-active-zones        |查看当前在使用的firewalld域
firewall-cmd --list-all            |列出当前域的策略信息
firewall-cmd --list-all --zone=xxx    |列出指定域的策略信息
firewall-cmd --list-all-zones        |列出所有域的策略信息
firewall-cmd --set-default-zone=xxx    |设定默认的firewalld域为xxx

 

1、


firewall-cmd --get-default-zone        |查看当前默认的firewalld域
firewall-cmd --get-active-zones        |查看当前在使用的firewalld域

 

 

2、


firewall-cmd --list-all            |列出当前域的策略信息
firewall-cmd --list-all --zone=public(trusted)(block)    |列出public(trusted)(block)域的策略信息
                               

 

3、


firewall-cmd --list-all-zones        |列出所有域的策略信息
firewall-cmd --set-default-zone=xxx    |设定默认的firewalld域为xxx


 

 

六、firewall 中ip的相关设置

(一)、相关ip的设定

#### <2>firewalld来源的配置与测试
配置了来源后,该来源访问本机时,将使用==与该来源匹配的配置好的策略==,==不使用默认策略==

firewall-cmd --list-all                         |查看默认域信息,确定策略(此处我设置的默认域为block)
ssh root@xxx.xxx.xxx.xxx                        |(在客户端测试)查看是否可以访问,此时不可(因为默认域为block)
firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted    |永久添加来源IP:172.25.66.250(我的客户端IP),通过该IP访问时,策略为trusted域的策略
firewall-cmd --reload                            |加载改动
firewall-cmd --list-all --zone=trusted          |查看trusted域信息,确定来源IP(此时172.25.254.54确认添加)
firewall-cmd --get-active-zones                 |查看当前在使用的域信息,此时有trusted域信息,且显示添加的来源IP
ssh root@xxx.xxx.xxx.xxx                        |(在客户端测试)查看是否可以访问,此时可以(因为通过该IP访问时,策略为trusted域的策略)
firewall-cmd --permanent --remove-source=172.25.66.250 --zone=trusted    |永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
firewall-cmd --reload                           |加载改动
firewall-cmd --list-all --zone=trusted          |查看trusted域信息,确定来源IP(此时172.25.66.250确认删除)
firewall-cmd --get-active-zones                 |查看当前在使用的域信息,此时无trusted域信息
ssh root@xxx.xxx.xxx.xxx                        |(在客户端测试)查看是否可以访问,此时不可(因为默认域为block)

 

 

1、 firewall 中永久添加可以被 firewall识别的ip

firewall-cmd --permanent --add-source=172.25.66.250    永久添加通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)
firewall-cmd  --reload               ##刷新
firewall-cmd --permanent --remove-source=172.25.66.250  永久删除通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)

 

2、

firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted  永久添加通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
firewall-cmd  --reload               ##刷新
firewall-cmd --permanent --remove-source=172.25.66.250  --zone=trusted  永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)

 

 

3、只添加没有指定哪个域无法别系统识别

firewall-cmd --permanent --add-source=172.25.66.250    永久添加通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250(我的客户端IP)
firewall-cmd  --reload               ##刷新
firewall-cmd --get-active-zone       ##查看正在工作的域

 

测试:无法登录

 

 

4、


firewall-cmd --permanent --remove-source=172.25.66.250  永久删除通过该IP访问时,策略默认域的策略的来源IP:172.25.66.250
firewall-cmd  --reload         ##刷新

(1)、删除之前实验对实验的影响

 

 

(2)、

firewall-cmd --permanent --add-source=172.25.66.250 --zone=trusted  永久添加通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)
firewall-cmd  --reload               ##刷新
firewall-cmd --permanent --remove-source=172.25.66.250  --zone=trusted  永久删除通过该IP访问时,策略为trusted域的策略的来源IP:172.25.66.250(我的客户端IP)

 

(3)、测试:用户登录成功

 

 

(4)、、

 

修改默认域的值

测试:

 

 

 

 


(二)、firewall对网卡的设置


#### <1>firewalld网卡的配置与测试
一个网卡可以对应一个默认的firewalld域,可以实现==不同网卡对应不同策略==的控制

ifconfig						|确认自己有几块网卡,并确认不同网卡对应的不同IP
firewall-cmd --list-all					|查看默认域信息,确定策略(此时我设置的当前默认域为block),并查看当前域上的网卡(此时eth0、eth1均在)
firewall-cmd --remove-interface=eth1 --zone=block	|将网卡eth1从block域上删除(即通过网卡eth1的IP访问时,不使用block的策略)
firewall-cmd --add-interface=eth1 --zone=trusted	|将网卡eth1添加到trusted域上(即通过网卡eth1的IP访问时,使用trusted的策略)
firewall-cmd --list-all					|查看默认域信息,确定网卡(此时只有eth0,eth1被删除)
firewall-cmd --list-all --zone=trusted			|查看trusted域信息,确定网卡(此时eth1添加成功)
ssh root@xxx.xxx.xxx.xxx(通过网卡eth0的IP访问)		|(在客户端测试)查看通过网卡eth0的IP是否可以访问,此时不可(因为eth0的域是block)
ssh root@xxx.xxx.xxx.xxx(通过网卡eth1的IP访问)		|(在客户端测试)查看通过网卡eth1的IP是否可以访问,此时可以(因为eth1的域是trusted)
firewall-cmd --change-interface=eth1 --zone=block	|改变网卡eth1的域为block
firewall-cmd --list-all					|查看默认域信息,确定网卡(此时有eth0、eth1)
firewall-cmd --list-all --zone=trusted			|查看trusted域信息,确定网卡(此时无eth1)
ssh root@xxx.xxx.xxx.xxx(通过网卡eth1的IP访问)		|(在客户端测试)查看通过网卡eth1的IP是否可以访问,此时不可(因为eth1的域是block)

 

1、在实验机上设置两块网卡 eth0、eth1

eth0:172.25.66.66

eth1:172.25.66.77

 

2、修改 firewall 的默认域为 block

 

3、

firweall-cmd  --remove-interface=eth1  --zone=block      ## 将eth1从block域中删除
firewall-cmd  --add-interface=eth1  --zone=trusted       ## 将eth1添加到trusted域中
firewall-cmd  --list-all --zone=trusted                  ##查看trusted 域中的信息

 

4、

firewall-cmd --reload                    ##刷新
systemctl restart firewalld              ##重启firewalld服务

 

5、

测试:eth0 不可以登录  eth1可以登录

 

 

 

七、在firewall中相关服务的添加和删除

 

1、在firewall中添加服务

firewall-cmd --permanent  --add-service=ssh          ##添加ssh服务
firewall-cmd --permanent  --remove-service=ssh       ##删除ssh服务

 

 

 

2、在firewall中进行相关服务端口的添加

firewall-cmd --permanent  --add-port=22/tcp          ##添加22端口ssh服务
firewall-cmd --permanent  --remove-port=22/tcp       ##删除22端口ssh服务

 

 

3、永久添加服务

 

 

 

 

 

八、、firewalld的高级策略配置(direct rules)

 

firewall-cmd --direct --get-all-rules		|查看当前的所有添加的rule
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 80 -j ACCEPT 	|添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.254.250生效,协议为tcp协议,端口为80端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --dport 22 -j REJECT	|添加rule:ipv4,添加到filter表的INPUT字段中的第二行,针对IP172.25.254.250生效,协议为tcp协议,端口为22端口,IP符合条件时为REJECT,拒绝(符合条件时22端口拒绝)
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 80 -j ACCEPT	|删除该rule
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.250 -p tcp --dport 22 -j REJECT	|删除该rule

 

1、禁止172.25.66.250访问22端口(ssh的服务端口)

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 22 -j REJECT 	添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
firewall-cmd  --reload              ##刷新

 

 

测试:登录失败

 

 

2、设置只有172.25.66.250可以访问22端口(ssh的服务端口)

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 22 -j ACCEPT 	添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
firewall-cmd  --reload              ##刷新
firewall-cmd  --direct --get-all-rules           ##查看rule域

 

测试:172.25.666.250 可以登录

 

 

 

3、只允许172.25.66.250登录172.25.66.66主机的apache

(1)、设置相应的命令

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 80 -j ACCEPT 	添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.66.250生效,协议为tcp协议,端口为22端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
firewall-cmd  --reload              ##刷新
firewall-cmd  --direct --get-all-rules           ##查看rule域

 

(2)、测试:172.25.66.250可以登录

172.25.66.166登录失败

 

 

3、进行实验的对比


firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.66.250 -p tcp --dport 80 -j ACCEPT 	|添加rule:ipv4,添加到filter表的INPUT字段中的第一行,针对IP172.25.254.250生效,协议为tcp协议,端口为80端口,IP符合条件时为ACCEPT,通过(意为给该IP添加的特殊策略,符合IP时80端口开启)
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.66.250 -p tcp --dport 22 -j REJECT	|添加rule:ipv4,添加到filter表的INPUT字段中的第二行,针对IP172.25.254.250生效,协议为tcp协议,端口为22端口,IP符合条件时为REJECT,拒绝(符合条件时22端口拒绝)

 

测试:

 

 

 

 

九、源地址转换和目的地址转换

 

 4、firewalld的地址伪装
此实验需要三台机,提供目的地地址的、提供路由功能的(需两块网卡,两个不同网段)、提供原地址的。

此处设定的原地址为:
172.25.0.166,网关为172.25.0.1(路由器的一个IP)
路由器的两个IP为:
172.25.0.1和172.25.66.66
目的地IP为:
172.25.66.250

### 在原地址端设置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0            |修改该文件
IPADDR=172.25.0.166                        |将IP设定为与路由器一个IP同网段,但与目的地IP不同网段的IP
GATEWAY=172.25.0.1                        |设置网关为路由器上的一个IP,该IP与本机IP在同一网段
systemctl restart network                    |设定完成后重启服务
route -n                            |查看网关是否设置成功,此时应成功

### 在路由器上设置:        
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.66.250    |给firewall添加伪装:将来自端口22的对本机IP(172.25.66.250)的访问转化为:通过22端口,以tcp协议对IP172.25.66.250的访问
firewall-cmd --permanent --add-masquerade            |永久开启masquerade
firewall-cmd --list-all                        |列出当前默认域的策略,查看masquerade是否开启(此时应为yes)

### 在目的地上测试目的地地址转换:
ssh root@172.25.0.166                       |在目的地访问路由器上与目的地同网段的IP(172.25.0.166)
ifconfig                            |登陆成功后,查看IP,此时经过==目的地地址转换==,实际访问的真实地址应显示是原地址(172.25.66.250)

### 在原地址端测试原地址转换:
w -i                                |在原地址端查看连接本机的IP是谁,此时经过==原地址转换==,查看到的访问本机的IP是路由器的一个IP(172.25.66.66),但真实访问本机的IP应是目的地IP(172.25.66.250)


目的地地址转换    |目的地地址的转换是在==陆游前==做的

原地址转换    |原地址的转换是在==陆游后==做的

 

(一)、源地地址转换

 

1、设置转换地址

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.54.254    |给firewall添加伪装:将来自端口22的对本机
firewall-cmd --add-masquerade        ##开启masquerade 伪装功能后直接可以进行源地址转换

 

 

2、测试:在172.25.66.250主机上登录172.25.66.66主机连接到的主机为172.25.66.166主机

 

(2)、在172.25.66.166主机上看到的是172.25.66.66主机在与之相连

 

 

(二)、目的地址转换

1、在172.25.66.166主机上添加另外一块网卡 充当路由器的功能

 

 

2、在server主机上设置ip使其与172.25.0.1段ip相同(充当外网主机 )

(1)、将网关设置为172.25.0.1

 

(2)、查看修改后的ip以及相应的网关连接的情况

ifconfig
route -n              ##查看所连接的网关


 

(3)、检查外网主机和路由器之间的网络是否畅通:

 

3、将转换地址设置为将172.25.66.250

 

4、开启火墙伪装功能方便做源地址转换

firewall-cmd  --add-masquerade        ##开启防火墙伪装功能 开启后可以直接做源地址转换

 

5、测试:

(1)、在172.25.0.166(外网主机)上登录172.25.66.66

跳转到了172.25.66.250 主机上

 

(2)、在172.25.66.250主机上查看谁与之相连

w  -i     ##查看正在连接本机的主机

 

 

6、外网主机直接与内部主机相连

(1)、用外网地址直接访问内部主机

 

(2)、查看到的是172.25.66.66主机在连接

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要关闭Linux系统防火墙,可以按照以下步骤进行操作。首先,查看防火墙的状态,可以使用命令`systemctl status firewalld`。如果状态显示为开启(active: running),则表示防火墙当前处于开启状态。接下来,可以使用命令`systemctl stop firewalld`一次性关闭防火墙。如果需要永久关闭防火墙,可以使用命令`systemctl disable firewalld`。需要注意的是,永久关闭防火墙只适用于当前开机状态,如果重新启动系统防火墙将会自动打开。\[1\] 举例来说,如果通过`systemctl status firewalld`命令查看防火墙状态,结果显示为: ``` ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-06-16 10:20:04 CST; 1 weeks 1 days ago Main PID: 399 (firewalld) Tasks: 2 (limit: 4496) Memory: 38.6M CGroup: /system.slice/firewalld.service └─399 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid ``` 则表示防火墙当前处于开启状态。可以使用`systemctl stop firewalld`命令一次性关闭防火墙。如果需要永久关闭防火墙,可以使用`systemctl disable firewalld`命令。\[2\]\[3\] #### 引用[.reference_title] - *1* [Linux系统关闭防火墙~](https://blog.csdn.net/qq_54453558/article/details/122248313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [蓝易云:linux怎么关闭防火墙详细教程](https://blog.csdn.net/tiansyun/article/details/130023206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值