1.iptables规则表

  Filter(针对过滤系统):INPUT、FORWARD、OUTPUT

  NAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUT

  Mangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING

2.安装包

  iptables-1.2.7a-2

3.配置防火墙

 1) 命令语法

  Usge: iptables [-t table] -[ADC] chain rule-specification [options]

  iptables [-t table] -I chain [rulenum] rule-specification [options]

  iptables [-t table] -R chain rulenum rule-specification [options]

  iptables [-t table] -D chain rulenum [options]

  iptables [-t table] -[LFZ] [chain] [options]

  iptables [-t table] -N chain

  iptables [-t table] -X [chain]

  iptables [-t table] -P chain target [options]

  iptables [-t table] -E old-chain-name new-chain-name

  规则操作参数说明:

  -A:-append 在所选择的链末添加一条或更多规则;

  -D: -delete 从所选链中删除一条或更多规则。有两种方法:把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则;

  -R: -replace 从选中的链中取代一条规则。如果源地址或目的地址转换为多地址,该命令会失败。规则序号从1开始;

  -I: -insert 根据给出的规则序号,向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会插入链的头部。这也是不指定规则序号时的默认方式;

  -L: -list 现实所选链的所有规则。如果没有所选链,将显示所有链。也可以和z选项一起用,这是链会自动列出和归零;

  -F: -flush 清空所选链。这等于把所有规则一个个删除;

  -Z: -zero 把所有链的包以及字节的计数器清空;

  -N:-new-chain 根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在;

  -X:-delete-chain 删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链;

  -P: -policy 设置链的目标规则;

  -E:-rename-chain 根据用户给出的名字对指定链进行重名名;

 规则定义参数说明:

  -p [!]protocol:

  规则或者包检查(待查包)的协议。指定协议可以是TCP、UDP、ICMP中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用;

  -s[!]address[/mask]:

  指定源地址,可以是主机名、网络名和清楚地IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志--src是这个选项的简写;

  -d[!]address[/mask]:

  指定目标地址,要获取详细说明请参见-s标志的说明。标志--dst是这个选项的简写;

  -j target:

  指定规则的目标:也就是说包匹配应当做什么。目标可以为ACCEPT(通过)、 DROP(删除)、RETURN(返回)、REDIRECT(重新指向)、SNAT(源地址转换)、DNAT(目标地址转换)、MASQUERADE(伪装)等,还可以是用户自定义链。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加;

  -i[!][name]:

  待选的可接受包接口名称,包通过该接口接收(在链INPUT、FORWORD和 PREROUTING中进入的包)。当在接口名前使用"!"说明后,指的是相反的名称,如果接口名后面加上"+",则所有以次接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口;

  -O[!][NAME]:

  这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。其他设置同上。

