7月9号 第7天 ----iptables学习
由于最近频繁使用Linux,所以仔细的学习了一下Linux防火墙的相关知识,首先我们了解一些基本的知识。
当我们的计算机接入网络之后,就有许许多多的数据包进入,离开,或者经过我们的网络,而防火墙就是用来控制这些数据包的经过的。这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入 INPUT 链,从我们的计算机发出的数据包会经过 OUTPUT 链,如果一台计算机做一个网络的网关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计算机即相当于一个路由器),可能会有很多数据经过这台计算机,那么这些数据包必经 FORWARD链, FORWARD 链即数据转发链。
下面我们来分析一些Linux防火墙iptables是如何工作的,假如我们要访问一个网站,我们会对该域名进行一个请求,这些数据包就会经过OUTPUT链,在请求发出之前,Linuxd的内核会在OUTPUT链中检查有没有相应的规则适合这个数据包,如果没有特定的规则,OUTPUT链还有默认的规则,有 ACCEPT(接受),REJECT(拒绝),DROP(丢弃,直到超时)。如果得到允许,请求就发出了。
# iptables –L [-t filter]
这个命令是用来显示当前防火墙的配置命令。通过显示的结果我们可以知道,iptables有三条链分别是 INPUT,OUTPUT,FORWARD。
其中INPUT 是外部数据要经过我们主机的第一个关卡。
OUTPUT是你的主机数据向外传输的关卡
FORWARD 是转发,在NAT时才会用到
Linux的默认防火墙策略是 默认全部允许,拒绝特别的
我们可以使用
# iptables –P[INPUT/OUTPUT/FORWARD] [ACCEPT/DROP]更改防火墙的配置
#iptables –[X/Z/F/L]
其中: X:清除链
F:清除规则
Z 将链的计数浏览清零
基本配置语法
iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface] [-p tcp,udp.icmp,all] [-s ip/nerwork] [--sport ports] [-d ip/netword] [--dport ports] [-j ACCEPT DROP]
其中A是添加,I是插入 ,io指的是数据要进入或者出去说要经过的端口,p是你说要指定的协议,-s指源地址,--sport来源端口,-d和-s相识,只不过他指的是目标地址,也可以是IP域名和网络, --dport指的是目标端口。 -j执行参数
例子:
1 如我要来自己 l0 接口的数据全部接受,我们可以写成这样:
iptables -A INPUT -i lo -j ACCEPT
2 如果我们想接受 192.168.2.6 这个 IP 地址传来的数据我们可以这样写
iptablse -A INPUT -i eth1 -p tcp -s 192.168.2.6 -j ACCEPT
3 如果我们要拒绝来自己 192.168.2.0/24 这个网的 telnet 连接
iptablse -A INPUT -i eth1 -p udp -s 192.168.2.0/24 --sport 23 –j DROP