Redhat7(centos7)及以上防火墙完整介绍

在这里插入图片描述

现在去把allow中去掉,就无法连接了(注意:如果配了桥接网络,就需要把桥接网络的ip也添加进去,否则依然可以正常连接):

在这里插入图片描述

禁掉整个网段:

在这里插入图片描述

可以加关键词:EXCEPT 除了的意思。如现在拒绝10.233.3.整段,除了10.233.3.226,发现225是可以正常连接的:

在这里插入图片描述

ALL:全部 ,一般用于deny中,意思就是拒绝所有客户端,如现在我们只想要一台服务器可以连接到该服务器,则在allow中添加允许连接的服务器,在deny写上ALL即可:

在这里插入图片描述

并不是所有的服务都能使用她来进行控制的,ldd -v 查看哪些服务能使用她来控制,需要筛选一下,带wrap的就是允许反之不允许,如,查看sshd服务:ldd -v ’ which sshd` |grep wrap ('which '是反引号)

在这里插入图片描述

上面内容也可以参考这篇博客,更加详细:利用hosts.allow和hosts.deny限制IP登陆分解

firewalld的概念


  • 接口需要和某zone关联,从这个接口进来的所有数据包都要使用这个zone里的规则,如果某接口没有和任何的zone关联,则这个接口进来的数据包会使用默认的zone里的规则,一个接口只能和一个zone关联,或者不关联(默认)

在这里插入图片描述

  • 打开图形化防火墙界面:firewall-config &

在这里插入图片描述

  • 查看默认zone:firewall-cmd --get-default-zone

  • 查看指定接口zone:firewall-cmd --get-zone-of-interface=网卡名称

  • 查看所有zone:firewall-cmd --get-zones

在这里插入图片描述

  • 更改默认zone:firewall-cmd --set-default-zone=****,如修改为trusted,再改回public(默认):

在这里插入图片描述

  • 查看接口是和哪个zone关联的方法有2种:图形化和命令行,

图形化查看:firewall-config &

在这里插入图片描述

命令行查看:firewall-cmd --get-zone-of-interface=网卡名称,如果网卡名称错误和该网卡没有绑定zone都会提示no zone ,如查看ens160网卡的zone:firewall-cmd --get-zone-of-interface=ens160

在这里插入图片描述

  • 指定接口新定义zone:firewall-cmd --add-interface=网卡名称 --zone=zone名称,在接口有zone的情况下在定义zone会报错:

在这里插入图片描述

(所以定义zone的时候需要先删除zone,在定义zone)删除zone:firewall-cmd --remove-interface=网卡名称 --zone=当前zone名称(查看:firewall-cmd --get-zone-of-interface=网卡名称):(了解即可,下面有命令可以直接更换zone)

在这里插入图片描述

也有命令直接更换(自行删除zone在定义到新zone,只是不需要手动删除而已):firewall-cmd --change-interface=网卡名称 --zone=新zone名称,如把zone换到home在换到public:

在这里插入图片描述

配置防火墙(服务、接口、端口)


防火墙配置有2种方法:图形化和命令行

在任何已配置的富规则都会显示在firewall-cmd --list-allfirewall-cmd --list-all-zone的输出结果中。具有语法解释如下所示:

在这里插入图片描述

注:以下使用中文版测试只是为了更方便了解,实际生产环境中,不要使用中文版的图形化配置,有bug,要使用英文版的配置,如果是中文环境,加上参数:LANG=C即可:LANG=C firewall-config &

图形化配置防火墙服务:

打开图形化界面:firewalld-config &

在这里插入图片描述

首先更改接口所属zone,已配置的接口(网卡名称)在zone中的接口处即可看到,如果所有zone中的接口都无内容,则代表没有接口配置到zone中,这里以ens160(网卡名称)为例:现在ens160属于public,这时候在其他zone中添加ens160会报错:

在这里插入图片描述

所以正确更改zone的步骤是:删除再添加,

在这里插入图片描述

这里添加到trusted中(不需要重启任何服务,配置即生效,图形化配置后命令行随即咳看到变化):

在这里插入图片描述

查看/开启/关闭某服务:勾上表示开启,未勾上表示关闭

在这里插入图片描述

添加开放端口:

在这里插入图片描述

其他功能按需设置吧,需要注意的是,上述方法设置服务均为临时生效,如果重启服务器或者重启防火墙服务均失效。如果要服务永久生效,需要把配置:运行时改为永久,注:设置永久仅对下次重启服务有效,对当前无效,所以一般要设置2次,运行时和永久都设置才是当前和永久生效)

在这里插入图片描述

命令行配置防火墙服务

注:永久需要在后面加上参数:- -permanent ,需要注意的是,设置永久是并不改变当前状态,所以一般设置永久和设置临时都需要操作(也就是同一条命令执行2次,一次后面加- -permanent,一次不加)

服务名称如何确定:firewall-cmd --get-services ,如:筛选http服务名:firewall-cmd --get-services |grep http

在这里插入图片描述

查看默认zone中是否开启了某服务:firewall-cmd --query-service=服务名

开启默认zone中的某服务(临时生效):firewall-cmd --add-service=服务名

关闭默认zone中的某服务(临时生效):firewall-cmd --remove-service=服务名

在这里插入图片描述

查看指定zone中是否开启了某服务:firewall-cmd --query-service=服务名 --zone=zone名

开启指定zone中的某服务(临时生效):firewall-cmd --add-service=服务名 --zone=zone名

关闭指定zone中的某服务(临时生效):firewall-cmd --remove-service=服务名 --zone=zone名

在这里插入图片描述

上述是设置临时生效的,现在说一下设置永久生效,方法和上面一样,之后后面需要加上参数:–permanent ,需要注意的是,设置永久是并不改变当前状态,所以设置永久和设置临时都需要操作,如:设置指定某zone中永久且当前生效开启http服务:

在这里插入图片描述

设置永久以后重启防火墙或者再次执行临时生效命令当前修改即当前且永久生效:

在这里插入图片描述

查看默认zone的指定端口是否存在:firewall-cmd --query-port=端口号/类型

添加默认zone的指定端口,以808为例:firewall-cmd --add=port=端口号/类型

删除默认zone的指定端口,以808为例:firewall-cmd --add=port=端口号/类型

在这里插入图片描述

指定zone和永久生效方法和上述一样(指定zone:–zone=**,永久参数:–permanent),这里就不一一做测试了,直接指定zone为home且永久生效吧:

在这里插入图片描述

ICMP过滤器


图形化:

ICMP过滤器,需要注意这里和服务是相反的,勾上的表示禁用,未勾上的表示启动。

在这里插入图片描述

ping的原理就是你发送一个request请求,我给你一个reply回应,为一个ping,测试:a服务器执行抓包:tcpdump -i ens160(网卡) icmp,b服务ping a服务器ip -c2 ,然后回到a服务器看状态:

a服务器执行抓包:

在这里插入图片描述

b服务器加上参数-c2 ping该ip:

在这里插入图片描述

在到a服务器看状态:

在这里插入图片描述

如果不想别人能够ping通你 ,把echoo-request勾上即可:

在这里插入图片描述

命令行操作:

查看所有类型:firewall-cmd --get-icmptpes

在这里插入图片描述

查看单独某个类型有没有被勾上(默认zone,需要查看指定zone加上参数 --zone=zone名称):firewall-cmd --query-icmp-block=echo-request

在这里插入图片描述

开启禁pin功能(永久生效需要加上参数 --permanent):firewall-cmd --add-icmp-block=echo-request

在这里插入图片描述

别人ping该服务器状态为:

在这里插入图片描述

关闭禁ping功能:firewall-cmd --remove-icmp-block=echo-request

来源


图形化:

以http为例:

比如说当前ip设置了一个zone为public,但public并没有开启http服务,所以http并不能使用,但home这个zone中http可以使用,所以,我们在home这个zone的来源中添加一个ip段,这样,当前ip只要满足来源中ip段,则即可以使用public这个zone的规则和home这个zone的规则,即使public中http服务不能使用,但home中的http可以使用,当前服务器的http满足后者,所以http服务能正常使用:

在这里插入图片描述

命令行:

查看当前自定zone的所有规则:firewall-cmd --list-all --zone=zone名称:

在这里插入图片描述

添加来源(永久生效需要加上参数 --permanent):firewall-cmd --add-source=ip/掩码 --zone=zone名称

在这里插入图片描述

删除来源:firewall-cmd --remove-source=ip/掩码 --zone=zone名称

在这里插入图片描述

伪装、端口转发


IP地址伪装和端口转发都属于NAT(网络地址转换)。

地址伪装和端口转发的区别如下:

IP地址伪装:

1、通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包

2、源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改

3、为原始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网。

4、类似于NAT技术中的端口多路复用(PAT)。IP地址伪装仅支持ipv4,不支持ipv6。

端口转发:

也可以称之为目的地址转换或端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上的不同端口,或不同计算机上的端口。一般公司内网的服务器都采用私网地址,然后通过端口转发将使用私网地址的服务器发布到公网上。

在firewalld中,有一个富语言的概念,firewalld的富语言提供了一种不需要了解iptables语法的通过高级语言配置复杂的防火墙规则的机制,通过这种语言,可以表达firewalld的基本语法中不能实现的自定义防火墙规则。

富规则可用于表达基本的允许/拒绝规则,也可以用于配置记录(面向syslog和auditd),以及端口转发、伪装和速率限制。

伪装配置:

测试需要3台服务器,关系如下图(内网和外网服务器均一张网卡即可,但模拟交换机需要两张网卡,内网和外网同时存在):

在这里插入图片描述

创建私网ip和模拟交换机内网,首先得保证这2台处于同一个网段,所以添加网卡信息的时候选择同一个vlan区。

在这里插入图片描述

设置内网ip和模拟交换机内网ip(模拟交换机一张网卡配内网,另一种网卡配外网):

在这里插入图片描述在这里插入图片描述

均需要重启网络。

模拟交换机上关闭networkmanager:/etc/init.d/NetworkManager stop

在这里插入图片描述

模拟交换机还需要开启转发功能,如图:

在这里插入图片描述

上述操作做完配置变完成了,下面开始测试:模拟交换机ping自己,ping私网网关和ping外网网关是能正常ping通的:

在这里插入图片描述

外网网关虽然能ping通,但ping外网ip的时候并ping不通:

在这里插入图片描述

原因:抓包看状态,首先外网服务器上执行抓包命令:tcpdump -i 网卡名称 icmp

在这里插入图片描述

交换机上再次ping外网ip:

然后回到外网服务器查看抓包状态:

在这里插入图片描述

解决模拟交换机能ping通外网网关,但ping不通外网服务器的情况有两种处理方法:1、通过交换机,2、通过伪装

1、 通过交换机处理(弊端:互联网上能看到私网地址):

route -n查看网关信息,发现外网服务器并没有设置网关,这时候把网关设置为和模拟交换机同样的网关即可:

在这里插入图片描述

此时在外网服务器抓包后再去交换机ping当前服务器,即可正常ping同,抓包状态为:

在这里插入图片描述

但是通过交换机接通外网方式互联网是能看到私网iP的,所以真正的服务器是不允许这样的,所以删除服务器配置的和交换机一样的网关:route del default gw 网关

在这里插入图片描述

2、 通过伪装

因为只要ip位置完毕以后,伪装只需要勾上即可:

在这里插入图片描述

此时在外网服务器抓包后再去交换机ping当前服务器,即可正常ping同,抓包状态为:

在这里插入图片描述

通过命令行开启伪装:永久生效和指定zone需要加上参数--permanent--zone=zone名称

开启:firewall-cmd --add-masquerade

关闭:firewall-cmd --remove-masquerade

查看:firewall-cmd --list-all

在这里插入图片描述

端口转发:

在这里插入图片描述

测试首先在内网服务器和外网服务器均装上http:yum -y install http

启动该服务:systemctl start httpd

任意在内网服务器http中写入内容:echo inetnal xxxxx > /var/www/html/index.html

到模拟交换机把http服务关闭,因为不关闭 就会访问交换机的端口,而不会转发到内网端口:systemctl stop httpd

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
时减轻大家的负担。**

[外链图片转存中…(img-EcsWtO7y-1715563993401)]

[外链图片转存中…(img-pk9XfdbD-1715563993402)]

[外链图片转存中…(img-aHaQbmEy-1715563993402)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值