Linux Vsftpd
CentOS 7中默认使用Firewalld做防火墙,所以修改iptables后,在重启系统后,根本不管用。
Firewalld中添加端口方法如下:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
或firewall-cmd --add-service=ftp
firewall-cmd --add-service=ftp --permanent
启用root账号登录
sed -i '/^root/{s/^/#/g}' /etc/vsftpd/ftpusers sed -i '/^root/{s/^/#/g}' /etc/vsftpd/user_list
取消匿名登陆
anonymous_enable=YES ,改为 anonymous_enable=NOsed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
锁定登录用户默认限制在Home目录
vi /etc/vsftpd/vsftpd.conf
将底下三行 改为:
```sh
chroot_local_user=YES但是chroot_list内的用户不受限制
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
echo administrator >> /etc/vsftpd/chroot_list
```
重启
service vsftpd restart
## 1.使用yum在线安装
yum install vsftpd -y
## 2.允许用户登陆
使user_list为NO,只允许列表内用户访问
sed -i 's/userlist_enable=YES/userlist_deny=NO/g' /etc/vsftpd/vsftpd.conf
echo user1 >> /etc/vsftpd/user_list
echo user2 >> /etc/vsftpd/user_list
echo user3 >> /etc/vsftpd/user_list
#添加允许的登录ftp的系统账号
## 3.安全设置
黑名单 (user_list优先匹配,ftpusers 后匹配)
cat /etc/vsftpd/ftpusers
root
bin
daemon
adm
......
限制匿名账号
sed -i s/anonymous_enable=YES/anonymous_enable=NO/ /etc/vsftpd/vsftpd.conf
echo ftp >> /etc/vsftpd/ftpusers
#禁用匿名用户登录,不再跳出pub目录
### 方法1.将登录后的用户限制在自己的家目录
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
### 方法2.登录用户默认限制在家目录,但是chroot_list内的用户不受限制
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
echo administrator >> /etc/vsftpd.chroot_list
## 4.ftp主目录取消写入权限
chmod -w /ftp站点目录
5.启动服务 如centos7
systemctl restart vsftpd
systemctl enable vsftpd #加入开机启动
我用www用户作为web服务的运行身份 ,ftp站点也是www家目录。
useradd -u 500 -M -s /sbin/nologin -g www -d /var/www www
passwd www
#设置www用户登录密码
groupadd pubftp
useradd -M -s /sbin/nologin -g pubftp -d /home/ftpsite/public pubftp
chown pubftp:pubftp /home/ftpsite/public
passftp
chmod a-w
echo pubftp >> /etc/vsftpd.chroot_list
userlist_deny=NO
连接报错:
vsftpd: refusing to run with writable root inside chroot() 错误的解决办法
避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录必须不可写
chmod a-w /var/www
FTP传输模式
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。
FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式。主被动模式均是以 FTP服务器端 为参照。
FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
这里写图片描述
FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
这里写图片描述
在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。
userlist_enable和userlist _deny选项不同时
注意:/etc/vsftpd/ftpuser不受任何配制项的影响,它总是有效,它总是一个黑名单。
userlist_enable=YES && userlist_deny=YES (default) <==黑名单,禁止 /etc/vsftpd/user_list 中的用户访问
userlist_enable=YES && userlist_deny=NO <==白名单,只允许/etc/vsftpd/user_list 中的用户访问
- 当userlist_enable=YES时,userlist_deny选项才会生效。
- 当userlist_enable=YES,userlist_deny=YES时,user_list是一个黑名单;
- 当userlist_enable=YES,userlist_deny=NO时,user_list是一个白名单。
需要提醒的是,使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
传输模式配置
开启被动模式:
connect_from_port_20=NO(默认为YES) #设置是否允许主动模式
pasv_enable=YES(默认为YES) #设置是否允许被动模式
pasv_min_port=30000(default:0(use any port))
pasv_max_port=30009(default:0(use any port))
开启主动模式:
connect_from_port_20=YES
pasv_enable=NO
上边配置只是开启所需模式要求的,其他配置看实际需求!
用户访问模式配置
vsftpd服务访问模式有三种:匿名用户模式,系统用户模式和虚拟用户模式!
匿名用户配置
Vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器端路径为:/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。
这种模式下,不需改动配置文件,直接启动服务即可访问!
如果想要允许匿名用户能够上传、下载、删除文件,需修改/etc/vsftpd/vsftpd.conf配置文件中:
anon_upload_enable=YES #允许匿名用户上传文件;
anon_mkdir_write_enable=YES #允许匿名用户创建目录;
anon_other_write_enable=YES #允许匿名用户其他写入权限。
另外默认Vsftpd匿名用户有两个:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:
chown -R ftp pub/
如果要关闭匿名用户登录,只需设置:
anonymous_enable=NO
系统用户配置
匿名模式可以让任何人使用ftp服务,比较公开!多适用于共享文件!如果我们想要特定用户使用,就需要使用系统用户登录访问!这种模式,需要我们新建不同用户,linux创建用户:
useradd 新的用户名
passwd 新的用户名
然后需要修改配置文件:
anonymous_enable=NO #禁止匿名用户登录
chown_uploads=NO #设定禁止上传文件更改宿主
nopriv_user=ftptest #设定支撑Vsftpd服务的宿主用户为新建用户
ascii_upload_enable=YES
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。
userlist_enable=YES
userlist_deny=NO
最后打开/etc/vsftpd/user_list文件,将新建的用户添加到最后一行(一个用户一行)
这种模式下,登录访问的目录就是/home/新建用户/