2) 匹配规则扩展选项:

  tcp:当指定-p tcp,且未指定其他匹配的扩展,则装载这些扩展。

  --source-port[!][port[:port]]:

  源端口或端口范围指定。可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围。如果忽略首端口号,默认是0,如果忽略末端口号,默认是65535,如果第二个端口号大于第一个,则他们进行交换。这个选项可以使用--sport的别名;

  --destionation-port[!][port:[port]]:

  目标端口或端口范围指定。这个选项可以使用--dport别名来代替;

  --tcp-flags[!]mask comp:

  匹配指定的TCP标记。第一个参数是要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须设置的。标记如:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(送入)ALLNONE。

  命令iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些设置了SYN标记而没有设置ACK、FIN和RST标记的包。

  udp:当指定-p icmp且未指定其他匹配的扩展时,则装载这些扩展。

  --icmp-type[!]typename:这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令"iptables -p icmp -h"所显示的ICMP类型名。

  mac:

  --mac-source[!]address:匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意,他只对来自以太设备并进入PREROUTING、FORWORD和INPUT链的包有效。

  limit:这个模块匹配标志用来对网络数据的通过速率进行标记,他和LOG目标结合使用,给出有限的登陆数。当达到这个极限值时,使用这个扩展包的规则将进行匹配。(除非使用了!标记),他的扩展选项包括:

  --limit rate:最大平均匹配速率,可赋的值有"/second"、"/minute"、"/hour"或"/day"这样的单位,默认是"3/hour";

  --limit-burst number:待匹配包初始个数的最大值。若前面指定的极限还没达到这个数值,则该数字加1。默认值是5。

  multiport:这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp或者-p udp连着使用:

  --source-port[port[,port]]:如果源端口是其中一个给定端口,则匹配;

  --destination-port[port[,port]]:如果目标端口是其中一个给定端口,则匹配;

  --port[port[,port]]:若源端口和目的端口相等并与某个给定端口相等,则匹配。

  owner:此扩展为本地生成包匹配包的创建者,只能用于OUTPUT链,而且,有一些包(如ICMP ping应答)还可能没有所有者,因此永远不会匹配:

  --uid-owner userid:如果给出有效的user id,那么匹配他的进程产生的包;

  --gid-owner groupid:如果给出有效的group id,那么匹配它的进程产生的包;

  --sid-owner sessionid:根据给出的会话组成匹配该进程产生的包。

  REJECT:作为对匹配的包的相应,返回一个错误的包,其他情况下和DROP相同。此目标只适用于INPUT、FORWARD和OUTPUT链,以及调用这些链的用户自定义链。这几个选项控制返回的错误包的特性:

  --reject-with type:其中的type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port- unreachable、icmp-porto-unreachable、icmp-net-prohibited或者icmp-host- prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生成ping的回应。

  SNAT:这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),停止对规则的检查:

  --to-source [][:port-port]:

  可以指定一个单一的新IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,源端口是512以下的端口惠被安排为其他的512以下的端口;512到1024之间的端口会被安排为1024以下的,其他端口会被安排为1024或以上。如果可能,端口不会被修改;

  --to-destiontion [][:port-port]:

  可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。

  MASQUERADE:只用于nat表的POSTROUTING链。只能用于动态获取ip(拨号)连接:如果拥有静态IP地址,要用SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当借口关闭时,连接会终止。这是因为,当下一次拨号时,未必是相同的接口地址(以后所有建立的连接都将关闭)。他有一个选项:

  --to-ports []:指定使用的源端口范围,覆盖默认的SNAT源地址选择。这个选项只适用于指定了-p tcp或者-p udp的规则。

  REDIRECT:只适用于nat表的PREROUTING和OUTPUT链,以及只调用他们的用户定义链。他修改包的目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0.0.1),包含一个选项:

  --to-ports []:指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp或者-p udp的规则。

  3) 包过滤设置

规则的写法:
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个filter nat mangle
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理
比如:不允许172.16.0.0/24的进行访问。
iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
当然你如果想拒绝的更彻底:
iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
iptables -L -n -v #查看定义规则的详细信息

  举例:

  假如有这样一个局域网,内部IP地址范围192.168.1.1-254,网关地址为192.168.1.1,绑定在eth0接口上,同时,网关具有外部Internet地址为10.25.0.7,绑定在eth1接口上,防火墙就位于网关上,通过它的设置,对流经防火墙的网络包进行过滤处理。同时,在局域网内部有一台WWW服务器,他的内部地址为192.168.1.2,他被设置为可以接受外部的网络用户访问。

  首先清空所有的规则链,并设置规则链的默认策略为DROP,即丢弃所有的网络数据包。

  iptables -F

  iptables -P INPUT DROP

  iptables -P OUTPUT DROP

  iptables -P FORWARD DROP

  新增用户者自定义规则链bad_tcp_packets、allowed和icmp_packets。

  iptables -N bad_tcp_packets

  iptables -N allowed

  iptables -N icmp_packets

  下面定义bad_tcp_packets规则链的规则:将要求重导向的网络连接记录起来,然后将报文丢弃(防止本地机器被其他主机作为入侵跳板,侵入别的主机):

  iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j LOG --log-level INFO --log-prefix "New not syn:"

  iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP

  下面定义allowed规则链的规则:允许要求连接的网络数据包或相应包进入,将其与网络数据包丢弃:

  iptables -A allowed -p TCP --syn -j ACCEPT

  iptables -A allwoed -p TCP -m state --state ESTABLLSHED,RELATED -J ACCEPT

  IPTABLES -A allowed -p TCP -j DROP

  下面定义icmp_packets规则链的规则:允许ping网络数据包进入,将其余的网络数据包丢弃:

  iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

  iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

  INPUT链,过滤要到达防火墙的网络数据包。

  进入防火墙主机的TCP网络数据包必须先进行bad_tcp_packets过滤:

  iptables -A INPUT -p TCP -j bad_tcp_packets

