linux防火墙iptables详细教程Word文档格式.docx

上传人:b****4 文档编号:17854500 上传时间:2022-12-11 格式:DOCX 页数:11 大小:20.41KB
下载 相关 举报
linux防火墙iptables详细教程Word文档格式.docx_第1页
第1页 / 共11页
linux防火墙iptables详细教程Word文档格式.docx_第2页
第2页 / 共11页
linux防火墙iptables详细教程Word文档格式.docx_第3页
第3页 / 共11页
linux防火墙iptables详细教程Word文档格式.docx_第4页
第4页 / 共11页
linux防火墙iptables详细教程Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

linux防火墙iptables详细教程Word文档格式.docx

《linux防火墙iptables详细教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《linux防火墙iptables详细教程Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

linux防火墙iptables详细教程Word文档格式.docx

iptables[-t要操作的表]

<

操作命令>

[要操作的链]

[规则号码]

[匹配条件]

[-j匹配到以后的动作]

3.2命令概述

操作命令(-A、-I、-D、-R、-P、-F)

查看命令(-[vnx]L)

3.2.1-A

-A<

链名>

APPEND,追加一条规则(放到最后)

例如:

iptables-tfilter-AINPUT-jDROP

在filter表的INPUT链里追加一条规则(作为最后一条规则)

匹配所有访问本机IP的数据包,匹配到的丢弃

3.2.2-I

-I<

[规则号码]

INSERT,插入一条规则

iptables-IINPUT-jDROP

在filter表的INPUT链里插入一条规则(插入成第1条)

iptables-IINPUT3-jDROP

在filter表的INPUT链里插入一条规则(插入成第3条)

注意:

1、-tfilter可不写,不写则自动默认是filter表

2、-I链名[规则号码],如果不写规则号码,则默认是1

3、确保规则号码≤(已有规则数+1),否则报错

3.2.3-D

-D<

<

规则号码|具体规则内容>

DELETE,删除一条规则

iptables-DINPUT3(按号码匹配)

删除filter表INPUT链中的第三条规则(不管它的内容是什么)

iptables-DINPUT-s192.168.0.1-jDROP(按内容匹配)

删除filter表INPUT链中内容为“-s192.168.0.1-jDROP”的规则

(不管其位置在哪里)

1、若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条

2、按号码匹配删除时,确保规则号码≤已有规则数,否则报错

3、按内容匹配删除时,确保规则存在,否则报错

3.2.3-R

-R<

规则号码>

具体规则内容>

REPLACE,替换一条规则

iptables-RINPUT3-jACCEPT

将原来编号为3的规则内容替换为“-jACCEPT”

确保规则号码≤已有规则数,否则报错

3.2.4-P

-P<

动作>

POLICY,设置某个链的默认规则

iptables-PINPUTDROP

设置filter表INPUT链的默认规则是DROP

当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理

3.2.5-F

-F[链名]

FLUSH,清空规则

iptables-FINPUT

清空filter表INPUT链中的所有规则

iptables-tnat-FPREROUTING

清空nat表PREROUTING链中的所有规则

1、-F仅仅是清空链中规则,并不影响-P设置的默认规则

2、-P设置了DROP后,使用-F一定要小心!

3、如果不写链名,默认清空某表里所有链里的所有规则

3.2.6-[vxn]L

-L[链名]

LIST,列出规则

v:

显示详细信息,包括每条规则的匹配包数量和匹配字节数

x:

在v的基础上,禁止自动单位换算(K、M)

n:

只显示IP地址和端口号码,不显示域名和服务名称

iptables-L

粗略列出filter表所有链及所有规则

iptables-tnat-vnL

用详细方式列出nat表所有链的所有规则,只显示IP地址和端口号

iptables-tnat-vxnLPREROUTING

用详细方式列出nat表PREROUTING链的所有规则以及详细数字,不反解

3.3匹配条件

流入、流出接口(-i、-o)

来源、目的地址(-s、-d)

协议类型 

(-p)

来源、目的端口(--sport、--dport)

3.3.1按网络接口匹配

-i<

匹配数据进入的网络接口>

-ieth0

匹配是否从网络接口eth0进来

-ippp0

匹配是否从网络接口ppp0进来

-o匹配数据流出的网络接口

-oeth0

-oppp0

3.3.2按来源目的地址匹配

-s<

匹配来源地址>

可以是IP、NET、DOMAIN,也可空(任何地址)

-s192.168.0.1 

匹配来自192.168.0.1的数据包

-s192.168.1.0/24匹配来自192.168.1.0/24网络的数据包

-s192.168.0.0/16匹配来自192.168.0.0/16网络的数据包

-d<

匹配目的地址>

可以是IP、NET、DOMAIN,也可以空

