设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

iptables详解--转

发布时间:2021-01-24 08:33 所属栏目:118 来源:网络整理
导读:出处:http://yijiu.blog.51cto.com/433846/1356254 iptables 详解 基本概念: 1. 防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理 对linux而言tcp

出处:http://yijiu.blog.51cto.com/433846/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 -nChain 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

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读