从WAN进入防火墙主机的ICMP网络数据包,必须先进行icmp_packets过滤,这是为了避免黑客传送不完整的IP网络数据包,系统会相应ICMP网络数据包,以通知对方,导致主机位置被侦测出来:

  iptables -A INPUT -p ICMP -i eth1 -j icmp_packets

  从LAN进入防火墙主机的全部单播和广播的网络数据包,均会放行:

  iptables -A INPUT -p ALL -i eth0 -d 192.168.1.1 -j ACCEPT

  iptables -A INPUT -p ALL -i eth0 -d 192.168.1.255 -j ACCEPT

  从LAN进入防火墙主机的DHCP网络数据包,予以放行,只有当防火墙担任DHCP时才使用:

  iptables -A INPUT -p UDP -i eth0 --dport 67 --sport 68 -j ACCEPT

  从WAN进入防火墙主机的所有网络数据包,检查是否为响应网络数据包,若是则予以放行:

  iptables -A INPUT -p ALL -d 10.25.0.7 -m state --state ESTABLISHED,RELATED -j ACCEPT

  限制过滤规则的检测频率为每分钟平均流量三个网络数据包(超过)上限的网络数据包将暂停检测,并将瞬间流量设定为一次最多处理三个网络数据包(超过上限的网络数据包将丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

  iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet dIEd:"

  FORWAD链,过滤要通过防火墙的网络数据包

  通过防火墙的TCP网络数据包必须先进行bad_tcp_pcakets过滤:

  iptables -A FORWAD -P TCP -J bad_tcp_packets

  从LAN要到WAN的网络数据包均放行:

  iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

  从WAN到LAN的网络数据包仅放行应答网络数据包:

  iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

  允许来自WAN的PING网络数据包,递送到局域网内的WWW服务器:

  iptables -A FORWARD -p ICMP -i eth1 -o eth0 -d 192.168.1.2 -j icmp_packets

  允许来自WAN的HTTP,HTTPS网络数据包,递送到局域网的WEB服务器:

  iptables -A FORWARD -p TCP -i eth1 -o eth0 -d 192.168.1.2 -m multiport --dport 80,443 -j allowed

  限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

  iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet dIEd:"

  OUTPUT链,过滤从防火墙送出的网络数据包。

  从防火墙送出的TCP网络数据包必须先进行bad_tcp_packets过滤:

  iptables -A OUTPUT -p TCP -j bad_tcp_packets

  对于过滤通过的TCP包和其他类型的包,均会放行:

  iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT

  iptables -A OUTPUT -p ALL -s 192.168.1.1 -j ACCEPT

  iptables -A OUTPUT -p ALL -s 10.25.0.7 -j ACCEPT

  限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

  iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet dIEd:"

  4.NAT配置

  1) 目的NAT(DNAT)

  DNAT在外部数据包进入防火墙后且路由之前进行,他把该数据包的目的地址改为内部局域网的地址,然后路由该数据包进入到局域网内部主机。

  举例:

  iptables -t nat -A PREROUTING -t tcp -d 10.25.0.7 --dport 80 -i eth1 -j DNAT --to 192.168.1.2:80

  说明:可以路由到达防火墙的访问80端口(即WWW服务器)的数据包的目的地址改为192.168.1.2。

  2) 源NAT(SNAT)

  SNAT主要用来更改从防火墙发出的数据包的源地址,使得来自局域网的私有地址通过防火墙后,更改为防火墙具有的外部地址,以便数据接收方接收数据后,能够找到正确的回复地址。

  举例:

  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to10.25.0.7

  说明:更改所有来自192.168.1.0/24的数据包的源IP地址为10.25.0.7

  注意:系统在经过路由及过滤等处理后,直到数据包要送出时,才进行SNAT,有一种SANT的特殊情况是IP伪装,通常建议在用拨号上网时使用,也就是在合法IP地址不固定的情况下使用。

  举例:

  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  说明:这样可以保证局域网内部的用户能够所有通过拨号服务器连接到INTERNET。

