今天收到一个需求,开放服务器的一个目录来上传文件.开始想做个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 #文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
内容如下
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
cenos 6.5安装VSFTPD服务器:http://www.linuxdiyf.com/linux/14678.html
搭建Linux vsFTPd服务器:http://www.linuxdiyf.com/linux/11352.html
CentOS 5.5编译安装vsftpd-2.3.4配置虚拟用户全攻略:http://www.linuxdiyf.com/linux/13089.html
CentOS 6.4下安装vsftpd:http://www.linuxdiyf.com/linux/11463.html
Linux下安装vsftpd详解 安全的ftp:http://www.linuxdiyf.com/linux/859.html