今天收到一个需求,开放服务器的一个目录来上传文件.开始想做个chroot环境,但会产生很多文件(bin,etc等),便放弃了,最终选择用VSFTP.
网络拓扑如下:
1,安装vsftp,db4,db4-utils
如果没epel源,先添加下
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
rpm -Uvh epel-release-7-5.noarch.rpm
yum install vsftp db4 db4-utils -y
systemctl enable vsftpd
2.配置虚拟用户给vsftp
添加用户名密码,第一行写用户,第二行写密码
vi /etc/vsftpd/vuser_passwd.txt
生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句:
auth required pam_userdb.so db=
/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=
/etc/vsftpd/vuser_passwd
创建虚拟用户配置文件
mkdir
/etc/vsftpd/vuser_conf/
vi
/etc/vsftpd/vuser_conf/test
内容如下
local_root=
/ftp/www
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
3.设置目录权限
确定selinux关闭
mkdir /ftp/www #创建目录
chmod R 755 /ftp
chmod R 777 /ftp/www
4.创建SSL证书
查看vsftp是否支持SSL,有libssl.so即可.
ldd `which vsftpd`|grep ssl
生成SSL证书:
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
chmod 400 vsftpd.pem
cp vsftpd.pem /etc/ssl/certs/
5.配置vsftp
配置文件主要内容如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
chroot_list_file=/etc/vsftpd/vuser_passwd.txt
allow_writeable_chroot=YES
listen_port=2121 #把默认21端口改为其他端口
pasv_enable=YES #使用pasv模式
pasv_min_port=10000
pasv_max_port=10100
pasv_promiscuous=YES
ssl_enable=YES #使用ssl加密
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
配置完成后,启动vsftp
systemctl start vsftpd
6.配置防火墙及NAT
在vsftp服务器上开放2121,10000:10100端口
vi /etc/sysconfig/iptables,添加如下规则
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2121 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10000:10100 -j ACCEPT
在linux网关服务器上做vsftp的NAT映射
nat链添加如下规则
-A PREROUTING -p tcp -d 10.10.10.10 --dport 2121 -j DNAT --to-destination 192.168.1.116
-A PREROUTING -p tcp -d 10.10.10.10 --dport 10000:10100 -j DNAT --to-destination 192.168.1.116
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 20 -j SNAT --to 10.10.10.10
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 2121 -j SNAT --to 10.10.10.10
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 10000:10100 -j SNAT --to 10.10.10.10
配置完成后重启下iptables
7.测试使用
使用ftp工具连接vsftp服务器,比如FileZilla
下载链接
http://ftp-idc.pconline.com.cn/d31e7654b5f340018866472a9a75e5a9/pub/download/201010/FileZilla_3.14.1_win32.zip
8.参考
http://www.pythontab.com/html/2014/linuxkaiyuan_0722/832.html
http://www.myhack58.com/Article/sort099/sort0101/2013/37644.htm
http://bbs.chinaunix.net/thread-1448316-1-1.html