linux中iptables详解

linux中iptables详解


一、通用基础知识


1、基本概念


什么是防火墙?

所谓防火墙指的是工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件。

防火墙是由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入。

防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

2、分类

主机防火墙

网络防火墙

网络防火墙:

① 专业的硬件防火墙:

checkpoint, netscreen

有cpu有内存等,通过特殊架构构成,非常昂贵!

② 主机:

准备一台主机,配置多个网卡,一个接外网,一个接内网,所有从外网到内网的报文都经过这个主机,所有从内网到外网的报文也经过这台主机,主机上配置能够工作为防火墙的软件程序,这台主机也能扮演为网络防火墙。

一个局域网内部的防火墙设置可能有以下几部分组成:

① 网络防火墙:保护内部网络和主机不被外部侵害;

② IDS:Intrusion Detecting System入侵检测系统

NIDS : 网络入侵检测系统

HIDS : 主机入侵检测系统

③ IPS: Intrusion Prevention System 入侵防御系统

④ 独立主机防火墙:保护个人用户主机网络通信安全

有些设置可能还会有HoneyPot: 蜜罐

二、linux中的防火墙

与外部网络联网通信时的数据报文流程:

数据报文到达本机都是先到达内核的tcp/ip协议栈,因为网卡是硬件,硬件是直接内核管理的。然后在tcp/ip协议栈上,先要拆掉以太网帧,然后查报文的源ip和目标ip: ①如果是发往本机的,则根据tcp首部当中定义的目标端口送给用户空间的应用程序。 应用程序收到报文后一般需要回应,所以就需要生成新报文经由内核、网卡路由发出;② 数据报文不是发往本机的,需要由本机forward转发的,则经由网卡直接转发出去。

iptables: 程序

规则编写工具,编号规则后附加在netfilter设置好的卡点上起作用

netfilter:

网络过滤器, 内核中工作在TCP/IP网络协议栈上的框架;

netfilter是在主机或网络上划定数据进出的必由关卡,就像建起围墙,只留这么几个出入口,然后等着iptables设定规则,什么该拦什么不拦,如果没有设定,那么什么都不做,数据包还是能自由出入这几个口的。linux中netfilter一共设置了5个卡点,叫做hook function钩子函数。

hooks function  :

抽象设置了5个报文经由卡点,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链

① prerouting:

进入本机后路由功能发生之前(还没有检查是不是需要本机路由之前,也即在到网卡之前)

② input:

到达本机内部

③ output:

由本机发出

④ forward:

由本机转发

⑤ postrouting:

路由功能发生之后,即将离开本机之前

chain:每个钩子函数上可放置n条规则;对应于每个钩子上的多条规则就称为一个链(CHAIN)

每个功能有多个链,形成一个表,因此内置有四表五链

filter  :            input, forward,  output

nat     :prerouting,                  output(少用) ,postrouting

mangle  :prerouting, input, forward,  output,         postrouting

raw     :prerouting,                  output

规则的功能:

①过  滤  :firewall,最主要、最重要的功能。

②地址转换:不做防火墙时叫NAT Server,而不叫firewall

Network Address Translation

③mangle  :修改报文首部中的某些信息(不包括地址信息)

④ raw    :关闭nat表上启用的连接追踪功能(是NAT的辅助补充功能,只能在NAT发生的前半段)

iptables中还有一种叫做自定义链的链,但不是实际存在的、固定不变的链,因此报文不可能经由自定义链,只有在被内置链上的规则引用才能生效(即做为自定义目标)

功能的优先级:

由高而低:raw --> mangle --> nat --> filter

三、防火墙设置

linux中用iptables程序设置防火墙各种规则。

iptables程序实质上就是规则管理工具,能自动实现规则的语法检查,检查完后直接送往内核加载在netfilter之上起效用。

(一)防火墙设置流程


1、确定设置策略

两种设置策略:

a、只放行在名单上的,其他的都不放行 ——白名单,建议使用这种策略

b、除了名单上的不放行,其他的都放行 ——黑名单

2、确定链


由数据报文的流经过程以及要实现的功能,确定应在哪条链上设置规则

考量点:

(1) 要实现的功能:判断添加在哪个表上;

(2) 报文流向及经由路径:判断添加在哪个链上

报文流向决定设置规则的位置:

