上一篇介绍过基本原理、安装步骤和基本的配置选项,现在我们设置一个有具休要求的服务器
公司有四个部门,要求每个部门有单独的立文件夹(完全权限),四个部门分别是:行政部、业务部、生产部、PMC部,行政部、业务部只有对本部门文件有读、写、执行权限,而生产部、PMC部则可以互读文件,且有一个公共文件夹供交流
建立对应的用户名组:
groupadd ftpguest
useradd -g ftpguest -d /var/ftp/pub -s /sbin/nologin ftpguest_pmc
useradd -g ftpguest -d /var/ftp/pub -s /sbin/nologin ftpguest_hr
useradd -g ftpguest -d /var/ftp/pub -s /sbin/nologin ftpguest_pro
useradd -g ftpguest -d /var/ftp/pub -s /sbin/nologin ftpguest_sal
useradd -g ftpguest -d /var/ftp/pub -s /sbin/nologin ftpguest_man
建立虚拟用户名这密码(逐行填写,单行为用户名,双行为密码):
vi /etv/vsftpd/vsftp_login.txt
pmc //用户名为pmc
pmc //pmc用户对应的密码为pmc
hr
hr
pro
pro
sal
sal
生成虚拟用户数据库文件:
db_load -T -t hash -f /etc/vsftpd/vsftpd_log.txt /etc/vsftpd/vsftpd_log.db
修改数据库权限(提高安全性):
chomd 600 /etc/vsftpd/vsftpd_log.db
指明用户论证数据库的路径:
vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_log
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_log
注:别把用户数据库名字或路径啊,要不就登录不成功的
生成x509证书
openssl req -new -x509 -nodes -out /etc/vsftpd/vsftpd.pem -keyout /etc/vsftpd/vsftpd.pem
看看有没有产生一个证书
编辑主配置文件:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份原配置文件
touch /etc/vsftpd/vsftpd.conf //重新生成配置文件
vi /etc/vsftpd/vsftpd.conf //打开配置文件
anonymous_enable=no
local_enable=yes
write_enable=yes
listen=yes
listen_address=192.168.2.126
ascii_upload_enable=yes
ascii_download_enable=yes
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
idle_session_timeout=60
max_clients=250
max_per_ip=200
dirmessage_enable=yes
message_file=.message
ftpd_banner=welcome to ftp server
xferlog_enable=yes
xferlog_std_format=yes
xferlog_file=/var/log/vsftpd.log
ls_recurse_enable=NO
userlist_enable=yes
userlist_deny=no
userlist_file=/etc/vsftpd/user_list
chroot_local_user=yes
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
tcp_wrappers=yes
pam_service_name=vsftpd.vu
guest_enable=yes
ssl_enable=yes
ssl_sslv2=yes
rsa_cert_file=/etc/vsftpd/vsftpd.pem //指明证书路径
user_config_dir=/etc/vsftpd/vsftp_user_config
先把
ssl_enable=yes
ssl_sslv2=yes
rsa_cert_file=/etc/vsftpd/vsftpd.pem
注释掉,待测试完成再加上SSL测试(方便测试排错)
创建/etc/vsftpd/chroot_list,只允许指定用户离开家目录
在/etc/vsftpd/user_list里加入可以登录的用户名:pmc hr sal pro
在/etc/hosts.allow里加入vsftpd:192.168.2.0/255.255.255.0:allow
在/etc/hosts.deny里加入vsftpd:all:deny
mkdir /etc/vsftpd/vsftpd_user_config //建立用户配置文件夹
cd /etc/vsftpd/vsftp_user_config
touch pmc hr sal pro 建立相应的文件夹
vi pmc
guest_username=ftpguest_pmc
anon_upload_enable=yes
anon_world_readable_only=no
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
local_root=/var/ftp/pub
vi /etc/vsftpd/vsftp_user_config/pro
guest_username=ftpguest_pro
anon_upload_enable=yes
anon_world_readable_only=no
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
local_root=/var/ftp/pub
vi /etc/vsftpd/vsftp_user_config
guest_username=ftpguest_hr
anon_upload_enable=yes
anon_world_readable_only=no
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
local_root=/var/ftp/pub/hr
vi /etc/vsftpd/vsftp_user_config
guest_username=ftpguest_sal
anon_upload_enable=yes
anon_world_readable_only=no
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
local_root=/var/ftp/pub/sal
其它像hr、sal可以加入virtual_use_local_privs=yes,让虚拟用户跟系统用户一样的权限,777或666
chown ftpguest_man:ftpguest /var/ftp/pub
chmod 750 /var/ftp/pub
mkdir /var/ftp/pub/pmc
chown ftpguest_pmc:ftpguest /var/ftp/pub/pmc
chmod 750 /var/ftp/pub/pmc
mkdir /var/ftp/pub/hr
chown ftpguest_hr:ftpguest /var/ftp/pub/hr
chmod 700 /var/ftp/pub/hr
mkdir /var/ftp/pub/pro
chown ftpguest_pro:ftpguest /var/ftp/pub/pro
chmod 750 /var/ftp/pub/pro
mkdir /var/ftp/pub/sal
chown ftpguest_sal:ftpguest /var/ftp/pub/sal
chmod 700 /var/ftp/pub/sal
mkdir /var/ftp/pub/public
chown ftpguest_man:ftpguest /var/ftp/pub/public
chmod 770 /var/ftp/pub/public
测试:
先用PMC登录
进入PMC目录并创建PMC文件夹
进入hr目录
进不去的,这个题的要求啊,它只能访问Public、Pmc、Pro三个文件夹
再换hr登录试试看
这个目录是空的,我们创建目录试试看
也没有问题,再删除试试看
删除也没有问题,说明我们的实验成功了,其它的就不测试啦!
下面再测试ssl:
ssl_enable=yes
ssl_sslv2=yes
rsa_cert_file=/etc/vsftpd/vsftpd.pem
前面的注释去掉,如图:
重启:
现在在IE里就不能登录了,提示必须用加密方式连接
我们用可以加密会话的FlashFXP登录,登录前先设置用SSL连接
再输入IP地址登录,第一次登录会出现以下服务端证书相关信息
这不是我们生成证书的时候填的是一样的吗?呵呵,点允许&保存
这个就连接上了,具体测试就不测了,有兴趣的朋友试试,像pmc用户是不可能连接sal目录的:
测试中的错误:
这样的错误因为/etc/hosts.deny拒绝了,可能是明确拒绝,也可能是hosts.allow允许设置错误,而hosts.deny生效,一般错误为vsftpd:192.168.2.0/255.255.255.0:allow写成vsftpd:192.168.2.0/24:allow
这样的错误是因为服务端用了ssl加密,而Windows客户端cmd.exe不支持加密
这样的错误是因为userlist_enable=yes, userlist_deny=no时,只有userlist_file=/etc/vsftpd/user_list明确指出的用户才能登录,当把userlist_deny=yes时,userlist_file=/etc/vsftpd/user_list里列出的用户不能登录,还有一个文件限制用户登录的,叫ftpusers,只要把限制的用户写入此文件即可
这是密码无效出错,有可能是用户或密码错误,或根本就无此用户(可能是用户数据库写错了)
忘记创建chroot_list文件,这是最低级的错误
完成时间:2009-06-04 21
:34
转载于:https://blog.51cto.com/wuzhuangyan/163063