一:基本知识
1:虚拟用户:与系统无关联,不能登入系统,只能访问FTP服务器
2:vsftp的服务进程是vsftpd
3:vsftpd的配置文件是/etc/vsftpd/vsftpd.conf .
4:vsftpd的用户文件是/etc/vsftpd/ftpusers
5:vsftpd的用户文件是/etc/vsftpd/user_list
6:推荐使用虚拟用户登入vs-FTP服务器
二:安装
1.检查是否安装过vsftpd
rpm -qa vsftpd
安装:
(1) yum -y install vsftpd lftp
(2) 关闭iptables 和 selinux
/etc/init.d/iptables stop
临时关闭selinux
setenforce 0
永久性的关闭selinux
vim /etc/selinux/config
修改为 ————》SELINUX=disabled
(3) 创建虚拟用户文本文件,添加用户及密码
cd /etc/vsftpd
touch vuser.txt
备注:奇数行是用户名,偶数行是密码。例如:
alix
123456
(4) 生成虚拟数据库文件(需使用到db_load)
yum -y install db4-utils db4-devel db4-4.3
db-load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
(5) 配置PAM文件,用来验证客户端
vim /etc/pam.d/vsftpd
authrequiredpam_userdb.sodb=/etc/vsftpd/vuser
accountrequiredpam_userdb.sodb=/etc/vsftpd/vuser
(6)修改虚拟数据库文件的权限
chmod700 /etc/vsftpd/vuser.db
(7) 增加一个系统用户vuser,用于匿名用户的映射。
mkdir /data
useradd -d /data vuser
chown vuser.vuser /data
usermod -s /sbin/nologinvuser
(8) 修改主配置文件vsftpd.conf,添加:
guest_enable=YES##激活虚拟用户
guest_uaername=vuser##把虚拟用户绑定为系统账户vuser
pam_service_name=vuser##使用pam认证
(9) 添加虚拟用户的配置文件
vim /etc/vsftpd/vsftpd.conf
添加:user_config_dir=/etc/vsftpd/vsftpd_user_conf
(10) 创建vsftpd_user_conf目录
mkdir /etc/vsftpd/vsftpd_user_conf
(11) 设置虚拟用户配置文件,与虚拟用户名相同
touch /etc/vsftpd/vsftpd_user_conf/testuser
(12) 编辑虚拟用户配置文件
vim /etc/vsftpd/vsftpd_user_conf/testuser
anon_world_readable_only=NO ###浏览FTP目录和下载
anon_upload_enable=YES ###允许上传
anon_mkdir_write_enable=YES###建立和删除目录
anon_other_write_enable=YES####改名和删除文件
local_root=/ftpdir/ #### 指定虚拟用户在系统用户下面的路径,限制虚拟用户的家目录,虚拟用户登录后的主目录。
备注:一定要检查后面是否有空格。
(13)启动
/etc/init.d/vsftpd restart
三。添加新的虚拟用户
添加虚拟用户
vim /etc/vsftpd/vuser.txt
web2
123456
生成库文件
db-load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
编辑虚拟用户的配置文件
touch /etc/vsftpd/vsftpd_user_conf/web2
vim /etc/vsftpd/vsftpd_user_conf/web2
anon_world_readable_only=NO ###浏览FTP目录和下载
anon_upload_enable=YES ###允许上传
anon_mkdir_write_enable=YES###建立和删除目录
anon_other_write_enable=YES####改名和删除文件
local_root=/ftpdir/ #### 指定虚拟用户在系统用户下面的路径,限制虚拟用户的家目录,虚拟用户登录后的主目录。
创建用户家目录
mkdir /ftpdir/web2
修改权限
chown -R vuser.vuser /ftpdir/web2
加载vsftpd
/etc/init.d/vsftpd reload
本地连接:
ftp
(需要把vsftpd.conf 里的ssl关了)
lftp
(在 /etc/lftp.cong里添加 set ssl:verify-certificate no)
四、配置ssl
1、安装包
apt-get -y install openssl
2、创建一个证书(时间365天)并填写相关一些信息
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem
Generating a 2048 bit RSA private key
..........+++
.............+++
writing new private key to '/etc/ssl/certs/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:aaa
Organizational Unit Name (eg, section) []:aaa
Common Name (e.g. server FQDN or YOUR name) []:aaa
Email Address []:
3、修改权限
chmod 0400 /etc/ssl/certs/vsftpd.pem
4、ssl具体配置/etc/vsftpd.conf最后添加
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
5、配置说明
ssl_enable=YES#开启vsftpd对ssl协议的支持
ssl_sslv2=YES #支持SSL v2 protocol
ssl_sslv3=YES #支持SSL v3 protocol
ssl_tlsv1=YES #支持TSL v1
rsa_cert_file=/etc/ssl/certs/vsftpd.pem #存放证书地方
6、重启服务
/etc/init.d/vsftpd restart
Stopping FTP server: vsftpd.
Starting FTP server: vsftpd.
7、测试
1)lftp fileftp:'redhat'@192.168.1.124
ls: Fatal error: Certificate verification: Not trusted
解决在/etc/lftp.conf文件中添加1行到最后
set ssl:verify-certificate no
再登录一次就OK了
2)查看日志
Sat Aug 1 13:52:23 2015 [pid 2] CONNECT: Client "192.168.1.124"
Sat Aug 1 13:52:23 2015 [pid 2] DEBUG: Client "192.168.1.124", "Connection terminated without SSL shutdown - buggy client?"
Sat Aug 1 13:56:25 2015 [pid 2] CONNECT: Client "192.168.1.120"
Sat Aug 1 13:56:25 2015 [pid 1] [fileftp] OK LOGIN: Client "192.168.1.120"
限制用户只访问指定目录,可以通过chroot来实现,chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。为何使用 chroot在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:增加了系统的安全性,限制了用户的权力;在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。建立一个与原系统隔离的系统目录结构,方便用户的开发;使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。这个简单,你只要将你不想要其它用户访问的目录修改为root用户即可。使用chown命令。比如你不希望/etc目录被其它用户访问,可是以root用户登录,执行命令:
chown
root
/etc
-R
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)