iptables是一个强大的防火墙工具,用于配置Linux内核内置的IP信息包过滤系统。它允许用户定义规则来控制进出系统的网络流量,从而实现网络安全管理和数据包过滤功能。iptables主要基于netfilter框架,后者是Linux内核的一部分,负责处理所有与网络相关的操作。
iptables表链知识
表(Tables)
iptables 中的规则被分为不同的表,每个表有不同的处理目标。常见的表包括:
filter:这是默认的表,用于处理网络流量的过滤。 nat:用于网络地址转换(NAT),处理源地址和目标地址的转换。 mangle:用于修改数据包的某些属性,如TOS(服务类型)字段。 raw:用于处理数据包的原始数据,通常用于调试目的。
链(Chains)
每个表中包含多个链,每条链包含一组规则。常见的链包括:
INPUT:处理进入本地系统的数据包。 FORWARD:处理经过本地系统转发的数据包。 OUTPUT:处理从本地系统发出的数据包。 PREROUTING:在路由决策之前处理数据包,用于NAT和Mangle表。 POSTROUTING:在路由决策之后处理数据包,用于NAT和Mangle表。
目标(Targets)
当数据包与规则匹配时,该规则所指定的目标决定了下一步的动作。一些常见的目标包括:
ACCEPT:允许数据包通过。 DROP:丢弃数据包而不做任何响应。 REJECT:拒绝数据包并通过发送一个错误消息来告知发送方。 LOG:记录数据包的信息到系统日志。 RETURN:结束当前链的执行并返回调用链继续执行后续规则。
规则(Rules)
每条规则定义了如何处理匹配特定条件的数据包。规则包括匹配条件和相应的动作(如ACCEPT、DROP、REJECT等)。例如,一条规则可能指定了如果一个数据包是从某个特定 IP 地址发送来的,并且目标端口为80 (HTTP),那么就接受这个数据包 (-j ACCEPT)。
iptables基础
基本语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j目标动作或跳转]
参数详解
-t<表>:指定要操纵的表;
__-A:__向规则链末尾中添加,追加条目(append);
-I:向规则链的开头(或者指定序号)中插入条目;
__-L:__显示规则链中已有的条目(list);
__-D:__从规则链中删除条目(delete);
__-F:__清除规则链中已有的条目,若位置定规则序号,则默认清空所有(flush);
__-p:__指定要匹配的数据包协议类型;
__-s:__指定要匹配的数据包源ip地址;
__-i<网络接口>:__指定数据包进入本机的网络接口;
-__o<网络接口>:__指定数据包要离开本机所使用的网络接口。
处理动作
ACCEPT通过-j参数指定,允许数据包通过。
DROP直接丢弃数据包,不做处理,这时候客户端会感觉自己的请求沉入大海,等过了超时时间才会有反应。
REJECT拒绝数据包,会给一个拒绝的响应。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。
规则的匹配条件
通用匹配(协议,地址,接口),可以独立使用 。
隐含匹配 --sport/--dport,需要协议的前提。
iptables高级模块
iprange模块:-m iprange:指定IP地址范围,-src-range:指定源IP的范围,-dst-range:指定目标IP的范围。
__multiport模块:__多端口匹配,该模块需与-p tcp和-p udp联合使用,-source-ports或--sports:最多允许使用15个端口,-destination-prots或-dprots:目标端口,-ports:仅匹配端口,源端口或端口均可生效。
iptables防火墙规则的保存
service iptables save 它能把规则自动保存在/etc/sysconfig/iptables中。
常用的规则命令
iptables -D INPUT 1
#删除INPUT链的第一条规则
iptables -L
#查看iptables规则
iptables -L -vn
#查看iptables规则(详细信息)
iptables -I INPUT -p icmp -j DROP
#服务器禁止ping操作
iptables -I INPUT -s 192.168.122.1 -j REJECT
#拒绝源192.168.122.1主机访问
iptables -I INPUT -s 192.168.122.0/24 -j DROP
#禁止源192.168.122.0/24网段访问
iptables -I INPUT -s 192.168.100.254/24 -p tcp --dport 80 -j ACCEPT
#允许源地址是192.168.100.254/24的机器访问80端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT
#允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#允许FTP服务的20端口
iptables -A INPUT -j REJECT
#禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT
#禁止其他未允许的规则访问
总结
iptables集成在非常多的Linux发行版中, 虽然现在已经有新的防火墙firewalld,但iptables使用仍然非常广泛,对运维人员来说,是必须掌握并且随时需要使用的技能。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...