到本内部:prerouting, input

由本机发出:output, postrouting

由本机转发:prerouting, forward, postrouing

3、确定每条链上规则的前后次序


链上的规则次序 即为 检查次序,因此有一定的设置法则:

(1) 同类规则,匹配范围小的放上面;

(2) 不同类规则,匹配报文几率较大的放上面;

(3) 应该设置默认策略;

默认策略(POLICY):链都应该有,以对那些无法由所有既定规则所匹配的数据报文进行处理;

4、用iptables命令设置

设置后立即生效,但不会永久有效,重启后丢失。

5、保存设置好的规则


如果需要让设置的规则能一直存在并能应用,需要使用保存命令保存于一定的文件中。

方法一:

保存于默认配置文件/etc/sysconfig/iptables中,系统重启后会自动加载此文件的设置建立防火墙

保存现在运行的规则到配置文件 : # service iptables save

重载配置文件中的规则到内核中运行 : # service iptables reload

方法二:

        保存于某个制定的文件内,但系统重启后不会自动加载,需要运行时须手动加载

保存现在运行的规则到某个指定的非配置文件中:# iptables-save > /PATH/TO/SOMEFILE

重载某个指定的非配置文件中的规则到内核中运行:# iptables-restore < /PATH/FROM/SOMEFILE

(三)命令公式

规则的组成部分:

报文的匹配条件, 匹配之后如何处理

匹配条件:① 基本匹配条件、② 扩展匹配条件

如何处理:① 内建处理机制、② 自定义处理机制(自定义的链)

iptables [-t TABLE] SUBCOMMAND CHAIN CRITERIA -j TARGET

(由于网速问题,大图上传不了,放在附件里了)

1、-t TABLE:


默认为filter, 共有filter, nat, mangle, raw四个可用;

2、SUBCOMMAND:

(1)链:

-F:flush,清空指定表的指定链上所有规则;省略链名时,清空表中的所有链;(注:不会冲刷掉policy!!!)

-P:policy,设置链的默认处理机制;当所有都无法匹配或有匹配有无法做出有效处理机制时,默认策略即生效;

filter表的可用策略:ACCEPT, DROP, REJECT

-N:new, 新建一个用户自定义的链;自定义链只能作为默认链上的跳转对象,即通过在默认链中引用来使自定义链生效起作用;自定义链生效完可以跳转回某个内置链继续过滤。

-X:drop,删除用户自定义的空链;非空自定义链和内置链无法删除;

-E:rename,重命名自定义链;

-Z:zero,将规则的计数器置0;

注意:被引用中的自定义链,无法删除和改名

增删查改

(2)规则:

-A:append,在链尾追加一条规则;

-I:insert,在指定位置插入一条规则;

-D:delete,删除指定的规则;

-R:replace,替换指定的规则;

(3)查看:

-L:list,列出指定链上的所有规则;

-n: numeric,以数字格式显示地址和端口号,即不反解;

-v: verbose,详细格式,显示规则的详细信息,包括规则计数器等;

-vv:比v更详细

-vvv:比vv更详细

--line-number[s]: 显示规则编号;

-x: exactly,显示计数器的精确值;

3、CRITERIA

(1)通用匹配:

[!] -s, --src, --source  IP|Network:检查报文中的源IP地址;

-d, --dst, --destination:检查报文中的目标IP地址;

-p, --protocol:检查报文中的协议,即ip首部中的protocols所标识的协议;tcp、udp或icmp三者之一;

-i, --in-interface:数据报文的流入接口;通常只用于PREROUTING, INPUT, FORWARD链上的规则;

-o, --out-interface:检查报文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING链上的规则;

 (2)扩展匹配:

使用iptables的模块实现扩展性检查机制(rpm -ql iptables可中有/lib64/xtables/libxt_NAME.so或者/lib64/xtables/libipt_NAME.so的都是有扩展的,其中小写字母的表示是扩展模块的,大写字母的表示是扩展target的)

扩展模块的:/lib64/xtables/libxt_string.so

/lib64/xtables/libxt_tcp.so

扩展target的:/lib64/xtables/libipt_CLUSTERIP.so

    (2.1)隐式扩展:

如果在通用匹配上使用-p选项指明了协议的话,则使用-m选项指明对其协议的扩展就变得可有可无了;

       ①tcp: 

