iptables命令详解_共进电子
iptables命令细解
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说明取代现行规则,规则被取代后并不会改变顺序。
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 [-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配置⽂件及命令详解详解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 -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另外,指令后⾯所带的参数/选项,如果以 [ ] 包括,则表⽰该参数/选项可省略(有缺省值)。
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命令、规则、参数详解表 (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:返回在自定义链执行完毕后使用返回,来返回原规则链。
iptables命令详解附实例
-d:匹配目的地址,可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则)
匹配所有访问本机 IP 的数据包,匹配到的丢弃
-I 链名 [规则号码]
INSERT,插入一条规则
例如:
iptables -I INPUT -j DROP
注意:
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
-F [链名]
FLUSH,清空规则
例如:
iptables -F INPUT
清空 filter 表 INPUT 链中的所有规则
iptables -t nat -F PREROUTING
清空 nat 表 PREROUTING 链中的所有规则
注意:
1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则
2、-P 设置了 DROP 后,使用 -F 一定要小心!!!
3、如果不写链名,默认清空某表里所有链里的所有规则
-[vxn]L
-L 列出规则
·流入、流出接口(-i、-o)
·来源、目的地址(-s、-d)
·协议类型 (-p)
·来源、目的端口(--sport、--dport)
iptables配置语句
iptables配置语句1. 配置iptables防火墙的命令如下:```iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT```这条命令的作用是允许来自192.168.1.0/24网段的主机通过SSH 连接到本机的22端口。
2. 另一个常见的配置是限制特定IP地址的访问:```iptables -A INPUT -s 192.168.1.100 -j DROP```这条命令会阻止IP地址为192.168.1.100的主机访问本机的任何服务。
3. 如果想要允许特定IP地址范围的访问,可以使用以下命令:```iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT```这条命令允许来自192.168.1.100到192.168.1.200之间的主机访问本机。
4. 如果想要禁止特定端口的访问,可以使用以下命令:```iptables -A INPUT -p tcp --dport 80 -j DROP```这条命令会阻止任何主机访问本机的80端口,即禁止HTTP访问。
5. 另一种常见的配置是允许本机访问外部服务:```iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT```这条命令允许本机访问Google Public DNS服务器的53端口,用于DNS解析。
6. 如果想要配置端口转发,可以使用以下命令:```iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080```这条命令会将来自80端口的TCP流量重定向到本机的8080端口。
7. 如果想要配置防火墙日志,可以使用以下命令:```iptables -A INPUT -j LOG --log-prefix "Firewall: "```这条命令会将所有进入本机的流量打上前缀为"Firewall: "的日志。
详解Linuxiptables命令
详解Linuxiptables命令iptables 是 Linux 管理员⽤来设置 IPv4 数据包过滤条件和 NAT 的命令⾏⼯具。
iptables ⼯具运⾏在⽤户态,主要是设置各种规则。
⽽ netfilter 则运⾏在内核态,执⾏那些设置好的规则。
查看 iptables 的链和规则查看规则的命令格式为:iptables [-t tables] [-L] [-nv]-t :后⾯接 table ,例如 nat 或 filter ,若省略此项⽬,则使⽤默认的 filter-L :列出某个 table 的所有链或某个链的规则-n :直接显⽰ IP,速度会快很多-v :列出更多的信息,包括通过该规则的数据包总位数、相关的⽹络接⼝等列出 filter table INPUT 链的规则:$ sudo iptables -L INPUT列出 nat table 三条链的规则:$ sudo iptables -t nat -L -n列出 filter table 三条链的规则:$ sudo iptables -L红框中的内容为链的名称及其默认策略,filter 表中所有链的默认策略都是 ACCEPT。
红框下⾯的⾏代表什么呢?target:代表进⾏的动作,ACCEPT 是放⾏,REJECT 是拒绝,DROP 则是丢弃数据包。
port:代表使⽤的协议,主要有 tcp、udp 和 icmp 三种。
opt:额外的选项说明。
source:规则针对的来源 IP。
destination:规则针对的⽬标 IP。
因为默认情况下没有添加⾃定义的规则,所以上图中这些⾏下⾯都是空的。
清除本机防⽕墙规则清除规则的命令格式如下:iptables [-t tables] [-FXZ]-F:清除所有已制定的规则-X:删除所有使⽤者⾃定义的 chain(其是 tables)-Z:将所有的 chain 的计数与流量统计都清零如果我们要制订⼀套防⽕墙规则,⼀般会先清除现有的规则,然后从头开始创建新的规则。
iptables 命令参数
iptables 命令参数iptables 命令参数是 Linux 系统中一个非常强大的网络管理工具,可以用来配置和管理网络安全防护、流量的分配和限制等。
本文将分步骤介绍 iptables 命令的用法和一些常见的参数。
第一步:启动和停止 iptables 服务在 Linux 系统中, iptables 服务默认是启动的。
如果需要手动停止或启动 iptables 服务,可以使用如下命令:systemctl start iptables # 启动 iptables 服务systemctl stop iptables # 停止 iptables 服务第二步:查看 iptables 规则我们可以使用以下命令来查看当前系统中的 iptables 规则:iptables -L # 查看所有防火墙规则iptables -L -n -v # 显示更详细的信息其中 -n 参数用于显示 IP 地址而不是 DNS 名称,-v 参数用于显示详细的防火墙规则。
第三步:添加 iptables 规则添加 iptables 规则主要使用 -A 参数,它表示在当前防火墙规则下添加一个新规则。
例如,我们要允许来自 192.168.0.1 的 IP 访问我们的 Web 服务器(例如使用 80 端口),可以使用以下命令:iptables -A INPUT -p tcp -s 192.168.0.1 --dport 80 -j ACCEPT其中,-A INPUT 表示添加一个新规则到 INPUT 防火墙链中,-p tcp 表示限制TCP协议流量,-s 参数指定来源 IP 地址,--dport 参数指定目标端口号,-j ACCEPT 表示允许流量通过。
第四步:删除或清空 iptables 规则如果需要删除或清空 iptables 规则,可以使用如下命令:iptables -D INPUT 1 # 删除第一条 INPUT 规则iptables -F # 清空所有的规则其中 -D 参数用于删除指定的规则,-F 参数用于清空所有的规则。
Linux防火墙iptables命令详解
Linux防⽕墙iptables命令详解iptables -Fiptables -Xiptables -F -t mangleiptables -t mangle -Xiptables -F -t natiptables -t nat -X⾸先,把三个表清空,把⾃建的规则清空。
iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD ACCEPT设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。
iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT先把“回环”打开,以免有不必要的⿇烦。
iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPTiptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT在所有⽹卡上打开ping功能,便于维护和检测。
iptables -A INPUT -i eth0 -s 192.168.100.250 -d 192.168.100.1 -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.100.1 -p tcp --sport 22 -j ACCEPT打开22端⼝,允许远程管理。
(设定了很多的附加条件:管理机器IP必须是250,并且必须从eth0⽹卡进⼊)iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPTiptables -A INPUT -i eth1 -s 192.168.168.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth1 -d 192.168.168.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPTiptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPTiptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT上⾯这⼏句是⽐较头痛的,我做逐⼀解释。
ipatables命令用法
ipatables命令用法iptables命令用法iptables是Linux操作系统中一个用于配置和管理数据包过滤规则的命令行工具。
它允许管理员定义和修改规则,以控制进出系统的网络数据包流动。
下面介绍一些常用的iptables命令用法。
1. 查看当前的iptables规则:$ iptables -L这条命令将显示当前的iptables规则,包括过滤策略、链的规则以及每个链中的规则列表。
2. 清除当前的iptables规则:$ iptables -F使用此命令将清除当前所有的iptables规则。
请谨慎使用,以免误操作导致网络连接中断。
3. 添加一个iptables规则:$ iptables -A [链] [规则][链]:相应规则的目标链,常见的包括INPUT(输入数据包)、OUTPUT(输出数据包)和FORWARD(转发数据包)。
[规则]:需要添加的规则。
例如,要允许所有来源IP的SSH连接:$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT这将在INPUT链中添加一条规则,允许TCP协议、目标端口为22(SSH默认端口)的数据包通过。
4. 删除一个iptables规则:$ iptables -D [链] [规则编号][链]:相应规则的目标链。
[规则编号]:需要删除的规则在链中的编号。
例如,要删除INPUT链中的第3条规则:$ iptables -D INPUT 3这将从INPUT链中删除编号为3的规则。
以上是一些常用的iptables命令用法。
使用iptables命令可以根据网络策略对数据包进行精确控制,提高网络的安全性和性能。
请确保在使用iptables命令时谨慎操作,避免对网络连接造成不必要的影响。
iptables命令详解
iptables命令详解iptables介绍:iptables可以理解为防火墙,而防火墙我们可以理解成现实生活中的安检,有所不同的是现实生活中的安检针对的是进出特点关口的人和物,防火墙针对的则是进出特定端口的报文。
不管是安检还是防火墙都是有一定规定/规则的,不符合规定/规则的人、物/报文就会被扣押/截断。
iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。
但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。
当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
总的来说,iptables分为两种应用方式:我称其为黑名单、白名单。
黑名单:默认所有报文都可以正常通过,但截断满足特定条件的报文。
白名单:默认截断所有报文,但允许满足特定条件的报文通过。
通常情况下,我们使用黑名单模式,对特定报文进行截断。
iptables一共在内核空间中选择了5个位置,也被称为5个规则链。
1.PREROUTING (路由前)2.INPUT (数据包流入口)3.FORWARD (转发管卡)4.OUTPUT(数据包出口)5.POSTROUTING(路由后)所有报文在经过一个设备时必然经过这5个规则链的其中一个,所以我们要截断或者放行特定报文,只要在这几个位置设卡就可以了。
iptables定义规则:iptables定义规则通用格式:格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION-t table :3个filter nat mangleCOMMAND:定义如何对规则进行管理chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的CRETIRIA:指定匹配标准-j ACTION :指定如何进行处理举例,解析下面详细举例说明使用iptables丢弃指定报文:命令举例:iptables -A INPUT -s 207.101.68.111 -m string --algo bm --string "RecordInfo" -j DROP 该命令的作用是丢失所有从207.101.68.111这个IP地址发送过来的携带RecordInfo字段的报文。
Iptables命令详解
Iptables命令详解很多人把iptables 叫做防火墙,其实这是错误的观点,真正的防火墙名字叫做netfilter,iptables 只是它的一个实现工具。
iptables 各种应用规则是必要要熟练掌握的。
但是作为系统管理员,我们也应该会最基本的操作,认识iptables 的基本规则。
# iptables –nvL //查看当前iptables规则# iptables -F; /etc/init.d/iptables save //清空iptables规则并保存防火墙规则保存在/etc/sysconfig/iptables你可以查看一下这个文件。
iptalbes 的三个表filter表主要用于过滤包的,是系统预设的表,内建三个链INPUT、OUTPUT 以及FORWARD。
INPUT 作用于进入本机的包,OUTPUT 作用于本机送出的包,FORWARD 作用于那些跟本机无关的包。
nat 主要用处是网络地址转换,也有三个链。
PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。
OUTPUT 链改变本地产生的包的目的地址。
POSTROUTING 链在包就要离开防火墙之前改变其源地址。
该表我用的不多,但有时候会用到。
mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。
这个表几乎不怎么用。
除非你想成为一个高级网络工程师,否则就没有必要花费很多心思在它上面。
iptables 基本语法查看规则以及清除规则# iptables -t -nat -n vL说明:-t 后面跟表名, -nvL即查看该表的规则,其中-n表示不针对IP反解析主机名,-L表示列出的意思,而-v表示列出的信息更加详细。
如果不加-t,则打印filter表的相关信息如下图:# iptables -F //-F 表示把所有规则全部删除,# iptables -Z //-Z 表示把包以及流量计数器置零说明:不加-t 默认是针对表filter 来操作的。
linux防火墙过滤技术iptables的原理及操作命令详解
linux防火墙过滤技术iptables的原理及操作命令详解iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的'安全框架'中,这个'安全框架'才是真正的防火墙,这个框架的名字叫netfilter。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate),数据包内容修改以及数据包过滤的防火墙功能!iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架!netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,一般Linux系统是默认自带启动的。
查看是否启动:sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载!iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为'如果数据包头符合这样的条件,就这样处理这个数据包'。
规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。
配置防火墙的主要工作就是添加、修改和删除这些规则。
iptables传输数据包的过程当我们启用了防火墙功能时,报文需要经过如下关卡,而这些关卡在iptables中不被称为'关卡',而被称为'链'。
也就是说,根据实际情况的不同,报文经过'链'可能不同。
iptables命令使用详解
iptables命令使⽤详解iptables命令使⽤详解iptables的主要功能是实现对⽹络数据包进出设备及转发的控制。
当数据包需要进⼊设备、从设备中流出或者经该设备转发、路由时,都可以使⽤iptables进⾏控制。
环境操作系统:CentOS7.3ip地址:172.16.55.71.iptables中的“四表五链”及“堵通策略”A.“四表”是指,iptables的功能——filter, nat, mangle, raw. filter, 控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路有input, forward, output nat, 控制数据包中地址转换,可以控制的链路有prerouting, input, output, postrouting mangle,修改数据包中的原数据,可以控制的链路有prerouting, input, forward, output, postrouting raw,控制nat表中连接追踪机制的启⽤状况,可以控制的链路有prerouting, output 注:在centos7中,还有security表,不过这⾥不作介绍B.“五链”是指内核中控制⽹络的NetFilter定义的五个规则链,分别为 PREROUTING, 路由前 INPUT, 数据包流⼊⼝ FORWARD, 转发管卡 OUTPUT, 数据包出⼝ POSTROUTING, 路由后C.堵通策略是指对数据包所做的操作,⼀般有两种操作——“通(ACCEPT)”、“堵(DROP)”,还有⼀种操作很常见REJECT.谈谈REJECT和DROP之间的区别,Ming写了⼀封信,向Rose⽰爱。
Rose如果不愿意接受,她可以不回应Ming,这个时候Ming不确定Rose 是否接到了信;Rose也可以同样写⼀封信,在信中明确地拒绝Ming。
前⼀种操作就如同执⾏了DROP操作,⽽后⼀种操作就如同REJECT 操作。
Linuxiptables命令详解
Linuxiptables命令详解iptables命令主要是设置防⽕墙信息的常见命令参数Usage: iptables -[AD] chain rule-specification [options]iptables -I chain [rulenum] rule-specification [options]iptables -R chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LS] [chain [rulenum]] [options]iptables -[FZ] [chain] [options]iptables -[NX] chainiptables -E old-chain-name new-chain-nameiptables -P chain target [options]iptables -h (print this help information)Commands:Either long or short options are allowed.--append -A chain Append to chain--delete -D chain Delete matching rule from chain--delete -D chain rulenumDelete rule rulenum (1 = first) from chain--insert -I chain [rulenum]Insert in chain as rulenum (default 1=first)--replace -R chain rulenumReplace rule rulenum (1 = first) in chain--list -L [chain [rulenum]]List the rules in a chain or all chains--list-rules -S [chain [rulenum]]Print the rules in a chain or all chains--flush -F [chain] Delete all rules in chain or all chains--zero -Z [chain [rulenum]]Zero counters in chain or all chains--new -N chain Create a new user-defined chain--delete-chain-X [chain] Delete a user-defined chain--policy -P chain targetChange policy on chain to target--rename-chain-E old-chain new-chainChange chain name, (moving any references)常见命令展⽰1、查看iptables -nL --line-number-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,加上-t NAT参数-n 不对ip地址进⾏反查,加上这个参数显⽰速度会快很多-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的⽹络接⼝–line-number 显⽰规则的序列号,这个参数在删除或修改规则时会⽤到2、添加添加规则有两个参数:-A和-I。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。
下面有详细的讨论。
2. Tables选项-t用来指定使用哪个表,它可以是下面介绍的表中的任何一个,默认的是filter表。
Table 2-1. TablesTable(表名)Explanation (注释)nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NA T。
做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。
属于一个流的包只会经过这个表一次。
如果第一个包被允许做NA T或Masqueraded,那么余下的包都会自动地被做相同的操作。
也就是说,余下的包不会再通过这个表,一个一个的被NA T,而是自动地完成。
这就是我们为什么不应该在这个表中做任何过滤的主要原因。
PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。
OUTPUT链改变本地产生的包的目的地址。
POSTROUTING链在包就要离开防火墙之前改变其源地址。
mangle这个表主要用来mangle数据包。
我们可以改变不同的包及包头的内容,比如TTL,TOS(服务类型)或MARK。
注意MARK并没有真正地改动数据包,它只是为包设了一个标记。
防火墙内的其他的规则或程序(如tc)可以使用这种标记对包进行过滤或高级路由。
注意,mangle表不能做任何NAT,它只是改变数据包的TTL,TOS或MARK,而不是其源目地址。
NAT是在nat表中操作的。
filter filter表是专门过滤包的,内建三个链,可以毫无问题地对包进行DROP、LOG、ACCEPT和REJECT等操作。
FORW ARD链过滤所有不是本地产生的并且目的地不是本地的包,而INPUT恰恰针对那些目的地是本地的包。
OUTPUT是用来过滤所有本地生成的包的。
上面介绍了三个不同的表的最基本的内容。
应该知道它们的使用目的完全不同,还要清楚每一条链的使用。
3. Commands在这一节里,我们将要介绍所有的command以及它们的用途。
command指定iptables对我们提交的规则要做什么样的操作。
这些操作可能是在某个表里增加或删除一些东西,或做点儿其他什么。
以下是iptables可用的command(要注意,如不做说明,默认表的是filter表。
):Table 3-1. CommandsCommand-A, --appendExample iptables -A INPUT ...Explanation 在所选择的链末添加规则。
当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条规则会和所有可用的地址结合。
Command-D, --deleteExample iptables -D INPUT --dport 80 -j DROP或iptables -D INPUT 1Explanation 从所选链中删除规则。
有两种方法指定要删除的规则:一是把规则完完整整地写出来,再就是指定规则在所选链中的序号(每条链的规则都各自从1被编号)。
Command-R, --replaceExample iptables -R INPUT 1 -s 192.168.0.1 -j DROPExplanation 在所选中的链里指定的行上(每条链的规则都各自从1被编号)替换规则。
当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条command会失败。
Command-I, --insertExample iptables -I INPUT 1 --dport 80 -j ACCEPTExplanation 根据给出的规则序号向所选链中插入规则。
如果序号为1,规则会被插入链的头部,其实默认序号就是1。
Command-L, --listExample iptables -L INPUTExplanation 显示所选链的所有规则。
如果没有指定链,则显示指定表中的所有链。
如果什么都没有指定,就显示默认表所有的链。
精确输出受其它参数影响,如-n和-v等参数,下面会介绍。
Command-F, --flushExample iptables -F INPUTExplanation 清空所选的链。
如果没有指定链,则清空指定表中的所有链。
如果什么都没有指定,就清空默认表所有的链。
当然,也可以一条一条地删,但用这个command会快些。
Command-Z, --zeroExample iptables -Z INPUTExplanation 把指定链(如未指定,则认为是所有链)的所有计数器归零。
Command-N, --new-chainExample iptables -N allowedExplanation 根据用户指定的名字建立新的链。
上面的例子建立了一个名为allowed的链。
注意,所用的名字不能和已有的链、target同名。
Command-X, --delete-chainExample iptables -X allowedExplanation 删除指定的用户自定义链。
这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。
如果没有给出参数,这条命令将会删除默认表所有非内建的链。
Command-P, --policyExample iptables -P INPUT DROPExplanation 为链设置默认的target(可用的是DROP和ACCEPT),这个target称作策略。
所有不符合规则的包都被强制使用这个策略。
只有内建的链才可以使用规则。
但内建的链和用户自定义链都不能被作为策略使用,也就是说不能象这样使用:iptables -P INPUT allowed(或者是内建的链)。
Command-E, --rename-chainExample iptables -E allowed disallowedExplanation 对自定义的链进行重命名,原来的名字在前,新名字在后。
如上,就是把allowed 改为disallowed。
这仅仅是改变链的名字,对整个表的结构、工作没有任何影响。
4. Chain规则链名一般放在命令后面,表示对哪条规则链进行操作。
总共有五个规则链:PREROUTING,POSTROUTING,OUTPUT,INPUT和FORWARD。
PREROUTING在数据包进入防火墙之后、路由判断之前经过的链。
FORWARD 在最初的路由判断之后、决定该数据包不是发往本地时经过的链。
INPUT 在最初路由判断之后,决定该数据包是发往本地程序时经过的链。
OUTPUT 从本地发出的数据包,经过路由判断准备发送出去时经过的链。
POSTROUTING数据包离开本地之前经过的链。
在使用iptables时,如果必须的参数没有输入就按了回车,那么它就会给出一些提示信息:告诉你需要哪些参数等等。
iptables的选项-v用来显示iptables 的版本,-h给出语法的简短说明。
下面将要介绍的就是部分选项,还有它们的作用。
Table 3-2. OptionsOption(选项)-v, --verbose(详细的)可用此选项的命令--list, --append, --insert, --delete, --replaceExplanation(说明)这个选项使输出详细化,常与--list连用。
与--list连用时,输出中包括网络接口的地址、规则的选项、TOS掩码、字节和包计数器,其中计数器是以K、M、G(这里用的是10的幂而不是2的幂哦)为单位的。
如果想知道到底有多少个包、多少字节,还要用到选项-x,下面会介绍。
如果-v和--append、--insert、--delete或--replace连用,iptables会输出详细的信息告诉你规则是如何被解释的、是否正确地插入等等。
Option-x, --exact(精确的)Commands used--listwithExplanation 使--list输出中的计数器显示准确的数值,而不用K、M、G等估值。
注意此选项只能和--list连用。
Option-n, --numeric(数值)Commands used--listwithExplanation 使输出中的IP地址和端口以数值的形式显示,而不是默认的名字,比如主机名、网络名、程序名等。
注意此选项也只能和--list连用。
Option--line-numbersCommands used--listwithExplanation 又是一个只能和--list连用的选项,作用是显示出每条规则在相应链中的序号。