iptables命令细解

合集下载

iptables命令参数

iptables命令参数

iptables命令参数iptables命令是Linux系统中用于设置防火墙规则的工具,它允许用户通过在内核中的网络数据包传输路径上添加或删除规则来过滤、修改和重定向网络数据包。

iptables命令有许多参数可以用来指定具体的操作和规则。

下面是一些常用的iptables命令参数:1. -A或--append:添加规则到规则链的末尾。

例如,`iptables -A INPUT -s 192.168.0.1 -j DROP`将会添加一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。

2. -I或--insert:在规则链内指定的位置插入规则。

例如,`iptables -I INPUT3 -s 192.168.0.1 -j DROP`将会在INPUT链的第3个位置插入一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。

3. -D或--delete:从规则链中删除规则。

例如,`iptables -D INPUT -s 192.168.0.1 -j DROP`将会删除INPUT链中所有来自IP地址为192.168.0.1的主机的入站连接的规则。

4. -P或--policy:设置默认策略。

例如,`iptables -P INPUT ACCEPT`将会将INPUT链的默认策略设置为接受所有入站连接。

5. -s或--source:指定源IP地址或地址段。

例如,`iptables -A INPUT -s 192.168.0.0/24 -j DROP`将会添加一个规则,禁止来自192.168.0.0/24网段的主机的所有入站连接。

6. -d或--destination:指定目标IP地址或地址段。

例如,`iptables -AOUTPUT -d 192.168.0.1 -j DROP`将会添加一个规则,禁止所有出站连接到IP地址为192.168.0.1的主机。

7. -p或--protocol:指定要过滤的传输层协议,如TCP、UDP或ICMP。

iptables 指令详细语法

iptables 指令详细语法

iptables 指令语法iptables [-t table] command [match] [-jtarget/jump][-t table] 指定规则表-t参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是filter。

三个规则表的功能如下:filter:这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。

这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中;nat:这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。

这个规则表除了作网址转换外,请不要做其它用途;mangle:此规则表拥有 PREROUTING、FORWARD 和POSTROUTING 三个规则链。

除了进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表中,由于使用率不高,我们不打算在这里讨论 mangle 的用法。

command 常用命令列表:命令-A, --append范例 iptables -A INPUT ...说明新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。

命令-D, --delete范例 iptables -D INPUT --dport 80 -j DROPiptables -D INPUT 1说明从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

命令-R, --replace范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP说明取代现行规则,规则被取代后并不会改变顺序。

linux中iptables配置文件及命令详解详解

linux中iptables配置文件及命令详解详解

linux中iptables配置⽂件及命令详解详解iptables配置⽂件直接改iptables配置就可以了:vim /etc/sysconfig/iptables。

1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端⼝开放。

下⾯是命令实现:iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP再⽤命令 iptables -L -n 查看是否设置好,好看到全部 DROP 了这样的设置好了,我们只是临时的,重启服务器还是会恢复原来没有设置的状态还要使⽤ service iptables save 进⾏保存看到信息 firewall rules 防⽕墙的规则其实就是保存在 /etc/sysconfig/iptables可以打开⽂件查看 vi /etc/sysconfig/iptables2、下⾯我只打开22端⼝,看我是如何操作的,就是下⾯2个语句(⼀下为命令⾏模式)iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT再查看下 iptables -L -n 是否添加上去, 看到添加了Chain INPUT (policy DROP)target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22Chain FORWARD (policy DROP)target prot opt source destinationChain OUTPUT (policy DROP)target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22现在Linux服务器只打开了22端⼝,⽤putty.exe测试⼀下是否可以链接上去。

iptables命令详解_共进电子

iptables命令详解_共进电子

Iptables规则是如何练成的本章将详细地讨论如何构建Iptables规则。

Iptables 包含三个表(filter、nat 、mangle),默认使用filter表,每个表包含若干条链(PREROUTING,POSTROUTING,OUTPUT,INPUT和FORWARD),每条规则就添加到相应的链上。