--dport PORT[-PORT]    即可以指明一个或连续的多个端口

--sport PORT[-PORT]

--tcp-flags LIST1 LIST2

LIST1: 要检查的标志位;

LIST2:在LIST1中出现过的,且必须为1标记位;而余下的则必须为0;

例如:--tcp-flags syn,ack,fin,rst syn

--syn:用于匹配tcp会话三次握手的第一次(等同于--tcp-flags syn,ack,fin,rst syn);

       ②udp:

--sport

--dport

       ③icmp:

--icmp-type

ping的先发出的那根线就是8,无关s和d;响应的那根线就是0,无关自己是响应的还是对方响应的

8: echo request

0:echo reply

练习:

1、放行本机上的ssh和http服务;要求input和output策略默认均为DROP;

[[email protected] ~]#
iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 22 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -I INPUT 2 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -I OUTPUT 1 -s 172.16.20.150 -p tcp -m tcp --sport 22 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -I OUTPUT 2 -s 172.16.20.150 -p tcp -m tcp --sport 80 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -P INPUT DROP

[[email protected] ~]#
iptables -t filter -P OUTPUT DROP

[[email protected] ~]#
iptables -L -n

Chain INPUT (policy
DROP)

target     prot opt source               destination

ACCEPT     tcp 
--  0.0.0.0/0            172.16.20.150       tcp dpt:22

ACCEPT     tcp 
--  0.0.0.0/0            172.16.20.150       tcp dpt:80

Chain FORWARD
(policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy
DROP)

target     prot opt source               destination

ACCEPT     tcp 
--  172.16.20.150        0.0.0.0/0           tcp spt:22

ACCEPT     tcp 
--  172.16.20.150        0.0.0.0/0           tcp spt:80

2、开放本机对ping的响应,和ping请求;

[[email protected] ~]#
iptables -t filter -A INPUT -d 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j
ACCEPT

[[email protected] ~]#
iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp --icmp-type 0 -j ACCEPT

[[email protected] ~]#
iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j
ACCEPT

[[email protected] ~]#
iptables -L -n

Chain INPUT (policy
DROP)

target    
prot opt source               destination

ACCEPT    
tcp  --  0.0.0.0/0          
 172.16.20.150       tcp dpt:22

ACCEPT    
tcp  --  0.0.0.0/0          
 172.16.20.150       tcp dpt:80

ACCEPT    
icmp --  0.0.0.0/0            172.16.20.150
      icmp type 8

Chain FORWARD
(policy ACCEPT)

target    
prot opt source               destination

Chain OUTPUT (policy
DROP)

target    
prot opt source               destination

ACCEPT    
tcp  --  172.16.20.150        0.0.0.0/0  
        tcp spt:22

ACCEPT    
tcp  --  172.16.20.150        0.0.0.0/0  
        tcp spt:80

ACCEPT    
icmp --  172.16.20.150        0.0.0.0/0    
      icmp type 0

ACCEPT    
icmp --  172.16.20.150        0.0.0.0/0    
      icmp type 8


(2.2)显式扩展:必须指明使用的扩展机制;

-m 模块名称

每个模块会引入新的匹配机制;

想知道有哪些模块可用:

rpm -ql iptables

小写字母,以.so结尾;

①multiport扩展

以离散定义多端口匹配;最多指定15个端口;

专用选项:

--source-ports, --sports PORT[,PORT,...]

--destination-ports, --dports PORT[,PORT,...]

--ports PORT[,PORT,...] 无论是源还是目标都匹配,但实际中不常见,因为源和目标端口号一般都不同

例子:

# iptables -I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT

# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPT

②iprange扩展:

指定连续的ip地址范围;在匹配非整个网络地址时使用;

专用选项:

[!] --src-range IP[-IP]

[!] --dst-range IP[-IP]

示例:

# iptables -A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT

③string扩展:

检查报文中出现的字符串,与给定的字符串作匹配;

字符串匹配检查算法:

kmp, bm

目前来说,这两者在性能上没太大差别了,用哪个都可以。起的作用是加快匹配的速度。

专用选项:

--algo {kmp|bm}

--string "STRING"

--hex-string "HEX_STRING":HEX_STRING为编码成16进制格式的字串;

第一种写法:

--algo kmp --string ”sex“

