1.准备工作
关闭防火墙:systemctl stop firewalld
关闭selinux:setenforce 0
2安装ftp服务
yum -y install vsftpd
配置开机自启:systemctl enable vsftpd
3.配置文件
查看配置文件中除去注释内容:grep -v ^# /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 支持匿名用户访问
local_enable=YES 非匿名用户
write_enable=YES 写操作总开关(针对非匿名用户)
local_umask=022 反掩码
dirmessage_enable=YES 启用消息功能
xferlog_enable=YES 开启或启用xferlog日志
connect_from_port_20=YES 支持主动模式(默认是被动)
xferlog_std_format=YES xferlog日志格式
listen=NO ftp服务独立模式下的监听
listen_ipv6=YES 支持ipv6
pam_service_name=vsftpd 指定用户文件
userlist_enable=YES 启用用户列表(黑名单)
tcp_wrappers=YES 支持tcp_wrappers(FTP限速操作)
修改配置文件:vim /etc/vsftpd/vsftpd.conf
设置用户登录的目录:local_root=/tmp/data 这里目录根据自己情况设置
允许有写权限:allow_writeable_chroot=YES
允许部分用户,解禁目录
chroot_local_user=NO
chroot_list_enable=YES #开启用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list # 指定用户列表文件,写在此目录的用户,可以突破禁锢目录活动
local_enable=YES
local_root=/tmp/data
allow_writeable_chroot=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
设置单用户的acl权限:
语法:
setfacl -R -m u:用户名:rwx 目录
setfacl -R -m u:wu:rwx /tmp/data #给wu设置对/tmp/data目录rwx权限
4.开启服务
systemctl start vsftpd
在win系统文件资源管理器输入:ftp://服务器ip地址
当然在linux中也可以访问:ftp 服务器ip地址
5.黑名单与白名单
黑名单:/etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers
如果名单出现在/etc/vsftpd/user_list中,用户连输入密码的机会都没有。
[root@localhost app]# ftp 192.168.156.10
Connected to 192.168.156.10 (192.168.156.10).
220 (vsFTPd 3.0.2)
Name (192.168.156.10:root): li li用户没有输入密码,直接不允许登入
530 Permission denied.
Login failed.
如果名单出现在 /etc/vsftpd/ftpusers中,用户可以输入密码。
[root@localhost app]# ftp 192.168.156.10
Connected to 192.168.156.10 (192.168.156.10).
220 (vsFTPd 3.0.2)
Name (192.168.156.10:root): wu
331 Please specify the password.
Password: #wu用户可以输入密码,但不允许登入
530 Login incorrect.
Login failed.
将/etc/vsftpd/user_list变为白名单:修改配置文件:userlist_deny=NO
黑名单优先于白名单
6.禁止某个ip或网段
编辑/etc/hosts.deny
vsftpd:all #全部拒绝
vsftpd:all EXCEPT IP #拒绝处理给定IP外所有
vsftpd:IP #拒绝给定IP
vsftpd:IP:allow #允许给定IP
vsftpd:192.168.0.0/255.255.255.0 #拒绝给定网段
vsftpd: 192.168.0.0/255.255.255.0 E XCEPT IP #拒绝给定网段,除了给定IP
7.限制传输速度
编辑/etc/vsftpd/vsftpd.conf,设置tcp_wrappers=YES
添加一行:local_max_rate=1024
设置最大的传输速度为1024个字节
判断某个服务是否tcp_wrappers
1). ./configure --enable-libwrap 表示支持tcp_wrappers访问控制(源码包安装)
2).rpm包安装(yum包安装):
ldd +二进制程序 | grep 查询板块
查询vsftpd是否支持tcp_wrappers
[root@localhost vsftpd]# ldd /usr/sbin/vsftpd | grep libwrap*
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f246576b000)