98、配置ftp服务器(vsftpd)
98.1、安装vsftpd:
1、安装:
[root@m01 ~]# yum install -y vsftpd #安装vsftpd
[root@m01 ~]# vsftpd -v #查看ftp的版本号
vsftpd: version 2.2.2
2、启动:
[root@m01 ~]# /etc/init.d/start
98.2、vsftp的匿名登录方式配置:
1、修改配置文件:
[root@m01 ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
#是否允许匿名ftp
local_enable=YES
#允许本地用户登录
write_enable=YES
#本地用户登录有写的权限
local_umask=022
#本地用户所写文件的权限
dirmessage_enable=YES
######################################################################
#使用者第一次进入一个目录时对该目录的说明;
#message_file=.message
#设置目录消息文件,可将要显示的信息写入该文件。默认值为.message。
######################################################################
xferlog_enable=YES
######################################################################
#启用上传/下载日志记录;
#xferlog_file=/var/log/xferlog
#设置日志文件名和路径,默认值为/var/log/xferlog
########################################################################
connect_from_port_20=NO
#指定FTP使用20端口进行数据传输,默认值为YES;
pasv_enable=YES
#ftp的被动工作模式,默认开启;
pasv_min_port=1024
#在PASV工作模式下,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0。
pasv_max_port=65536
#在PASV工作模式下,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0。
xferlog_std_format=YES
#日志格式
listen=YES
#设置vsftpd服务器以standalone模式运行,这是一种较好的方式;
pam_service_name=vsftpd
#设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
userlist_enable=YES
#########################################################################
#开启控制用户访问;
#当 userlist_enable=NO时user_list列表不生效,此时只有user_list和不在ftpusers里面的系统用户可以访问;
#当 userlist_enable=YES,userlist_deny=YES时此时只有不在ftpusers和user_list的系统用户可以访问(默认);
#当 userlist_enable=YES , userlist_deny=NO时此时只有user_list用户可以访问,只能用命令行进行访问;
#如果用户同时出现在ftpuser和user_list中,ftpuser的优先权大于user_list;
############################################################################
tcp_wrappers=YES
############################################################################
#设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制;
#如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的
#主机,是否允许访问该FTP服务器。
#比如:若要仅允许172.16.1.0网段的用户可以连接FTP服务器,则在需要在相应的配置文件中添加以下内容:
#[root@m01 vsftpd]# vim /etc/hosts.deny
#vsftpd:all:deny
#[root@m01 vsftpd]# vim /etc/hosts.allow
#vsftpd:172.16.1.0/255.255.255.0:allow
############################################################################
chroot_local_user=YES
#所有的用户都不能切换到其它的目录;
anon_upload_enable=YES
#允许匿名登入者有上传文件(非目录)的权限;
anon_mkdir_write_enable=YES
#允许匿名登入者有新增目录的权限;
anon_other_write_enable=YES
#允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名;
anon_umask=022
#匿名用户上传的文件权限为644,创建的目录权限为755
max_clients=100
#设置vsftpd允许的最大连接数为100,默认值为0,表示不受限制;
max_per_ip=100
#每个IP允许与FTP服务器同时建立连接的数目,默认值为0,表示不受限制;
data_connection_timeout=120
#设置建立FTP数据连接的超时时间,单位为秒,默认值为120。
idle_session_timeout=600
#设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒,默认值为300 。
local_max_rate=0
#本地用户使用的最大传输速度,单位为B/s,0 表示不限制速度,默认值为0;
anon_max_rate=0
#匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度,默认值为0;
anon_root=/var/ftp
############################################################################
#使用匿名登入时,所登入的目录。默认值为/var/ftp。
#注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。
#local_root=/home/$user:虚拟用户登录时所登录的ftp根目录默认是用户的家目录;
############################################################################
listen_port=21
#设置FTP服务器建立连接所监听的端口,默认值为21。
#listen_address=IP地址
#设置FTP服务器在指定的IP地址上侦听用户的FTP请求。
reverse_lookup_enable=NO
#解决查看ftp列表慢的问题;
2、chroot_local_user、chroot_list_enable介绍,默认中是不开启的:
chroot_list_enable=YES
#设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
#用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
chroot_local_user=YES
#所有的用户都不能切换到其它的目录;
3、修改共享目录权限:
vsftpd匿名用户所使用的虚拟用户是ftp,默认的目录是/var/ftp其权限必须是root的属组和属组,操作权限
是755,如果不按照要求就会报错不能够访问;
权限设置如下:
[root@m01 ~]# ls -ld /var/ftp
drwxr-xr-x 3 root root 4096 3月 7 11:50 /var/ftp
[root@m01 ~]# chown -R ftp:ftp /var/ftp/pup
[root@m01 ~]# ls -ld /var/ftp/pub/ #该目录方便匿名用户进行访问;
drwxr-xr-x 2 ftp ftp 4096 3月 7 15:32 /var/ftp/pub/
4、启动服务:
[root@m01 ~]# /etc/init.d/vsftbd restart
5、访问:
98.3、vsftp的用户密码登录方式配置:
1、创建用户并指定家目录:
[root@m01 ~]# mkdir /lc_ftpdir -p #创建用户的ftp目录
[root@m01 ~]# useradd -Ms /sbin/nologin lc_ftp #创建ftp虚拟用户
[root@m01 ~]# usermod -d /lc_ftpdir/ lc_ftp #指定ftp用户的家目录,即上传目录
[root@m01 ~]# tail -1 /etc/passwd
lc_ftp:x:503:504::/lc_ftpdir/:/sbin/nologin
[root@m01 ~]# chown -R lc_ftp:lc_ftp /lc_ftpdir #创建ftp目录
[root@m01 ~]# ls -ld /lc_ftpdir
drwxr-xr-x 4 lc_ftp lc_ftp 4096 3月 7 05:28 /lc_ftpdir
[root@m01 ~]# passwd lc_ftp #为ftp用户创建密码
2、修改配置文件:
配置文件和上"98.2、vsftp的匿名登录方式配置"配置文件一致,改动的地方如下:
anonymous_enable=YES #将YES改为NO
3、测试登录:
98.4、总结:
1、vsftpd匿名用户所使用的虚拟用户是ftp,默认的目录是/var/ftp其权限必须是root的属组和属组,操作权限
是755,如果不按照要求就会报错不能够访问;
权限设置如下:
[root@m01 ~]# ls -ld /var/ftp
drwxr-xr-x 3 root root 4096 3月 7 11:50 /var/ftp
[root@m01 ~]# chown -R ftp:ftp /var/ftp/pup
[root@m01 ~]# ls -ld /var/ftp/pub/ #该目录方便匿名用户进行访问;
drwxr-xr-x 2 ftp ftp 4096 3月 7 15:32 /var/ftp/pub/
2、用户使用密码登录的的ftp根目录是其家目录;
3、vsftpd主动模式和被动模式:
(1)主动FTP:
命令连接由客户端发起,数据连接由服务端发起。当开启一个FTP连接时,客户端打开两个任意的非特权本地"N>1024"和"N+1"
端口。客户端从"N>1024"端口连接到FTP服务器的命令"21"端口。然后客户端发送FTP PORT命令将"N+1"端口发送到FTP服务器。
接着服务器会从它自己的数据"20"端口连接到客户端指定的数据"N+1"端口传送数据。
(2)被动FTP:
命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开
启一个FTP连接时,客户端打开两个任意的非特权本地"N>1024"和"N+1"端口。客户端从"N>1024"端口连接到FTP服务器的命
令"21"端口。然后客户端发送FTP PASV命令到FTP服务器,服务器会开启一个任意的非特权"N>1024"端口并发送FTP命令将
"N>1024"端口发送给客户端。接着客户端会从数据"N+1"端口连接到服务端指定的数据"N>1024"端口传送数据。
(3)小结:
1)使用主动还是被动模式取决于FTP客户端,而不是服务器。
2)主动模式(PORT):
服务器向客户端敲门,然后客户端开门。
服务端使用21端口进行用户验证及管理,使用20端口进行数据传输;客户端使用1025-65535之间随机端口进行数据传输。
需要FTP服务器防火墙开启20、21端口;需要客户端防火墙开放提供给服务端连接的1024以上的端口号。
3)被动模式(PASV常用):
客户端向服务器敲门,然后服务器开门。
服务端使用21端口进行用户验证及管理,使用1025-65535之间随机端口进行数据传输。客户端使用1025-65535之间随机端口进行数据传输。
需要FTP服务器防火墙开启21端口,及提供给客户端连接的1024以上的端口号。
4)提示:
如果你是通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门,而且有时
候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口。
5)ftp的port和pasv模式最主要区别就是数据端口连接方式不同,ftp port模式只要开启服务器的21和20端口,而ftp pasv需要
开启服务器大于1024所有tcp端口和21端口。从网络安全的角度来看的话似乎ftp port模式更安全,而ftp pasv更不安全,那么为什
么RFC要在ftp port基础再制定一个ftp pasv模式呢,其实RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的,因为:
A、ftp port使用固定20端口进行传输数据,那么作为黑客很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式传输数
据很容易被黑客窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。
B、如果作为一个有经验的网络管理员就会发现使用ftp pasv方式会给网络安全很大隐患,那就是ftp pasv需要开启服务器tcp大于
1024所有端口,这样对服务器的安全保护是非常不利的。在此我建议两种方法来完善FTP Pasv模式的端口开放问题,第一种就是使
用弱洞扫描工具比如Xscan找出服务器开放的端口,然后使用acl把端口deny掉,另外一种方法就是使用具有状态检测防火墙开启
ftp pasv的端口。在ftp pasv模式下是使用状态检测防火墙比acl最大的好处就是使用状态检测防火墙只要开启ftp 21端口就可以了,
状态检测防火墙会检测客户端口连接ftp server的21命令端口,一但检测客户端使用ftp 21命令端口然后就会允许这个Session使用
ftp服务器大于1024端口,而其他方式是无法直接访问ftp服务器大于1024端口。通过状态检测防火墙就可以保证ftp 服务器大于
1024端口只对FTP Session开放了。目前像IPTable、ISA Server 2000/2004/2006、以及主流硬件防火墙都可以支持状态检测。
C、因此如果只是简单的为了文件共享,完全可以禁用PASV模式,解除开放大量端口的威胁,同时也为防火墙的设置带来便利。不幸
的是,FTP工具或者浏览器默认使用的都是PASV模式连接FTP服务器,因此必须要使vsftpd在开启了防火墙的情况下,也能够支持PASV
模式进行数据访问。
4、开启主动模式的方法:
connect_from_port_20=YES
pasv_enable=NO
5、开启被动模式的方法:
connect_from_port_20=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=65536
6、VSFTP中文说明: