iptables基本命令

1、iptables 的基本概念

链 (Chain)
链是规则的集合,用于确定数据包在系统中的处理路径。iptables 包含几个预定义的链,如 INPUT、OUTPUT和FORWARD (地址转发)等。每个链都有特定的处理方式和默认策略。

规则 (Rule)
规则是定义在链中的指令,用于决定数据包的处理方式。规则由匹配条件和动作组成。当数据包满足匹配条件时,将执行相应的动作。

表 (Table)
表定义了特定类型的规则集。iptables 提供了四个表:filter(过滤数据包)、nat(网络地址转换)、mangle(修改报文原数据TTL做标记/修改内容,做防火墙标记) 和 raw。
filter只能做在3个链上:INPUT ,FORWARD ,OUTPUT
在这里插入图片描述

2、常见的 iptables 命令

2.1 iptables 的基本语法
iptables [-t table] [选项] <链名> <匹配条件 -j 动作>

选项(链管理)用于指定不同的操作和参数;
链名用于确定规则所属的链(数据包在系统中的处理路径,如 INPUT、OUTPUT 和 FORWARD);
规则定义了匹配条件和动作(决定数据包的处理方式)。

添加规则
向 INPUT 链添加一条允许 ICMP 数据包通过的规则
iptables -A INPUT -p icmp -j ACCEPT
删除规则
删除 INPUT 链中的第一条规则
iptables -D INPUT 1
查看规则
要查看当前 INPUT 链中的所有规则
iptables -L INPUT
iptables -nL
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。

注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。

2.2 链命令(这都是立即生效的)

2.2.1 链管理命令(这都是立即生效的)
-P :设置默认策略的(设定默认门是关着的还是开着的)
iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的
-F: FLASH,清空规则链的(注意每个链的管理权限)
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链

2.2.2 规则管理命令
-A:追加,在当前链的最后新增一个规则
-I num : 插入,把当前规则插入为第几条。
-R num:Replays替换/修改第几条规则
-D num:删除,明确指定删除第几条规则

3、iptables 的规则匹配

常见的匹配条件和选项:
匹配条件
-p:指定数据包的协议类型,如 TCP、UDP、ICMP 等。
-s:指定数据包的源地址。
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:指定数据包的目标地址。
-i eth0:从这块网卡流入的数据,流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据,流出一般在OUTPUT和POSTROUTING上
-m:扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80
扩展匹配选项
-p tcp/-p udp/-p icmp
--sport:指定数据包的源端口。
--dport:指定数据包的目标端口。
不能指定多个非连续端口,只能指定单个端口或多个连续端口,比如 --dport 21 或者 --dport 21-23 (此时表示21,22,23)
-p tcp
--tcp-flags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
1.检查的标志位
2.必须为1的标志位
–tcp-flags syn,ack,fin,rst syn = --syn
表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做–syn
-p icmp:icmp数据报文的扩展
--icmp-type
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0 来表示

--state:指定数据包的连接状态,如 NEW、ESTABLISHED、RELATED 等。
--mac-source:指定数据包的源 MAC 地址。
--mac-destination:指定数据包的目标 MAC 地址。

匹配动作
-j:指定匹配成功时要执行的动作,如 ACCEPT、DROP、REJECT 等。
ACCEPT:接受
DROP:悄悄丢弃
一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝

4、常见的 iptables 用例

几个常见的用例:
防火墙设置
(1)机器预约下线(只保持22端口,其他端口拒绝访问)

iptables -A INPUT -p tcp --port 22 -j ACCEPT
第一条规则匹配端口 22的 TCP 数据包进行允许。
iptables -A INPUT DROP
第二条规则将未匹配到第一条规则的数据包进行拒绝(DROP)

(2)拒绝 ICMP Echo 请求

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

(3)只要是来自于172.16.0.0/16网段的都允许访问我本机的172.16.100.1的SSHD服务

注意是一来一回
分析:首先肯定是在允许表中定义的。因为不需要做NAT地址转换之类的,然后查看我们SSHD服务,在22号端口上,处理机制是接受,对于这个表,需要有一来一回两个规则,如果我们允许也好,拒绝也好,对于访问本机服务,我们最好是定义在INPUT链上,而OUTPUT再予以定义就好。(会话的初始端先定义),所以加规则就是:
可以定义在FORWARD链上。
定义进来的: iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT
定义出去的: iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
将默认策略改成DROP(只要是过滤默认就这么写):
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

(3)iptables防火墙默认不允许任何数据包进入(只要是路由转发默认就这么写)

分析:防火墙都需经过路由判断后进行转发,即目的地不是本机的数据包执行的规则。所以需修改FORWARD规则链。
iptables -P FORWARD DROP
或iptables -t filter -P FORWARD DROP
或iptables -t filter -P FORWARD REJECT

网络地址转换 (NAT)
端口转发
流量控制
https://blog.csdn.net/qq_42704442/article/details/130816837
https://blog.csdn.net/wangquan1992/article/details/100534543

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值