文章目录

  • 防火墙
    • tcpwraps的配置
    • firewalld的概念
    • 配置防火墙(服务、接口、端口)
      • 图形化配置防火墙服务:
        • 添加开放端口:
      • 命令行配置防火墙服务
    • ICMP过滤器
      • 图形化:
      • 命令行操作:
    • 来源
      • 图形化:
      • 命令行:
    • 伪装、端口转发
      • 伪装配置:
        • 1、 通过交换机处理(弊端:互联网上能看到私网地址):
        • 2、 通过伪装
      • 端口转发:
        • 图形化配置:
        • 命令行配置:
    • 富规则
      • 图形化配置:
      • 命令行配置:

防火墙

tcpwraps的配置

涉及两个文件 /etc/hosts.allow,/etc/hosts.deny
允许那个客户端来访问我的那个服务 就在/etc/hosts.allow里写
拒绝那个客户端来访问我的哪个服务 就在/etc/hosts.deny里写
格式:daemon1,daemon2,…:clent1 client2 …
比如:sshd:192.168.26.100,关键在于这条目到底是在allow里写还是deny里写。
注意:如果客户端是个网段的话,格式为:192.168.26.或者192.168.26.0/255.255.255.0, 不支持192.168.26.0/24这种写法
匹配规则:
首先到allow里进行匹配,如果匹配成功了,则允许通过,不通过再到deny里匹配
如果allow里没有匹配,则会到deny里匹配,如果匹配了,则是拒绝。
如果在deny里也没有匹配,结果是允许通过(相当于什么都没写)
注意、:编辑/etc/hosts.allow或者/etc/hosts.deny 保存之后,会立即生效,不需要重启什么服务。
注意匹配规则,先匹配allow,如果通过,就不匹配deny中,如,现在在allow中和deny中同时设置 10.233.3.226:

会发到10.233.3.226这台服务器上ssh这.225台服务器依然可以正常ssh:

现在去把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

图形化配置:

然后再交换机服务器打开到端口转发添加规则:firewalld-config &

测试:这时外网是ping不通内网ip的,所以网页也是无法直接通过ip访问http中的内容的:

但是这时候访问模拟交换机ip(http默认使用80端口),发现访问的是内网内容:

上述是转发到其他服务器,下面说一下本地转发,以下图为例:就是说当你访问80端口的时候,通过本地转发,实际转发的就是22端口(原80端口将无法使用了)

测试:22是ssh端口,所以现在指定80端口 仍然能正常ssh过去:

命令行配置:

查看:firewall-cmd --list-all

注:永久生效和指定zone需要加上参数 --permanent 和 --zone=zone名称
添加端口转发到指定端口指定到服务器:firewall-cmd --add-forward-port=port=本地端口:proto=tcp/udp:toaddr=目标IP:toport=目标端口 ,如把模拟交换机的80端口指定到内网服务器的22端口:

测试:在外网服务器ssh交换机ip指定端口到内网服务器ssh 交换机ip -p 端口号:

删除端口转发::firewall-cmd --remove-forward-port=port=本地端口:proto=tcp/udp:toaddr=目标IP:toport=目标端口

富规则

富规则其实就是白名单,只允许添加到富规则中的ip能使用对应的功能。

图形化配置:

注:图形化富规则一定要使用英文版配置,否则会出bug,中文环境:LANG=C firewall-config &
以下图服务中http为例:需要注意的是,在富规则(可以理解为白名单)中添加内容并制定服务器后,就只有指定的ip才能使用该服务,但要在服务中把该功能的√去掉,否则添加这个富规则就没有意义。(下图右边中文仅仅用于方便看懂内容)

命令行配置:

命令行配置:注:永久生效和指定zone需要加上参数 --permanent 和 --zone=zone名称
添加服务:firewall-cmd --add-rich-rule 'rule family=ipv4(产品线) source address=ip service(类型为服务) name=http(服务名称) accept'
删除服务:firewall-cmd --remove-rich-rule 'rule family=ipv4(产品线) source address=ip service(类型为服务) name=http(服务名称) accept'

添加伪装:firewall-cmd --add-rich-rule 'rule family=ipv4(产品线) source address=伪装ip masquerade'
删除伪装:firewall-cmd --remove-rich-rule 'rule family=ipv4(产品线) source address=伪装ip masquerade'

