Linux操作系统安全管理概述与命令操作

news2025/7/21 5:20:38

前言:
       1.本文将详细描述让读者了解Linux操作系统安全管理的概述和SELinux安全上下文以及基础操作命令;
       2.本文将让读者掌握Linux操作系统防火墙firewall的结构和命令使用方法;
       3.了解Iptables防火墙配置的结构与特点以及数据包过滤的匹配流程和相关iptables命令的使用方法。

目录

一、SELinux安全上下文

1.SELinux 简介

2.基础操作命令

(1)查看SELinux状态

(2)切换工作模式

案例:

3.安全上下文(Security Context)

(1)查看上下文

(2)修改上下文

3.1chcon命令

3.2semanage 命令

4.日志分析与故障排除

(1) 查看SELinux日志

(2)生成解决方案建议

常见问题与解决方案

场景1:Web服务器无法访问文件

场景2:服务无法绑定非标准端口

5.注意事项

二、Linux防火墙-Firewalld

1. 概述

2. Linux防火墙

防火墙结构

firewalld防火墙

区域分类

区域功能

firewall-cmd命令用法

三、Linux防火墙-Iptables

1. Iptables概述

2、 Iptables 组成

表(Table)

链(Chain)

链表对应关系

数据包过滤的匹配流程

规则匹配策略​

3. Iptables防火墙配置

iptables命令

常用管理选项

总结


一、SELinux安全上下文

1.SELinux 简介

(1) SELinux(Security-Enhanced Linux)是Linux内核的强制访问控制(MAC)安全子系统,提供更细粒度的权限控制,防止进程或用户越权操作。

(2)核心思想

       最小权限原则:进程/用户只能访问其明确需要的资源。
       基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。

(3)工作模式

模式描述
Enforcing强制执行策略,拒绝非法操作并记录日志。
Permissive仅记录违规操作,不阻止(用于调试)。
Disabled完全关闭SELinux(需重启生效)。

2.基础操作命令

(1)查看SELinux状态
 getenforce# 查看当前模式
 sestatus# 详细状态(模式/策略类型)
(2)切换工作模式
 setenforce 0# 切换到Permissive模式
 setenforce 1# 切换到Enforcing模式

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

案例:

[root@ding ~]# setenforce 0
[root@ding ~]# getenforce
Permissive


[root@ding ~]# setenforce 1
[root@ding ~]# getenforce
Enforcing


3.安全上下文(Security Context)

(1)查看上下文
 ls -Z /var/www/html # 查看文件/目录的上下文
 ps -Z -C httpd# 查看进程的上下文
(2)修改上下文
3.1chcon命令
选项说明示例消息
-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

选项使用案例

  1. 设置文件类型 将 /var/www/html/index.html 的上下文类型设为 httpd_sys_content_t:

     sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  2. 设置用户部分 将 /etc/nginx/nginx.conf 的用户部分设为 system_u:

     sudo chcon -u system_u /etc/nginx/nginx.conf
  3. 设置角色部分 将 /home/user/file.txt 的角色部分设为 object_r:

     sudo chcon -r object_r /home/user/file.txt
  4. 参照文件上下文 将 file2 的上下文设置为与 file1 一致:
    实验:

    [root@ding html]# ls -Z
    system_u:object_r:httpd_sys_content_t:s0 404.html
    system_u:object_r:httpd_sys_content_t:s0 50x.html
    system_u:object_r:httpd_sys_content_t:s0 icons
    system_u:object_r:httpd_sys_content_t:s0 index.html
    system_u:object_r:httpd_sys_content_t:s0 nginx-logo.png
    system_u:object_r:httpd_sys_content_t:s0 poweredby.png
    system_u:object_r:httpd_sys_content_t:s0 system_noindex_logo.png
    [root@ding html]# ls -Z /etc/nginx/nginx.conf
    system_u:object_r:httpd_config_t:s0 /etc/nginx/nginx.conf
    [root@ding html]# chcon --reference /etc/nginx/nginx.conf ./index.html
    [root@ding html]# ls -Z
    system_u:object_r:httpd_sys_content_t:s0 404.html
    system_u:object_r:httpd_sys_content_t:s0 50x.html
    system_u:object_r:httpd_sys_content_t:s0 icons
    system_u:object_r:httpd_sys_content_t:s0 index.html
    system_u:object_r:httpd_sys_content_t:s0 nginx-logo.png
    system_u:object_r:httpd_sys_content_t:s0 poweredby.png
    system_u:object_r:httpd_sys_content_t:s0 system_noindex_logo.png
    
     sudo chcon --reference=file1 file2
  5. 递归操作目录 递归修改 /var/www/html/ 目录下所有文件的上下文类型:

     sudo chcon -R -t httpd_sys_content_t /var/www/html/
  6. 显示帮助信息

     chcon --help
  7. 显示版本信息

     chcon --version
  8. 详细模式操作 启用详细输出,修改 ~/.ssh/config 的上下文类型:

     sudo chcon -v -t ssh_home_t ~/.ssh/config

