章节简述:
红帽RHEL7系统已经用firewalld服务替代了iptables服务,新的防火墙管理命令firewall-cmd与图形化工具firewall-config。
本章节基于数十个防火墙需求,使用规则策略完整演示对数据包的过滤、SNAT/SDAT技术、端口转发以及负载均衡等实验。
不光光学习iptables命令与firewalld服务,还新增了Tcp_wrappers防火墙服务小节,简单配置即可保证系统与服务的安全。

一、了解防火墙管理工具
防火墙虽有软件或硬件之分但主要功能还是依据策略对外部请求进行过滤,成为公网与内网之间的保护屏障,防火墙会监控每一个数据包并判断是否有相应的匹配策略规则,直到满足其中一条策略规则为止,而防火墙规则策略可以是基于来源地址、请求动作或协议来定制的,最终仅让合法的用户请求流入到内网中,其余的均被丢弃。

在红帽RHEL7系统中firewalld服务取代了iptables服务,但依然可以使用iptables命令来管理内核的netfilter。这对于接触Linux系统比较早或学习过红帽RHEL6系统的读者来讲,突然接触firewalld服务会比较抵触,可能会觉得新增Firewalld服务是一次不小的改变,其实这样讲也是有道理的。但其实Iptables服务与Firewalld服务都不是真正的防火墙,它们都只是用来定义防火墙规则功能的“防火墙管理工具”,将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上是完全一致的,而我会在本章中将iptables命令与firewalld服务的使用方法都教授给你们,坦白讲日常工作无论用那种都是可行的。

二、Iptables命令
iptables命令用于创建数据过滤与NAT规则,主流的Linux系统都会默认启用iptables命令,但其参数较多且规则策略相对比较复杂。

2.1、规则链与策略
在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个
举例来说:小区门卫有两条的规则,将这两个规则可以合成一个规则链:
遇到外来车辆需要登记。
严禁快递小哥进入社区。
但是光有策略还不能保证社区的安全,我们需要告诉门卫(iptables)这个策略(规则链)是作用于哪里的,并赋予安保人员可能的操作有这些,如:“允许”,“登记”,“拒绝”,“不理他”,对应到iptables命令中则常见的控制类型有:
ACCEPT:允许通过.
LOG:记录日志信息,然后传给下一条规则继续匹配.
REJECT:拒绝通过,必要时会给出提示.
DROP:直接丢弃,不给出任何回应.
其中REJECTDROP的操作都是将数据包拒绝,但REJECT会再回复一条“您的信息我已收到,但被扔掉了”。
通过ping命令测试REJECT情况会是这样的:
[root@localhost ~]# ping -c 2 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Port Unreachable
From 192.168.10.10 icmp_seq=2 Destination Port Unreachable
— 192.168.10.10 ping statistics —
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 3002ms

但如果是DROP则不予响应:
[root@localhost ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.

— 192.168.10.10 ping statistics —
4 packets transmitted, 0 received, 100% packet loss, time 3000ms
而规则链则依据处理数据包的位置不同而进行分类:
PREROUTING:在进行路由选择前处理数据包
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
Iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)

规则表的先后顺序:raw→mangle→nat→filter

规则链的先后顺序:
入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING

还有三点注意事项:
1.没有指定规则表则默认指filter表。
2.不指定规则链则指表内所有的规则链。
3.在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理。

2.2、基本的命令参数

iptables命令用于管理防火墙的规则策略,格式为:“iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]”。
表格为读者总结了几乎所有常用的iptables参数,如果记不住也没关系,用时来查就行,看完后来学习下如何组合并使用吧