规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。

插入链的每一行都是一条规则。

我们也会讨论基本的matche及其用法,还有各种各样的target。

流程图1. 基础我们已经解释了什么是规则,在内核看来,规则就是决定如何处理一个包的语句。

如果一个包符合所有的条件(就是符合matche语句),我们就运行target 或jump指令。

书写规则的语法格式是:iptables [-t table] command [chain] [match] [-j target/jump]注意target指令必须在最后。

如果你不想用标准的表,就要在[table]处指定表名。

一般情况下没有必要指定使用的表,因为iptables 默认使用filter表来执行所有的命令。

也没有必要非得在这里指定表名,实际上几乎可在规则的任何地方。

当然,把表名在开始处已经是约定俗成的标准。

尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。

command告诉程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则,下面会仔细地介绍。

Chain 指定表的哪条规则链。

match细致地描述了包的某个特点,以使这个包区别于其它所有的包。

在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。

下面我们将会看到许多不同的match。

最后是数据包的目标所在。

若数据包符合所有的match,内核就用target来处理它,或者说把包发往target。

比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。

iptables常用命令解析

iptables常用命令解析

iptables常⽤命令解析查看当前iptables规则:iptables -n -L --line-numbers该命令会以列表的形式显⽰出当前使⽤的 iptables 规则,并不做解析,每⼀条规则前⾯的编号可以⽤来做为其它操作,例如后⾯的删除操作的参数,很有⽤。

[root@localhost ~]# iptables -n -LChain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- 0.0.0.0/00.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/00.0.0.0/0ACCEPT all -- 0.0.0.0/00.0.0.0/0ACCEPT tcp -- 0.0.0.0/00.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)target prot opt source destinationREJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destinationiptables 规则中各指令(command)的含义:各种指令如下。

既可以使⽤长指令,也可以使⽤短指令字母,例如,iptables --append chain firewall-rule等价于iptables -A chain firewall-rule另外,指令后⾯所带的参数/选项,如果以 [ ] 包括,则表⽰该参数/选项可省略(有缺省值)。

的基本命令

的基本命令
te add -net 202.38.85.0 netmask 255.255.255.0 dev eth0 route add default gw 202.38.85.1
11
命令示例
查看防火墙的规则 Iptables -L,--list
显示Iptables的版本 Iptables -V,--version
指定数据包匹配的目标端口号,可以使用“起始端口 号:结束端口号”的格式指定一个范围的端口
6
Iptables的语法
(5)规则的目标
ACCEPT:接受匹配条件的数据包(允许它前往目的地),并且停止 遍历链(虽然该报文可能在另一个表的其他链中被丢弃)。
DROP:丢弃匹配条件的数据包,不再做进一步处理。 REJECT:丢弃匹配条件的数据包,并返回错误信息给源主机。 MASQUERADE:伪装数据包的源地址(应用于POSTROUTING且
说明 指定数据包从哪个网络接口进入,如ppp0、eth0和 eth1等 指定数据包从哪块网络接口输出,如ppp0、eth0和 eth1等
指定数据包匹配的协议,如TCP、UDP和ICMP等
指定数据包匹配的源地址
指定数据包匹配的源端口号,可以使用“起始端口号: 结束端口号”的格式指定一个范围的端口
指定数据包匹配的目标地址
外网地址为动态分配地址,作用于NAT )。 LOG :匹配条件的数据包的有关信息被记录入日志。
7
Iptables的语法
(5)规则的目标
REDIRECT:将数据包重新转向到本机或另一台主机的某个端口,通常用 功能实现透明代理或对外开放内网某些服务。(作用于NAT表中 PREROUTING , OUTPUT链,使用要加上--to-port 端口号) SNAT:源地址转换,即改变数据包的源地址(用于NAT表中 POSTROUTING链,使用要加上--to-source ip地址) DNAT:目标地址转换,即改变数据包的目的地址(应用于NAT表中 PREROUTING链,使用要加上--to-destination ip地址 ) RETURN:停止遍历包含该规则的链,如果链是如INPUT之类的主链,则 使用该链的缺省策略处理数据包

