iptables配置FTP服务
来源:互联网 发布:java 并发控制 编辑:程序博客网 时间:2024/04/28 00:12
参考文章:
http://os.51cto.com/art/201108/285209.htm
http://www.ahlinux.com/server/ftp/16979.html
http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd.php
一、FTP的主动模式和被动模式
这部分可以参考《鸟哥的Linux私房菜-服务器篇》或者是网上其他人写的一些介绍,基本都介绍得很详细。
主动模式交互的过程如上图所示,
1、客户端会随机取一个大于 1024 以上的端口 (port AA) 来与 FTP 服务器端的 port 21 建立连接,这个过程需要正常建立TCP连接的三次握手。建立连接后客户端便可以透过这个连接来对 FTP 服务器下达命令。
2、通知 FTP 服务器端使用 active 且告知连接的端口号
FTP 服务器的 21 端口主要用在命令的下达,但是当牵涉到数据流时,就不是使用这个连接了。 客户端在需要数据的情况下,会告知服务器端要用什么方式来建立连接,如果是主动式 (active) 连接时, 客户端会先随机启用一个端口 (图 21.1-1 当中的 port BB) ,且透过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的连接;
3、FTP 服务器主动向客户端发起连接
FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个端口向客户端的 port BB 发起连接, 这个连接当然也会经过TCP的三次握手。此时 FTP 的客户端与服务器端共会建立两条连接,分别用在命令的下达与数据的传递。 而预设 FTP 服务器端使用的主动连接端口就是 port 20。
被动模式的交互过程如上图所示:
1、用户与服务器建立命令信道:
同样的需要建立命令通道,透过三次握手就可以建立起这个通道了。
2、客户端发出 PASV 的连接要求:
当有使用数据信道的指令时,客户端可透过命令通道发出 PASV 的被动式连接要求 (Passive 的缩写), 并等待服务器的回应;
3、FTP 服务器启动数据端口,并通知客户端连接:
如果你的 FTP 服务器是能够处理被动式连接的,此时 FTP 服务器会先启动一个端口在监听。 这个端口号码可能是随机的,也可以自定义某一范围的埠口,端看你的 FTP 服务器软件而定。 然后你的 FTP 服务器会透过命令通道告知客户端该已经启动的端口 (图中的 port PASV), 并等待客户端的连接。
4、客户端随机取用大于 1024 的端口进行连接:
然后你的客户端会随机取用一个大于 1024 的端口号来对主机的 port PASV 进行连接。 如果一切都顺利的话,那么你的 FTP 数据就可以透过 port BB 及 port PASV 来传送了。
二、iptables的配置
使用的操作系统是:Red Hat Enterprise Linux Server release 6.2 (Santiago)
FTP软件是vsftp
服务端:192.168.1.10
客户端:192.168.1.12
配置iptables的策略是在服务端进行配置,客户端默认没有启用iptables
1、主动模式下,配置策略
vi /etc/sysconfig/iptables
-A INPUT -s 192.168.1.12 -p tcp --dport 21 -j ACCEPT
-A INPUT -s 192.168.1.12 -p tcp --dport 20 -j ACCEPT
2、被动模式下,配置策略
被动模式下,客户端会随机起一个大于1024的端口去跟客户端的一个大于1024的端口建立数据通道的连接,根据这个原理我们可以这样配置iptables:
vi /etc/sysconfig/iptables
-A INPUT -s 192.168.1.12 -p tcp --dport 21 -j ACCEPT
-A INPUT -s 192.168.1.12 -p tcp --dport 1024: -j ACCEPT#重启iptables服务
service iptables restart
但是这样存在严重安全问题,这样的策略相当于将服务端大于1024的端口都向客户端开放了。利用vsftp对端口的配置,我们可以这样解决这个问题。
#指定固定的端口范围来建立FTP被动式连接的数据通道,(亲测最小端口和最大端口可以一样,但是开放的端口范围太小的话,会影响同时使用FTP服务的人数)
vi /etc/vsftpd/vsftpd.conf
pasv_min_port=65400
pasv_max_port=65410
#重启vsftp服务
service vsftpd restart
#配置iptables
vi /etc/sysconfig/iptables
-A INPUT -s 192.168.1.12 -p tcp --dport 21 -j ACCEPT
-A INPUT -s 192.168.1.12 -p tcp --dport 65400:65410 -j ACCEPT3、利用状态防火墙,配置主被动模式都能用的策略
在iptables上一共有四种状态,分别被称为NEW、ESTABLISHED、INVALID、RELATED,这四种状态对于TCP、UDP、ICMP三种协议均有效。像FTP这种需要用不同的端口建立两次连接的情况,特别适合用状态防火墙。
#在iptables加入ip_nat_ftp和ip_conntrack_ftp模块
vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
vi /etc/sysconfig/iptables
-A INPUT -s 192.168.1.12 -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables配置FTP服务
- Centos配置iptables开放ftp服务
- iptables放行ftp服务
- FTP服务器iptables的配置
- 为开放ftp配置iptables
- 为开放ftp配置iptables
- 为开放ftp配置iptables
- ftp服务在iptables防火墙设置
- 设置iptables允许ssh、http、ftp服务
- ftp服务配置
- LINUX-FTP服务配置
- Linux FTP服务配置
- linux ftp服务配置
- ftp服务的配置
- solaris配置FTP服务
- linux FTP服务配置
- Linux FTP服务配置
- linux FTP服务配置
- 如何利用一个数据库中间件扩展MySQL集群——kingshard使用指南
- c#获取当前年的周数,当前月的天数
- [游戏记录]滚动的天空
- mysql执行show processlist unauthenticated user 解决方法
- Erlang启动过程分析
- iptables配置FTP服务
- 【C++】 一维数组的初始化
- XML——写出XML文档(XSLT+StAX)
- 234,SDWebImage的使用
- aptitude
- 申请邓白氏码
- the path to become a better android developer is starting up
- How to overlay an icon over existing shell objects
- CSU 1228 ACM小组的数字游戏