从零开始的云计算生活——第十四天,困难重重,安全管理。

一·故事背景

在前面的基本无操作内容后,来到了大头内容,安全管理!其中的防火墙相关的内容更是重中之重,要好好掌握,熟练运用。

二·SELinux安全上下文

1·SELinux 简介

a. SELinux(Security-Enhanced Linux)

      是Linux内核的强制访问控制(MAC)安全子系统,由美国国家安全局(NSA)与开源社区合作开发。其核心目标是通过精细化权限管理,提升系统安全性,防止恶意程序或用户越权访问敏感资源。

b.核心思想

   最小权限原则:进程/用户只能访问其明确需要的资源。

   基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。

c.工作模式

Enforcing(强制模式)​
严格执行策略,拒绝违规操作并记录日志(默认生产环境模式)

Permissive(宽容模式)​
仅记录违规行为但不阻止,用于策略调试或兼容性测试

Disabled(禁用模式)​
完全关闭 SELinux,系统回归传统 DAC 权限控制(不推荐,降低安全性)

2·基础操作命令

① 查看SELinux状态

getenforce# 查看当前模式
sestatus# 详细状态(模式/策略类型)

② 切换工作模式

setenforce 0# 切换到Permissive模式
setenforce 1# 切换到Enforcing模式

注意:setenforce仅临时生效,永久修改需编辑 /etc/selinux/config 文件。

3·安全上下文(Security Context)

① 查看上下文

ls -Z /var/www/html # 查看文件/目录的上下文
ps -Z -C httpd# 查看进程的上下文

② 修改上下文

chcon命令
选项说明示例消息
-t, --type TYPE设置安全上下文的类型部分已将 file.txt 的类型更改为 httpd_sys_content_t
-u, --user USER设置安全上下文的用户部分已将 file.txt 的用户更改为 system_u
-r, --role ROLE设置安全上下文的角色部分已将 file.txt 的角色更改为 object_r
--reference=FILE使用指定文件的安全上下文已从 ref_file 复制上下文到 target_file
-R, --recursive递归处理文件和目录已递归更改 dir/ 及其内容的上下文
-h, --help显示帮助信息显示帮助菜单
-v, --verbose显示操作详情正在更改 file.txt 的安全上下文
--version显示版本信息chcon (GNU coreutils) 8.32
semanage 命令
子命令/选项用途说明常用选项示例消息/操作
semanage login管理SELinux用户与Linux账户的映射关系-a (添加)、-d (删除)、-m (修改)将用户 user1 映射到 SELinux 用户 staff_u
semanage user管理SELinux用户及其角色和权限-a、-d、-R (角色)、-L (限制)创建新SELinux用户 web_user 并分配角色 httpd_role
semanage port管理网络端口与SELinux类型的绑定关系-a、-d、-t (类型)、-p (协议)将TCP端口 8080 绑定到 http_port_t 类型
semanage interface管理网络接口与SELinux类型的绑定关系-a、-d、-t将接口 eth1 绑定到 netif_t 类型
semanage module管理SELinux策略模块(启用/禁用)-a、-d、-e (启用)、-D (禁用)启用策略模块 my_custom_module
semanage fcontext管理文件/目录的默认SELinux上下文规则-a、-d、-t、-s (范围)添加规则:/webapps(/.*)? 的上下文类型为 httpd_sys_content_t
semanage boolean管理SELinux布尔值(开关策略功能)-1 (查看)、--on、--off启用布尔值 httpd_can_network_connect
semanage dontaudit管理dontaudit规则(是否记录特定访问拒绝事件)--on、--off关闭对 sshd 的 dontaudit 规则
-h / --help显示帮助信息-显示子命令的帮助菜单
-v / --verbose显示详细操作信息-显示添加端口 8080 的详细过程
-n / --noheading输出时隐藏列标题-仅显示端口列表数据,无标题行

三·Linux防火墙-Firewalld

1·概述

按表现形式划分:

软件防火墙: 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下: windows defender

硬件防火墙: 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等

按技术划分:

包过滤防火墙: 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位

