系统:Kali Linux 4.17.0
FTP服务:vsftpd 3.0.3

新建用户目录及用户

我们需要新建一个用户目录,例如:ftp。

1
2
$ mkdir /home/ftp
$ chmod 777 /home/ftp

然后新建一个用户,例如:ftp,并指定用户目录为刚才新建的文件夹。

1
2
3
4
5
$ useradd -d /home/ftp -s /sbin/nologin ftp    #如果已有该用户可以用userdel删除
$ passwd ftp
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

修改配置文件

1
$ vim /etc/vsftpd.conf

里面有一些需要注意的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
listen=YES    #开启监听
listen_ipv6=NO
anonymous_enable=NO #拒绝匿名访问
local_enable=YES #允许本地用户登录
write_enable=YES #开启可写权限
local_umask=000 #实际权限为文件原本的权限-umask
connect_from_port_20=YES
ftpd_banner=Welcome! My friends! #可以自定义banner
chroot_local_user=YES #防止用户访问其他目录
allow_writeable_chroot=YES #如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。如果检查发现还有写权限,就会报错。解决方法是设置根目录可写
userlist_deny=NO #拒绝访问用户列表
userlist_enable=YES #允许访问用户列表
userlist_file=/etc/allowed_users #允许访问用户列表文件
seccomp_sandbox=no #防止各种莫名错误
xferlog_enable=YES #记录ftp传输过程
xferlog_file=/var/log/vsftpd.log #ftp传输日志文件
xferlog_std_format=YES #使用标准的ftp xferlog模式

添加查看允许/拒绝访问用户

添加允许访问的用户,在 allowed_users 中添加刚才创建的用户 ftp

1
2
$ vim /etc/allowed_users
ftp

查看禁止访问用户,在 ftpusers 文件中的列表是禁止访问用户

1
$ vim /etc/ftpusers

如果有 ftp,将之删除。

防止过度限制

关闭 selinux

1
$ vim /etc/selinux/config

selinux=enforcingpermissive改成 disabled

关闭 PAM 模块对 vsftp 登录的过度验证

1
$ vim /etc/pam.d/vsftpd

注释掉 auth required pam_shells.so 这一行

重启 vsftpd 并查看状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ /etc/init.d/vsftpd restart
[ ok ] Restarting vsftpd (via systemctl): vsftpd.service.

$ /etc/init.d/vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2018-12-23 16:27:16 CST; 3min 24s ago
Process: 5760 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 5761 (vsftpd)
Tasks: 1 (limit: 7086)
Memory: 716.0K
CGroup: /system.slice/vsftpd.service
└─5761 /usr/sbin/vsftpd /etc/vsftpd.conf

Dec 23 16:27:16 nonuplebroken systemd[1]: Starting vsftpd FTP server...
Dec 23 16:27:16 nonuplebroken systemd[1]: Started vsftpd FTP server.

$ netstat -tnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 5735/vsftpd

现在成功开启了 FTP 服务。

参考文章

https://www.cnblogs.com/Hi-blog/p/5958252.html
https://blog.csdn.net/frank_abagnale/article/details/79378609