Linux下配置vsftpd和虚拟用户 成功
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
上面这10个问题都解决那么高级安全的虚拟用户就不成问题
问题1:检查vsftpd 驱动是否安装正常
rpm –qa | grep vsftpd 检查是否安装了vsftpd 驱动程序
问题2 确认安装PAM服务相关部件
pam-devel*******.rpm
rpm –qa | grep pam* 检查一下是否安装了这个
rpm –ivh pam-devel ********.rpm 把这1个安装上OK 这里一般不需要
问题3:创建一个虚拟库的文件叫什么都可以放在那里都行
vim /etc/vsftpd/www 创建了一个www的文件
|
|
问题4:需要生成一个数据库文件才可以(命令如下)
db_load 这个命令可能没有 需要到光盘或ISO找到以下安装包
db_load –T –t hash –f /etc/vsftpd/www /etc/vsftpd/userwww.db
这里的文件名我随便用的 没什么关系的
问题5 创建一个用户 用来做虚拟用户使用 (这个用户一定不能设置密码)
useradd -d /web -s /sbin/nologin ftpserver 创建了一个叫ftpserver的用户
问题6 修改vsftpd.conf文件
首先我们在修改文件之前先要做个备份cp vsftpd.conf vsftpd.bak
vim /etc/vsftpd/vsftpd.conf(具体配置请参照我的vsftpd.conf文件)
|
|
设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf 代表用户的权限目录
问题7 为你文本库的用户和账号创建目录
我选择的目录在 /web/
mkdir /web/admin888
mkdir /web/usernameftp
mkdir /web/dongxiaolei
mkdir /web/liujian
别望了这个否则没有写入权限 chown –R ftpserver.ftpserver /web
问题8创建通过验证虚拟用的文件
Cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.vu
复制一份验证文件
vim /etc/pam.d/vsftpd.vu 把上面的全部注释
在下面加入这两行
auth
account required
注意:如果是64位的Linux RedHat 请注意就不是上面的写法了
auth
account required /lib64/security/pam_userdb.so
问题9 给虚拟用户配置权限文件
因为你在vsftpd.conf文件中有这一条语句
user_config_dir=/etc/vsftpd/vconf 代表用户的权限目录
cd /etc/vsftpd/mkdir vconf 创建vconf目录
接下来给每个用户都要创建一个权限的文件 这个文件要和虚拟用户名称相同
首先我们先创建一个虚拟用户的模版文件叫做vsftpd.mb
vim /etc/vsftpd/vsftpd.mb 这个文件是个模版文件没有什么意思
然后我们可以执行命令
cp vsftpd.mb admin888 cp vsftpd.mb ftp009
cp vsftpd.mb gaoyuhaha
cp vsftpd.mb dongdaoli
这样我拥有了所有的用户权限配置文件 复制完成后要编辑每个用户的文件
local_root=/web/相对的用户目录/ 修改对应的目录名 及个人的相关权限
问题10 检查配置所有虚拟用户所使用的文件权限
ll /web/ 在次检查一个这下面的文件是否 有权限
检查/etc/pam.d/vsftpd.vu 这个文件是否输入正确
检查/etc/vsftpd/vsftpd.conf 中的验证文件是不是vsftpd.vu
检查每一个虚拟用户的的目录是否设置正确
检查每一个虚拟用户的权限文件里的验证文件是不是vsftpd.vu
检查一下防火墙是否关闭或设置成功
如果以上都已经搞定 那么
service vsftpd start
chkconfig vsftpd on
ftp 127.0.0.1
|
这样就表示成功了
在我前面的配置中都是把防墙关掉的 还有把 SElinux也是关掉的 这里就是要把这里的这些全部打开 在配置
启动防火墙 iptables 我先声明(我这里的防火墙配置只针对FTP的主动模式)
service iptables start 启动防火墙
chkconfig iptables on 开机启动
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -m state --state INVALID -j DROP
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -P INPUT DROP
iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 20:21 -j ACCEPT
iptables -t filter -P OUTPUT DROP
service iptables save
SElinux 之 FTP配置 先简介绍一下
getsebool -a|grep ftp 查询一下 sestatus
//如果你想匿名共享文件
chcon -R -t public_content_t /var/ftp
//如果你想建立一个目录,你可以上传文件
chcon -t public_content_rw_t /var/ftp/incoming
你还必须打开布尔allow_ftpd_anon_write
setsebool -P allow_ftpd_anon_write=1
/如果你是一个ftpd服务器这台机器,并希望允许用户访问他们的家庭
setsebool -P ftp_home_dir 1
//如果你想运行ftpd作为守护进程
setsebool -P ftpd_is_daemon 1
//你可以禁用系统保护的ftpd守护进程
setsebool -P ftpd_disable_trans 1
如果你启动了SElinux 的话要执行以下的几条命令才可以成功
//setsebool使用-P参数,无需每次开机都输入这个命令
# setsebool -P allow_ftpd_anon_write on 具有上传权限
# setsebool -P ftp_home_dir 1 开启访问目录
# chcon –R -t public_content_rw_t /web 配置写的权限
# service vsftpd restart 重起vsftpd服务器
这才是一个完整的vsftpd的安全配置
Vsftpd.conf的介绍
监听地址与控制端口
listen_address=192.168.168.168 设定监听的IP地址
listen_port=21 设定端口号
主动模式
port_enable=YES 开启主动模式
connect_from_port_20=YES 开启20端口
#ftp_date_port=6666 如果有需要还可以自己设定端口但需要把上面的20端口注释掉
被动模式
pasv_enable=YES 启动被动模式
pasv_min_port=30000 设定被动模式以多少端口开始 如果是0则表示随机
pasv_max_port=30999 设定被动模式以多少端口结束 如果是0则表示随机
ASCII传送模式
这两个都选择YES表示可以使用ASCII传送模式
ascii_upload_enable=YES 说实在的我也不是很明白这个有什么用
ascii_download_enable=YES
超时选项
idle_session_timeout=600 空闲用户会话的超时时间,如果超出这个时间没有数据的传送或命令的输入,就会强迫断开 点位为秒600秒后断开
data_connection_timeout=120 定义数据传送过程中被阴塞的最长时间
accept_timeout=60 接受建立连接的超时设定。单位为秒,默认为60秒
connect_timeout=60 响应主动方式的数据联机的超时设定,单位为秒,默认为60秒
负载控制
max_clients=10 独立模式下并发连接数
max_per_ip=5 定义了每个IP地址大的并发连接数
anon_max_rate=1000 设定匿名用户的最大数据传输速度以Byte/s 1000 = 1kb
local_max_rate=1000 设定本地用户的最大数据传输速度以Byte/s 1000 = 1kb
匿名用户设置
anonymous_enable=NO 控制是否允许匿名用户登录。YES是允许,NO不允许,默认值为YES
no_anon_password=NO 控制匿名用户登录时是否需要密码。YES不需要,NO需要,默认值为NO
ftp_username=ftp 指定匿名用户与本地的哪个账号相对应,该用户的家目录即为匿名用户访问FTP服务器的时根目录,默认是ftp
anon_root=/var/ftp 配置匿名用户的目录 默认为/var/ftp
anon_world_readable_only=YES 允许匿名用户下载 默认为YES。
anon_upload_enable=YES 允许匿名用户上传 默认为YES。要上传还需要两个参数 write_enable=YES 和 目录权限
anon_mkdir_write_enable=YES 允许匿名用户创建目录 默认为YES。
chown_uploads=YES 指定匿名用户上传的所有权赋予chown_username指定的用户
chown_username=whoever 指定赋予匿名用户上传权限的用户不要用root
本地用户设置
local_enable=YES 是否允许本地用户登录
chroot_local_user=YES 锁定用户在自身目录下
chroot_list_user=YES 表示可切换到家目录以外的目录
local_umask=022 权限设定为 777 - 022 = 755 的权限
local_root=/web 指定本地用户登录vsftpd服务器时切换到的目录
虚拟用户设置
guest_enable=YES 启动虚拟用户
guest_username=ftpserver 设定虚拟用户
virtual_use_local_privs=YES 虚拟用户是否继承ftpserver的权限
user_config_dir=/etc/vsftpd/vconf 设置虚拟用户的权限目录
用户登录控制
ftpd_banner=Welcome to blah FTP service ^_^ 登录时的欢迎界面
tcp_wrappers=YES 在vsftpd中使用TCP_wrappers远程访问控制机制,默认为YES
文件操作控制
download_enable=YES 是否允许下载 默认是YES
chown_uploads=YES 指定匿名用户上传的所有权赋予chown_username指定的用户
chown_username=root 指定赋予匿名用户上传权限的用户不要用root
write_enable=YES 客户登录哦允许使用删除、重命名、断点续传
日志处理
xferlog_enable=YES 记录日志
xferlog_std_format=YES 用标准格式
xferlog_file=/var/log/vsftpd.log 需要自己创建日志文件