详解IPTABLES

详解IPTABLES,第1张

概述详解IPTABLESIptables 是Linux 内核集成的 IP 信息包过滤系统。如果Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。IPTABLES的简单介绍防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),是用来管理netfilter的,它使得配置防火墙变得简单。IPTABLES的规则:Iptables的规则链分为三种:输入、转发和输出。输入——这条链用来过滤目的地址是本机的连接。例如,如果一个用户试图使用SSH登陆到你的PC服务器,iptables会首先匹配其IP地址和端口到iptables的输入链规则。转发——这条链用来过滤目的地址和源地址都不是本机的连接。例如,路由器收到的绝大数数据均需要转发给其它主机。如果你的系统没有开启类似于路由器的功能,如NATing,你就不需要使用这条链。输出——这条链用来过滤源地址是本机的连接。例如,当你尝试ping www.baidu.com时,iptables会检查输出链中与ping和baidu.com相关的规则,然后决定允许还是拒绝你的连接请求。规则实战:清空所有规则:iptables -F添加22端口可以正常连接:iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT设置默认规则:一般设置默认规则有两种思想:一种是都接受,然后重点拒绝;另一种是都拒绝,然后重点放行。iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP开放具体的端口:iptables -A INPUT -p tcp -m tcp --dport 3304 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --sport 3304 -j ACCEPT(如果OUTPUT默认是DROP)iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT (如果OUTPUT默认是DROP,下面的一样)支持ping:iptables -A INPUT -p icmp -j ACCEPTiptables -A OUTPUT -p icmp -j ACCEPT禁止pingiptables -A INPUT -p icmp -j REJECTiptables -A OUTPUT -p icmp -j REJECT具体到IP地址:只接受192.168.1.55的包:iptables -A INPUT -s 192.168.1.55 -p icmp -j ACCEPT (默认是DROP)iptables -A OUTPUT -s 192.168.1.23 -p icmp -j ACCEPTIPTABLES规则的相关 *** 作:iptables -F :清空规则iptables -X :删除用户自定义的规则iptables -L :查看规则iptables -L -n :以数字的形式显示规则iptables -L --line-numbers :查看规则的编号(适用于删除规则)iptables -D chain num :删除编号是NUM的规则扩展规则:多端口:iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.23 -p tcp -m multiport --dport 22,80,3306 -j ACCEPTiptables -I OUTPUT -d 192.168.1.0/24 -s 192.168.1.23 -p tcp -m multiport --sport 22,80,3306 -j ACCEPTiprange扩展:iptables -I OUTPUT -s 192.168.1.23 -p tcp -m multiport --sport 21,22,80 -m iprange --dst-range 192.168.1.10-192.168.1.20 -j ACCEPTiptables -I INPUT -d 192.168.1.23 -p tcp -m multiport --dport 21,22,80 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPTstring扩展:检查报文中出现的字符串。--algo {bm|kmp}--string pattermiptables -I OUTPUT -m string --algo bm --string 'movie' -j REJECTtime扩展:根据报文对时间范围进行匹配。--datestart --datestop--timestart --timestop--monthdays --weekdaysiptables -I INPUT -d 192.168.1.23 -p tcp --dport 80 -m time --timestart 23:00 --timestop 6:00 -j REJECTconnlimit扩展:根据客户端IP做并发连接数量匹配--connlimit-upto n :连接数量小于n--connlimit-above n :连接数量大于n--connlimit-saddr :源地址转换--connlimit-daddr :目标地址转换iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECTlimit扩展:基于收发报文速率做检查--limit rate/[second|minute|hour|day]--limit-burst numberiptables -A INPUT -d 192.168.1.23 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 10/minute -j ACCEPT防止DOS攻击:iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limite-burst 100 -j ACCEPTstate扩展:根据连接跟踪机制检查连接的状态。查看连接追踪功能所能容纳的最大连接个数:/proc/sys/net/nf_conntrack_max查看追踪到的连接:/proc/net/nf_conntrack不同协议或者连接类型的时长:/proc/sys/net/netfilter/..NEW:新发出的请求,连接追踪模板中不存在相关的信息条目,因此识别为第一次发出来的请求ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态RELATED: 相关的连接,如:FTP协议命令连接与数理连接之间的关系INVALIED:无法识别的连接iptables -I INPUT -d 192.168.1.23 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -I OUTPUT -d 192.168.1.23 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPTiptables -I INPUT 2 -d 192.168.1.23 -p tcp -m multiport --dport 22,80 -m state --state NEW -j ACCEPT问题:如何开放被动模式的FTP服务?1) 装载FTP追踪时专用的模块modprobe nf_conntrack_ftp2) 放行请求报文命令连接:NEW , ESTABLISHED数据连接:RELATED , ESTABLISHEDiptables -A INPUT -d local_IP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -d loacl_IP -p tcp -m state --state RELATED,ESTABISHED -j ACCEPT3) 放行响应报文:ESTABLISHEDiptables -A OUTPUT -s local_IP -p tcp -m state --state ESTABLISHED -j ACCEPT4)保存及重载规则:iptables-save > file 保存规则至指定规则iptables-restore < file 指定文件中重载规则转发规则:开启iptables forward转发功能echo 1 >/proc/sys/net/ipv4/ip_forwardnat: SNAT:只修改请求报文的源地址DNAT:只修改请求报文的目标地址 内--》外 外--》内nat表:PREROUTING(DNAT)-->OUTPUT-->POSTROUTING(SNAT)将本机的8080端口转发至其他主机,主机IP:192.168.1.12,目标主机IP和端口:192.168.1.13:8088,规则如下:iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088iptables -t nat -A POSTROUTNG -p tcp --dport 8088 -j SNAT --to-source 192.168.1.12

