实验目标
使用iptables命令配置IPTables防火墙,使FTP服务器可用。
注:这里主要针对FTP的被动访问进行实验,主动访问只是数据端口更改为20,本实验主要是通过浏览器来访问,固采用被动访问方式;如若更改为主动访问,可选用其它FTP实验机,如CuteFTP
实验环境
目标机:debian10(GNU/Linux)、安装了iptables
实验机:deepin15(GNU/Linux)、chrome浏览器
实验原理
IPtables是复杂的,它集成到linux内核中。用户通过IPtables,可以对进出你的计算机的数据包进行过滤。通过IPtables命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。
Iptables的所有命令都是以IPtables开头,其总体的命令结构如下:
IPtables [-t table] command [match] [target/jump]
-
-t table
表示当前的策略属于哪个table。一共有三种table:mangle、filter和nat。由于IPtables的主要工作是过滤进出本地网络适配器的数据包,因此,如果一条策略是关于过滤的,那么在缺省情况下,“-t filter”是可以省略的,而mangle和nat是一定要注明的,在实际的应用环境当中,mangle几乎是用不到。
这些表如下:
-
filter
这是默认的表,包含了内建的链INPUT( 处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。
-
nat
这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
-
mangle
这个表用来对指定的包进行修改。它有两个内建规则:
-
PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。
-
-
command
指定IPtables 对提交的规则要做什么样的操作
下面是IPtables可用的command:
-
命令 -A,--append
范例 IPtables –A INPUT……
添加规则。
-
命令 -D,--delete
范例 IPtables –D INPUT 8,IPtables –D FORWARD –p tcp –s 192.168.1.12 –j ACCEPT
从所选的链中删除规则,有两种方法:一种是以编号来表示被删除的规则,另一种是以整条的规则来匹配策略。
-
命令 -R,--replace
范例 IPtables –R FORWARD 2 –p tcp –s 192.168.1.0 –j ACCEPT
替换相应位置的策略,这时有一点需要注意,如果源或目的地址是以名字而不是以IP地址表示的,如果解析出的IP地址多于一个,那么这条命令是失效的。
-
命令 -I,--insert
范例 IPtables –I FORWARD 2 –p tcp –s 192.168.1.0 –j ACCEPT
这个命令和上面一个命令只差一个参数,而不同之处在于这个命令是在相应的位置前面插入一条命令,而不是替换。
-
命令 -L,--list
范例 IPtables –t nat –L,IPtables –L INPUT
列出当前内存空间的策略。
-
命令 -F,flush
范例 IPtables –F,IPtables –t nat –F
清空所选的链的配置规则。
-
命令 -N,--new-chain
范例 IPtables –N tcp_allowed
添加新的链,在默认情况下,IPtables有ACCEPT、DROP、REJECT、LOG、REDIRECT等,如果希望对数据包做定制的处理,可以自己定义新的链。
-
命令 -X,--delete-chain
范例 IPtables –X tcp_allowed
这条命令用于删除自定义的链。
-
命令 -P,--pollicy
范例 IPtables –P INPUT DROP
为链设置缺省的target,通常为ACCEPT和DROP,可以理解为防火墙的缺省策略:除非特定的被运行,其它的都被禁止或除非特定的被禁止,其它的都被允许。
-
-
match
在IPtables 的一条策略中,如何匹配一个数据包是非常关键的。
matche大致可以归为五类:
- 第一类是generic matches(通用的匹配),适用于所有的规则
- 第二类是TCP matches,顾名思义,这只能用于TCP包
- 第三类是UDP matches,当然它只能用在UDP包上了
- 第四类是ICMP matches ,针对ICMP包的
- 第五类比较特殊,针对的是状态(state),所有者(owner)和访问的频率限制(limit)等
实验步骤
打开目标机,进入Ubuntu系统,安装vsftpd服务:
启动ftp服务:
sudo service vsftpd start
-
在实验机上通过IE或Chrome访问FTP服务器,本FTP服务器的IP是192.168.3.44,服务器可访问时如下:
-
设置防火墙规则
如图所示为防火墙设置默认规则,即先清空所有规则,再将OUTPUT链设置为默认丢弃
此时无法访问ftp
(其实不只ftp不能用了,我连ssh和ping都不能用了,基本所有服务都断了)
再针对 FTP服务进行放行,添加防火墙规则如图所示
-
实验结果如图
实验思考
使用CuteFTP软件,设置为主动访问方式,设定防火墙规则,使FTP服务器可访问,使用iptables设定防火墙规则,实现防火墙实验
-
针对OUTPUT链进行相关规则实验
将上面的过程21端口改成20端口即可
iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
-
改变实验环境,针对FORWARD链进行相关规则实验
将上面的
OUTPUT
关键字改成FORWARD
关键字即可iptables -A FORWARD -p tcp --dport 20 -j ACCEPT iptables -A FORWARD -p tcp --sport 20 -j ACCEPT