5.安全管理

1.iptab防火墙

防火墙是一种重要的工具,可以配置来保护您的服务器和基础设施。在 Linux 生态系统中,iptables 是 一个广泛使用的防火墙工具,它与内核的 netfilter 数据包过滤框架配合工作。Iptables 是配置 Netfilter 过滤功能的用户空间工具。

1.四表五链

iptables是linux系统中强大的网络流量控制工具,它通过四种主要的表(raw、mangle、nat、filter)和五条链( INPUT、OUTPUT、FORWARD 、PREROUTING、POSTROUTING)来实现对数据包的过滤、修改和地址转换 。

1.五链

链(Chains)的本质是一个有序的 Rules 列表。在复杂的网络环境中,用户可以通过配置 Rules 在 Chain 中的顺序来灵活实现多种效果。,iptables 提供了 5 条内建的 Chains,和netfilter的5个HOOK点是一一对应的,用户也可以新建自 定义的 Chains。

  1. INPUT(输入链):发往本机的数据包通过此链,并执行此链上关于 INPUT 的 Rules,例如: DDoS 攻击防御规则。

  2. OUTPUT(输出链):从本机发出的数据包通过此链,并执行此链上关于 OUTPUT 的 Rules。

  3. PORWARD(转发链):由本机转发的数据包通过此链,并执行此链上关于 PORWARD 的 Rules。 例如:作为 IP 路由器。

  4. PREROUTING(路由前链):在处理 IP 路由规则前(Pre-Routing)通过此链,并执行此链上关于 Pre-Routing 的 Rules。例如:DNAT。

  5. POSTOUTING(路由后链):在处理 IP 路由规则后(Post-Routing)通过此链,并执行此链上关 于 Post-Routing 的 Rules。例如:SNAT 。

2.四表

1.raw:用于决定数据包是否应被跟踪或被特定的连接跟踪模块处理。

2.mangle:用于修改数据包的标记或元数据 。

3.nat:主要用于源地址转换(SNAT),目标地址转换(DNAT)。

4.filter :主要用于数据包的的过滤,决定是否接受这个数据包的关键。

2.iptables命令
1.iptables 的命令格式

格式: iptables   COMMEND      Chain     Parameter   Target
2.iptables常用COMMEND指令
#iptables常用命令:
iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I  后面接数字,将在指定链的指定编号位置插入一个规则,默认插在首列
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链
iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)

3.常用规则匹配器(parameter)

匹配条件包括: 五元组(源IP,源端口,目的ip,目的端口,传输协议)和网卡接口(interface)。

 #常见设置匹配规则介绍:
 --dport 指定目标TCP/IP端口 如 -–dport 80
 --sport 指定源TCP/IP端口 如 -–sport 80
 -p tcp 指定协议为tcp
 -p icmp 指定协议为ICMP
 -p udp 指定协议为UDP
 -m mac –mac 绑定MAC地址
 -m limit –limit 1/s 1/m 设置时间策列
 -s 192.168.1.153或192.168.1.0/24 指定源地址或地址段
 -d 192.168.1.153或192.168.1.0/24 指定目标地址或地址段
 -s ! 192.168.1.0 指定源地址以外的Ip

4.常用执行动作

ACCEPT: 白名单,允许通过。

REJECT: 黑名单,拒绝数据通过。

DROP : 丢弃数据,不响应。

5.使用实例

在指定表的指定链的尾部添加一条规则,-A 选项表示在对应链的末尾添加规则,省略 -t 选项时,表示默 认操作 filter 表中的规则

要注意一个重要的点,就是iptables防火墙的规则匹配,是按照上 边规则列表自上而下依次匹配。

1.查看规则

iptables  -nL # 查看所有表所有链的规则
iptables  -t   nat  -nL # 查看所有链上指定nat的规则
iptables  -t  nat   -nL   --line-number  # 查看并显示行号

​ 2.删除规则

iptables  -F #
iptables  -D   表名   行号  # 删除指定表的指定行数据

​ 3.添加规则