添加端口:forewall-cmd --add-rich-rule 'rule family=ipv4(产品线) source address=ip port(端口) port=端口号 protocol=tcp(类型) accept'
删除端口:forewall-cmd --remove-rich-rule 'rule family=ipv4(产品线) source address=ip port(端口) port=端口号 protocol=tcp(类型) accept'

添加端口转发:firewall-cmd --add-rich-rule 'rule family=ipv4(产品线) source address=ip forward-port port=80 protocol=tcp(类型) to-addr=ip(转发目的ip) to-port=22(转发目的ip端口号)'
删除端口转发:添加端口转发:firewall-cmd --remove-rich-rule 'rule family=ipv4(产品线) source address=ip forward-port port=80 protocol=tcp(类型) to-addr=ip(转发目的ip) to-port=22(转发目的ip端口号)'

Redhat7(centos7)及以上防火墙完整介绍相关推荐

  1. CentOS之——CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables   service iptables ...

  2. CentOS7安装iptables防火墙

    2019独角兽企业重金招聘Python工程师标准>>> CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service ...

  3. HTTP状态码完整介绍

    2019独角兽企业重金招聘Python工程师标准>>> HTTP状态码是什么?HTTP状态码有什么用处?如何处理HTTP状态码能够和搜索引擎更友好?技巧在哪里?更有利于网站优化?HT ...

  4. 深度linux安装防火墙,CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

  5. Iptables防火墙详细介绍与实战增强服务器安全

    Iptables防火墙详细介绍与实战增强服务器安全 一:Iptables的概述及应用 iptables概述: netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfi ...

  6. CentOS7 如何关闭防火墙

    centos7  默认防火墙是firewalld    所以查看防火墙状态命令:systemctl status firewalld.service CentOS7默认的防火墙不是iptables,而 ...

  7. windows防火墙是干什么的_windows防火墙作用介绍

    windows 防火墙作用介绍 windows 防火墙作用介绍一 winxp 自带的防火墙只是一个 网络防火墙,对于绝大多数的网络病毒却无能为力,所以病毒防 火墙还是必须要装的. windows 防火 ...

  8. linux7 inittab没有,CentOs7 7个运行级别介绍,(CentOs7 inittab在使用systemd时不再使用)...

    CentOs7 7个运行级别介绍 0:关机 1:单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用的运行级别是3. ...

  9. Centos7中的防火墙调整为firewalld,试一下systemctl stop firewalld关闭防火墙。

    Centos7中的防火墙调整为firewalld,试一下systemctl stop firewalld关闭防火墙.

最新文章

  1. 基于Android平台扫码识别并链接服务器demo
  2. 记录一次OOM分析过程
  3. python 同时发多个请求
  4. 交换机的4种网络结构方式你知道是什么吗?
  5. 《Flume日志收集与MapReduce模式》一2.2 Flume配置文件概览
  6. margin和padding分别适合什么场景使用?
  7. SAP Cloud for Customer使用工作流(workflow)实现邮件自动通知功能
  8. 浅谈PVID和VID区别
  9. linux vim命令跳到67行,Linux学习之Vim/Vi使用(十三)
  10. 在日本做开发的日子(工作篇 序)
  11. 利用linux mutt 发送邮件(在Shell脚本中使用比较方便)
  12. Hibernate中Java对象的生命周期
  13. 自适应机器人:定义工业机械臂的未来
  14. RGB YUV XYZ HSL CIE1976L*a*b* LCH的色彩空间图 色彩空间 转换公式
  15. python使用虚拟内存_深入浅出虚拟内存(一)
  16. 网吧web电影服务器系统,网吧WEB、游戏、影视服务器应用需求分析
  17. 形容词记忆(六):ive, ile, ary后缀常用词
  18. mysql模糊查询语句怎么不区分大小写
  19. ICCV 2021 口罩人物身份鉴别全球挑战赛冠军方案分享
  20. 2023最新WSL搭建深度学习平台教程(适用于Docker-gpu、tensorflow-gpu、pytorch-gpu)

热门文章

  1. Arduino Nano下使用u8glib点亮Oled 128x6
  2. 为什么react选择了函数式组件(剖析原理)
  3. 大数模板——来自jxy师兄
  4. 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)
  5. VM14+CentOS7安装教程
  6. 网站已迁移、域名未转出,收到阿里云的“备案号可能被取消接入”邮件提示该怎么办。
  7. linux下不让使用rm命令
  8. 山科c语言题库,计算机培训 所有C语言题库
  9. JointJS中文文档
  10. 手机连接电脑服务器未响应怎么解决办法,电脑DNS服务器未响应怎么处理呢?