Part3.7——Linux中的火墙策略优化

目录

一、火墙介绍

什么是火墙?

二、火墙管理工具切换

1、firewalld切换到iptables

2、iptables切换到firewalld

三、iptables 的使用

1、火墙策略的永久保存

2、永久保存策略

四、火墙默认策略

1、默认策略中的5条链

 2、默认的3张表

3、iptables命令

 4、iptables火墙优化策略

(1)数据包状态:

 (2)对数据包访问进行优化

(3)测试

5、nat表中的DNAT和SNAT

(1)SNAT

(2)DNAT

五、firewalld

1、关于firewalld的域

2、关于firewalld的设定原理及数据存储

3、firewalld的管理命令

(1)火墙状态查看命令

(2)火墙服务设置

(3)火墙数据源设置

(4)火墙域设定

4、firewalld的高级规则

6、firewalld中的NAT

六、本章总结


一、火墙介绍

什么是火墙?

火墙是管理计算机从网络中的服务或端口开放与否的一个“名单”,这个名单叫“netfilter”;计算机中一般存在多个名单,多个名单共同管理计算机的网络访问,多个名单就叫“iptables”;管理这些名单的有两个工具,一个是<iptables>,另一个是已经熟悉的<firewall>。

火墙示意图:

二、火墙管理工具切换

注意:火墙管理工具不能兼容,开启一个就必须先关闭另一个。rhel8中默认的管理工具是firewalld

1、firewalld切换到iptables

dnf install iptables-services -y            #安装iptables
systemctl stop firewalld                     #停止firewalld
systemctl disable --now firewalld            #禁用firewalld
systemctl mask firewalld                     #冻结firewalld服务
systemctl enable --now iptables             #启用iptables

2、iptables切换到firewalld

dnf install firewalld -y                     #安装firewalld
systemctl stop iptables                     #停止iptables
systemctl disable --now iptables            #禁用iptables
systemctl mask iptables                     #冻结iptables服务
systemctl enable --now firewalld             #启用firewalld

三、iptables 的使用

1、火墙策略的永久保存

/etc/sysconfig/iptables                                        #iptables策略记录文件

2、永久保存策略

永久保存更改指的是:在iptables中临时更改后,就会立即生效,但是并不影响iptables的策略记录文件,在重新启动iptables服务后,会重新读取策略记录文件,恢复到未更改之前的状态;如果要保存更改的话,就需要将临时更改写入到策略记录文件中。

service iptables save                #保存更改

四、火墙默认策略

1、默认策略中的5条链

input输入
output输出
forward转发
prerouting路由之前
postrouting

路由之后

 2、默认的3张表

filter经过本机内核的数据(input   output  forwarf)

nat

不经过本机内核的数据( input  prerouting  postrouting  output)
mangle当filter和nat表不够用时才使用( input  prerouting  forward  postrouting  output)

3、iptables命令

-t指定表名称-n不做解析
-L查看-A添加策略
-p协议-s来源
--dport目的地端口-F清空策略
-j            动作

ACCEPT                    #允许

DROP                        #丢弃

REJECT                    #拒绝

SNAT                        #源地址转换

DNAT                        #目的地地址转换

<iptables -t nat -nL>:查看nat表,不指定参数<-t>时默认查看的是filter表。

 <iptables -F >:清空策略

清空策略后,保存策略到配置文件,重启iptables服务后就不会恢复原来的iptables表了。

 <iptables -A -s -j>:添加策略、设置来源与动作

iptables -t filter -A INPUT 1 ****            
                        #在filter表的INPUT链的第一行添加规则
                        #不写行号默认添加到链的最后

 <iptables -p --dropt>:设置协议及端口

-N新建链-D删除规则
-E更改链名称-I插入规则
-X删除链-R更改规则
-P更改默认规则

 <iptables -D>:删除规则

iptables -D INPUT 1                #删除默认表的INPUT链的第三条规则

<iptables -I>:插入规则

iptables -I INPUT 2 -p tcp --dport 22 -j DROP       
                             #在filter表的INPOUT链的di2行插入规则

<iptables -R>:更改规则

 <iptables -N>:新建链

 <iptables -E>:更改链的名称

iptables -t filter -E westos WESTOS            #更改链的名称
                     原名称   新名称

 <iptables -X>:删除链

iptables -t filter -X WESTOS            #删除filter表中的WESTOS链

<iptables -P>:更改链的默认规则

iptables -t filter -P INPUT DROP         #更改filter表的INPUT链的默认规则为DROP

 4、iptables火墙优化策略

(1)数据包状态:

RELATED建立过连接的数据包
ESTABLISHED正在连接的数据包
NEW新的数据包

优化的基本思路是:对建立过连接的和正在连接的数据包,只用验证这串数据的第一个数据包是否符合规则,不用对这串数据中的每个数据包都进行验证,从而减少数据通过火墙的时间。

 (2)对数据包访问进行优化

iptable -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
                                            #允许建立过连接的和正在连接的数据通过
iptable -A INPUT -m state --state NEW -i lo -j ACCEPT
                                            #允许本机内部的新数据通过
