LINUX iptables规则学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX iptables规则学习笔记相关的知识,希望对你有一定的参考价值。
防火墙策略
防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。
用的比较多个功能有3个:
1.filter 定义允许或者不允许的
2.nat 定义地址转换的
3.mangle功能:修改报文原数据
iptables是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。
iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规 则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的 主要工作就是添加、修改和删除这些规则。
注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。
规则表之间的优先顺序 Raw——mangle——nat——filter
语法
iptables(选项)(参数)
选项
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;在当前链的最后新增一个规则
-D num:从规则链中删除条目;明确指定删除第几条规则
-I num:向规则链中插入条目;把当前规则插入为第几条
-R num :替换规则链中的条目;Replays替换/修改第几条规则
-L num:显示规则链中已有的条目;
-F:清除规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;-p tcp|udp --dport 80
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;eth0 流入一般用在INPUT和PREROUTING上
-o<网络接口>:指定数据包要离开本机所使用的网络接口。eth0 流出一般在OUTPUT和POSTROUTING上
iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
表名包括
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则
动作包括
ACCEPT:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。
案例
允许所有IP访问
iptables -A INPUT -j ACCEPT
禁止所有网络访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
开放指定IP访问
iptables -A INPUT -s 192.167.3.4 -j ACCEPT
拒绝指定IP访问
iptables -A INPUT -s 192.167.3.4 -j REJECT
允许指定源IP访问指定目标IP
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -j ACCEPT
允许指定源IP访问指定目标IP 以及目标端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 22 -j ACCEPT
指定连续的端口--dport 8080-9000 不能指定多个非连续端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 8080-9000 -j ACCEPT
-p tcp:TCP协议的扩展
--dport 21 指定目标端口
--sport 指定源端口
-p udp:UDP协议的扩展
--dport:指定目标端口
--sport:指定源端口
-p icmp:icmp数据报文的扩展
--icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
允许本地回环接口(即运行本机访问本机)
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
允许所有网络访问22|80|ftp21|ftp20端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
允许指定IP网络访问22|80|ftp21|ftp20端口
iptables -A INPUT -s ip -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 20 -j ACCEPT
禁止指定IP访问22|80|ftp21|ftp20端口,屏蔽某个网络段:123.0.0.0/8|16|24
iptables -A INPUT -s ip -p tcp --dport 22 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 80 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 21 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 20 -j REJECT|DROP
规则保存
service iptables save
查看防火墙规则:
iptables -L -n -v
iptables -S
删除已添加的iptables规则
清空防火墙策略
iptabes -F
将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 10.1.6.41 10.1.6.129 tcp dpt:22
2 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 2
控制规则的存放以及开启
注意:你所定义的所有内容,当你重启的时候都会失效,要想我们能够生效,需要使用一个命令将它保存起来
1.service iptables save 命令
它会保存在/etc/sysconfig/iptables这个文件中
2.iptables-save 命令
iptables-save > /etc/sysconfig/iptables
3.iptables-restore 命令
开机的时候,它会自动加载/etc/sysconfig/iptabels
如果开机不能加载或者没有加载,而你想让一个自己写的配置文件(假设为iptables.2)手动生效的话:
iptables-restore < /etc/sysconfig/iptables.2
则完成了将iptables中定义的规则手动生效
以上是关于LINUX iptables规则学习笔记的主要内容,如果未能解决你的问题,请参考以下文章