01--IptablesFirewalld详解

前言:这里写一下,前面文章里都是直接关闭然后实验,感觉这样有点草率,这里写一下大概的概念和用法,作为知识的补充,这章写轻松点,毕竟是网安毕业的,算是给自己放松一下吧。

1、iptables

1.1、iptables简介

通过linux防火墙, 防火墙有:netfilter和iptables可以有效控制进出服务器的流量和流经服务器的流量。

  • netfilter:内核态,即不以文件和形式存在(kernal space)的防火墙。
  • iptables:用户态,在/sbin/iptables存在(User space)的防火。操作上二者没有区分

IPtables被称为2、3、4层防火墙,是因为它可以在不同的网络层面进行数据包的过滤和控制,具体如下:

  1. 第二层(数据链路层)

    • IPtables可以通过MAC地址进行数据包过滤。虽然主要是第三和第四层的协议和端口过滤工具,但它可以在某些情况下(例如桥接模式)操作第二层。
  2. 第三层(网络层)

    • 在网络层,IPtables主要基于IP地址进行数据包过滤和控制。这包括IPv4和IPv6的支持,可以根据源IP地址、目标IP地址、ICMP协议等进行过滤。
  3. 第四层(传输层)

    • IPtables最常见的用途是在传输层进行数据包的过滤和控制,例如基于TCP或UDP端口号进行规则设置。这使得它能够控制到达计算机的数据流和连接。

因此,尽管IPtables最为人熟知的是其在第三和第四层的防火墙功能,即基于IP地址、端口号和协议进行过滤,但它在某些特定情况下也可以在第二层操作。这种多层面的能力使得IPtables被称为2、3、4层防火墙。

缺点:

(1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时,防火墙没有作用。

(2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电脑。

(3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。

(4)正常状况下,所有互联网的数据包软件都应经过防火墙的过滤,这将造成网络交通的瓶颈。例如在攻击性数据包出现时,攻击者会不时寄出数据包,让防火墙疲于过滤数据包,而使一些合法数据包软件亦无法正常进出防火墙。

1.2、table&Chain&policy

四表:

  • Filter(过滤器):

    • 在iptables中,Filter是默认表,用于处理数据包的过滤规则。主要用于定义允许或拒绝数据包通过防火墙的策略。
  • NAT(网络地址转换):

    • Network Address Translation(NAT)是一种技术,用于修改数据包的源地址、目标地址或端口,从而实现私有网络内部主机与公共网络进行通信的方法。在iptables中,NAT表(nat table)用于设置和管理网络地址转换规则。
  • Mangle(变换):

    • Mangle表用于修改数据包的特定字段,如TTL(生存时间)、TOS(服务类型)等,以及进行高级的数据包处理。这在一些特殊的网络场景下非常有用,比如QoS(服务质量)管理和数据包标记等。
  • Raw(原始):

    • Raw表用于设置特定数据包的处理规则,通常用于在连接跟踪之前处理数据包。这允许用户在数据包进入连接跟踪系统之前执行某些操作,如设置免连接跟踪或者调整特定协议的参数

四个表的后两个关系到数据包跟踪,运维基本用不上,记一下名字即可,重要的是前两个表。四张表像容器,负责容纳四个方向的事务,可以看做安保小队

五链:

  • PREROUTING (预路由) PREROUTING链用于处理数据包进入网络接口之前的规则。这意味着它们在数据包进行路由之前被处理。主要用于目标地址转换(DNAT)和一些特定的数据包处理需求。

  • POSTROUTING (后路由) POSTROUTING链用于处理数据包离开网络接口之前的规则。这意味着它们在数据包进行出站路由之后,但在数据包离开接口之前被处理。主要用于源地址转换(SNAT/MASQUERADE)和一些网络地址转换需求。

  • INPUT (输入) INPUT链用于处理数据包进入本地计算机的规则。数据包在进行到达本地计算机后,但在交付到本地进程之前,经过这一链的处理。

  • OUTPUT (输出) OUTPUT链用于处理数据包从本地计算机发出的规则。这些规则在数据包从本地进程生成后,但在数据包离开本地计算机之前进行处理。

  • FORWARD (转发) FORWARD链用于处理通过本地计算机进行路由的数据包。这些数据包既不是发往本地计算机,也不是由本地计算机发出,而是通过本地计算机进行转发的。

这些链结合了iptables规则,允许管理员在不同的数据包处理阶段和方向上定义特定的过滤、转换和操作规则,从而实现对网络流量的详细控制和管理。主要是INPUT,OUTPUT,POSTROUTING这三个链 。可以看作安保人员

策略:

上面已经详细的解释了四表5链的内容及作用,可以看作系统的安保小队及安保人员,而策略就是下 达给他们的工作准则,这样由“四表五链一堆策略”就组成了iptables负责的所有事务。

架构图:

关系图:

 表链关系及对应用途

filter表(重点):

Filter(过滤器)

INPUT

访问本机的数据包进行过滤

FORWARD

途径本机的数据包进行过过滤

OUTPUT

本机访问互联网的数据包进行过滤

根据规则来处理数据包,如转或者丢。 就是实现主机型防火墙的主要表。 内核模块 iptable_filter

nat表(次重点):

NAT(网络地址转换)

PREROUTING

修改目的地址

POSTTOUTING

修改源地址

OUTPUT

主要是控制内部

转换地址的表(改IP,改端口。 当网关使用的linux。保护内外网流量。 内核模块叫iptable_nat)

 mangle表(了解):

Mangle(变换)

PREROUTING,POSTROUTING,INPUIT,OUTPUT,FORWARD

流量整形的表(流量控制)。 路由标记用的表。改TOS,TTL,Mark标记策略路由等, 内核模块iptables_mangle

raw表(了解):

Raw(原始)

PREROUTING,OUTPUT

数据包跟踪,一般网安的溯源用 iptables_raw

先后顺序详解:

raw --> mangle --> nat --> filter

链:

入站比如访问自身的web服务流量。先PREROUTING(是否改地址),再INPUT(是否允许)到达程序。
转发经过linux网关的流量。 先PREROUTING(是否改地址),然后路由。转发给FORWARD(转发或者丢弃),最后经过POSTROUTING(看看改不改地址。如NAT)
出站源自linux自身的流量。 先OUTPUT,然后路由。再给POSTROUTING(是否改IP)。

规则应用顺序:

ACL逐条匹配,匹配即停止。(除了LOG规则)

这句话指的是在网络设备或防火墙中使用的ACL(Access Control List,访问控制列表)规则匹配过程。ACL用于控制数据包在网络中的流动,决定是否允许或阻止数据包通过特定的接口或进入特定的网络。

具体解释如下:

  1. 逐条匹配:ACL规则是按照设定的顺序逐条进行匹配的。这意味着每个数据包在通过ACL时,会从第一条规则开始逐条进行比对,直到找到与该数据包匹配的规则为止。

  2. 匹配即停止:一旦某个数据包与某条ACL规则匹配成功(即符合该规则的条件),ACL会立即按照该规则的设定来处理数据包,不再继续检查后续的规则。这样做是为了提高处理效率,避免不必要的资源消耗。

  3. 除了LOG规则:通常,ACL中的LOG规则是指那些用于记录(logging)数据包流量的规则,而不是直接控制数据包流动的规则。这些LOG规则可以记录匹配的数据包,但通常不会中断数据包的传输流程,因此即使某个数据包匹配了LOG规则,ACL仍然会继续检查后续的规则,以决定数据包的最终处理。

综上所述,ACL逐条匹配,匹配即停止的原则确保了在网络设备上有效地实施安全策略,并能够迅速处理数据包,同时允许灵活地记录需要的信息。

1.3、编写防火墙规则

基本语法

iptables -t 表名 管理选项  [链名] [匹配条件] [-j 控制类型]-t 表名 每个表都可以用。不写默认filter表。
管理选项 操作方式如插入,删除,查看等。
链名 
匹配条件 数据包特征ip,端口等
控制类型 数据包处理方式,ACCEPT允许,REJECT拒绝,DROP丢弃,LOG日志(log不适用匹配即停止,记录后下一条)等。

示例如下

    #    添加本机禁ping
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT#这条命令使用iptables工具在filter表的INPUT链中插入一条规则,详细解释如下:#iptables: 这是Linux系统上用于配置iptables防火墙的命令行工具。#-t filter: 指定操作的表(table)为filter表。iptables有多个预定义的表,每个表用于不同的目的,filter表用于数据包过滤。#-I INPUT: 指定在INPUT链中插入规则。INPUT链是处理目标是本地系统的数据包的链。#-p icmp: 指定匹配协议为ICMP。ICMP(Internet Control Message Protocol)用于在IP网络上发送控制消息。#-j REJECT: 指定如果匹配到规则,执行动作为拒绝(REJECT)。拒绝动作会向发送方发送一条拒绝信息,并且不会回应对应的ICMP包。#综合起来,这条命令的作用是:在本地系统的INPUT链中插入一条规则,匹配所有的ICMP协议的数据包,并且对这些数据包执行拒绝操作。换言之,当有ICMP数据包进入本地系统时,系统将会发送一个ICMP拒绝消息给发送方,并且不会处理这些数据包。#这样的规则通常用于防火墙配置中,用来控制允许或者拒绝从外部网络进入本地系统的ICMP流量。[root@localhost ~]# iptables -L#    默认查询filterChain INPUT (policy ACCEPT)#    默认策略放行所有
target     prot opt source               destination         
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachableChain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   #    删除本机禁ping      
[root@localhost ~]# iptables -t filter  -D INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost ~]# 

使用另一台ping添加规则的机器

1.4、添加查看删除规则 

1.4.1、添加新的规则

-I(大写的i):在链的开头(或指定序号)插入一条规则

-A:在链的末尾追加一条规则

示例如下:

[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachableChain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    [root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     tcp  --  anywhere             anywhere            Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         [root@localhost ~]# iptables -t filter -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere            
REJECT     icmp --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     tcp  --  anywhere             anywhere            Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     [root@localhost ~]# 

1.4.2、查看规则列表

-L:列出所有的规则条目

-n:以数字形式显示地址、端口等信息

-v:以更详细的方式显示规则信息

--line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1)

[root@localhost ~]# iptables -L -n -v --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        1    76 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
3      181 11740 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 59 packets, 9400 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

1.4.3、删除、清空规则

-D:删除链内指定序号(或内容)的一条规则

-F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)

[root@localhost ~]# iptables -D INPUT 3
[root@localhost ~]# iptables -L -n -v --line-numbers
Chain INPUT (policy ACCEPT 9 packets, 564 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        3   228 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        0     0 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachableChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 7 packets, 564 bytes)
num   pkts bytes target     prot opt in     out     source               destination[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

1.4.4、设置默认策略

-P:为指定的链设置默认规则

这里我将所有进入本机的数据丢弃,所以ssh直接断连

[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost ~]# iptables -t filter  -P   INPUT   DROP
[root@localhost ~]# 
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.Connection closed by foreign host.Disconnected from remote host(Centos7_mini_1) at 16:50:03.Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

该状态无法使用-F删除,只能进行设置

此时重连ssh正常使用 

1.5、规则匹配条件

1)通用匹配(协议,地址,网络接口),可以独立使用

协议:

iptables -I INPUT -p icmp -j DROP#    禁ping

地址:

iptables -I INPUT -s 192.168.188.129 -j REJECT#    禁止源188.129主机进来。(换个主机ping一下,就可以通信)iptables -I INPUT -s 192.168.188.0/24 -j DROP#    禁止源188网段的数据包

网络接口:

iptables -I INPUT -i ens33 -j DROP#    目标地址为ens33的包全部丢弃

2)隐含匹配--sport/--dport

  • --sport 用于匹配源端口,适用于出站数据包。
  • --dport 用于匹配目标端口,适用于入站数据包。

端口匹配

iptables -I INPUT -s 192.168.188.0/24 -p tcp --dport 80 -j ACCEPT#    允许来自192.168.188.0/24网段的TCP协议的数据包,目标端口为80(即HTTP服务)的数据包通过防火墙iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT#    允许通过防火墙的TCP数据包,目标端口为20或21,用于FTP服务的数据传输和控制连接iptables -I INPUT -p tcp --dport 24500:24600 -j ACCEPT#    允许通过防火墙的TCP数据包,目标端口在24500到24600范围内

标记位匹配(SYN,ACK,RST,)

iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP#    输入接口为ens33 的数据包中,丢弃所有只包含TCP SYN标志的数据包。通常情况下,这种规则用于防范SYN洪水攻击(SYN flood)

ICMP类型匹配(请求8回应0)

iptables -A INPUT -p icmp --icmp-type 8 -j DROP#    主机在收到其他主机发送的ping请求时,直接丢弃这些请求#    自己ping别人可以,反过来不可以

3)显示匹配

通过调用模块:lsmod | grep xt_ 来加载内核扩展模块,如端口匹配,IP范围,MAC地址,状态等特殊匹配

    #    多端口匹配
iptables -A INPUT -p tcp -m multiport --dport 80,20,21 -j  DROP#-A INPUT: 将规则附加到INPUT链,即数据包进入主机时应用此规则。#-p tcp: 指定协议为TCP。#-m multiport --dport 80,20,21: 使用multiport模块指定多个端口,这里包括了80(HTTP)、20(FTP数据端口)、21(FTP控制端口)。#-j DROP: 指定动作为丢弃(drop),即如果匹配到目标端口为这些端口的TCP数据包,就丢弃这些数据包,不做任何响应。#因此,这条规则会导致你的主机在收到目标端口为HTTP(80)、FTP数据端口(20)、FTP控制端口(21)的TCP数据包时,直接丢弃这些数据包。
    #    IP范围匹配
iptables -I INPUT -p tcp -m iprange --src-range 192.168.188.166-192.168.188.199 -j ACCEPT#-I INPUT: 使用-I选项表示插入规则到INPUT链的顶部,即优先级最高,最先匹配。#-p tcp: 指定协议为TCP,规则只影响TCP协议的数据包。#-m iprange --src-range 192.168.188.166-192.168.188.199: 使用iprange模块指定源IP地址范围为192.168.188.166到192.168.188.199。#-j ACCEPT: 指定动作为接受(ACCEPT),即如果匹配到来源IP在指定范围内的TCP数据包,就允许这些数据包通过。#因此,这条规则允许来自IP地址在192.168.188.166到192.168.188.199之间的主机发起的所有TCP连接通过你的主机的INPUT链。
    #    MAC地址匹配
iptables -I INPUT -m mac --mac-source 00:0C:29:64:E3:8D -j ACCEPT#-m mac --mac-source 00:0C:29:64:E3:8D: 使用mac模块指定源MAC地址为00:0C:29:64:E3:8D。#因此,这条规则会允许具有MAC地址为00:0C:29:64:E3:8D的主机的所有流量通过你的主机的INPUT链。
    #    TCP状态匹配iptables -I INPUT -p tcp -m multiport --dport 80 -j  ACCEPT#-m multiport --dport 80: 使用multiport模块指定目标端口为80,这表示规则只适用于目标端口为HTTP的TCP数据包。#因此,这条规则允许通过INPUT链进入你的主机的所有TCP流量,并且目标端口为80(HTTP)的数据包会被允许通过。iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT#-m state --state ESTABLISHED,RELATED: 使用state模块指定连接状态为已建立(ESTABLISHED)或者相关联(RELATED)。这个规则会匹配已经建立的双向通信或者与已建立连接相关的数据包。#因此,这条规则允许通过INPUT链进入你的主机的所有TCP流量,只要这些流量是已建立或者相关联的连接。这样做是为了允许响应已建立连接的数据包或与已建立连接相关的数据包能够顺利通过防火墙。

1.6、iptables网络型

 这里在现实工作中用不到,现在使用的都是成品路由器,这里当作网络路由知识记录一下,不需要学习这种技术。

filter表主要做服务器流量控制。控制别人访问服务器的。 nat表主要做网关路由器的。网络地址转换。SNAT和DNAT

1.6.1、SNAT

internet访问,在没有NAT(network address translation)时,外部服务器对内部的私有地址是无法进行路由的。做了SNAT就可以转换地址,进行路由通信。 

环境如上,实验步骤如下

使用centos的路由转发功能测试

#server2
echo "net.ipv4.ip_forward = 1" >>/usr/lib/sysctl.d/50-default.conf
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -a | grep ip_forward#    三条命令结合起来的作用是启用Linux系统的IP转发功能,并将其配置持久化到系统重启后依然有效#    server1,3配置网关#    检查网络连通

删除server3的网关,模拟私有IP没有路由的情况。再次通信失败

建立SNAT,在server2上

iptables -FXZL
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 192.168.200.10#-t nat: 指定操作表为nat,即网络地址转换表。nat表用于配置网络地址转换规则,包括源地址转换(SNAT)、目标地址转换(DNAT)等。#-A POSTROUTING: 添加一条规则到POSTROUTING链中。POSTROUTING链用于处理数据包在离开系统之前的网络地址转换。#-s 192.168.100.0/24: 指定源地址为192.168.100.0/24,即来自192.168.100.0/24子网的数据包。#-o ens33: 指定出接口为ens33。数据包将从ens33接口出去,这是一个网络接口的名称。#-j SNAT --to-source 192.168.200.10:#-j SNAT: 指定动作为源地址转换(SNAT,Source NAT)。SNAT用于修改数据包的源IP地址。#--to-source 192.168.200.10: 将数据包的源IP地址修改为192.168.200.10。#解释: 这条规则的目的是,当来自192.168.100.0/24子网的数据包经过ens33接口离开系统时,将数据包的源IP地址改为192.168.200.10。这种配置通常用于实现内部私有网络访问外部网络时的地址转换,使得外部网络看到的源IP地址是192.168.200.10,而不是内部子网的原始IP地址。

1.6.2、MASQUERADE

MASQUERADE —— 地址伪装 地址伪装:适用于外网IP地址非固定的情况 因为:对于ADSL拨号连接,接口通常为 ppp0、ppp1 所以:将SNAT规则改为MASQUERADE即可,使动态地址作为SNAT的目标地址。效果同前一个实验

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE#-t nat: 指定操作表为nat,即网络地址转换表。nat表用于配置网络地址转换规则,包括源地址转换(SNAT)、目标地址转换(DNAT)等。#-A POSTROUTING: 添加一条规则到POSTROUTING链中。POSTROUTING链用于处理数据包在离开系统之前的网络地址转换。#-s 192.168.100.0/24: 指定源地址为192.168.100.0/24,即来自192.168.100.0/24子网的数据包。#-o ens33: 指定出接口为ens33。数据包将通过ens33接口出去,这是一个网络接口的名称。#-j MASQUERADE: 使用MASQUERADE目标动作。MASQUERADE是一种特殊的SNAT,它允许动态地将内部网络的私有IP地址转换为外部网络接口的公共IP地址。#这条规则的作用是,当来自192.168.100.0/24子网的数据包要通过ens33接口出去时,将这些数据包的源IP地址修改为该接口的IP地址(外部网络接口的公共IP地址),以实现内部私有网络访问外部网络的转换。这种配置通常用于允许内部网络的多个设备共享同一个公共IP地址访问互联网。#例如,如果ens33接口的公共IP地址是动态分配的,MASQUERADE会自动调整转换规则以匹配实际接口IP的变化,确保内部网络设备始终能够访问外部网络。#这种设置在路由器或者网关上经常使用,用于实现NAT(网络地址转换)功能,以保护内部网络并简化对外部网络的访问管理。

前面这两种都是用于内网访问外网

1.6.3、DNAT

在网关配置DNAT,外网访问内网测试成功。

iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10#-t nat: 指定操作表为nat,即网络地址转换表。nat表用于配置网络地址转换规则,包括源地址转换(SNAT)、目标地址转换(DNAT)等。#-A PREROUTING: 添加一条规则到PREROUTING链中。PREROUTING链用于处理数据包进入系统之前的网络地址转换。#-i ens33: 指定入接口为ens33。数据包将通过ens33接口进入系统,这是一个网络接口的名称。#-d 192.168.200.10: 指定目标地址为192.168.200.10。这意味着当数据包的目标地址是192.168.200.10时,将会应用这条规则。#-p tcp: 指定协议为TCP。这条规则只适用于TCP协议的数据包。#--dport 80: 指定目标端口为80。这表示当数据包的目标端口是80时,将会应用这条规则。#-j DNAT --to-destination 192.168.100.10:#-j DNAT: 指定动作为目标地址转换(DNAT,Destination NAT)。DNAT用于修改数据包的目标IP地址。#--to-destination 192.168.100.10: 将数据包的目标IP地址修改为192.168.100.10。#这条规则的目的是,当通过ens33接口进入系统的目标地址是192.168.200.10且目标端口是80的TCP数据包时,将数据包的目标IP地址修改为192.168.100.10。这种配置通常用于实现端口映射或反向代理,将外部对特定IP和端口的请求转发到内部网络的特定主机和端口上。#例如,外部网络通过访问192.168.200.10:80时,实际上会被转发到内部网络的192.168.100.10:80上处理。#这种设置在网络中常用于实现服务的透明访问,或者实现负载均衡和高可用性服务。

1.6.4、PNAT

端口转换(PNAT)是DNAT的一种形式,用于增强安全性。例如,内网服务器的SSH服务通常运行在标准的22号端口。为了提高安全性,在发布时可以配置SSH服务使用不同的端口,比如2345端口

iptables -t nat -A PREROUTING -i ens33 -d 192.168.200.10 -p tcp --dport  2345 -j DNAT --to-destination 192.168.100.10:22#--dport 2345: 指定目的端口为2345,即这些规则只适用于目标端口为2345的数据包。#-j DNAT --to-destination 192.168.100.10:22: 如果匹配了上述条件的数据包,执行目标地址转换(DNAT)。将目标地址转换为192.168.100.10:22,即数据包的目标IP地址变为192.168.100.10,目标端口变为22(SSH默认端口)。#解释:这条规则的作用是将进入ens33接口、目的IP地址为192.168.200.10、目的端口为2345的TCP数据包,转换为目标IP地址为192.168.100.10的SSH服务(端口22)。这种设置允许外部用户通过访问192.168.200.10:2345来实际连接到内网的192.168.100.10服务器的SSH服务,从而实现了端口和地址的映射和转换。

2、firewalld

Firewalld是CentOS 7.0新推出的管理Netfilter的工具,用于配置和监控防火墙规则的系统守护进程。它继承了iptables、ip6tables 和 ebtables 的功能,服务由firewalld包提供。Firewalld支持划分区域(zone),每个zone可以设置独立的防火墙规则。

在归入zone的顺序方面:

  1. 首先根据数据包中的源地址将其纳入某个zone。
  2. 然后根据网络接口所属的zone 纳入相应的区域。
  3. 如果前两个条件都不适用,则归入默认的zone。默认情况下,public zone是默认zone,管理员可以根据需要更改。

网络接口默认属于public zone,而lo(本地回环)网络接口属于trusted zone。这三种归入方式的优先级按顺序依次降低。这意味着如果能够根据源地址找到相应的zone,则不会再根据接口进行查找。只有当前两个条件都无法匹配时,才会使用firewalld.conf中配置的默认zone

2.1、区域zone

trusted

允许经过的流量通过

home/internal

仅允许ssh数据通过

work

仅允许ssh,ipp-client,dhcpv6-client数据通过

public

默认区域,仅允许ssh,dhcpv6-client数据通过

external

仅允许ssh数据通过,通过该区域的数据将会伪装(SNAT/DNAT)

dmz

非军事化区域 仅允许ssh数据通过

block

拒绝经过流量

drop

拒绝经过流量(甚至不进行ICMP错误进行回应)

2.2、常用端口

http

80/tcp, https 443/tcp, ssh 22/tcp

telnet

23/tcp

dns

53/udp(解析主机名) 53/tcp(区域同步)

ftp

20/tcp, 21/tcp

dhcp

67/udp, 68/udp

mail

25/tcp(SMTP), 110/tcp(POP3), 143/tcp(IMAP4)

mysql

3306/tcp

ntp

123/udp

samba

137/udp, 138/udp; 139/tcp,445/tcp

iscsi

i3260/tcp

2.3、配置实战

这是24年的rhce的一道考试题

⾮标准端⼝ 82 上运⾏的 Web 服务器在提供内容时遇到问题。根据需要调试并解决问题,使其满⾜ 以下条件:

  • 系统上的 Web 服务器能够提供 /var/www/html 中所有现有的 HTML ⽂件(注:不要删除或以其 他⽅式改动现有的⽂件内容)
  • Web 服务器在端⼝ 82 上提供此内容 Web 服务器在系统启动时⾃动启动 确保SELinux机制运⾏在Enforcing模式
[root@node1 ~]# yum provides "*/semanage"
[root@node1 ~]# yum -y install policycoreutils-python-utils
[root@node1 ~]# semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1
[root@node1 ~]# semanage port -a -t http_port_t -p tcp 82
[root@node1 ~]# restorecon -Rv /var/www/html
# 也可以使⽤man semanage port,然后/EXAMPLE
[root@node1 ~]# firewall-cmd --permanent --add-service=http
[root@node1 ~]# firewall-cmd --permanent --add-port=82/tcp
[root@node1 ~]# firewall-cmd --reload
[root@node1 ~]# systemctl restart httpd
[root@node1 ~]# systemctl enable --now httpd

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568笔记三十八:DS18B20驱动开发测试

若该文为原创文章,转载请注明原文出处。 DS18B20驱动参考的是讯为电子的单总线驱动第十四期 | 单总线_北京迅为的博客-CSDN博客 博客很详细,具体不描述。 只是记录测试下DS18B20读取温度。 一、介绍 流程基本和按键驱动差不多,主要功能是…

为什么要做USB转多路UART项目 - 技术角度

前言 之前专门为USB转多路UART项目写了个序,提到了技术方案原因,这个文章打算展开讲一下。 一、工业物联网关 最初是因为有个工业物联网关的项目,需要出多路RS485接口,每路外接几十个三相电表PLC之类的电力电子设备。其中一款需…

【论文极速读】 可微分检索索引(Differential Search Index, DSI)

【论文极速读】 可微分检索索引(Differential Search Index, DSI) FesianXu 20240714 at WeChat Search Team 前言 最近从朋友处得知了DSI这个概念,所谓的可微分检索索引DSI,就是通过语言模型将检索过程中的索引和召回…

pixelRNN与pixelCNN

目的:为了找到一个最能解释得到的生成样本的模型 PixelRNN 我们需要利用概率链式法则将图像x的生成概率转变为每个像素生成概率的乘积,也就是每个通道生成概率的乘积。 公式: 公式解释:p(x)是每个图像x的概率;右侧为…

浅聊授权-spring security和oauth2

文章目录 前言自定义授权spring security授权oauth2授权概述 前言 通常说到授权,就会想到登录授权、token令牌、JWT等概念,授权。顾名思义就是服务器授予了客户端访问资源的权益,那么要实现授权有几种方案呢,三种授权方式在公司项…

c++dll库的制作和使用

01、dll库的创建使用 创建dll项目 dllexport到处 dllimport导入 分别制定dll和lib的生成目录 调用: 包含头文件 常规添加 最后把dll文件拷贝到程序 成功调用

使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…

uniapp发送Form Data格式请求

设置header的Content-Type为 application/x-www-form-urlencoded 即可 uni.request({url: , // 接口urldata: {input: 写一篇一千字的作文}, // 入参method: POST, // 参数类型header: {"Content-Type": "application/x-www-form-urlencoded"}, // 请求头…

进销存管理系统设计

进销存管理系统(Inventory Management System,简称IMS)是一种帮助企业有效管理商品的入库、出库及库存情况的信息系统。良好的进销存管理系统能够提升库存周转率、减少库存成本、提高订单处理效率,从而增强企业的市场竞争力。以下…

[JS]Generator

介绍 Generator函数是 ES6 提供的一种异步编程解决方案, async是该方案的语法糖 核心语法 Generator对象由生成器函数返回, 并且它符合可迭代协议和迭代器协议 生成器函数在执行时能暂停, 后面又从暂停处继续执行 <script>// 1.定义生成器函数function* testGenerato…

VMware与centos安装

目录 VM安装 安装centos VM安装 VMware Workstation Pro是VMware&#xff08;威睿公司发布的一袋虚拟机软件&#xff09;&#xff0c;它主要功能是可以给用户在单一的桌面上同时运行不同的操作系统&#xff0c;也是可以进行开发、测试、部署新的应用程序的最佳解决方案。 开始…

HarmonyOS 屏幕适配设计

1. armonyOS 屏幕适配设计 1.1. 像素单位 &#xff08;1&#xff09;px (Pixels)   px代表屏幕上的像素点&#xff0c;是手机屏幕分辨率的单位&#xff0c;即屏幕物理像素单位。 &#xff08;2&#xff09;vp (Viewport Percentage)   vp是视口百分比单位&#xff0c;基于…

程序包不存在【java: 程序包org.springframework.boot不存在】

1、问题提示&#xff1a;java: 程序包org.springframework.boot不存在 注意&#xff1a;已经下载好了程序包&#xff0c;就是提示不存在 2、解决办法

PostgreSQL 中如何处理数据的并发读写和锁等待超时?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的并发读写和锁等待超时一、并发读写的基本概念&#xff08;一&#xff09;…

公司周年庆活动应该怎么策划?

当我们谈论公司周年庆典&#xff0c;我们不仅仅是在讨论一个简单的派对。 这是一个展现公司文化、增强员工归属感、加深客户关系&#xff0c;甚至推动公司战略发展的重要时刻。 那么&#xff0c;如何策划一场既有趣又有意义的周年庆典呢&#xff1f;这里分享一点自己的私人笔…

【java】力扣 买卖股票的最佳时机II

文章目录 题目链接题目描述思路代码 题目链接 122.买卖股票的最佳时机II 题目描述 思路 这道题和121.买卖股票的最佳时机 有所不同&#xff0c;不同点在于&#xff0c;这道题的股票可以多次买卖(但是要在买之前先卖掉) 详细思路请看链接的文章【java】力扣 买卖股票的最佳时…

ERP基础知识

ERP 一、概述 ​ ERP是Event-related Potentials的简称。外加一种特定的刺激&#xff0c;作用于感觉系统或脑 的某一部位&#xff0c;在给予刺激或撤销刺激时&#xff0c;或和当某种心理因素出现时在脑区所产生的电位变化&#xff0c;成为事件相关电位&#xff0c;是一种特殊…

Sentinel-1 Level 1数据处理的详细算法定义(四)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下: Sentinel-1 L…

【详解】Spring Cloud概述

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1. 认识微服务 1.1 单体架构 1.2 集群和分布式架构 1.3 集群和分布式…

从零开始做题:什么奇奇怪怪的东西

题目 解题 mrf拓展名&#xff0c;macro recorder打开&#xff0c;鼠标键盘的记录 然后解压flag.zip即可&#xff0c;发现有一个挂载的文件&#xff0c;直接打开后 显示所有的隐藏文件 一个一个打开 然后进行拼接运行吧估计。 首先打开txt文件直接久就给出了代码&#xff1…