-d202.106.0.20 

匹配去往202.106.0.20的数据包

-d202.106.0.0/16匹配去往202.106.0.0/16网络的数据包

-d 

匹配去往域名的数据包

3.3.3按协议类型匹配

-p<

匹配协议类型>

可以是TCP、UDP、ICMP等,也可为空

-ptcp

-pudp

-picmp--icmp-type类型

ping:

type8 

pong:

type0

3.3.4按来源目的端口匹配

--sport<

匹配源端口>

可以是个别端口,可以是端口范围

--sport1000 

匹配源端口是1000的数据包

--sport1000:

3000匹配源端口是1000-3000的数据包(含1000、3000)

--sport:

3000 

匹配源端口是3000以下的数据包(含3000)

匹配源端口是1000以上的数据包(含1000)

--dport<

匹配目的端口>

--dport80 

匹配源端口是80的数据包

--dport6000:

8000匹配源端口是6000-8000的数据包(含6000、8000)

--dport:

--dport1000:

--sport和--dport必须配合-p参数使用

3.3.5匹配应用举例

1、端口匹配

-pudp--dport53

匹配网络中目的地址是53的UDP协议数据包

2、地址匹配

-s10.1.0.0/24-d172.17.0.0/16

匹配来自10.1.0.0/24去往172.17.0.0/16的所有数据包

3、端口和地址联合匹配

-s192.168.0.1-d-ptcp--dport80

匹配来自192.168.0.1,去往的80端口的TCP协议数据包

1、--sport、--dport必须联合-p使用,必须指明协议类型是什么

2、条件写的越多,匹配越细致,匹配范围越小

3.4动作(处理方式)

ACCEPT

DROP

SNAT

DNAT

MASQUERADE

3.4.1-jACCEPT

-jACCEPT

通过,允许数据包通过本链而不拦截它

类似Cisco中ACL里面的permit

iptables-AINPUT-jACCEPT

允许所有访问本机IP的数据包通过

3.4.2-jDROP

-jDROP

丢弃,阻止数据包通过本链而丢弃它

类似Cisco中ACL里的deny

iptables-AFORWARD-s192.168.80.39-jDROP

阻止来源地址为192.168.80.39的数据包通过本机

3.4.3-jSNAT

-jSNAT--toIP[-IP][:

端口-端口](nat表的POSTROUTING链)

源地址转换,SNAT支持转换为单IP,也支持转换到IP地址池

(一组连续的IP地址)

iptables-tnat-APOSTROUTING-s192.168.0.0/24\

-jSNAT--to1.1.1.1

将内网192.168.0.0/24的原地址修改为1.1.1.1,用于NAT

-jSNAT--to1.1.1.1-1.1.1.10

同上,只不过修改成一个地址池里的IP

3.4.4-jDNAT

-jDNAT--toIP[-IP][:

端口-端口](nat表的PREROUTING链)

目的地址转换,DNAT支持转换为单IP,也支持转换到IP地址池

iptables-tnat-APREROUTING-ippp0-ptcp--dport80\

-jDNAT--to192.168.0.1

把从ppp0进来的要访问TCP/80的数据包目的地址改为192.168.0.1

iptables-tnat-APREROUTING-ippp0-ptcp--dport81\

-jDNAT--to192.168.0.2:

80

-jDNAT--to192.168.0.1-192.168.0.10

3.4.5-jMASQUERADE

-jMASQUERADE

动态源地址转换(动态IP的情况下使用)

iptables-tnat-APOSTROUTING-s192.168.0.0/24-jMASQUERADE

将源地址是192.168.0.0/24的数据包进行地址伪装

3.5附加模块

按包状态匹配 

(state)

按来源MAC匹配(mac)

按包速率匹配 

(limit)

多端口匹配 

(multiport)

3.5.1state

-mstate--state状态

状态:

NEW、RELATED、ESTABLISHED、INVALID

NEW:

有别于tcp的syn

ESTABLISHED:

连接态

RELATED:

衍生态,与conntrack关联(FTP)

INVALID:

不能被识别属于哪个连接或没有任何状态

iptables-AINPUT-mstate--stateRELATED,ESTABLISHED\

3.5.2mac

-mmac--mac-sourceMAC

匹配某个MAC地址

iptables-AFORWARD-m--mac-sourcexx:

xx:

xx\

阻断来自某MAC地址的数据包,通过本机

MAC地址不过路由,不要试图去匹配路由后面的某个MAC地址

3.5.3limit

-mlimit--limit匹配速率[--burst缓冲数量]

用一定速率去匹配数据包

iptables-AFORWARD-d192.168.0.1-mlimit--limit50/s\

iptables-AFORWARD-d192.168.0.1-jDROP

