搭建Linux-VSFTP
Linux搭建vsftp。所谓vsftp,就是very secure FTP daemon。在Linux上搭建FTP,可以选择proftpd、pureftpd、和vsftpd等软件。
在vsftp创建虚拟的ftp用户。所谓虚拟用户,就是不在系统中存在,而且在不同的虚拟用户有不同的权限,例如UP用户只能上传,不能修改下载;DOWN用户只能下载,不能上传修改。
以红帽企业版RHEL5为例,搭建虚拟用户的vsftp。设置静态IP地址。
安装软件:
rpm -Uvh /media/cdrom/Server/vsftpd-2.0.5-10.el5.i386.rpm
Vsftp的配置文件在
/etc/vsftpd/vsftpd.conf
我们可以复制一份配置文件作备份。因为原文件太多#了,cat一个新配置文件去掉所有#。
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
cat /etc/vsftpd/vsftpd.conf.bak | grep -v ^# >>/etc/vsftpd/vsftpd.conf
然后就可以修改了
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //是否启用匿名
local_enable=YES //是否本地用户登陆
write_enable=YES //是否写入权限(上传,删除等需开)
local_umask=022 //本地用户上传文件默认权限掩码值
dirmessage_enable=YES //用户切换进入目录时显示
xferlog_enable=YES //启用日志
connect_from_port_20=YES //从20端口连接
xferlog_std_format=YES //标志日志格式
listen=YES //监听
pam_service_name=vsftpd //用户认证PAM,位于/etc/pam.d/对应的文件
userlist_enable=YES //启用userlist用户列表
tcp_wrappers=YES //启用TCP_Wrappers主机访问控制。
启用匿名访问,则登陆时不需要用户名密码。
关闭匿名访问,启用userlist列表,则需要输入userlist里的用户和相应密码。
通常登陆ftp后,需要禁锢用户在其登陆目录下,否则将会乱窜其他目录。在配置文件中添加一项:
chroot_local_user=YES
如果只监听一个地址,则修改配置文件:
listen_address=192.168.1.1
Listen_port=2121
使用FTP被动模式,则修改配置文件:
pasv_enable=YES //允许被动模式连接
pase_mis_port=12306 //指定被动连接最小端口
pasv_max_port=23061 //制定被动连接最大端口
限制FTP连接并发、传输速率等,则修改配置文件:
max_clients=20 //限制并发客户最大20人
max_per_ip=2 //限制每个IP最大连接2个
anan_max_rate=50000 //限制匿名传输率为50kb/s
local_max_rate=100000 //限制本地用户传输率为200kb/s
虚拟用户的FTP服务。
建立虚拟用户账号数据库。使用Berkeley DB格式的数据库文件来存放虚拟用户账号。需要用到db_load工具,游db4-utils软件包提供。
rpm -Uvh /media/cdrom/Server/db4-utils-4.3.29-9.fc6.i386.rpm
建立用户名密码,单数行为用户,双数行为密码!!
vim /etc/vsftpd/vusers.list
up
up
down
down
保存退出
进入vsftp目录并创建Berkeley DB格式数据库文件。
cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db
通过file vusers.db查看到如下内容:
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
修改账号安全性,将文件权限改为600。
chmod 600 /etc/vsftpd/vuser.*
添加虚拟用户映射账号,创建FTP根目录:
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot/
为虚拟用户建立PAM认证文件:
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
保存退出
为不同虚拟用户建立独立的配置文件:
mkdir /etc/vsftpd/vusers_dir
mkdir /var/ftproot/up
确保上传成功,修改up的权限
chmod a+x /var/ftproot/up
mkdir /var/ftproot/down
配置up用户的信息
vim /etc/vsftpd/vusers_dir/up
local_root=/var/ftproot/up //up用户的ftp目录
anon_mkdir_write_enable=YES //有写入权限
anon_upload_enable=YES //有上传权限
download_enable=NO //没有下载权限
anon_umask=022 //上传后文件掩码
保存退出
配置down用户的信息
vim /etc/vsftpd/vusers_dir/down
local_root=/var/ftproot/down //down用户的ftp目录
download_enable=YES //下载权限
保存退出
修改vsftp配置文件,添加虚拟用户支持:
vim /etc/vsftpd/vsftpd.conf
..... //略
anonymous_enable=NO //关闭匿名登陆
guest_enable=YES //启用用户映射功能
guest_username=virtual //制定映射的系统用户名
pam_service_name=vsftpd.vu //制定新的PAM认证文件
user_config_dir=/etc/vsftpd/vusers_dir //虚拟用户配置文件
保存退出
启动vsftpd服务
service vsftpd start
如果访问不到,则将防火墙、selinux都关闭掉。
service iptables stop
setenforce 0
验证上传下载:
用up用户登录,并上传。
下载却失败
打开也失败
down用户下载
上传却失败。
至此,up和down用户仅存在数据库中,并没有真正存在系统里的用户。所以安全级别提高了,而且配置起来也简单,可以随心而欲,这就是VSFTP。