ftp架设笔记

介绍

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

匿名用户ftp上传需要注意这几个地方:

上传目录ftp用户的写入权限

$ mkdir /var/ftp/upload
$ chown ftp /var/ftp/upload

服务器配置支持上传(取消27行和31行的注释)

1
2
anon_upload_enable=yes
anon_mkdir_write_enable=yes

修改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两行:

1
2
Chroot_list_enable=YES
Chroot_list_file=/etc/vsftpd/chroot_list

默认不存在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行:

1
2
user_list deny=NO
user_list file=/etc/vsftpd/user_list

控制用户访问

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等。