介绍
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
匿名用户ftp上传需要注意这几个地方:
上传目录ftp用户的写入权限
$ mkdir /var/ftp/upload
$ chown ftp /var/ftp/upload
服务器配置支持上传(取消27行和31行的注释)
|
|
修改selinux支持上传
$ getsebool -a | grep ftp
$ setsebool -p allow_ftpd_anon_write on
$ chcon -t public_content_rw_t /var/ftp/upload
注意:匿名上传的文件默认不能删除
不允许匿名用户登录,仅允许系统用户登录:
新建虚拟用户
$ useradd fangzhuang
$ usermod -s /sbin/nologin fangzhuang
$ passwd fangzhuang
修改允许匿名用户登录的行
Anonymous_enable=YES –>anonymous_enable=NO
禁止匿名用户上传文件和目录(27、31行)
修改selinux
$ setsebool -p allow_ftpd_anon_write off
$ setsebool -P ftp_home_dir on(允许用户在家目录写入数据)
系统用户登录后,默认是可以切换到其他目录及根目录下的。若要限制在FTP的根目录下,需要使用chroot功能。(匿名用户登录,默认是chroot了的)
启用/etc/vsftpd/vsfptd.conf的94,96两行:
|
|
默认不存在chroot_list文件,需手动建立,然后把需要限制根目录的用户写到该文件中
添加多个用户到chroot_list下的方法:
$ cut -d : -f 1 /etc/passwd >> /etc/vsftpd/chroot_list
Ftpusers和user_list
ftpusers文件的作用:阻止该文件中的用户登录FTP
但是若系统中有很多用户都不允许登录FTP,且要求每个新建立的用户默认都不能登录FTP,就需要用到user_list文件了。(仅user_list文件中的用户才能登陆FTP)
启用user_list文件功能,需在配置文件后添加2行:
|
|
控制用户访问
iptables。
如:iptables -A INPUT -s 192.168.1.0/24 -p tcp —-dport 21 -j REJECT
TCP wrapper。
ldd `which vsftpd` | grep wrap 或 strings `which vsftpd` | grep host (查看服务是否支持TCP wrapper)
/etc/hosts.allow
/etc/hosts.deny
如:vim /etc/hosts.allow
Vsfptd: 192.168.4.7
服务本身对用户账号的控制
(ftpusers,user_list)
控制顺序:
访问源–防火墙–TCP Wrappers–服务本身–文件系统权限–目的服务
1/防火墙:源/目的地址、网络、端口号、连接状态等;
2/TCP wrappers:服务名称、源地址、网络
3/服务本身:用户名
4/文件系统权限:RWX等。