Linux命令高级技巧使用iptables命令配置和管理防火墙规则

Linux命令高级技巧使用iptables命令配置和管理防火墙规则

Linux命令高级技巧使用iptables命令配置和管理防火墙规则Linux系统中有许多命令可以使用,其中iptables命令是用于配置和管理防火墙规则的重要工具。

本文将介绍一些使用iptables命令的高级技巧,帮助读者更好地理解和使用这个命令。

一、iptables命令简介iptables是一个用于IPv4包过滤和控制Linux内核防火墙服务的用户空间工具。

它可以进行网络地址转换(NAT)、数据包过滤、端口重定向等操作,是保护计算机系统免受恶意攻击的重要工具。

二、iptables命令基本语法iptables命令的基本语法如下所示:iptables [选项] [链] [规则规格]其中,选项是可选的,用于指定不同的功能;链用于指定规则要应用的链,例如INPUT、FORWARD、OUTPUT等;规则规格用于指定具体的防火墙规则。

三、iptables命令常用选项1. -A:追加一条规则到某个链的末尾2. -I:向某个链中的指定位置插入一条规则3. -D:从某个链中删除一条规则4. -P:设置某个链的默认策略5. -L:列出某个链中的所有规则6. -F:清除某个链中的所有规则四、iptables命令高级技巧1. 配置端口转发使用iptables命令可以轻松实现端口转发,将外部请求转发到内部服务器。

例如,要将外部的SSH请求转发到内部服务器的SSH端口,可以使用如下命令:iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 内部服务器IP地址:22这样,外部用户连接到本机的22端口时,请求将被转发至内部服务器的22端口。

2. 过滤IP地址通过iptables命令,可以方便地过滤特定的IP地址或IP地址段。

例如,要拒绝来自某个IP地址的所有请求,可以使用如下命令:iptables -A INPUT -s 某个IP地址 -j DROP这样,来自该IP地址的请求将被直接拒绝。

iptables命令、规则、参数详解

iptables命令、规则、参数详解

iptables命令、规则、参数详解表 (table)包含4个表:4个表的优先级由高到低:raw-->mangle-->nat-->filterraw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。

一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.filter---这个规则表是预设规则表,拥有INPUT、FORWARD 和OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的理动作net----此规则表拥有prerouting和postrouting两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT)mangle--此规则表拥有prerouting、FORWARD、postrouting 三个规则链,除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(ITL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤)这时就必须将这些工作定义在mangles规则表中常用命令:-A 追加规则-->iptables -A INPUT-D 删除规则-->iptables -D INPUT 1(编号)-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则-N 新的规则-->iptables -N allowed 定义新的规则通用参数:-p 协议例:iptables -A INPUT -p tcp-s源地址例:iptables -A INPUT -s 192.168.1.1-d目的地址例:iptables -A INPUT -d 192.168.12.1-sport源端口例:iptables -A INPUT -p tcp --sport 22-dport目的端口例:iptables -A INPUT -p tcp --dport 22-i指定入口网卡例:iptables -A INPUT -i eth0-o指定出口网卡例:iptables -A FORWARD -o eth0-j 指定要进行的处理动作常用的ACTION:DROP:丢弃REJECT:明示拒绝ACCEPT:接受SNAT基于原地址的转换source--指定原地址比如我们现在要将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外网有效ip)这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP.MASQUERADE(动态伪装)--家用带宽获取的外网ip,就是用到了动态伪装iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADEDNAT目标地址转换destination-指定目标地址iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.210.18访问80端口转换到100.2上MASQUERADE:源地址伪装REDIRECT:重定向:主要用于实现端口重定向MARK:打防火墙标记的RETURN:返回在自定义链执行完毕后使用返回,来返回原规则链。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iptables 指令语法iptables [-t table] command [match] [-j target/jump][-t table] 指定规则表-t 参数用来,内建的规则表有三个,分别是:nat、mangle 和filter,当未指定规则表时,则一律视为是filter。