iptable -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
                                            #允许使用80端口的新数据通过
iptable -A INPUT -m state --state NEW -s 172.25.254.199 -p tcp --dport 22 -j ACCEPT
                                            #允许来自199号机使用22端口的新数据通过

iptable -A INPUT -m state --state NEW -j REJECT
                                            #不允许其他来源的新数据通过
service iptables save              #保存更改到iptables管理文件

(3)测试

在150号主机中ssh连接199号机,由于火墙策略只允许199号机的数据使用22端口,所以150号机连接会被拒绝。重新更改火墙策略后,允许150号机的数据使用22端口,ssh服务就可以连接上了。

5、nat表中的DNAT和SNAT

实验环境,在交换机中设置两个网卡,不同网卡设置不同网段的IP,其中一个网段和真机一样,另一个网段和测试机一样,所以总共需要三台主机。

(1)SNAT

SNAT是把内网的数据地址伪装成可以发送给外网的IP,这里意思是把通过本机的所有数据在发送出去的时候都把地址换成<172.25.254.199>网段的。

但是在交换机里边添加上这个设置后,在测试端需要添加同一网段的路由器IP作为其网关。在测试端仍然无法连接通,但是却可以连接同一网段的IP,这意味着在交换机里边两个不同网段的IP之间没有开启路由功能。解决方法在下一步。

 开启路由功能还需要对交换机进行以下设置,因为系统中默认是禁止路由“forward”功能的,所以一将其参数设置为1,表示允许。<sysctl -p>表示重新载入配置文件。

设置好网关后,ssh连接路由器的两个IP就都可以连上了。

连接上外网的主机后,外网的主机看到的实际是路由器的IP访问的,这就表明,内网的主机数据已经通过路由器把地址伪装成路由器的IP了。

(2)DNAT

路由器这样设置完以后,会将外部数据的地址全部转换成<1.1.1.150>号主机的IP。

 所以外网的主机通过ssh连接内网时,只能连接路由器的IP<172.25.254.199>,但是路由器会将数据直接传送给内网主机<1.1.1.150>。所以外网客户机ssh连接路由器时实际访问的是内网的<1.1.1.150>号主机。

五、firewalld

1、关于firewalld的域

trusted接受所有的网络连接
home用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client
work工作网络 ssh ipp-client dhcp-client
public公共网络 ssh dhcp-client
dmz军级网络 ssh
block拒绝所有
drop丢弃,所有数据全部丢弃无任何回复
internal内部网络 ssh mdns ipp-client samba-client dhcp-client
externalipv4网络地址伪装转发 sshd

对应的火墙数据文件在</lib/firewalld/zones>目录下:

2、关于firewalld的设定原理及数据存储

/etc/firewalld火墙配置目录
/lib/firewalld火墙数据模块目录

3、firewalld的管理命令

(1)火墙状态查看命令

firewall-cmd --state                               #查看火墙状态
firewall-cmd --get-active-zones                    #查看当前火墙中生效的域
firewall-cmd --get-default-zone                    #查看默认域
firewall-cmd --list-all                            #查看默认域中的火墙策略
firewall-cmd --list-all --zone=work                #查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted            #设定默认域

(2)火墙服务设置<service>

firewall-cmd --get-services                             #查看所有可以设定的服务
firewall-cmd --permanent --remove-service=cockpit       #移除服务
firewall-cmd --reload                                   #重新载入火墙配置

(3)火墙数据源设置<source>

irewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block
                                                    #指定数据来源访问指定域
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block
                                                    #删除自定域中的数据来源

(4)火墙域设定<interface>

firewall-cmd --permanent --remove-interface=ens3 --zone=public 
                                                        #删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens3 --zone=block
                                                        #添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens3 --zone=public
                                                        #更改网络接口到指定域

4、firewalld的高级规则

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 50.50.50.0/24 -p tcp --dport 22 -j REJECT

 路由器端:

 测试:

 注意:以上是临时添加,reload以后会恢复原样。永久添加需要加上参数<--permanent>会保存更改火墙的配置文件。

6、firewalld中的NAT

SNAT:也就是开启路由器功能,让内网网段的主机可以通过路由器访问到外网。

测试:

DNAT:把路由器的指向IP变为内网主机IP。也就是说外网主机连接路由器时实际上访问的是内网的主机。

firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=50.50.50.200
      端口          协议    目的地端口        目的地IP  

 测试:

六、本章总结

1、SNAT和DNAT实验中,内网如果访问外网,那么内网客户机的网关要设置成路由器同一网段的IP。除此之外用iptables管理火墙时,还要开启路由器的“ip_forward”功能,否则也无法访问。

2、外网通过路由器的DNAT功能访问内网主机时,需要输入的密码是内网的主机密码,而不是路由器的主机密码。

3、firewall在添加或删除策略时,临时添加不用参数<--permanent>,添加完成后立即生效,<--reload>恢复原样;永久添加需要参数<--permanent>,添加完成后不会生效,必须<--reload>后才能生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值