环境:Debian 6.1.27-1kali1 (2023-05-12)
vsftpd 安装
--查看是否当前系统是否已安装
apt list --installed | grep vsftpd
没有安装的话,就正常安装
apt-get update
apt-get install vsftpd
一、匿名用户模式
分享一些不重要文件,任何都可等到ftp服务器获取文件信息,配合防火墙将访问范围限制在内网
允许匿名用户登陆获取文件
--修改配置文件,允许匿名用户登陆
(修改配置之前,建议将原始默认配置文件备份,便于以后配置其他ftp服务器使用
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
误删配置文件,可以通过以下命令恢复
sudo apt-get clean
sudo apt-get update
sudo apt-get install --reinstall vsftpd
sudo apt-get purge vsftpd
sudo apt-get install vsftpd )
vi /etc/vsftpd.conf
anonymous_enable=YES --修改为YES允许匿名用户登陆
anon_root=/var/ftp --配置需要分享的ftp根目录
--配置修改完后开启vsftpd服务
systemctl start vsftpd
--检查
netstat -nltp | grep vsftpd
--同一局域网下,这里就可以用window10系统去下载文件了,打开浏览器,输入ftp://开启ftp服务器的ip地址
--若允许匿名用户在ftp服务器目录上写入或者上传文件,可以更改如下配置
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
二、本地用户模式
通过Linux本地账户密码信息进行登陆认证,比匿名用户模式更加安全,有一定的风险:攻击者通过ftp服务器漏洞获取到用户账户信息,即可登陆服务器进行控制。
--修改配置文件
vi /etc/vsftpd.conf
anonymous_enable=NO --关闭匿名用户登陆
local_enable=YES --允许系统用户登陆
write_enable=YES --允许执行修改文件系统的命令
local_mask=022 --采用022作为本地用户新增文件的默认文件权限
(文件默认开放所有全部权限666,需要减少的权限022,则默认文件权限为-rw-r--r--)
--创建一个新系统用户用于实践
adduser admin
(注意这里不要使用useradd无参数创建一个三无用户,无法登陆,使用参数adduser命令按提示创建新用户简单粗暴)
--使用admin用户连接ftp服务器创建一个test文件夹
--使用root用户登陆ftp服务器,发现无法登陆
博主在Debian 6.1.27-1kali1 (2023-05-12) 安装的vsftpd/kali-rolling 3.0.3-13+b2 amd64在/etc目录下没有vsftpd目录,自然也没有vsftpd.user_list,而vsftp.conf文件直接在/etc下,同样在/etc目录下找到ftpusers文件,该文件的所有用户不允许登陆ftp。
--将ftpusers文件里的root用户注释掉,重新登陆成功
tips:root用户从限制文件里移除会增加系统被入侵的风险,这里测试完直接恢复。
三、虚拟用户模式
ftp服务单独提供用户数据库文件,所有非匿名用户均被视为访客,并被映射成一个特定的用户。通过虚拟用户名以及口令进行登陆,即使用户名被破解也无法登陆到主机,相较前两种模式更为安全,同样配置起来也较为复杂。
1>新建虚拟用户名数据库文件
cd /etc
cat >>login_user <<EOF
heredoc> xiongda
heredoc> qwerty
heredoc> xionger
heredoc> 123456
heredoc> EOF
--通过db工具将特定格式文件文件转换成数据库文件
db_load -T -t hash -f /etc/login_user /etc/login_user.db
--降权
chmod 600 login_user.db
ls -l /etc/login_user.db
--删除源文本文件
rm /etc/login_user
2>配置PAM验证(动态加载模块,可按需求动态对验证内容进行变更,配置文件在/etc/pam.d/vsftpd)
vi /etc/pam.d/vsftpd
前面注释掉,末尾添加两行
auth required pam_userdb.so db=/etc/login_user
account required pam_userdb.so db=/etc/login_user
3>将虚拟用户与本地用户映射
useradd ftp_guest --新增一个本地用户
chmod -Rdf 755 /home/ftp_guest --修改该用户主目录权限
vi /etc/vsftpd/conf
guest_enable=YES
guest_username=ftp_guest --所有虚拟用户映射到该访客账户
同时修改其他配置:
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES --将各自虚拟用户限制各自根目录下
allow_writeable_chroot=YES
pam_service_name=vsftpd
user_config_dir=/etc/vsftp_user_conf --自定义用户配置文件夹
4>给不同用户设置不同的目录和权限
(这里给xiongda只读权限,给xionger上传文件和建立目录权限)
cd /home/ftp_quest
mkdir xiongda xionger
chown ftp_guest:ftp_guest xiongda xionger
cd /etc
mkdir vsftp_user_conf --上面配置的自定义配置文件
cd vsftp_user_conf
cat >>xiongda<<EOF
local_root=/home/ftp_guest/xiongda
EOF
----------------------
cat >>xionger<<EOF
write_enable=YES
anon_upload_enable=YES --文件上传权限
anon_mkdir_write_enable=YES --目录创建权限
local_root=/home/ftp_guest/xionger
EOF
重启ftp服务器
systemctl restart vsftpd
xiongda用户无法创建目录
xionger用户可以创建目录