个规则表的功能如下:nat:此规则表拥有PREROUTING 和POSTROUTING 两个规则链,主要功能为进行一对一、一对多、多对多等网址转换工作(SNAT、DNAT),这个规则表除了作网址转换外,请不要做其它用途。

mangle:此规则表拥有PREROUTING、FORWARD 和POSTROUTING 三个规则链。

除了进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在mangle 规则表中,由于使用率不高,我们不打算在这里讨论mangle 的用法。

filter:这个规则表是默认规则表,拥有INPUT、FORWARD 和OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、LOG、ACCEPT 或REJECT),我们会将基本规则都建立在此规则表中。

command 常用命令列表:命令-A, --append范例iptables -A INPUT ...说明新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。

命令-D, --delete范例iptables -D INPUT --dport 80 -j DROPiptables -D INPUT 1说明从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

命令-R, --replace范例iptables -R INPUT 1 -s 192.168.0.1 -j DROP说明取代现行规则,规则被取代后并不会改变顺序。

命令-I, --insert范例iptables -I INPUT 1 --dport 80 -j ACCEPT说明插入一条规则,原本该位置上的规则将会往后移动一个顺位。

命令-L, --list范例1 iptables -L INPUT说明列出某规则链中的所有规则。

范例2 iptables -t nat -L说明列出nat表所有链中的所有规则。

命令-F, --flush范例iptables -F INPUT说明删除filter表中INPUT链的所有规则。

命令-Z, --zero范例iptables -Z INPUT说明将封包计数器归零。

封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。

命令-N, --new-chain范例iptables -N allowed说明定义新的规则链。

命令-X, --delete-chain范例iptables -X allowed说明删除某个规则链。

命令-P, --policy范例iptables -P INPUT DROP说明定义过滤政策。

也就是未符合过滤条件之封包,默认的处理方式。

命令-E, --rename-chain范例iptables -E allowed disallowed说明修改某自定义规则链的名称。

[match] 常用封包匹配参数参数-p, --protocol范例iptables -A INPUT -p tcp说明匹配通讯协议类型是否相符,可以使用! 运算符进行反向匹配,例如:-p !tcp意思是指除tcp 以外的其它类型,如udp、icmp ...等。

如果要匹配所有类型,则可以使用all 关键词,例如:-p all参数-s, --src, --source范例iptables -A INPUT -s 192.168.1.1说明用来匹配封包的来源IP,可以匹配单机或网络,匹配网络时请用数字来表示子网掩码,例如:-s 192.168.0.0/24匹配IP 时可以使用! 运算符进行反向匹配,例如:-s !192.168.0.0/24。

参数-d, --dst, --destination范例iptables -A INPUT -d 192.168.1.1说明用来匹配封包的目的地IP,设定方式同上。

参数-i, --in-interface范例iptables -A INPUT -i eth0说明用来匹配封包是从哪块网卡进入,可以使用通配字符+ 来做大范围匹配,例如:-i eth+表示所有的ethernet 网卡也可以使用! 运算符进行反向匹配,例如:-i !eth0参数-o, --out-interface范例iptables -A FORWARD -o eth0说明用来匹配封包要从哪块网卡送出,设定方式同上。

参数--sport, --source-port范例iptables -A INPUT -p tcp --sport 22说明用来匹配封包的源端口,可以匹配单一端口,或是一个范围,例如:--sport 22:80表示从22 到80 端口之间都算是符合条件,如果要匹配不连续的多个端口,则必须使用--multiport 参数,详见后文。

匹配端口号时,可以使用! 运算符进行反向匹配。

