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规则学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记(三十三)iptables备份firewalld

linux lamp学习笔记

Linux学习笔记第七周五次课(3月23日)

学习笔记第三十二节课

iptables学习笔记

Linux学习笔记第八周三次课(3月28日)