iptable学习

本文详细介绍了iptables相关知识。先阐述其基本概念,包括防火墙工作原理、应用网关、入侵检测与防御系统等。接着说明iptables规则功能,如不同表和链的作用。还介绍了规则属性定义、查看方法、管理命令,以及编写规则语法、目标和匹配标准等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载https://blog.51cto.com/yijiu/1356254
iptables详解

基本概念:

1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理

对linux而言tcp/ip协议栈是在内核当中,意味着报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成tcp/ip报文所流进的位置,用规则去检查,才真正能工作起来。

iptables用来衡量tcp/ip报文的属性:源ip、目标ip、源端口、目标端口;

tcp标志位: syn、syn+ack、ack、 fin、urg、psh、rst ;

2.应用网关

众多代理服务器都是应用网关,比如squid(使用acl限制应用层)varish这一类代理服务等。

3,入侵检测系统(IDS):

·网络入侵检测系统 NIDS

·主机入侵检测系统 HIDS

对于IDS常用的检测服务有:snort等

4.入侵防御系统(IPS),比如蜜罐

部署一套入侵检测系统是非常麻烦的,因为必须检测网络任意一个位置

对于IPS常用的检测服务有: tripwire 等

iptables基本概念

对linux来说,是能够实现主机防火墙的功能组件,如果部署在网络边缘,那么既可以扮演网络防火墙的角色,而且是纯软件的

网络数据走向:

请求报文->网关->路由->应用程序(等待用户请求)->内核处理->路由->发送报文

iptables规则功能

表:

filter主要和主机自身有关,主要负责防火墙功能 过滤本机流入流出的数据包是默认使用的表;

input :负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包;

forward :负责转发流经主机但不进入本机的数据包,和NAT关系很大;

output :负责处理源地址的数据包,就是对本机发出的数据包;

NAT表:

负责网络地址转换,即来源于目的IP地址和端口的转换,一般用于共享上网或特殊端口的转换服务

snat :地址转换

dnat :标地址转换

pnat :标端口转换

mangle 表:

将报文拆开来并修改报文标志位,最后封装起来

5个检查点(内置链)

·PREROUTING

·INPUT

·FORWORD

·OUTPUT

·POSTROUTING

多条链整合起来叫做表,比如,在input这个链,既有magle的规则也可能有fileter的规则。因此在编写规则的时候应该先指定表,再指定链

netfilter主要工作在tcp/ip协议栈上的,主要集中在tcp报文首部和udp报文首部

规则的属性定义:

1.网络层协议

主要集中在ip协议报文上

2.传输层协议属性:

主要集中在

tcp

udp

icmp icmp其并不是真正意义传输层的,而是工作在网络层和传输层之间的一种特殊的协议

3.ip报文的属性:

IP报文的属性为: 源地址.目标地址

4.iptables规则匹配

iptables如何查看表和链

大写字母选项:可以实现某种功能,比如添加删除清空规则链;

小写字母选项:用来匹配及其他;

-L :list 列表

-n :数字格式显示ip和端口;

--line-numbers:显示行号;

-x : 显示精确值,不要做单位换算;

-t : 指定表

 -t{fillter|nat|mangle|raw}

-v : 显示详细信息 -v -vvv -vvvv …可以显示更详细的信息

5.其他子命令:

管理链:

-F :清空链

清空nat表中的input链,格式如下:

#iptables-t nat -F INPUT

#清空fllter表所有链:

#iptables-F

-P : 设定默认策略,为指定链设置默认策略,格式如下:

#设置fllter表input链的默认规则为丢弃

iptables-t fllter -P INPUT DROP

-N : 新建一条自定义链(内置链不能删除,如果太多,可以自定义链)

#自定义连只能被调用才可以发挥作用

iptables-N fillter_web

-X : 删除自定义空链,如果链内有规则,则无法删除

-Z :计算器清零

iptables-Z

-E :重命名自定义链

iptables管理规则:

