作者:陈伟明
联系 : QQ 942923305 | 微信 toby942923305
E-mail: toby2chen@hotmail.com
==================================
服务器
操作系统:CentOS6.5(64位)
==================================
修订时间:
10:42 2015-1-20 星期二
11:15 2015-2-4 星期三
==================================
安装:
#yum -y install vsftpd* 安装ftp服务器
随机开启:
# chkconfig vsftpd on
配置文件所在位置
/etc/vsftpd/
#采用虚拟用户登录,这样安全
我们映射本地用户为www,若没有就新建一个
#groupadd www
# useradd -g www www
若要不能用于ssh登录,可以 # useradd -g www -s /sbin/nologin www ,我这里暂时不要这么严格
这里默认家目录是 /home/www
新建虚拟用户
用户名 hqm 密码 hqm
用户名 lgp 密码 lgp
# vi /etc/vsftpd/vsftpd_login.txt 一行用一行密码,奇数行是用户名, 偶数行是用户密码
hqm
hqm
lgp
lgp
:wq 保存
把文件转换成系统能识别的密码:
会用到db4
# rpm -qa|grep db4 查一下有没有安装
[root@dev log]# rpm -qa|grep db4
db4-utils-4.7.25-18.el6_4.x86_64
db4-4.7.25-18.el6_4.x86_64
我这里显示安装,若没有安装,就装一下
# yum -y install db4-utils db4
# db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db
# chmod 600 /etc/vsftpd/vsftpd_login.db
配置PAM
# vi /etc/pam.d/vsftpd 其它行注释, 最后加两
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login#不需要加上.db
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login#不需要加上.db
最终如下:
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
:wq 保存
===============================================
修改vsftp 主配置文件
Local_enable=YES
local_root=/var/virtual
guest_enable=YES开启虚拟帐号登录
guest_username=virtual设置系统帐号
user_config_dir=/etc/vsftpd/config
配置主配置文件/etc/vsftpd/vsftpd.conf添加虚拟帐号的共同设置并添加user_config_dir字段,定义虚拟帐号的配置文件目录
chroot_local_user=YES将虚拟用户限制在家目录中
建立与虚拟帐号同名的配置文件并添加相应的配置字段
# mkdir -p /etc/vsftpd/config
# touch /etc/vsftpd/config/hqm 权限配置文件
# touch /etc/vsftpd/config/lgp 权限配置文件
# vi /etc/vsftpd/config/hqm
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
anon_umask=002
:wq 保存
# vi /etc/vsftpd/config/lgp
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
anon_umask=002
总掩码 777 - 反掩码 022 = 你要的掩码 755 设上传好的文件权限公式
:wq 保存
日志:
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
# touch /var/log/xferlog
# touch /var/log/vsftpd.log
#vi /etc/vsftpd/vsftpd.conf 最终文件如下
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_root=/home/www #我这里所有用户是上传到这个目录,若每个虚拟用户上传不同目录,就把这项放到 每个用户的权限文件中
write_enable=YES
local_umask=002
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
chroot_local_user=YES
#virtual user
guest_enable=YES
guest_username=www
user_config_dir=/etc/vsftpd/config
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
listen_port=21
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
:wq 保存
====================================
重启生效
# service vsftpd restart
防火墙:
# vi /etc/sysconfig/iptables 添加以下规则
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10090:10100 -j ACCEPT
:wq 保存
# service iptables restart 生效
客户端测试
查看日志:
# tail /var/log/xferlog
Tue Jan 20 09:54:00 2015 1 192.168.1.60 2 /test.txt a _ i g lgp ftp 0 * c
得到最后谁修改了文件
==================================================================
以后增加用户
以test (testpass 密码)为例:
# echo test >>/etc/vsftpd/vsftpd_login.txt 用户名
# echo testpass>>/etc/vsftpd/vsftpd_login.txt 用户名
# db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db 生成密码文件
# vi /etc/vsftpd/config/test 权限配置文件
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
:wq 保存
# service vsftpd restart 重启生效
============================
安全说明:
启用/禁止匿名用户访问。
anonymous_enable=YES/NO
允许本地用户登录并允许其上传文件。
local_enable=YES
write_enable=YES
将本地用户锁定在主目录中,不允许切换到上一级目录中
chroot_local_user=YES
匿名和本地用户限速(单位byte)
anon_max_rate=数字
local_max_rate=数字
禁止某些用户通过ftp登录服务器。如果设置了local_enable=YES,那么所有的用户包括root也能通过ftp登录服务器,出于安全考虑,需要对某些用户进行限制。在vsftpd.conf中有三个选项控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用户名就不允许登录ftp服务器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用户名允许登录ftp服务器。我们只要在/etc目录下创建vsftpd.user_list文件,文件内容为允许登录或禁止登录的用户名,每个用户一行。
禁止用户通过FTP修改文件或文件夹的权限。
chmod_enable=NO(
设置本地用户上传的文件或文件夹的umask值(默认为077)
local_umask=022
最多同时允许100个客户连接
max_clients=100
每个ip地址最多允许开3个线程
max_per_ip=3
只监听来访问192.168.0.2(适用本机多网卡、多IP的情况)的FTP服务请求
listen_address=192.168.0.2
阅读(191) | 评论(0) | 转发(0) |