1、Linux系统自带的软件防火墙:
-
iptables:Centos 5/6 系统默认防火墙 -
firewalld:Centos 7/8 系统默认防火墙
2、iptables 概述:
Iptables 是一个用户空间程序,可以用于设置和管理 Linux 操作系统的内核级防火墙。它通过表、链和规则组成,可以灵活地根据不同的需求进行配置。
3、iptables 具有以下特点:
-
Iptables 作为内核级别的防火墙,具有高效、稳定、安全等优点。
-
Iptables 的表、链、规则结构非常灵活,可适应各种不同的网络环境和应用场景。
-
Iptables 相对于其他防火墙工具而言比较容易学习和掌握,并且拓展性非常强。
4、iptables四表五链是什么:
四表:
表名 | 作用 |
---|---|
raw | 确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING |
mangle | 修改数据包内容,用来做流量整形,给数据包设置标记。包含五个规则链,INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING |
nat | 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、 PREROUTING、 POSTROUTING |
filter | 负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、 FORWARD、 OUTPUT |
数据包到达防火墙时,规则表之间的优先顺序:raw >mangle > nat > filte |
五链:
链名 | 作用 |
---|---|
INPUT | 处理入站数据包,匹配目标IP为本机的数据包。 |
OUTPUT | 处理出站数据包,一般不在此链上做配置。 |
FORWARD | 处理转发数据包,匹配流经本机的数据包。 |
PREROUTING | 在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。 |
POSTROUTING | 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。 |
service iptables start |
开启iptables |
service iptables stop |
关闭iptables |
service iptables restart |
|
service iptables status | 查看iptables 状态 |
chkconfig iptables on | 添加开机自启动 |
iptables-save |
保存已有配置文件,保存的方式是可以重定向到某个文件中,例如iptables-save > /etc/sysconfig/iptables。 |
iptables-restore |
启动 iptables 服务后会默认读取 /etc/sysconfig/iptables 中的配置文件,用户可以通过此命令将已有规则重新装入 iptables。 |
iptables -L --line-numbers |
列出默认 filter 表中所有规则,并显示它们的行号,这对于添加和删除规则很有帮助。 |
iptables -A |
在指定的链 CHAIN 上创建一条新规则,以限制指定的端口(dport)上使用指定协议(protocol)的数据包流量。TARGET 可以是 ACCEPT、REJECT 或 DROP。例如:iptables -A INPUT -p tcp --dport 80 -j ACCEPT 表示当访问本机的 80 端口时,可以通过。 |
iptables -D |
从指定链 CHAIN 中删除一条现有规则,规则编号由 iptables -L 命令输出的行号指定。 |
iptables -N |
在 iptables 中创建一个新的用户自定义链。例如:iptables -N LOG_DROP 创建新链 LOG_DROP。 |
iptables -I |
插入一条规则到指定链(CHAIN)的特定位置(INDEX)处。此命令的其余部分与先前介绍的相同。 |
iptables -F |
该命令用于清除所有iptables的规则,策略和计数信息。 |
iptables -P chain target |
该命令可以修改一个特定链的默认策略。默认情况下,策略是ACCEPT,可以更改为DROP或REJECT。 |
6、iptables 规则的语法格式:
-
匹配条件:必须符合匹配条件才能被命中。 -
操作选项:当匹配成功时执行的动作,比如 ACCEPT、DROP 和 REJECT 等等。 -
目标地址:当匹配成功后,将流量引导到哪个目标地址。 -
下面是 iptables 规则的语法格式:
iptables [-t table] [-A chain] [-I chain [rulenum]] [-D chain rulenum] [-R chain rulenum] [-j target] [match-expression]
-t | --table 表示指定要操作哪个表。iptables 默认使用 filter 表,如果没有明确指定,则会被当作 filter 表来处理。 |
-A |
--append 是添加规则,向指定链中增加一条新规则,默认放在链尾。 |
-I |
--insert 是插入规则,可以将规则插入到链的任意位置。 |
-D |
--delete 是删除规则,可以删除指定链中的规则。 |
-R |
--replace 是替换规则,可以直接替换当前规则。 |
-j |
--jump 是动作选项,表示需要执行的操作,比如 ACCEPT、DROP 或 REJECT 等。 |
iptables 规则的匹配条件 match-expression 由多个关键字组成,各个关键字的含义如下:
-p指定协议,可以是 all、tcp、udp、icmp 等。 | |
–sport 和--dport 分别指定源端口和目的端口。 | |
-s 和 -d 分别指定源地址和目的地址。 |
|
-i 和 -o 分别指定数据包的输入接口和输出接口。 |
|
–state 状态匹配条件,可以是 NEW、ESTABLISHED 或 RELATED。 |
|
-m 按照数据包的类型进行匹配,如 tcp、udp、icmp 等。 |
-
DROP 表示直接拒绝,不回应; -
REJECT 表示直接拒绝,并返回一个 ICMP 错误信息; -
ACCEPT 表示直接接受数据包。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
-
-P 选项表示设置默认策略,后面跟着需要设置的链名。
-
INPUT 链指向来自外部的包、传入本地机器的包以及因为非法转发被丢弃的包。
-
FORWARD 链指向转发包。
-
OUTPUT 链指向离开本地机器的包。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-A 选项表示添加规则,-p tcp 表示协议为 TCP,--dport 80 表示目的端口为 80。最后的 -j 将匹配的流量引导到 ACCEPT 规则。 |
iptables -A INPUT -p tcp -s 允许的ip地址/网段 --dport 22 -j ACCEPT
-A 选项表示添加规则,-p tcp 表示协议为 TCP,-s 指定ip或网段,--dport 22 表示目的端口为 22。最后的 -j 将匹配的流量引导到 ACCEPT 规则。 |
原文始发于微信公众号(小白摸坑学网安):linux系统中iptables防火墙(4表5链)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论