参数--dport, --destination-port范例iptables -A INPUT -p tcp --dport 22说明用来匹配封包的目的地端口号,设定方式同上参数--tcp-flags范例iptables -p tcp --tcp-flags SYN,FIN,ACK SYN说明匹配TCP 封包的状态标志,参数分为两个部分,第一个部分列举出想匹配的标志,第二部分则列举前述标志中哪些有被设置,未被列举的标志必须是空的。

TCP 状态标志包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送)等均可使用于参数中,除此之外还可以使用关键词ALL 和NONE 进行匹配。

匹配标志时,可以使用! 运算符行反向匹配。

参数--syn范例iptables -p tcp --syn说明用来表示TCP通信协议中,SYN位被打开,而ACK与FIN位关闭的分组,即TCP的初始连接,与iptables -p tcp --tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用!运算符,可用来匹配非要求连接封包。

参数-m multiport --source-port范例iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110说明用来匹配不连续的多个源端口,一次最多可以匹配15 个端口,可以使用! 运算符进行反向匹配。

参数-m multiport --destination-port范例iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110说明用来匹配不连续的多个目的地端口号,设定方式同上参数-m multiport --port范例iptables -A INPUT -p tcp -m multiport --port 22,53,80,110说明这个参数比较特殊,用来匹配源端口和目的端口号相同的封包,设定方式同上。

注意:在本范例中,如果来源端口号为80目的地端口号为110,这种封包并不算符合条件。

参数--icmp-type范例iptables -A INPUT -p icmp --icmp-type 8说明用来匹配ICMP 的类型编号,可以使用代码或数字编号来进行匹配。

请打iptables -p icmp --help 来查看有哪些代码可用。

参数-m limit --limit范例iptables -A INPUT -m limit --limit 3/hour说明用来匹配某段时间内封包的平均流量,上面的例子是用来匹配:每小时平均流量是否超过一次3 个封包。

除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后:/second、/minute、/day。

除了进行封包数量的匹配外,设定这个参数也会在条件达成时,暂停封包的匹配动作,以避免因骇客使用洪水攻击法,导致服务被阻断。

参数--limit-burst范例iptables -A INPUT -m limit --limit-burst 5说明用来匹配瞬间大量封包的数量,上面的例子是用来匹配一次同时涌入的封包是否超过5 个(这是默认值),超过此上限的封包将被直接丢弃。

使用效果同上。

参数-m mac --mac-source范例iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01说明用来匹配封包来源网络接口的硬件地址,这个参数不能用在OUTPUT 和POSTROUTING 规则链上,这是因为封包要送到网卡后,才能由网卡驱动程序透过ARP 通讯协议查出目的地的MAC 地址,所以iptables 在进行封包匹配时,并不知道封包会送到哪个网络接口去。

参数--mark范例iptables -t mangle -A INPUT -m mark --mark 1说明用来匹配封包是否被表示某个号码,当封包被匹配成功时,我们可以透过MARK 处理动作,将该封包标示一个号码,号码最大不可以超过4294967296。

参数-m owner --uid-owner范例iptables -A OUTPUT -m owner --uid-owner 500说明用来匹配来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。

可惜这个功能无法匹配出来自其它主机的封包。

参数-m owner --gid-owner范例iptables -A OUTPUT -m owner --gid-owner 0说明用来匹配来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。

参数-m owner --pid-owner范例iptables -A OUTPUT -m owner --pid-owner 78说明用来匹配来自本机的封包,是否为某特定进程所产生的,使用时机同上。

参数-m owner --sid-owner范例iptables -A OUTPUT -m owner --sid-owner 100说明用来匹配来自本机的封包,是否为某特定连接(Session ID)的响应封包,使用时机同上。

参数-m state --state范例iptables -A INPUT -m state --state RELATED,ESTABLISHED说明用来匹配连接状态,连接状态共有四种:INVALID、ESTABLISHED、NEW 和RELATED。

相关文档
最新文档