七层防火墙:除了上述检查外,还会检查数据内容

防火墙的作用:

阻止来自网络外部的攻击、进行流量控制

2、 Linux防火墙

① 防火墙结构

用户态:

iptables: 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对于初                    学者或者网络技术不达标的人员不友好

firewalld:使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接底层                     的四表五链,对于初学者比较友好

ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。(默认未安装)

内核态:

四表: 从内核->用户的顺序: raw -> mangle -> nat -> filter

五链: input、output、forward、prerouting、postrouting

② firewalld防火墙

区域分类,功能

九大区域:

block: 阻塞区域 (拒绝任何流量,但给出回应)

dmz: 非军事化管理区域(内部的服务器放于该区域)

drop: 丢弃区域(丢弃一切流量,不给出任何回应)

external: 外部区域 (连接外部网络,例如: internet网络

home: 家庭区域

internal: 内部区域 (连接内部网络)

public:公共区域,默认区域

trusted: 完全信任区域
work: 工作区域

命令分类:
查看命令

firewall-cmd --list-all --zone=public    #查看指定区域的详细信息

添加命令

 firewall-cmd --add-port=80/tcp --zone=public #添加端口到指定区域

修改命令

firewall-cmd --change-interface=ens224 --zone=internal #修改网络接口所属区域

删除命令

firewall-cmd --remove-port=80/tcp --zone=public #删除端口到指定区域

保存规则

firewall-cmd --runtime-to-permanent        #一次性保存所有规则

案例:①禁止外部主机ping本机

本机ip:192.168.71.132

②允许外部主机访问本机的http服务

本机ip:192.168.71.132 ens160

#######环境配置 开始#########
##本机安装httpd服务


#改变SElinux的规则
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd


##启动httpd服务
[root@localhost ~]# systemctl start httpd


##修改httpd服务的监听IP
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.80.128:80


##重启httpd服务
[root@localhost ~]# systemctl restart httpd


##验证服务监听状态
[root@localhost ~]# netstat -naptu | grep :80
tcp00 192.168.80.128:800.0.0.0:* LISTEN5884/httpd 


#######环境配置 结束#########
#防火墙配置
[root@localhost ~]# firewall-cmd --change-interface=ens34 --zone=dmz
success


##客户端验证访问##
[root@localhost ~]# curl 192.168.80.128
curl: (7) Failed connect to 192.168.80.128:80; 拒绝连接
##发现无法访问###


#服务端查看dmz区域信息
[root@localhost ~]# firewall-cmd --list-all --zone=dmz

#发现没有放心http服务
#配置dmz区域http服务放行策略
[root@localhost ~]# firewall-cmd --add-service=http --zone=dmz 
success
 

四·网络知识补充

在学习Iptables之前,必须要了解一些关于网络的知识,这样就方便学习Iptables命令

1.交换机配置(交换机又称交换设备)

① 以太网MAC地址

以太网地址用来识别一个以太网上的某个单独的设备或一组设备。
在局域网中,  硬件地址又称为物理地址,或 MAC 地址:如果连接在局域网上的主机或路由器安装有多个适配器,那么这样 的主机或路由器就有多个“地址”

单播MAC地址:  是指第一个字节的最低位是0的MAC地址,代表了一块特定的网卡。

组播MAC地址:  是指第一个字节的最低位是1的MAC地址,代表了一组网卡。

广播MAC地址:   是指每一位都是1的MAC地址,广播MAC地址是组播MAC地址的一个特例,代表了所有网卡。

广播/组播地址只能作为目的地址使用 。

② Ethernet II帧格式

  1. 前导码(Preamble)​​:7字节
    • 功能:用于同步发送方和接收方的时钟,确保数据传输的时序一致。
  2. 帧起始定界符(Start Frame Delimiter, SFD)​​:1字节
    • 功能:标识帧的正式开始,通常为二进制模式10101011
  3. 目的地址(Destination Address)​​:6字节
    • 功能:存储目标设备的MAC地址(如00:1A:2B:3C:4D:5E),用于路由帧到正确的接收方。
  4. 源地址(Source Address)​​:6字节
    • 功能:存储发送方设备的MAC地址,用于标识帧的来源。
  5. 类型(Type/Length)​​:2字节
    • 功能:标识上层协议的类型,例如:
      • 0800H(十六进制)表示IP协议(用于互联网数据传输)。
      • 0806H表示ARP协议(用于地址解析)。
    • 注意:该字段有时也用于表示数据字段的长度,但图中明确标注为“类型”。
  6. 数据(Data)​​:46–1500字节
    • 功能:承载实际传输的上层数据(如IP数据包)。最小长度46字节是为了确保帧总长度满足最小要求(64字节),避免冲突;最大1500字节是标准以太网的最大传输单元(MTU)。
  7. 帧校验序列(Frame Check Sequence, FCS)​​:4字节
    • 功能:用于错误检测,通常使用CRC(循环冗余校验)算法。接收方计算校验和,如果与FCS不匹配,则丢弃帧以请求重传。

③ 交换机工作原理

1·构建网络

运行Cisco Packet Tracer软件,先添加一个交换机和三个主机,配置ip地址

 点击交换机,进入用户模式

打开模拟模式

2.模式切换

从用户模式进入特权模式

从特权模式进入全局配置模式

3.连通

初始状态

此时使用1.1ping一下另外一台主机1.2

MAC地址学习(源MAC

广播未知数据帧

接收方回应,交换机再次学习MAC地址

此时通过交换机,1.2收到信息,1.3拒绝信息,交换机是广播,然后再返回1.1,此时交换机接收了两个信息

交换机实现单播通信

④交换机以太网接口的工作模式

a.交换机以太网接口双工模式

单工 两个数据站之间只能沿单一方向传输数据

半双工:两个数据站之间可以双向数据传输,但不能同时进行

全双工:两个数据站之间可双向且同时进行数据传输

b.交换机以太网接口速率

接口连接时进行协商

协商失败则无法正常通信

2·路由器配置

网络层作用: 定位,路由,流控; 封装IP头部

① IP数据包格式

 

字段名位数功能说明
版本(Version)​4 bit标识IP协议版本(如IPv4值为4,IPv6值为6)。
首部长度(IHL)​4 bit表示IP首部长度(单位:​4字节)。最小值为5(20字节),最大值为15(60字节)。
优先级与服务类型(ToS)​8 bit定义数据包优先级和服务类型(如延迟、吞吐量优化),现被DSCP(差分服务)取代。
总长度(Total Length)​16 bit整个IP数据报的长度​(首部+数据),单位:字节。最大值为65535字节。
标识符(Identification)​16 bit唯一标识一个数据报。分片时,同一数据报的所有分片共享此标识符。
标志(Flags)​3 bit控制分片:
第1位:保留位(0)
第2位:禁止分片(DF,1=禁止)
第3位:更多分片(MF,1=后续还有分片)
段偏移量(Fragment Offset)​13 bit分片后,当前片在原数据中的偏移位置(单位:​8字节)。
生存时间(TTL)​8 bit数据报最大经过的路由器数。每经过一个路由器减1,归0时被丢弃(防环路)。
协议号(Protocol)​8 bit标识上层协议类型:
6=TCP,17=UDP,1=ICMP,89=OSPF等。
首部校验和(Header Checksum)​16 bit仅校验IP首部是否传输错误(不包含数据部分)。
源地址(Source IP)​32 bit发送方的IPv4地址(如192.168.1.10)。
目标地址(Destination IP)​32 bit接收方的IPv4地址(如10.0.0.2)。
可选项(Options)​可变扩展功能(如时间戳、路由记录),一般为空(IPv6已删除此字段)。
数据(Data)​可变上层协议数据(如TCP段、ICMP消息等)。

MAX TTL(每经过一个路由器减1):

windows 64

linux128

网络设备:255

② 广播与广播域

a.广播与广播域

          广播:将广播地址做为目的地址的数据帧

          广播域:网络中能接收到同一个广播所有节点的集合

b.MAC地址广播

          广播地址为FF-FF-FF-FF-FF-FF

c.IP地址广播

           广播MAC地址为FF-FF-FF-FF-FF-FF

           广播IP地址为IP地址网段的广播地址

通信方式目标设备数地址类型典型协议适用场景
广播域内全部设备MAC全F / IP全1ARP, DHCP局域网设备发现
单播单一指定设备具体MAC或IP地址HTTP, FTP点对点精准通信
组播特定组内设备IPv4 D类地址(224.0.0.0起)OSPF, IPTV流媒体高效一对多分发(如视频会议)

③ 路由的概念

跨越从源主机到目标主机的一个互联网络来转发数据包的过程
使用1.1去ping2.1,由1.1先去交换机,交换机广播,进入路由器,此时路由器返回1.1,再次1.1进入交换机,然后进入路由器,再进入右方交换机,进行广播,到2.1,然后2.1收到回复到路由器,但是路由器未识别再次返回2.1,学习后左右全部通后,2.1通信即可返回1.1,实现ping通。

3·传输层协议

① TCPTransmission Control Protocol ),传输控制协议

TCP是面向连接的、可靠的进程到进程通信的协议

TCP提供全双工服务,即数据可在同一时间双向传输

TCP报文段

TCP将若干个字节构成一个分组,叫报文段(Segment

TCP报文段封装在IP数据报文中

名称描述
序号
发送端为每个字节进行编号,便于接收端正确重组
确认号用于确认发送端的信息
窗口大小用于说明本地可接收数据段的数目,窗口大小是可变的
SYN同步序号位,TCP需要建立连接时将该值设为1
ACK确认序号位,当该位为1时,用于确认发送方的数据
FINTCP断开连接时将该位置为1

维度三次握手四次挥手
目的建立可靠双向连接安全终止全双工连接
交互次数3次4次
合并可能性SYN与ACK可合并(SYN-ACK)ACK与FIN通常不可合并
状态复杂性简单(仅SYN_SENT/SYN_RCVD复杂(含TIME_WAIT/CLOSE_WAIT
本质原因避免历史连接冲突适应全双工数据流异步关闭
端口
协议说  明
21
FTPFTP服务器所开放的控制端口
23
TELNET用于远程登录,可以远程控制管理目标计算机
25
SMTPSMTP服务器开放的端口,用于发送邮件
80
HTTP超文本传输协议
110
POP3用于邮件的接收

② UDPUser Datagram Protocol ),用户数据报协议

无连接、不可靠的传输协议

花费的开销小

UDP报文的首部格式

UDP长度:用来指出UDP的总长度,为首部加上数据。

校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制

端口
协议说  明
69
TFTP简单文件传输协议
111
RPC远程过程调用
123
NTP网络时间协议

五·Linux防火墙-Iptables

1· Iptables概述

Iptables 是一个用户空间程序,可以用于设置和管理 Linux 操作系统的内核级防火墙。它通过表、链和规则组成,可以灵活地根据不同的需求进行配置。

iptables 具有以下特点:

  • Iptables 作为内核级别的防火墙,具有高效、稳定、安全等优点。

  • Iptables 的表、链、规则结构非常灵活,可适应各种不同的网络环境和应用场景。

  • Iptables 相对于其他防火墙工具而言比较容易学习和掌握,并且拓展性非常强。

2· Iptables 组成

Iptables 的核心是由表(table)、链(chain)和规则(rule)三部分组成的。

表(Table)

在 iptables 中,表是一个规则的集合,每个表都包含若干个链和一些相关的规则。常用的五种 table 如下:

  • raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。

  • mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

  • nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。

  • filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。

表之间的优先级

数据包到达防火墙时,规则表之间的优先顺序 ​ raw > mangle > nat > filter

链(Chain)

在 iptables 中,链是一个规则的集合,每个链都包含一些相关联的规则。

  • INPUT链: 当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。

  • OUTPUT链: 当防火墙本机向外发送数据包(出站)时,应用此链中的规则。

  • FORWARD链: 当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则。

  • PREROUTING链: 在对数据包作路由选择之前,应用此链中的规则,用来修改目的地址,如DNAT。

  • POSTROUTING链: 在对数据包作路由选择之后,应用此链中的规则,用来修改源地址,如SNAT。

链表对应关系

数据包过滤的匹配流程

  • 入站

入站数据包从A网络发到B网络,首先发到防火墙,先后顺序经过有PREROUTING链的三个表(raw、mangle、nat),如果都是放通状态的会经过路由选择,然后根据目的地址一层一层往上送,经过有INPUT的两个表(mangle、filter),一直送到应用程序。

  • 转发

目的地不是本机,数据包先从A网络过滤,经过PREROUTING链,看是否是自己的目的地址,如果是外网到内网需要用nat转换成内网IP,找到内网用户,经过FORWARD链进行过滤,允许放通的到达POSTROUING链,再把内网地址转换成公网,这样数据包才能回去;如果是内网往外网发顺序就是反过来。

  • 出站

从本机的应用程序发出来, 经过路由选择,让路由知道从哪里发,先后顺序经过有OUTPUT链的四个表(raw、mangle、nat、filter),都放通后到达POSTROUING链的两个表(mangle、nat),如果没有什么转换地址,就出站。

  • 总结

当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

如果数据包是进入本机的,数据包就会沿着图向上移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后发送出去。

如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

​​​​​​​规则匹配策略
自上而下进行顺序匹配,匹配到即停止,不会再去查看下面的规则,然后根据允许或者丢弃或者拒绝等规则进行数据包的处理

3· Iptables防火墙配置

iptables命令

iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

#注意:链名必须大写;控制类型必须大写

选项作用
-t指定表名(raw、mangle、nat、filter)
-j指定控制类型
​​​​​​​
常用管理选项
选项作用
-A (--append)在指定链的末尾追加一条新的规则
-I (--insert)在指定链的开头插入一条新的规则;未指定序号时默认作为第一条规则
-R (--replace)修改、替换指定链中的某一条规则,可指定规则序号或具体内容
-P (--policy)设置指定链的默认策略
-D (--delete)删除指定链中的某一条规则,可指定规则序号或具体内容
-F (--flush)清空指定链中的所有规则;若未指定链名,则清空表中的所有链
-L (--list)列出指定链中所有的规则;若未指定链名,则列出表中的所有链
-n (--numeric)(搭配-L使用)使用数字形式显示输出结果,如显示IP地址而不是主机名
-v(搭配-L使用)显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers(搭配-L使用)查看规则时,显示规则的序号
常用控制类型​​​​
控制类型作用
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给出任何回应消息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成—个非固定公网IP地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。(没有真正处理数据包)
匹配条件​​​​​​​
匹配条件说明
-p指定要匹配的数据包的协议类型
-s指定要匹配的数据包的源IP地址
-d指定要匹配的数据包的目的IP地址
-i指定数据包进入本机的网络接口
-o指定数据包离开本机做使用的网络接口
--sport指定源端口号
--dport指定目的端口号
命令操作
​​​​​​​
添加新的规则

​​​​​​​在filter表的INPUT链末行添加拒绝icmp的规则

不指定行,是在指定链首行插入规则(允许tcp 22端口)

查看规则

​​​​​​​查看指定表的规则,以数字形式显示​​​​​​​

删除规则
​​​​​​​

注意
       若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错按内容匹配删数时,确保规则存在,否则报错

清空规则
​​​​​​​

注意
-F仅仅是清空链中的规则,并不影响-Р设置的默认规则,默认规则需要手动进行修改。

-P设置了默认规则为DROP后,使用-F一定要小心,因为iptables的修改是立刻生效的!

防止把允许远程连接的相关规则清除后导致无法远程连接主机,此情况如果没有保存规则可重启主机解决如果不写表名和链名,默认清空filter表中所有链里的所有规则

修改规则
​​​​​​​

4· 规则的匹配

通用匹配

可直接使用,不依赖其他条件或扩展包括网络协议、IP地址、网络接口等条件。

类型选项
协议匹配-p 协议名
地址匹配-s 源地址 -d 目的地址(可以是IP、网段、域名、空(代表任何地址))
接口匹配-i 入站网卡 -o 出站网卡

​​​​​​​(使用!取反)不是icmp协议的其他数据包全部接受

虽然不是icmp包都接受,但是没有指定icmp包的规则,所以icmp包默认还是接受的

将指定主机192.168.116.20的数据包丢弃

拒绝指定网段的数据包从ens160网卡进入

隐含匹配

某些条件,如端口、TCP标记、ICMP类型,隐含要求以特定的协议匹配作为前提。

协议端口匹配
​​​​​​​

--sport 和 --dsport 必须配合 -p 指定协议使用!

类型作用
--sport 1000匹配源端口是1000的数据包
--sport 1000:3000匹配源端口是1000-3000的数据包
--dport :3000匹配目标端口是3000及以下的数据包
--dport 1000:匹配目标端口是1000及以上的数据包

​​​​​​​允许tcp的20和21端口通过(即允许ftp数据包)

tcp标记匹配
​​​​​​​​​​​​​​

--tcp-flags 配合 -p tcp 使用,指定tcp标记(SYN、ACK、RST、URG、PSH、FIN)

##丢弃SYN请求包,允许其他指定的数据包
[root@localhost ~]# iptables -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT

##SYN,RST,ACK SYN前面指定包范围,空格后再指定


##表明前面指定的里面,除了这空格后面的SYN,其他都放行

##tcp三次握手第一次接受SYN,拒绝其他,第二次发送SYN和ACK
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 --tcp-flags   SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT


[root@localhost ~]# iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT

ICMP类型匹配
​​​​​​​

--icmp-type 配合 -p icmp 使用,指定icmp类型(字符串或数字代码)
icmp类型可用iptables -p icmp -h 查看帮助信息

类型含义
Echo-Request(代码为8)请求
Echo-Reply (代码为0)回显
Destination-Unreachable(代码为3)目标不可达
​​​​​​​
显式匹配

要求以 -m (扩展模块)的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。

多端口匹配
​​​​​​​

-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表

允许tcp的20,21,22,53端口

ip范围匹配

-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围

禁止转发源ip范围是192.168.10.100-192.168.10.200的udp数据包

mac地址匹配

-m mac --mac-source 源MAC地址

状态匹配
​​​​​​​

-m state --state 连接状态

常见的连接状态​​​​​​
状态含义
NEW本机要连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED本机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED本机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用
INVALID无效的封包,例如数据破损的封包状态

第一个包我只看22端口的包(-p tcp是隐含匹配,可以省略-m tcp)

5·Iptables配置NAT地址转换

 配置SNAT

应用场景

局域网主机共享转换的公网ip接入internet公网(内 --> 外)

模拟实验环境
​​​​​​​

私网客户端一台、网关服务器一台(设置iptables防火墙)、外网web服务端(有httpd服务)


三台都需要关闭默认防火墙firewalld和selinux


准备私网客户端:设置网卡网段为192.168.1.0/24;ip设为192.168.1.1;网关设为192.168.1.254。


准备网关服务器:一个网卡设为192.168.1.0/24网段,并设置ip为192.168.1.254;另一个网卡设为192.168.2.0/24网段,并设置ip为192.168.2.254;添加路由转发功能;下载 iptables-services(默认自带) 并开始iptables之后做防护墙策略。


准备外网web服务端:设置网卡网段为192.168.2.0/24;ip设为192.168.2.254;下载并开启httpd服务。

转换为固定公网ip

iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j SNAT --to 转换的公网地址
iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j SNAT --to-source 转换的公网地址范围(如10.0.0.1-10.0.0.10)
注:每一个做转换的公网ip,一般可以支持内网100~200台主机。

转换为非固定的公网ip(动态)

iptables -t nat -A POSTROUTING -s 源网段 -o 出站网卡 -j MASQUERADE

配置DNAT

应用场景

在internet公网中发布位于企业局域网的服务器(外 --> 内)​​​​​​​

模拟实验环境
​​​​​​​

私网客户端一台(有httpd服务)、网关服务器一台(设置iptables防火墙)、外网web服务端
三台都需要关闭默认防火墙firewalld和selinux


可参考上个模拟场景,再为私网主机增设httpd服务使之成为私网web服务端,将原来的外网主机当做客户端。


为私网主机添加httpd服务并启用

转换为私网ip

iptables -t nat -A PREROUTING -i 连接外部网络的接口名称 -d 外部接口IP地址 -p tcp --dport 发布的端口号 -j DNAT --to-destination 服务器内部网络地址:服务实际端口号

6·iptables防火墙策略的备份和恢复

​​​​​​​iptables的配置存放在/etc/sysconfig/iptables 文件中,我们对iptables所做的策略修改,虽然会立刻生效,但是并没有保存下来,当我们重启iptables防火墙时,会读取配置文件中设置的策略,我们之前修改过的策略便失效了。所以需要对修改的iptables策略进行备份和恢复。

iptables-save > 备份文件 将修改的iptables策略导入到备份文件中


iptables-restore < /opt/iptables.bak 将备份文件中的策略还原到配置文件中


systemctl restart iptables.service 重启服务生效

##查看配置文件中的默认策略
[root@localhost opt]#cat /etc/sysconfig/iptables-config

##使用iptables -nL查看修改过的策略
[root@localhost opt]#iptables -nL

##对自定义的iptables策略做备份(将命令导入一个备份文件iptables.bak)
[root@localhost opt]# iptables-save > /opt/iptables.bak
[root@localhost opt]# cd /opt
[root@localhost opt]# cat iptables.bak

##重启服务(用作模拟未保留修改的策略),再查看发现策略又恢复成了配置文件中的默认策略
[root@localhost opt]# systemctl restart iptables.service

[root@localhost opt]# iptables -nL

##将备份文件中的策略恢复到配置文件中,再重启服务就还原成功了
[root@localhost opt]# iptables-restore < /opt/iptables.bak

[root@localhost opt]# systemctl restart iptables.service

[root@localhost opt]# iptables -nL


#rocky系统,若要启动时读取iptables规则
iptables-save > /opt/iptables.save
vim /etc/profile
iptables-restore < /opt/iptables.save

7·案例实战

网络规划
  • 内部PC1位于内网区域,地址段为: 192.168.1.0/24,pc1地址为:192.168.1.1/24,网关地址为:192.168.1.254/24

  • 服务器S1位于服务器区域,地址段为: 192.168.2.0/24,pc1地址为:192.168.2.1/24,网关地址为:192.168.2.254/24

  • PC2位于互联网区域,模拟外部互联网,地址段为:10.0.0.0/8,pc2地址为:10.0.0.1/8

  • Linux防火墙的三块网卡为别连接不同的网络区域,地址分别为 :ens33 192.168.1.254/24;ens34 10.0.0.100/8 ;ens35 192.168.2.254/24

实验要求
  • A·内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。

  • B·内部网络服务器s1通过DNAT发布服务到互联网。

  • C·互联网主机pc2能够访问DMZ区域的服务器,但是不能够进行ping和ssh连接。

规划准备

防火墙配置

PC1配置

PC2配置

S1服务器配置

A

先将pc1的源ip转为防火墙ip

再去防火墙设置,将来自PC1的icmp请求拒绝掉

此时ping内部网关无法ping通

B

先在防火墙上设置,将80号端口转发至服务器S1

再允许外网到服务器S1的http(nginx)流量

C

禁止PC2的ping

禁止ssh连接

六·总结

今日的重点是firewall的操作,但是目前最实用的还是明日的iptables,重点是Iptables的运用,明日会继续更新。


本次更新了在学习Iptables之前的网络知识,掌握好更容易理解Iptables命令,这一部分是很重要的,希望可以多多回顾,为之后打下基础。


本次更新iptables的语法,命令,结构,以及一些使用场景,实战案例,重点掌握iptables相关内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值