参数 作用
-P 设置默认策略:iptables -P INPUT (DROP
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
–dport num 匹配目标端口号
–sport num 匹配来源端口号

查看已有的规则:
[root@linuxprobe ~]# iptables -L

清空已有的规则:
[root@linuxprobe ~]# iptables -F

将INPUT链的默认策略设置为拒绝:
当INPUT链默认规则设置为拒绝时,我们需要写入允许的规则策略。
这个动作的目地是当接收到数据包时,按顺序匹配所有的允许规则策略,当全部规则都不匹配时,拒绝这个数据包。
[root@linuxprobe ~]# iptables -P INPUT DROP

允许所有的ping操作:
[root@linuxprobe ~]# iptables -I INPUT -p icmp -j ACCEPT

在INPUT链的末尾加入一条规则,允许所有未被其他规则匹配上的数据包:
因为默认规则表就是filter,所以其中的”-t filter“一般省略不写,效果是一样的。
[root@linuxprobe ~]# iptables -t filter -A INPUT -j ACCEPT

删除上面的那条规则:
[root@linuxprobe ~]# iptables -D INPUT 2

三、Firewalld防火墙
Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及“zone”的区域功能概念

3.1、区域概念与作用
防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的firewalld区域,区域规则有:

区域 默认规则策略
trusted 允许所有的数据包。
home 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,mdns,ipp-client,samba-client与dhcpv6-client服务则允许。
internal 等同于home区域
work 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,ipp-client与dhcpv6-client服务则允许。
public 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,dhcpv6-client服务则允许。
external 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许。
dmz 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许。
block 拒绝流入的数据包,除非与输出流量数据包相关。
drop 拒绝流入的数据包,除非与输出流量数据包相关。

简单来讲就是为用户预先准备了几套规则集合,我们可以根据场景的不同选择合适的规矩集合,而默认区域是public

3.2、字符管理工具
如果想要更高效的配置妥当防火墙,那么就一定要学习字符管理工具firewall-cmd命令,命令参数有:

参数 作用
–get-default-zone 查询默认的区域名称。
–set-default-zone=<区域名称> 设置默认的区域,永久生效。
–get-zones 显示可用的区域。
–get-services 显示预先定义的服务。
–get-active-zones 显示当前正在使用的区域与网卡名称。
–add-source= 将来源于此IP或子网的流量导向指定的区域。
–remove-source= 不再将此IP或子网的流量导向某个指定区域。
–add-interface=<网卡名称> 将来自于该网卡的所有流量都导向某个指定区域。
–change-interface=<网卡名称> 将某个网卡与区域做关联。
–list-all 显示当前区域的网卡配置参数,资源,端口以及服务等信息。
–list-all-zones 显示所有区域的网卡配置参数,资源,端口以及服务等信息。
–add-service=<服务名> 设置默认区域允许该服务的流量。
–add-port=<端口号/协议> 允许默认区域允许该端口的流量。
–remove-service=<服务名> 设置默认区域不再允许该服务的流量。
–remove-port=<端口号/协议> 允许默认区域不再允许该端口的流量。
–reload 让“永久生效”的配置规则立即生效,覆盖当前的。

特别需要注意的是firewalld服务有两份规则策略配置记录,必需要能够区分:
RunTime:当前正在生效的。
Permanent:永久生效的。
当下面实验修改的是永久生效的策略记录时,必须执行”–reload“参数后才能立即生效,否则要重启后再生效。
查看当前的区域:
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public
查询eno16777728网卡的区域:
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
在public中分别查询ssh与http服务是否被允许:
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=http
no
设置默认规则为dmz:
[root@linuxprobe ~]# firewall-cmd --set-default-zone=dmz
让“永久生效”的配置文件立即生效:
[root@linuxprobe ~]# firewall-cmd --reload
success
启动/关闭应急状况模式,阻断所有网络连接:
应急状况模式启动后会禁止所有的网络连接,一切服务的请求也都会被拒绝,当心,请慎用。
[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
success

Iptables与Firewalld防火墙(最详细说明)相关推荐

  1. 9.Iptables与Firewalld防火墙

    第9章 Iptables与Firewalld防火墙 章节简述: 保障数据的安全性是继保障数据的可用性之后最为重要的一项工作.防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用 ...

  2. Iptables与Firewalld防火墙

    转载来自:http://www.linuxprobe.com/chapter-08.html tcp,udp都是网络传输协议,承载数据包传输的.tcp是可靠传输,有3次握手机制保证数据传输的可靠性.如 ...

  3. RH254-第二十六节-iptables和firewalld防火墙

    防火墙管理工具 保证数据的安全性是继可用性之后最为重要的一项工作,防火墙技术作为公网与内网之间的保护屏障,起着至关重要的作用.面对同学们普遍不了解在红帽RHEL7系统中新旧两款防火墙的差异,认识在红帽 ...

  4. linux就该这么学第8章Iptables与Firewalld防火墙。

    本章讲解了如下内容: ➢ 防火墙管理工具: ➢ iptables: ➢ firewalld: ➢ 服务的访问控制列表. 保障数据的安全性是继保障数据的可用性之后最为重要的一项工作.防火墙作为公网与内网 ...

  5. 第8章 Iptables与Firewalld防火墙

    本章分别使用iptables.firewall-cmd.firewall-config和TCP Wrappers等防火墙策略配置服务 iptables服务把用于处理或过滤流量的策略条目称之为规则,多条 ...

  6. Linux基础(iptables与firewalld防火墙)

    iptables 在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙.尽管新型的fierwalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种 ...

  7. 知了堂|iptables与firewalld 防火墙操作配置

    一.iptables 防火墙配置 (1)为 filter 表的 INPUT 链添加一条规则,规则为拒绝所有使用 ICMP 协议的数据包.★★ iptables -A INPUT -p icmp -j ...

  8. iptables、firewalld防火墙详解

    一.iptables防火墙设置 1.Netfilter组件 内核空间,集成在linux内核中: 官网文档:https://netfilter.org/documentation/ 扩展各种网络服务的结 ...

  9. firewalld防火墙配置

    firewalld是自CentOS 7以来带有一个动态的.可定制而无需重新启动防火墙守护程序或服务.firewall-cmd就是iptables/nftable的前端.在CentOS 8中,nftab ...

最新文章

  1. c#读写XML文件 (转)
  2. hdu 3401(单调队列优化dp)
  3. android 插入耳机 使用自身mic录音_这样选用麦克风,耳机降噪效果会更好
  4. linux+基因组字符替换,liftover基因组版本直接的coordinate转换
  5. 一个完全摆脱findViewById的自动绑定库
  6. 使用VMware虚拟磁盘管理工具调整磁盘大小
  7. php 获取当前action,ThinkPHP3.2.2获取当前Action名称
  8. 博文视点大讲堂第40期第一讲:美国TOP60名校逐一点评 圆满结束
  9. Handler native层实现原理
  10. Google大牛分享的面试秘籍
  11. 【Centos7】配置网卡之添加vlan tag(vlan 标签)
  12. DDNS - 动态DNS
  13. C语言火车票管理系统
  14. HashMap里的Node
  15. 文献解读 | CTSE酶激活的AIE荧光探针运用于胰腺癌病理诊断
  16. [1609.04802] SRGAN中的那些loss
  17. 【仿真+实测】一篇文章搞定RC延迟电路 1.延迟开启 2.快速泄放 3.精确泄放
  18. 安卓7.0核心破解示列
  19. 淘宝商品销量接口/淘宝商品销量监控接口/商品累计销量接口代码对接分享
  20. woocommerce对接paypal如何进行沙盒测试?

热门文章

  1. 深入研究 CSSfloat属性
  2. (深度学习入门)sigmoid型函数和 sigmoid函数的区别
  3. 和你播放器说“分手”吧
  4. 用 C++ 示例解释 UML 类图
  5. 【Java】HTTP请求工具类
  6. iframe、frame、frameset那些事
  7. 数据库拆分3--使用sharding-jdbc 支持子查询sql
  8. ArcGIS教程:什么是ArcGIS中的报表
  9. 2022社区团购回暖,创新 O2O 生鲜电商新零售解决方案
  10. v$sql、v$sqlarea、v$sqltext、v$sql_plan