-A :append附加规则,将新增的规则添加到链的尾部

-I[n] :插入为第n条规则

-D : 删除第n条规则

-R[n] : 替换第N条

表和链的对应关系:

fillter :INPUT FORWORD OUTPUT

nat : PREROUTING POSTROUTING OUTPUT

使用-t指定表来查看指定表内的规则:

#iptables-t nat -L -n

raw : prerouting output

iptables-t raw -L -n

mangle: prerouting input forword output postrouting

iptables-t mangle -L -n

#查看规则

[root@test3~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot optsource destination

Chain OUTPUT (policy ACCEPT)
target prot optsource destination

通过以上可以观察到,每一个链都有默认策略:policy ACCEPT

通常只需要修改fllter表的默认策略即可,由此如果有报文请求来访问本机的某个服务,那么则会经过input链,因此进来的报文都是需要做过滤的,那么出去的报文则不需要过滤,在有些特定的场所下也需要做过滤

所以写规则的时候必须放将规则写在正确链上,意义非常重大

规则和默认策略都有2个计数器,通过-v选项可以观察规则的匹配情况

#iptables -t nat -L -n -v

[root@sshgw~]# iptables -L -n -v

ChainINPUT (policy ACCEPT 7 packets, 975 bytes)

pkts bytestarget prot opt in out source destination

0 0 ACCEPT all – lo * 0.0.0.0/0 0.0.0.0/0

0 0 DROP all – eth2 * 101.61.0.0/10 0.0.0.0/0

0 0 DROP all – eth2 * 127.0.0.0/8 0.0.0.0/0

0 0 DROP all – eth2 * 162.254.0.0/16 0.0.0.0/0

0 0 DROP all – eth2 * 192.0.0.0/24 0.0.0.0/0

0 0 DROP all – eth2 * 192.0.2.0/24 0.0.0.0/0

0 0 DROP all – eth2 * 197.18.0.0/15 0.0.0.0/0

0 0 DROP all – eth2 * 197.51.100.0/24 0.0.0.0/0

0 0 DROP all – eth2 * 203.0.111.0/24 0.0.0.0/0

0 0 DROP all – eth2 * 224.0.0.0/4 0.0.0.0/0

0 0 DROP all – eth2 * 240.0.0.0/4 0.0.0.0/0

776 37056 REFRESH_TEMP all – * * 0.0.0.0/0 0.0.0.0/0

编写规则语法:

iptables [-t 表] 大写选项子命令 [规则号] 链名 匹配标准 -j 目标(规则)

目标:

DROP : 丢弃

REJECT : 拒绝

ACCEPT : 接受

RETURN : 返回主链继续匹配

REDIRECT: 端口重定向

MASQUERADE :地址伪装

DNAT : 目标地址转换

SNAT :源地址转换
MARK :打标签

LOG

自定义链

匹配标准

iptables的匹配标准大致分为两类:

1.通用匹配

-s | --src | --source [!] IP/NETWORK

-d ------------------------

-i :指定数据报文流入接口 input prerouting forward

-o :指定数据报文流出接口 output postrouting forward

-p :明确说明只放行哪种协议的报文匹配规则

以当前主机为例:

凡是来自于某个ip段的网络访问本机

[root@test3xtables-1.4.7]# iptables -A INPUT -s 10.0.10.0/24 -d 10.0.10.0/24 -j ACCEPT
[root@test3 xtables-1.4.7]# iptables -L -n -v

ChainINPUT (policy ACCEPT 10 packets, 1029 bytes)

pkts bytestarget prot opt in out source destination

22 1660 ACCEPT all – * * 10.0.10.0/24 10.0.10.0/24

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 16 packets, 1536 bytes)
pkts bytes target prot opt in out source destination

pkts 被本机报文所匹配的个数

bytes 报文所有大小记起来之和

opt 额外的选项,–表示没有

target 处理机制

prot 放行哪种协议

source 源地址

destination 目标地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值