说明

  • 实际执行时,若未添加 -v 参数,chcon 默认不输出成功信息,仅在出错时显示错误。

  • 使用 -v 参数可查看操作详情(如上述表格中的“示例消息”)。

 chcon -t httpd_sys_content_t /var/www/html/index.html # 临时修改文件类型
 restorecon -v /var/www/html/index.html # 恢复默认上下文
3.2semanage 命令
子命令/选项用途说明常用选项示例消息/操作
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输出时隐藏列标题-仅显示端口列表数据,无标题行

选项使用案例

1)管理端口绑定

将TCP端口 8080 标记为HTTP服务端口:

 sudo semanage port -a -t http_port_t -p tcp 8080

说明:允许Apache等HTTP服务使用8080端口。

2)管理文件上下文规则

为自定义Web目录 /opt/webapps 设置默认上下文:

 sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?"
 sudo restorecon -Rv /opt/webapps

说明:添加规则后需运行 restorecon 立即生效。
 

3)管理SELinux用户映射

将Linux用户 dev_user 映射到SELinux用户 user_u:

 sudo semanage login -a -s user_u dev_user

说明:限制用户 dev_user 的SELinux权限。
 

4)管理策略模块

禁用自定义策略模块 mymodule:

 sudo semanage module -D mymodule

说明:禁用后相关规则不再生效。
 

5)查看当前端口绑定

列出所有HTTP相关端口:

 semanage port -l | grep http_port_t

输出示例

 http_port_t    tcp    80, 443, 8080

6)删除文件上下文规则

移除对 /tmp/custom_dir 的上下文规则:

 sudo semanage fcontext -d "/tmp/custom_dir(/.*)?"

注意事项

权限要求:大多数操作需 sudo 或 root 权限。持久化存储:semanage 修改的规则会保存到策略库(默认路径 /etc/selinux/targeted),重启后仍有效。结合工具使用:修改文件上下文后,需运行 restorecon 或重启服务使更改生效。
7)

4.日志分析与故障排除

(1) 查看SELinux日志
 tail -f /var/log/audit/audit.log # 直接查看原始日志
 ausearch -m AVC -ts recent# 使用工具过滤日志
(2)生成解决方案建议
 grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy
 semodule -i mypolicy.pp# 编译并加载自定义策略

常见问题与解决方案

场景1:Web服务器无法访问文件
  • 现象:Apache返回403错误,但文件权限正常。

  • 解决

    1.检查文件上下文:ls -Z /var/www/html
    2.修复上下文:restorecon -Rv /var/www/html
场景2:服务无法绑定非标准端口
  • 现象:Nginx无法监听8080端口。

  • 解决

    semanage port -a -t http_port_t -p tcp 8080# 添加端口到SELinux策略

5.注意事项

(1)不要随意禁用SELinux:优先使用Permissive模式调试。

(2)谨慎使用chcon:错误修改上下文可能导致系统不稳定。

(3)备份策略:修改策略前备份 /etc/selinux 目录。

二、Linux防火墙-Firewalld

1. 概述

按表现形式划分:

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

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

按技术划分:

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

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

防火墙的作用:

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

2. Linux防火墙

防火墙结构

用户态:

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

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

ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。

内核态:

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

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

firewalld防火墙
区域分类

九大区域: block、dmz、drop、external、home、internal、public、trusted、work

区域功能

public:公共区域,默认区域

 public (active)
 target: default #区域类型规则
 icmp-block-inversion: no
 interfaces: ens33 #属于该区域的接口
 sources:#来源
 services: dhcpv6-client ssh #放行服务的名称
 ports:#放行端口号
 protocols:#放行协议
 masquerade: no#NAT地址转换
 forward-ports:#转发端口
 source-ports:#源端口
 icmp-blocks:#ICMP的阻塞类型,ping的阻塞
 rich rules:#富规则