转载于:https://www.cnblogs.com/hanf/p/5840607.html

iptables规则表相关推荐

  1. iptables规则备份和恢复 firewalld服务

    2019独角兽企业重金招聘Python工程师标准>>> 10月29日任务 10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 fir ...

  2. 26期20180716 iptables规则备份恢复 firewalld zone

    7月16日任务 10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于servi ...

  3. linux iptables规则组成及用法

    这是iptables一条规则的基本组成,也是iptables定义规则的命令格式: 第一列是iptables命令: 第二列指定规则所在的表,常用的是nat和filter表: 第三列是命令,常用命令如下: ...

  4. linux系统中查看己设置iptables规则

    1.iptables -L 查看filter表的iptables规则,包括所有的链.filter表包含INPUT.OUTPUT.FORWARD三个规则链. 说明:-L是--list的简写,作用是列出规 ...

  5. iptables规则基本用法

    iptables规则基本语法 iptables [-t table] option argu table: 可选4表其中之一,raw,mangle,nat,filter,不指定默认为filter表 o ...

  6. firewalld/iptables防火墙维护和状态查询命令(防火墙重载,区域操作命令,开启服务或端口,堵塞端口,iptables规则添加和删除)

    文章目录 firewalld防火墙维护和状态查询命令 firewalld防火墙状态查询命令 firewalld防火墙重载配置命令 重新加载firewalld的配置 查询预定义信息命令 firewall ...

  7. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> 10.15 iptables filter表小案例 iptables 命令.语法总结 iptables-nvL //查看ipt ...

  8. iptables nat表含义_十(4)iptables语法、iptables filter表小案例、iptables nat表应用

    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚 ...

  9. iptables filter表案例/iptables nat表应用

    iptables filter表案例 iptables filter 表案例 创建一个iptables.sh脚本 [root@Ask-02 ~]# vim /usr/local/sbin/iptabl ...

最新文章

  1. 腾讯优图开源业界首个3D医疗影像大数据预训练模型
  2. Python构建基于elkan优化算法的K-Means聚类模型
  3. 推荐一些优秀的JavaScript开发框架
  4. 【pyradiomics学习】——安装pyradiomics以及简单示例
  5. 三联竟出了这么赞的杂志!各领域佼佼者畅所欲言,为少年建立思维判断体系!
  6. 使用ab对站点进行压力测试
  7. Flurry调查报告:图片和视频应用增长速度最快
  8. 为view设置虚线边框
  9. Memcache的 简介
  10. 金刚狼java,金刚狼3 【4K原盘】2017.2160p.BluRay.HEVC.TrueHD.7.1.Atmos-TERMiNAL 47GB
  11. 网页游戏开发基础——网页基础知识
  12. ubuntu重装显卡驱动全过程!所有选项的选择!
  13. 英尺英寸和厘米的换算_英尺米换算(英尺英寸与厘米换算器)
  14. P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)
  15. 计算机网络1-6合集
  16. python 导入自己写的类
  17. 页面之间的跳转方式和参数传递以及路由和生命周期
  18. 批处理获取系统安装时间/系统开机时间/电脑唤醒时间及开机使用时间(二)完成
  19. 求大神,Android4.4 自动连接蓝牙Ble不弹出输入PIN码的窗口解决办法?
  20. HDU 1686 [KMP]

热门文章

  1. 求3个数的最小公倍数算法之数论再细化
  2. CCF中学生计算机程序设计(入门篇)答案
  3. 数据分析师到底是干啥的?数据分析值不值得学
  4. 赛元科技EasyCodeCube的使用——新建一个工程
  5. 单片机开关控制LED的点亮及闪烁
  6. basic_string
  7. 树莓派4B分辨率设置
  8. ewomail 内部通讯_利用EwoMail一键搭建基于Linux 安全稳定的开源邮件系统
  9. c语言输出成绩表格制作教程,c语言输出表格用C语言怎么样输出表格
  10. 开源我的分形风暴2程序+一些漂亮的分形图