<h1 ID="详解iptables">详解IPtableS

Iptables 是linux 内核集成的 IP 信息包过滤系统。如果linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),是用来管理netfilter的,它使得配置防火墙变得简单。

Iptables的规则链分为三种:输入、转发和输出。

输入——这条链用来过滤目的地址是本机的连接。例如,如果一个用户试图使用SSH登陆到你的PC服务器,iptables会首先匹配其IP地址和端口到iptables的输入链规则。转发——这条链用来过滤目的地址和源地址都不是本机的连接。例如,路由器收到的绝大数数据均需要转发给其它主机。如果你的系统没有开启类似于路由器的功能,如NATing,你就不需要使用这条链。输出——这条链用来过滤源地址是本机的连接。例如,当你尝试Ping www.baIDu.com时,iptables会检查输出链中与Ping和baIDu.com相关的规则,然后决定允许还是拒绝你的连接请求。

清空所有规则:

 iptables -F

添加22端口可以正常连接:

  iptables -A input -p tcp -m tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT

设置默认规则:
一般设置默认规则有两种思想:一种是都接受,然后重点拒绝;另一种是都拒绝,然后重点放行。

  iptables -P input DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP

开放具体的端口:

  iptables -A input -p tcp -m tcp --dport 3304 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 3304 -j ACCEPT(如果OUTPUT默认是DROP)

iptables -A input -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT (如果OUTPUT默认是DROP,下面的一样)

支持Ping:

 iptables -A input -p icmp -j ACCEPT  iptables -A OUTPUT -p icmp -j ACCEPT

禁止Ping

 iptables -A input -p icmp -j REJECT  iptables -A OUTPUT -p icmp -j REJECT

具体到IP地址:
只接受192.168.1.55的包:

 iptables -A input -s 192.168.1.55 -p icmp -j ACCEPT (默认是DROP) iptables -A OUTPUT -s 192.168.1.23 -p icmp -j ACCEPT 

IPtableS规则的相关 *** 作:

 iptables -F :清空规则 iptables -X :删除用户自定义的规则 iptables -L :查看规则 iptables -L -n :以数字的形式显示规则 iptables -L --line-numbers :查看规则的编号(适用于删除规则) iptables -D chain num :删除编号是NUM的规则

扩展规则:

多端口:

iptables -I input -s 192.168.1.0/24 -d 192.168.1.23 -p tcp -m multiport --dport 22,80,3306 -j ACCEPTiptables -I OUTPUT -d 192.168.1.0/24 -s 192.168.1.23 -p tcp -m multiport --sport 22,3306 -j ACCEPT

iprange扩展:

iptables -I OUTPUT -s 192.168.1.23 -p tcp -m multiport --sport 21,22,80 -m iprange --dst-range 192.168.1.10-192.168.1.20 -j ACCEPTiptables -I input -d 192.168.1.23 -p tcp -m multiport --dport 21,80 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT

string扩展:检查报文中出现的字符串。

--algo {bm|kmp}--string patterm

iptables -I OUTPUT -m string --algo bm --string 'movIE' -j REJECT

time扩展:根据报文对时间范围进行匹配。

--datestart --datestop--timestart --timestop--monthdays --weekdays

iptables -I input -d 192.168.1.23 -p tcp --dport 80 -m time --timestart 23:00 --timestop 6:00 -j REJECT

connlimit扩展:根据客户端IP做并发连接数量匹配

--connlimit-upto n :连接数量小于n--connlimit-above n :连接数量大于n--connlimit-saddr :源地址转换--connlimit-daddr :目标地址转换

iptables -I input -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT

limit扩展:基于收发报文速率做检查

--limit rate/[second|minute|hour|day]--limit-burst number 

iptables -A input -d 192.168.1.23 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 10/minute -j ACCEPT
防止DOS攻击:
iptables -A input -p tcp --dport 80 -m limit --limit 25/minute --limite-burst 100 -j ACCEPT

state扩展:根据连接跟踪机制检查连接的状态。

查看连接追踪功能所能容纳的最大连接个数:/proc/sys/net/nf_conntrack_max 查看追踪到的连接:/proc/net/nf_conntrack不同协议或者连接类型的时长:/proc/sys/net/netfilter/..

NEW:新发出的请求,连接追踪模板中不存在相关的信息条目,因此识别为第一次发出来的请求
ESTABliSHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态
RELATED: 相关的连接,如:FTP协议命令连接与数理连接之间的关系
INVALIED:无法识别的连接

iptables -I input -d 192.168.1.23 -p tcp --dport 22 -m state --state NEW,ESTABliSHED -j ACCEPT
iptables -I OUTPUT -d 192.168.1.23 -p tcp --sport 22 -m state --state ESTABliSHED -j ACCEPT
iptables -I input 2 -d 192.168.1.23 -p tcp -m multiport --dport 22,80 -m state --state NEW -j ACCEPT

问题:如何开放被动模式的FTP服务?

装载FTP追踪时专用的模块
modprobe nf_conntrack_ftp放行请求报文
命令连接:NEW,ESTABliSHED
数据连接:RELATED,ESTABliSHED
iptables -A input -d local_IP -p tcp --dport 21 -m state --state NEW,ESTABliSHED -j ACCEPT
iptables -A input -d loacl_IP -p tcp -m state --state RELATED,ESTABISHED -j ACCEPT放行响应报文:ESTABliSHED
iptables -A OUTPUT -s local_IP -p tcp -m state --state ESTABliSHED -j ACCEPT
4)保存及重载规则:
iptables-save > file 保存规则至指定规则
iptables-restore < file 指定文件中重载规则

转发规则:

    开启iptables forward转发功能 echo 1 >/proc/sys/net/ipv4/ip_forward

nat: SNAT:只修改请求报文的源地址
DNAT:只修改请求报文的目标地址 内--》外 外--》内

nat表:PREROUTING(DNAT)-->OUTPUT-->POSTROUTING(SNAT)
将本机的8080端口转发至其他主机,主机IP:192.168.1.12,目标主机IP和端口:192.168.1.13:8088,规则如下:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088
iptables -t nat -A POSTROUTNG -p tcp --dport 8088 -j SNAT --to-source 192.168.1.12

总结

以上是内存溢出为你收集整理的详解IPTABLES全部内容,希望文章能够帮你解决详解IPTABLES所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1050572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存