home: 家庭区域

 home
 target: default
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: dhcpv6-client mdns samba-client ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:

work: 工作区域

 work
 target: default
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: dhcpv6-client ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

trusted: 完全信任区域

 trusted
 target: ACCEPT#不采用默认规则,放行一切
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: 
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

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

 internal
 target: default
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: dhcpv6-client mdns samba-client ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

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

 external
 target: default
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: ssh
 ports: 
 protocols: 
 masquerade: yes#默认进行NAT地址转换
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

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

 dmz
 target: default
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:

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

 drop
 target: DROP
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: 
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:

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

 block
 target: %%REJECT%%
 icmp-block-inversion: no
 interfaces: 
 sources: 
 services: 
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:
firewall-cmd命令用法

关键字:

 --list-*
 --get-*
 --set-*
 --add-*
 --remove-*
 --change-*
 --zone=

查看:

 #查看所有区域的详细信息
 [root@ding ~]# firewall-cmd --list-all-zones 
 #查看指定区域的详细信息
 [root@ding ~]# firewall-cmd --list-all --zone=public 
 #查看指定区域的放行服务
 [root@ding ~]# firewall-cmd --list-services --zone=public 
 #查看指定区域的放行端口
 [root@ding ~]# firewall-cmd --list-ports --zone=public 
 #查看指定区域包含的网络接口
 [root@ding ~]# firewall-cmd --list-interfaces --zone=public 
 #查看指定区域的放心协议
 [root@ding ~]# firewall-cmd --list-protocols --zone=public
 #查看指定区域的ICMP阻塞类型
 [root@ding ~]# firewall-cmd --list-icmp-blocks --zone=public
 #查看指定区域的放行源地址
 [root@ding ~]# firewall-cmd --list-sources --zone=public
 #查看指定区域的源端口
 [root@ding ~]# firewall-cmd --list-source-ports --zone=public
 #查看指定区域的富规则
 [root@ding ~]# firewall-cmd --list-rich-rules --zone=public 
 #查看指定区域的转发端口
 [root@ding ~]# firewall-cmd --list-forward-ports --zone=public 
 #查看firewalld支持的服务类型
 [root@ding ~]# firewall-cmd --get-services
 #查看firewalld的默认区域
 [root@ding ~]# firewall-cmd--get-default-zone
 #查看firewalld支持的ICMP的阻塞类型
 [root@ding ~]# firewall-cmd--get-icmptypes 
 #查看firewalld所有的活动区域
 [root@ding ~]# firewall-cmd --get-active-zones
 #查看指定网络接口所属区域
 [root@ding ~]# firewall-cmd --get-zone-of-interface=ens33
 #查看所有区域名称
 [root@ding ~]# firewall-cmd --get-zones

添加:

#添加指定服务到指定区域
[root@ding ~]# firewall-cmd --add-service=http --zone=public 
success
#添加端口到指定区域
[root@ding ~]# firewall-cmd --add-port=80/tcp --zone=public 
success
#添加指定协议到指定区域
[root@ding ~]# firewall-cmd --add-protocol=ah --zone=public 
success
#添加ICMP阻塞类型到指定区域
[root@ding ~]# firewall-cmd --add-icmp-block=echo-request --zone=public 
success
#windows端验证
C:\Users\ding>ping 192.168.115.129

正在 Ping 192.168.115.129 具有 32 字节的数据:
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
#添加指定网络接口到指定区域
[root@ding ~]# firewall-cmd --add-interface=ens33 --zone=work 
success
#添加指定区域的放行源地址
[root@ding ~]# firewall-cmd --add-source=192.168.1.0/24 --zone=work 
success
#添加指定区域的放行源端口
[root@ding ~]# firewall-cmd --add-source-port=999/tcp --zone=work 
success
#添加转发端口到指定区域
[root@ding ~]# firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.115.115 --zone=work 
success
#添加地址转换功能到指定区域
[root@ding ~]# firewall-cmd --add-masquerade --zone=work 
success
#验证添加
[root@ding ~]# firewall-cmd --list-all --zone=public 

修改:

#修改默认区域
 [root@ding ~]# firewall-cmd --set-default-zone=work
 success
 #修改网络接口所属区域
 [root@ding ~]# firewall-cmd --change-interface=ens33 --zone=internal 
 success
 [root@ding ~]# firewall-cmd --change-zone=ens33 --zone=external 
 success
 #追加指定区域的放行源地址
 [root@ding ~]# firewall-cmd --change-source=192.168.2.0/24 --zone=work 
 success

删除:

 #删除指定服务到指定区域
 [root@ding ~]# firewall-cmd --remove-service=http --zone=public 
 success
 #删除端口到指定区域
 [root@ding ~]# firewall-cmd --remove-port=80/tcp --zone=public 
 success
 #删除指定协议到指定区域
 [root@ding ~]# firewall-cmd --remove-protocol=ah --zone=public 
 success
 #删除ICMP阻塞类型到指定区域
 [root@ding ~]# firewall-cmd --remove-icmp-block=echo-request --zone=public 
 success
 #删除指定网络接口到指定区域
 [root@ding ~]# firewall-cmd --remove-interface=ens33 --zone=work 
 success
 #删除指定区域的放行源地址
 [root@ding ~]# firewall-cmd --remove-source=192.168.1.0/24 --zone=work 
 success
 #删除指定区域的放行源端口
 [root@ding ~]# firewall-cmd --remove-source-port=999/tcp --zone=work 
 success
 #删除转发端口到指定区域
 [root@ding ~]# firewall-cmd --remove-forward-port=port=8080:proto=tcp:toport=80:toremover=192.168.115.115 --zone=work 
 success
 #删除地址转换功能到指定区域
 [root@ding ~]# firewall-cmd --remove-masquerade --zone=work 
 success
 #验证删除
 [root@ding ~]# firewall-cmd --list-all --zone=public 
保存规则:

 #逐行规则保存
 [root@ding ~]# firewall-cmd --remove-masquerade --zone=work --permanent
 #一次性保存所有规则
 [root@ding zones]# firewall-cmd --runtime-to-permanent
 success
 #保存的规则存储路径
 /etc/firewalld/zones

案例:

禁止外部主机ping本机

 #本机IP:192.168.115.129 ens33 NAT
 #外部IP:192.168.115.128
 #防火墙配置
 [root@ding ~]# firewall-cmd --add-interface=ens33 --zone=work 
 success
 [root@ding ~]# firewall-cmd --add-icmp-block=echo-request --zone=work 
 success
 #验证
 [root@localhost ~]# ping -c 4 192.168.115.129
 PING 192.168.115.129 (192.168.115.129) 56(84) bytes of data.
 From 192.168.115.129 icmp_seq=1 Destination Host Prohibited
 From 192.168.115.129 icmp_seq=2 Destination Host Prohibited
 From 192.168.115.129 icmp_seq=3 Destination Host Prohibited
 From 192.168.115.129 icmp_seq=4 Destination Host Prohibited
 ​
 --- 192.168.115.129 ping statistics ---
 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3001ms

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

 #本机IP:192.168.80.128 ens34 vmnet3
 #外部IP:192.168.80.129
 #######环境配置 开始#########
 ##本机安装httpd服务
 #改变SElinux的规则
 [root@ding ~]# setenforce 0
 [root@ding ~]# yum install -y httpd
 ##启动httpd服务
 [root@ding ~]# systemctl start httpd
 ##修改httpd服务的监听IP
 [root@ding ~]# vim /etc/httpd/conf/httpd.conf
 Listen 192.168.80.128:80
 ##重启httpd服务
 [root@ding ~]# systemctl restart httpd
 ##验证服务监听状态
 [root@ding ~]# netstat -naptu | grep :80
 tcp00 192.168.80.128:800.0.0.0:* LISTEN5884/httpd 
 #######环境配置 结束#########
 #防火墙配置
 [root@ding ~]# firewall-cmd --change-interface=ens34 --zone=dmz
 success
 ##客户端验证访问##
 [root@ding ~]# curl 192.168.80.128
 curl: (7) Failed connect to 192.168.80.128:80; 拒绝连接
 ##发现无法访问###
 #服务端查看dmz区域信息
 [root@ding ~]# firewall-cmd --list-all --zone=dmz
 dmz (active)
 target: default
 icmp-block-inversion: no
 interfaces: ens34
 sources: 
 services: ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 
 #发现没有放心http服务
 #配置dmz区域http服务放行策略
 [root@ding ~]# firewall-cmd --add-service=http --zone=dmz 
 success
 dmz (active)
 target: default
 icmp-block-inversion: no
 interfaces: ens34
 sources: 
 services: http ssh
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules:

