iptables-配置防火墙规则

参考资料:《鸟哥的Linux私房菜服务器架设篇(第三版)》

引言

网络安全根本原因可能是由于信息不对称引起的。有些主机管理员,不知道自己开放了哪些服务,哪些是不安全的,哪些服务有漏洞,为什么不能因为好记而不使用弱密码。如果所有计算机使用者都知道的话,那么所有主机使用者都是网络安全专家了。

防火墙不能防止所有病毒、木马、漏洞利用,但是它的作用是减少攻击面。

举个例子,如果有一栋屋子,没有窗户,没有门,那么就没有人可以在不破坏屋子的情况下进去。

如果这栋屋子,所有窗户和门都开着,那么进入屋子就比关闭状态更简单了。

防火墙就是起到了将不安全的窗户和门都关上的作用。看完这篇文章,我们将会学到如何根据自己的需求配置iptables,使得linux主机更加安全。

netfilter与iptables

netfilter是linux自带的防火墙机制,叫做封包过滤。
封包过滤的意思就是通过数据包的各种数据(来源IP、数据包类型tcp\udp\icmp等),来决定是否让数据包通过。

iptables是一个应用封包过滤机制,下达我们的指令的软件。

iptables拥有三个默认的table, filter、nat、mangle

filter是最常用的,针对本机的table。

input、output、filter

在iptables中,分为输入规则input、输出规则output,顾名思义,就是在接受数据包时候哪种数据包允许,哪种不允许,这就是输入规则input,以此类推output。

可以使用以下命令查看已有的规则:

1
2
iptables -nL INPUT
iptables -nL OUTPUT

上图中的Chain可以理解为规则链,就像一条链子一样,规则是依次向下进行判断的。

举个例子,第一条规则是允许所有ip的数据包,第二条规则是不允许ip为10.10.10.1的数据包。

由于规则是依次向下判断,那么规则一允许所有数据包,第二条规则就会无效。

清除规则

1
2
3
4
iptables -F
iptables -X
iptables -Z
清除本机防火墙所有规则

定义规则

1
2
3
4
5
6
7
8
9
iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP ]
-t 设置table,不加参数,默认为filter
-P 是policy的意思,设置策略。分别为输入,输出,转发策略
ACCEPT,DROP 接受或丢弃数据包

---

iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]

案例介绍

1
2
3
4
5
6
7
8
iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP

-A 新增一条INPUT输入规则
-p 指定协议为tcp的数据包
--destination-port 指定连接端口为13327
-d 127.0.0.1 指定IP为127.0.0.1
加上!的意思是不允许——指定IP不是127.0.0.1
-j DROP 符合上述条件的数据包,丢弃这些数据包

查看已有规则

iptables-save