示例1:禁止所有来自于192.168.88.12的所有请求
iptables -t filter -A INPUT -s 192.168.88.12  -j REJECT
示例2:允许88.12访问TCP的22端口 (前提本机要有22端口)
iptables -t filter -A INPUT -s 192.168.88.12 -p tcp --dport 22  -j ACCEPT
​
示例3:在规则列表开头插入以上规则 
iptables -t filter -I INPUT -s 192.168.88.12  -j REJECT
iptables -t filter -A INPUT -s 192.168.88.12 -p tcp --dport 22  -j ACCEPT
 
示例5:多个IP使用逗号分割
iptables -t filter -I INPUT -s 192.168.88.12,192.168.88.30 -p tcp --dport 22  -j ACCEPT
​
示例6:禁止除192.168.88.30以外的网段访问
​
iptables  -t filter -I INPUT  ! -s  192.168.88.30 -j REJECT
2.Netfilter框架

Netfilter 是 Linux 内核中的一个强大的网络子系统,它提供了一套完整的网络数据包过滤框架。Netfilter 框架支持数据包的过滤、网络地址转换(NAT)、包内容修改等功能,并且提供了钩子(hook)机制,允许在数据包处理的不同阶段执行自定义的函数。

3.firewalld
1.firewalld区域

firewall不在采用iptables的链式规则,将一系列规则的集合组成区域。一套特定的规则成为一个域.

常用的域

​ public: 默认规则

​ trusted: 允许,相当于白名单

​ drop: 拒绝,相当于黑名单

2.firewall命令
1.放通ip:
firewall-cmd  --add-source=ip 放通ip
firewall-cmd  --remove-source=ip 移除ip
​
eg: firewall-cmd --add-source=192.168.88.12
​
2.放通服务:
firewall-cmd  --add-service=服务名
firewall-cmd  --remove-service 移除服务
eg:
firewall-cmd --add-service=httpd
​
​
3.放通端口
​
firewall-cmd   --add-port=端口号/tcp | udp| icmp
firewall-cmd   --remove-port=端口号/tcp | udp| icmp
eg:
firewall-cmd --add-port=8080/tcp
​
4.拒绝ip所有
firewall-cmd --add-source=ip  --zone=drop
​
​
5.放通ip所有
firewall-cmd --add-source=ip  --zone=trusted
​
​
​
命令行添加都是临时添加,重启或者reload就会丢失
加上 -- permanent 可以永久添加 
​
​
​

3.firewalld富规则
firewall-cmd --add-rich-rule='rule family=ipv4 source address=ip   port port=   protocol=tcp/udp    accept/drop/reject……'
​
#允许192.168.10.11主机能够访问9000端口
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.10.11/32 
port port=9000 protocol=tcp accept' --permanent
 firewall-cmd --reload
​
#允许192.168.10.0/24能访问http服务
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 
service name=http accept' --permanent
 firewall-cmd --reload
问题:
1.netfilter和iptables 的关系?
  • netfilter 是 Linux 内核中的一个强大的网络子系统,它提供了网络数据包过滤、网络地址转换(NAT)、包内容修改等功能。netfilter 工作在内核态,负责处理经过网络栈的数据包。

  • iptables 是用户空间的一个工具,它允许用户配置 netfilter 的规则。iptables 工作在用户态,通过 iptables 命令设置的规则会被传递给内核的 netfilter 模块,由 netfilter 执行这些规则来控制数据包的行为。

2.DROP 和 REJECT 都不会被通过,它们的区别是什么?
    • DROP 是 iptables 的一个目标,表示丢弃数据包,并且不向发送方发送任何响应。这通常用于阻止恶意的流量,因为攻击者不会知道数据包被丢弃。

    • REJECT 是另一种目标,它同样会阻止数据包通过,但与 DROP 不同的是,REJECT 会向发送方发送一个错误响应,例如 ICMP 不可达消息。这可以提供更多的信息,但也可能给攻击者提供反馈。

3.IPTABLES 的 -I 和 -A 的区别

  • -I(--insert)选项用于在指定的链中的指定位置插入一条规则。如果提供了规则编号,那么这条规则将被插入到该位置;如果没有提供编号,规则将被插入到链的开头。

  • -A(--append)选项用于在指定链的末尾添加一条规则。无论何时使用 -A,规则都会被添加到链的最后。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值