允许外部主机访问本机的某个端口号

 #前置环境如上
 #防火墙配置
 [root@ding ~]# firewall-cmd --add-port=801/tcp --zone=dmz 
 success
 #放行服务的本质实际上是放行了该服务的默认端口号
 #假如服务改变了监听端口号,只需放行对应的端口号即可
 #客户端验证
 [root@ding ~]# curl 192.168.80.128:801

三、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使用)查看规则时,显示规则的序号


总结:
       Linux系统的安全管理管理对于保护系统不受攻击和保护敏感数据是至关重要的。在本文中,我们将介绍一些常见的Linux安全管理,以及如何实施它们。selinux安全上下文实施其强制访问控制和开启防火墙是保护系统免受攻击的重要工具。Linux系统通常使用iptables和firewalld来配置防火墙规则。管理员应该只允许必要的网络流量通过防火墙,而禁止不必要的流量。

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

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

相关文章

《操作系统真相还原》——中断

可以毫不夸张的说,操作系统离不开中断 此时我们将中断处理程序放在了汇编文件中了,很显然我们不能很方便的编写中断处理程序,不如在汇编程序里调用c函数。 在这个感觉过可以在c语言中直接内联汇编完成这些。 定时器 将时钟中断的频率提高后…

[yolov11改进系列]基于yolov11引入特征融合注意网络FFA-Net的python源码+训练源码

【FFA-Net介绍】 北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,…

助力活力生活的饮食营养指南

日常生活中,想要维持良好的身体状态,合理的营养补充至关重要。对于易受身体变化困扰的人群来说,更需要从饮食中摄取充足养分。​ 蛋白质是身体的重要 “建筑材料”,鱼肉、鸡肉、豆类制品富含优质蛋白,易于消化吸收&am…

pikachu通关教程-File Inclusion

文件包含漏洞 本地文件包含 http://127.0.0.1:1000/pikachu/vul/fileinclude/fi_local.php?filenamefile1.php&submit%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 首先我们把file1改成file2,发现切换成功 那我们可不可以上传本地文件呢,答案是肯定的&a…

《机器学习数学基础》补充资料:韩信点兵与拉格朗日插值法

本文作者:卓永鸿 19世纪的伟大数学家高斯,他对自己做的数学有非常高的要求,未臻完美不轻易发表。于是经常有这样的情况:其他也很厉害的数学家提出自己的工作,高斯便拿出自己的文章说他一二十年前就做出来了&#xff0…

Spring Boot中保存前端上传的图片

在Spring Boot中保存前端上传的图片可以通过以下步骤实现&#xff1a; 1. 添加依赖 确保在pom.xml中已包含Spring Web依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全

2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全 本文面向对 macOS 环境和终端操作尚不熟悉的“小白”用户。我们将从最基础的概念讲起&#xff0c;结合实际操作步骤&#xff0c;帮助你在 2025 年最新 MacBook Pro&#xff08;搭载苹果 M 系列芯片&#xff09;的环境…

【ISP算法精粹】动手实战:用 Python 实现 Bayer 图像的黑电平校正

在数字成像领域&#xff0c;图像信号处理器&#xff08;ISP&#xff09;如同幕后英雄&#xff0c;默默将传感器捕获的原始数据转化为精美的图像。而黑电平校正&#xff0c;作为ISP预处理流程中的关键一环&#xff0c;直接影响着最终图像的质量。今天&#xff0c;我们就通过Pyth…

Linux中的mysql逻辑备份与恢复

一、安装mysql社区服务 二、数据库的介绍 三、备份类型和备份工具 一、安装mysql社区服务 这是小编自己写的&#xff0c;没有安装的去看看 Linux换源以及yum安装nginx和mysql-CSDN博客 二、数据库的介绍 2.1 数据库的组成 数据库是一堆物理文件的集合&#xff0c;主要包括…

[HTML5]快速掌握canvas