limit仅仅是用一定的速率去匹配数据包,并非“限制”

3.5.4multiport

-mmultiport<

--sports|--dports|--ports>

端口1[,端口2,..,端口n]

一次性匹配多个端口,可以区分源端口,目的端口或不指定端口

iptables-AINPUT-ptcp-mmultiports--ports\

21,22,25,80,110-jACCEPT

必须与-p参数一起使用 

4.实例分析

单服务器的防护

如何做网关

如何限制内网用户

内网如何做对外服务器

连接追踪模块

4.1单服务器的防护

弄清对外服务对象

书写规则

网络接口lo的处理

状态监测的处理

协议+端口的处理

实例:

一个普通的web服务器

iptables-AINPUT-ilo-jACCEPT

iptables-AINPUT-ptcp-mmultiport22,80-jACCEPT

iptables-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT

确保规则循序正确,弄清逻辑关系,学会时刻使用-vnL

4.2如何做网关

弄清网络拓扑

本机上网

设置nat

启用路由转发

地址伪装SNAT/MASQUERADE

ADSL拨号上网的拓扑

echo"

1"

>

/proc/sys/net/ipv4/ip_forward

iptables-tnat-APOSTROUTING-s192.168.1.0/24-oppp0\

4.3如何限制内网用户

过滤位置filer表FORWARD链

匹配条件-s-d-p--s/dport

处理动作ACCEPTDROP

iptables-AFORWARD-s192.168.0.3-jDROP

iptables-AFORWARD-mmac--mac-source11:

22:

33:

44:

55:

66\

iptables-AFORWARD-d-jDROP

4.4内网如何做对外服务器

服务协议(TCP/UDP)

对外服务端口

内部服务器私网IP

内部真正服务端口

-jDNAT--to192.168.1.1

-jDNAT--to192.168.1.2:

4.5连接追踪模块

为什么要使用连接追踪模块

FTP协议的传输原理

传统防火墙的做法

如何使用

4.5.1FTP协议传输原理

使用端口

commandport

dataport

传输模式

主动模式(ACTIVE)

被动模式(PASSIVE)

主动模式

client 

server

xxxx|---|----------|-->

|21

yyyy|<

--|----------|---|20

FW1 

FW2

被动模式

xxxx|---|----------|--->

yyyy|---|----------|--->

|zzzz

4.5.2传统防火墙的做法

只使用主动模式,打开TCP/20

防火墙打开高范围端口

配置FTP服务,减小被动模式端口范围

4.5.3如何使用连接追踪模块

modprobeipt_conntrack_ftp

modprobeipt_nat_ftp

iptables-AINPUT-ptcp--dport21-jACCEPT

iptables-AINPUT-mstate--state\

RELATED,ESTABLISHED-jACCEPT

5.网管策略

怕什么

能做什么

让什么vs不让什么

三大“纪律”五项“注意”

其他注意事项

5.1必加项

/proc/sys/net/ipv4/tcp_syncookies

\

/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

modprobeip_conntrack_ftp

modprobeip_nat_ftp

5.2可选方案

堵:

iptables-AFORWARD-ptcp--dportxxx-jDROP

iptables-AFORWARD-ptcp--dportyyy:

zzz-jDROP

通:

iptables-AFORWARD-ptcp--dportxxx-jACCEPT

zzz-jACCEPT

iptables-AFORWARD-mstate--stateRELATED,ESTABLISHED\

iptables-PFORWARDDROP

5.3三大“纪律”五项“注意”

三大“纪律”——专表专用

filter

nat

mangle

五项“注意”——注意数据包的走向

PREROUTING

INPUT

FORWARD

POSTROUTING

5.4其他注意事项

养成好的习惯

iptables-vnL

iptables-save

注意逻辑顺序

iptables-AINPUT-ptcp--dportxxx-jACCEPT

iptables-IINPUT-ptcp--dportyyy-jACCEPT

学会写简单的脚本

6.FAQ.1

Q:

我设置了iptables-AOUTPUT-d202.xx.xx.xx-jDROP

为何内网用户还是可以访问那个地址?

A:

filter表的OUTPUT链是本机访问外面的必经之路,内网数据不经过该链

我添加了iptables-AFORWARD-d202.xx.xx.xx-jDROP

检查整个规则是否存在逻辑错误,看是否在DROP前有ACCEPT

iptables-tnat-APOSTROUTING-ieth1-oeth2-jMASQUERADE

这条语句为何报错?

POSTROUTING链不支持“流入接口”-i参数

同理,PREROUTING链不支持“流出接口”-o参数

6.FAQ.2

我应该怎么查看某个模块具体该如何使用?

ipitables-m模块名-h

执行iptables-AFORWARD-mxxx-jyyy

提示iptables:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1