linux系统安装vsftpd-最佳实践与遇到的坑

linux系统安装vsftpd-最佳实践与遇到的坑

记录一下自己遇到的坑,以后再安装的时候看一下,大家没搭过vsfptd的也可以看一下哈!需要马上安装的先看最佳实践,如果遇到问题了去下面找找,要是问题相同的话就解决试试看!

一、最佳实践

1.安装vsftpd

$ yum -y install vsftpd

2.关闭防火墙和SELinux和设置开机自启

关闭防火墙和禁止防火墙开机自启:

$ systemctl stop firewalld.service
$ systemctl disable firewalld.service

关闭SELinux和使SELinux失效

设置文件/etc/sysconfig/selinux(永久生效)

SELINUX=disabled

执行命令(临时生效)

$ setenforce 0

设置vsftpd开机自启:

$ chkconfig vsftpd on

3.添加用户(可以不添加,用原来的用户)

添加用户,用户的主目录为/home/ftp1

$ useradd ftp1

赋予用户密码(需输入两遍密码)

$ passwd ftp1

4.修改/etc/vsftpd/vsftpd.conf(参考2.13)若启动失败,则查看文件是否后空格和空行,复制是否完全!!!一定要仔细确认!

5.创建对应的文件和文件夹

$ touch /var/log/vsftpd.log
$ mkdir /etc/vsftpd/vuser_conf
$ touch /etc/vsftpd/chroot_list

6.启动
$ service vsftpd start

7.其他配置事项

  1. chroot_list 里面放可以【/】访问权限的用户,否则都是家访问权限
  2. ftpusers 里面放的是拒绝访问的用户
  3. user_list 里面放的是用户组,具体是白名单用户还是黑名单用户需要看userlist相关配置项,后面有说

二、过程和资料记录

1.网络一定要通,先通过ping测试网络是否通畅
2.防火墙关掉,有需求的话测通之后再打开

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

3.生成数据库需要db_load命令,需要安装一下

yum install db4*

4./etc/pam.d/vsftpd文件是配置客户端验证的文件,其中,db后面的是需要改的值,要写上通过db_load命令生成的.db文件的位置

auth       required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account    required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

5.最好建立一个ftp用户,用来当虚拟用户的宿主用户(访问端口用户)

mkdir  /ftpdir
useradd  -d  /ftpdir vuser
chown  vuser.vuser  /ftpdir
usermod -s /sbin/nologin vuser

6.修改etc/vsftpd/vsftpd.conf
pam_service_name:就是vsftpd加载的pam文件,在上面说过,里面装载了db_load生成的账号和密码

    guest_enable=YES              ####激活虚拟账户  
    guest_username=vuser           ####把虚拟账户绑定为系统账户vuser  
    pam_service_name=vsftpd        ####使用PAM验证  
    user_config_dir=/etc/vsftpd/vuser   ####各个虚拟用户对应的个性配置文件夹

7.登录权限和目录权限

登录权限:

  1. local_enable 本地用户登录权限
  2. ftpusers文件 拒绝访问ftp的用户
  3. userlist_enable 启用user_list文件的功能
  4. userlist_deny 确定user_list的功能是黑名单还是白名单
  5. user_list文件 加入黑/白名单的用户列表

3、4要一起用,3为NO时,userlist_deny属性和user_list文件无效(注:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous)

例子:
vsftpd.conf:

local_enable=YES
userlist_enable=YES
userlist_deny=YES

ftpusers:

# Users that are not allowed to login via ftp
root
bin

user_list:

root
bin

目录权限

  1. chroot_local_user 把本地用户限制在自己主目录下
  2. chroot_list_enable 是否启用例外列表
  3. chroot_list_file 例外用户列表文件

例子 :
vsftpd.conf:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

7.启动相关

启动、关闭、重启、状态

service vsftpd start
service vsftpd stop
service vsftpd restart
service vsftpd status

查看是否开机自启:

chkconfig --list

设置开机自启

chkconfig vsftpd on

8 创建文件权限
local_umask属性,创建文件的权限掩码,默认022,则创建文件的权限为755,需要设置此值。

9.其他linux命令

添加用户,之后必须设置密码!

useradd test //增加用户test,并制定test用户的主目录为/home/test

设置密码

passwd test //为test设置密码

更改用户家目录

usermod -d /test test //更改用户test的主目录为/test

限制用户登录权限(更改用户登录的shell脚本)

usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp

解开用户登录权限(更改用户登录的shell脚本)


usermod -s /sbin/bash test //用户test恢复正常

10.关闭SELinux

设置文件/etc/sysconfig/selinux(永久生效)

SELINUX=disabled

执行命令(临时生效)

setenforce 0

11.解决500 OOPS:refusing to run with writable root inside chroot()的方法

配置文件中加上这句话:

allow_writeable_chroot=YES

12.有一个配置很全的博客,留给以后查看

http://blog.csdn.net/haoge921026/article/details/51956983

13.最后成功的配置文件

#
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_std_format=YES
listen=YES
tcp_wrappers=YES
hide_ids=YES
#
#设定不允许匿名访问
anonymous_enable=NO
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户建立目录
anon_mkdir_write_enable=NO
#设定开启目录标语功能
dirmessage_enable=YES
#设定开启日志记录功能
xferlog_enable=YES
#设定端口20进行数据连接
connect_from_port_20=YES
#设定禁止上传文件更改宿主
chown_uploads=NO
#设定Vsftpd的服务日志保存路径
xferlog_file=/var/log/vsftpd.log
#设定Vsftpd的登陆标语。
ftpd_banner="Welcome to FTP Server!"
#
#限制用户在自己的家目录之内
chroot_local_user=YES
#启用不被chroot的使用者账号
chroot_list_enable=YES
#不被chroot的使用者账号的列表文件
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/vuser_conf
#
#针对不同的用户做不同的配置,这个目录下都是以用户名作为文件名
#限制某些用户的访问
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
userlist_enable=YES
#认证配置
pam_service_name=vsftpd
pam_service_name=/etc/pam.d/vsftpd
#解决500 OOPS:refusing to run with writable root inside chroot()
allow_writeable_chroot=YES

你可能感兴趣的:(linux,最佳实践与坑)