背景 canvas 是 html5 标准中提供的一个标签, 顾名思义是定义在浏览器上的画布 通过其强大的绘图接口&#xff0c;我们可以实现各种各样的图形&#xff0c;炫酷的动画&#xff0c;甚至可以利用他开发小游戏&#xff0c;包括市面上很流行的数据可视化框架底层都用到了Canvas。…

Gartner《Emerging Patterns for Building LLM-Based AIAgents》学习心得

一、AI代理概述 2024年,AI代理成为市场热点,它们能自主规划和行动以实现用户目标,与仅能感知、决策、行动和达成目标的AI助手及聊天机器人有本质区别。Gartner定义的AI代理是使用AI技术在数字或物理环境中自主或半自主运行的软件实体。 二、LLM基础AI代理的特性和挑战 优势…

STM32 单片机启动过程全解析:从上电到主函数的旅程

一、为什么要理解启动过程&#xff1f; STM32 的启动过程就像一台精密仪器的开机自检&#xff0c;它确保所有系统部件按既定方式初始化&#xff0c;才能顺利运行我们的应用代码。对初学者而言&#xff0c;理解启动过程能帮助解决常见“程序跑飞”“不进 main”“下载后无反应”…

4.RV1126-OPENCV 图像轮廓识别

一.图像识别API 1.图像识别作用 它常用于视觉任务、目标检测、图像分割等等。在 OPENCV 中通常使用 Canny 函数、findContours 函数、drawContours 函数结合在一起去做轮廓的形检测。 2.常用的API findContours 函数&#xff1a;用于寻找图片的轮廓&#xff0c;并把所有的数…

WEB3——开发者怎么查看自己的合约日志记录

在区块链中查看合约的日志信息&#xff08;也叫事件 logs&#xff09;&#xff0c;主要有以下几种方式&#xff0c;具体方法依赖于你使用的区块链平台&#xff08;如 Ethereum、BSC、Polygon 等&#xff09;和工具&#xff08;如 Etherscan、web3.js、ethers.js、Hardhat 等&am…

TDengine 集群容错与灾备

简介 为了防止数据丢失、误删操作&#xff0c;TDengine 提供全面的数据备份、恢复、容错、异地数据实时同步等功能&#xff0c;以保证数据存储的安全。本节简要说明 TDengine 中的容错与灾备。 容错 TDengine 支持 WAL 机制&#xff0c;实现数据的容错能力&#xff0c;保证数…

MG影视登录解锁永久VIP会员 v8.0 支持手机电视TV版影视直播软件

MG影视登录解锁永久VIP会员 v8.0 支持手机电视TV版影视直播软件 MG影视App电视版是一款资源丰富、免费便捷、且专为大屏优化的影视聚合应用&#xff0c;聚合海量资源&#xff0c;畅享电视直播&#xff0c;是您电视盒子和…

【多线程初阶】内存可见性问题 volatile

文章目录 再谈线程安全问题内存可见性问题可见性问题案例编译器优化 volatileJava内存模型(JMM) 再谈线程安全问题 如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该有的结果,则说这个程序是线程安全的,反之,多线程环境中,并发执行后,产生bug就是线程不安全…

C++ 类模板三参数深度解析:从链表迭代器看类型推导与实例化(为什么迭代器类模版使用三参数?实例化又会是怎样?)

本篇主要续上一篇的list模拟实现遇到的问题详细讲解&#xff1a;<传送门> 一、引言&#xff1a;模板参数的 "三角锁钥" 在 C 双向链表实现中&#xff0c;__list_iterator类模板的三个参数&#xff08;T、Ref、Ptr&#xff09;如同精密仪器的调节旋钮&#x…

MySQL强化关键_018_MySQL 优化手段及性能分析工具

目 录 一、优化手段 二、SQL 性能分析工具 1.查看数据库整体情况 &#xff08;1&#xff09;语法格式 &#xff08;2&#xff09;说明 2.慢查询日志 &#xff08;1&#xff09;说明 &#xff08;2&#xff09;开启慢查询日志功能 &#xff08;3&#xff09;实例 3.s…

ASP.NET MVC添加模型示例

ASP.NET MVC高效构建Web应用ASP.NET MVC 我们总在谈“模型”&#xff0c;那到底什么是模型&#xff1f;简单说来&#xff0c;模型就是当我们使用软件去解决真实世界中各种实际问题的时候&#xff0c;对那些我们关心的实际事物的抽象和简化。比如&#xff0c;我们在软件系统中设…