linux服务之ftp服务器的配置
**File Transfer Protocol,文件传输协议,应用层的文件共享服务**
软件包文件清单
ftpusers 在开启用户验证访问的前提下,默认是不可以使用ftp服务的,
user_list 在配置后,可以让这个文件中的用户才可以访问ftp服务
vsftpd_conf_migrate.sh 变量和设置,一般不用修改
vsftpd.conf 主配置文件
ftp用户
匿名用户–>系统用户
系统用户–>系统用户
虚拟用户–>系统用户
主配置文件详解
#####默认开启的选项
#允许匿名用户登录
anonymous_enable=YES
#允许本地用户登录
#When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#允许用户写入
write_enable=YES
#本地用户的掩码
local_umask=022
#开启目录消息
dirmessage_enable=YES
#开启上传下载日志
xferlog_enable=YES
#锁定数据传输端口
connect_from_port_20=YES
#指定使用标准的xferlog日志格式
xferlog_std_format=YES
#是否允许监听,如果是,服务将自己监听和处理连接
listen=NO
#是否支持IPV6监听
listen_ipv6=YES
#设置PAM认证模块的配置文件,/etc/pam.d/vsftpd文件,并是否允许ftpusers文件中的账号进行登陆,默认为NO,如果为YES,则列表中的用户名可以登陆
pam_service_name=vsftpd
#是否阻止user_list文件中的用户登录服务器
userlist_enable=YES
#是否使用tcp_wrappers作为主机访问控制方式
tcp_wrappers=YES
#####默认关闭的选项
#开启匿名用户写入
#When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES
#开启匿名用户目录写入权限
anon_mkdir_write_enable=YES
#开启匿名上传文件属主锁定
chown_uploads=YES
#指定匿名上传的文件所属者,强烈不建议使用root用户
chown_username=whoever
#指定日志文件
xferlog_file=/var/log/xferlog
#空闲会话超时时间
idle_session_timeout=600
#数据连接会话超时时间
data_connection_timeout=120
#运行服务需要的非特权系统用户,默认是nobody
nopriv_user=ftpsecure
#是否识别异步ABOR请求,建议关闭
async_abor_enable=YES
#开启ASCII模式上传,建议关闭
ascii_upload_enable=YES
#开启ASCII模式下载,建议关闭
ascii_download_enable=YES
#开始登陆欢迎信息
ftpd_banner=Welcome to blah FTP service.
#禁止某些邮件地址登陆服务器
deny_email_enable=YES
#指定邮件地址清单文件
banned_email_file=/etc/vsftpd/banned_emails
#开启本地用户家目录锁定
chroot_local_user=YES
#指定需要锁定家目录的用户列表
chroot_list_enable=YES
#通过列表指定用户
chroot_list_file=/etc/vsftpd/chroot_list
#是否允许递归查询,建议关闭
ls_recurse_enable=YES
一、匿名用户的ftp服务配置
下载功能的实现
默认配置即可实现 修改匿名用户下载选项
上传功能的实现
#修改配置文件中匿名上传的相关选项
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#修改匿名用户目录的权限
[root@ldap ftp]# chmod 777 pub/
#修改匿名上传布尔值
[root@ldap var]# getsebool -a | grep ftpd_anon_write
ftpd_anon_write --> on
[root@ldap ftp]# setsebool ftpd_anon_write on
#修改匿名上传的上下文权限
[root@ldap var]# ll -Z /var/ftp
drwxr-xrwx. root root system_u:object_r:public_content_rw_t:s0 pub
[root@ldap ftp]# chcon -t public_content_rw_t pub/
删除功能的实现
#修改配置文件,添加如下选项
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
二、系统用户 的ftp服务配置
下载功能的实现
#修改主配置文件开启本地用户权限
[root@ldap ftp]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
#注释以下三行
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#修改如下选项
[root@ldap ftp]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
#修改布尔值打开/home目录的权限
[root@localhost haha]# getsebool -a | grep ftp_home_dir
ftp_home_dir --> off
[root@localhost haha]# setsebool -P ftp_home_dir on
上传功能的实现
#修改主配置文件开启本地用户权限
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf
write_enable=YES
删除功能的实现
同上传配置
遍历功能的实现
#首先开启chroot选项
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES
#然后使用下面两个选项之一
#指定本地用户能chroot
chroot_local_user=YES
#开启通过列表的方式来指定用户
chroot_list_enable=YES
#指定用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#在当前目录创建用户列表文件
[root@localhost vsftpd]# cat chroot_list
haha
如果chroot_local_user=YES开启,那么指定列表中的用户可遍历
如果没有开启chroot_local_user=YES,那么指定列表中的用户不可以遍历
三、虚拟用户的ftp服务配置
#创建系统用户,禁止该用户进行登陆
[root@ldap ftp]# useradd -s /sbin/nologin vhaha
#修改用户家目录权限
[root@localhost vsftpd]# chmod 704 /home/vhaha/
#修改主配置文件,增加以下三个选项
[root@ldap ftp]# vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vhaha #vhaha为系统用户
virtual_use_local_privs=YES
#创建虚拟用户数据库文件
#创建虚拟用户文件如下:
#格式为一行用户名,一行密码,示例中abc为用户名,redhat为密码
[root@localhost vsftpd]# cat vuser
abc
redhat
xixi
redhat
haha
redhat
#将虚拟用户文件转换成用户数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f vuser user.db
#修改虚拟用户数据库文件权限
[root@localhost vsftpd]# chmod 600 user.db
#查看虚拟用户数据库文件的上下文权限
[root@localhost vsftpd]# ll -Z user.db
-rw-------. root root unconfined_u:object_r:etc_t:s0 user.db
#修改PAM认证方式
#编辑认证配置文件
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd
#注释掉所有行,并添加以下两行:
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
#注:数据库文件名的“.db”不用输入
#完成以上配置后,重启服务进行测试
tcpdump -i ens160 -nn -X -vv tcp port 21 and ip host 192.168.33.131