第二种写法:

--hex-string ”XXX“

XXX : 编码成的16进制格式的字串

示例:

# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string "sex" --algo kmp -j REJECT

④time扩展:

基于时间区间做访问控制

专用选项:

--datestart   YYYY[-MM][-DD][hh[:mm[:ss]]]

--dattestop  YYYY[-MM][-DD][hh[:mm[:ss]]]

--timestart   hh:mm[:ss]

--timestop   hh:mm[:ss]

--weekdays DAY1[,DAY2,...]

示例:

# iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT

⑤connlimit扩展:

基于连接数作限制;对每个IP能够发起的并发连接数作限制;

注:计数器是从rule生效时才开始计数的

专用选项:

--connlimit-above [n]

# iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECT

⑥limit扩展:

基于发包速率作限制;

令牌桶算法——只发这么多个令牌,匹配到了就给个令牌执行本rule的target,如果超过了限制的则本规则直接不管(相当于每隔几秒发一个令牌后就下班休息了,连关卡都不看了,由其他规则匹配。超过数量规则限制的则直接去匹配下面的规则,如果匹配到了就能执行对应的target,如果没有,则最终采用默认policy。

专用选项:

--limit  n[/second|/minute|/hour|/day]

--limit-burst n

# iptables -R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT

练习:

(1) 配置本机的dns服务,并放行之;默认策略为drop;

(2) 配置本机的telnet服务,要求只允许来自于172.16.0.0/16网络中的主机访问,且只允许工作时间访问,而且,每个来源IP最多的并发连接数不能超过2个;

# iptables -t filter -I INPUT 3 -d 172.16.20.150 -p tcp -m tcp
--dport 53 -p udp -m udp --dport 53 -j ACCEPT

# iptables -t filter -I OUPUT 3 -s 172.16.20.150 -p tcp -m tcp
--sport 53 -p udp -m udp --sport 53 -j ACCEPT

# iptables -t filter -I OUTPUT 4 -s 172.16.20.150 -p tcp -m tcp
-dport 53 -p udp -m udp --dport 53 -j ACCEPT

# iptables -t filter -I INPUT 4 -d 172.16.20.150 -p tcp -m tcp
-sport 53 -p udp -m udp --sport 53 -j ACCEPT

# iptables -t filter -P INPUT DROP

# iptables -t filter -P OUPUT DROP

(2)

# iptables -t filter -I INPUT 5 -s 172.16.0.0/16 -d 172.16.20.150 -p
tcp -m tcp --dport 23  -m time
--timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit
! --connlimit-above 2 -j ACCEPT

# iptables -t filter -I OUTPUT 5 -d 172.16.0.0/16 -s 172.16.20.150
-p tcp -m tcp --sport 23  -m time
--timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit
! --connlimit-above 2 -j ACCEPT

⑦state扩展

启用连接追踪模板记录连接,并根据连接匹配连接状态的扩展;

启用连接追踪功能之前:简单包过滤防火墙;

启用连接追踪功能:带状态检测的包过滤防火墙;

可以过滤掉事先埋伏在主机内的反弹木马以特定端口(如80)去主动连接某个客户端

专用选项:

--state STATE

NEW:

新建立的连接,连接追踪模板中无相应的条目时,客户端第一次发出的请求;

ESTABLISHED:

NEW状态之后,连接追踪模板中的条目删除之前所进行的通信过程,都称为                       ESTABLISHED;(理解:IP和端口号都是一样的)

RELATED:

相关联的连接,如ftp协议的命令连接与数据连接即为相关联的连接;(理解 : IP是一样,但端口号不一样)

INVALIED:

无法识别的状态;如 ① syn 1,fin 1;② 6个标志位全为1 或全为0 ;

4、TARGET: 

ACCEPT:放行

DROP:丢弃

REJECT:明确拒绝

SNAT:源地址转换

DNAT:目标地址转换

MASQUERADE :动态地址转换(当私网主机是通过DHCP动态获得IP地址时使用)

LOG:日志

REDIRECT:端口重定向;

RETURN: 返回至调用者;

MARK:防火墙标记

(1)SNAT

主要用于实现让内网客户端访问外部主机时使用;

注意:要定义在POSTROUTING链;也可以在OUTPUT上使用,但很少;

定义方法:

# iptables -t nat -A POSTROUTING -s 内网网络或主机地址 -j SNAT --to-source NAT服务器上的某外网地址

(即要将发出的源地址改为NAT服务器上的外网地址,让外网的服务器能先回复到NAT上)

另一个TARGET:

MASQUERADE:地址伪装;能自行判断该转为哪个源地址;

# iptables -t nat -A POSTROUTING -s 内网网络或主机地址 -j MASQUERADE

(2)DNAT

主要用于发布内部服务器,让内网中的服务器在外网中可以被访问到;

注意:要定义在PREROUTING链;

定义方法:

# iptables -t nat -A PREROUTING -d NAT服务器的某外网地址 -p 某协议 --dport 某端口 -j DNAT --to-destination 内网某服务器地址[:PORT]

练习:INPUT和OUTPUT默认策略为DROP;

1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;

# iptables -A INPUT
-s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m time --weekdays
Mon -j REJECT

# iptables -A INPUT
-s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m limit --limit
100/second -m state --state NEW,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT
-s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m string --string
"admin" --algo kmp -j REJECT

# iptables -A OUTPUT
-s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

# iptables -P INPUT
DROP

# iptables -P OUTPUT
DROP

2、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给172.16.0.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个;

# iptables -A INPUT
-s 172.16.0.0/16 -d 172.16.0.1 -p tcp --dport 21 -m time --timestart 08:30
--timestop 18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m state --state
NEW,ESTABLISHED -j ACCEPT

# iptables -A INPUT
-s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m time --timestart 08:30 --timestop
18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m limit --limit 5/minute -m state --state
RELATIVED -j ACCEPT

# iptables -A OUTPUT
-s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

3、开放本机的ssh服务给172.16.x.1-172.16.x.100中的主机,x为你的座位号,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机;

# iptables -A INPUT
-d 172.16.0.1 -p tcp -m tcp --dport 22 -m iprange --src-range
172.16.20.1-172.16.20.100 -m limit --limit 2/minit -j ACCEPT

# iptables -A OUTPUT
-s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

4、拒绝TCP标志位全部为1及全部为0的报文访问本机;

# iptables -A INPUT -d 172.16.0.1 -m tcp
--tcp-flags all all -j REJECT

# iptables -A INPUT -d 172.16.0.1 -m tcp
--tcp-flags all none -j REJECT

5、允许本机ping别的主机;但不开放别的主机ping本机;

# iptables -A OUTPUT
-s 172.16.0.1 -p icmp -m icmp --icmp-type 8 -j ACCEPT

# iptables -A INPUT
-d 172.16.0.1 -p icmp -m state --state ESTABLISH -j ACCEPT

练习:判断下述规则的意义:

#
iptables -N clean_in

在filter表中新建一个名字为clean_in的链

#
iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP

经由clean_in到255.255.255.255的icmp包都丢弃

#
iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP

经由clean_in到172.16.255.255的icmp包都丢弃

#
iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP

经由clean_in新建立的连接的tcp包中追踪状态是NEW且不是(syn=1,ack=0,fin=0,rst=0)的都丢弃

#
iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP

经由clean_in的tcp包中丢弃tcp标识都为1的包

#
iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP

经由clean_in的tcp包中丢弃tcp标识都为0的包

#
iptables -A clean_in -d 172.16.100.7 -j RETURN

经由clean_in的发往172.16.100.7的包都跳转至调用clean_in的链中规则的下一条接着处理

#
iptables -A INPUT -d 172.16.100.7 -j clean_in

经由INPUT链的发往172.16.100.7的包都交由clean_in链处理

#
iptables -A INPUT  -i lo -j ACCEPT

通过INPUT链时,数据报文指明接口为lo的都放行

#
iptables -A OUTPUT -o lo -j ACCEPT

通过OUTPUT链时,发出的数据报文指明接口为lo的都放行

#
iptables -A INPUT  -i eth0 -m multiport
-p tcp --dports 53,113,135,137,139,445 -j DROP

经eth0流入的tcp数据包经由INPUT时,只要目标端口是53,113,135,137,139,445的都丢弃

#
iptables -A INPUT  -i eth0 -m multiport
-p udp --dports 53,113,135,137,139,445 -j DROP

经eth0流入的udp数据包经由INPUT时,只要目标端口是53,113,135,137,139,445的都丢弃

#
iptables -A INPUT  -i eth0 -p udp --dport
1026 -j DROP

经eth0流入的udp数据包经由INPUT时,只要目标端口是1026的丢弃

#
iptables -A INPUT  -i eth0 -m multiport
-p tcp --dports 1433,4899 -j DROP

经eth0流入的tcp数据包经由INPUT时,只要目标端口是1433和4899的都丢弃

#
iptables -A INPUT  -p icmp -m limit
--limit 10/second -j ACCEPT

进入的icmp包经由INPUT链时限速10个/秒,超过的不被本规则放行

时间: 2024-11-03 21:24:30

linux中iptables详解的相关文章

Linux中getopt详解

Linux中getopt详解 getopt函数用来解析命令行参数的,以'-'或'--'开头的参数为选项参数,选项参数除去'-'或'--'的剩下的是选项字符.如果getopt函数被重复调用,则它将会依次返回每个选项元素中的选项字符. 使用getopt需使用以下头文件: #include<unistd.h> #include<getopt.h> 有几个全局变量与getopt函数解析参数有关: optind: int型, 指示下一个要解析的参数位置,初始时为1. optarg: char

postgreSQL在linux中安装详解

postgreSQL在linux中安装详解 收藏 这里安装8.4.4版本,首先下载postgresql-8.4.4-1-linux.bin.(http://www.postgresql.org/download/)下载linux32版本的1.       如果该文件不在linux系统中,将其从Windows拖到linux系统中,放到任意一个目录下,最好放在/opt或者/home.推荐一个Windows文件转到linux的工具:WinSCP3 ( 1.打开一个终端,su -成root用户:2.ch

Linux下iptables详解

一.介绍 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,类似于网络设备中的ACL.它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘或网络出口.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略.规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和

【Linux进阶】Linux防火墙iptables详解

前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的 防火墙会在这层对源地址和目标地址进行检测.但是对于七层的防火墙

linux 中/proc 详解

proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告的内核使用,例如/proc/modules 有模块的列表/proc/meminfo 有内存使用的统计表.  使用proc 文件系统的方法和使用设备驱动程序非常相似--创建一个/proc 文件需要的所有信息的结构,包括任何处理函数的指针(在我们的例子中只有一个,当某人试图从/proc 文件读时调用的那

Apache服务环境在Linux中搭建详解

Apache服务环境搭建详解: 本篇文章我介绍的是phpstudy集成工具,它将php.mysql及apache集成在一起,可以很方便的在不同服务环境间进行切换,比如:apache+php5.4切换为nginx+php5.4,另外,这个集成工具(windows版)提供了可视化的图形界面,以及提供了配置文件的快捷查找和网站域名的设置等,具体可到http://www.phpstudy.net网址查看详情.在这里,我介绍的是在Linux环境中怎么安装和配置apache+php+mysql(phpstu

Linux中inode详解,硬链接和软链接介绍

inode 详解   在Linux中,我们经常会做一些关于数据的操作(备份.传输.压缩等)或是要在后台持续的运行一些程序.由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关闭了,它所运行的进程也会关闭,我们所做的工作就可能前功尽弃.但是,即使我们不主动的关闭终端,终端有的时候也会应为一些原因(网络.锁屏等)而中断,导致我们的工作进度清零. 1.inode 定义 inode是用来存储文件元信息的区域.中文译名叫做"索引节点".   简单来说,inod

linux中RAID详解

一.RAID介绍 RAID即廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),从Linux 2.4内核开始,Linux就提供软件RAID,不必购买昂贵的硬件RAID控制器和附件(一般中.高挡服务器都提供这样的设备和热插拔硬盘),就可以通过并行处理多个独立的I/O 请求提高读写性能,而且能通过增加冗余信息来提高数据存储的可靠性. 二.几种RAID类型 RAID 0 非冗余,读写性能好,数据可靠性低于单个磁盘. RAID 1 镜像,读性能好,写性能与单个磁

Linux中Uboot详解

在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分. 2. Linux 内核.特定于嵌入式板子的定制内核以及内核的启动参数. 3. 文件系统.包括根文件系统和建立于 Flash 内存设备之上文件系统.通常用 ram disk 来作为 root fs. 4. 用户应用程序.特定于用户的应用程序.有