centons7安装ftp
一、ftp基础操作
1.1、查看是否安装了vsftp
方法一:rpm -qa | grep vsftp
方法二:whereis vsftpd
1.2、安装vsftp
方法:yum install -y vsftpd/yum install vsftpd
使用上述两个中的其中一个就可以安装vsftp,-y表示当安装过程提示选择全部为"yes",没有写-y的话需要手动补充。
1.3、ftp设置
设置开机自启:systemctl enable vsftpd.service
启动ftp服务:systemctl start vsftpd.service
重启ftp服务:systemctl restart vsftpd.service
关闭ftp服务:systemctl stop vsftpd.service
查看ftp状态:systemctl status vsftpd.service
二、ftp默认配置文件
默认配置文件:/etc/vsftpd/vsftpd.conf
2.1、修改已有配置
修改anonymous_enable(是否允许匿名ftp)参数,设置成No:anonymous_enable=NO
修改anon_mkdir_write_enable(是否允许匿名用户有创建目录的权利)参数,设置成Yes:anon_mkdir_write_enable=YES
修改chown_upload(是否改变上传文件的属主)参数设置成Yes:chown_upload=YES
修改async_abor_enable(是否允许运行特殊的ftp命令async ABOR.)参数设置成Yes:async_abor_enable=YES
修改ascii_upload_enable(是否使用ascii码方式上传文件)参数设置成Yes:ascii_upload_enable=YES
修改ascii_download_enable(是否使用ascii码方式下载文件)参数设置成Yes:ascii_download_enable=YES
2.2、新增配置
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconfig
data_connection_timeout=3
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=3
allow_writeable_chroot=YES
2.3、配置详解
配置参数详解表:
anonymous_enable=YES | 是否允许匿名ftp,如否则选择NO |
local_enable=YES | 是否允许本地用户登录 |
local_umask=022 | 默认的umask码 |
anon_upload_enable=YES | 是否允许匿名ftp用户访问 |
anon_upload_enable=YES | 是否允许匿名上传文件 |
anon_mkdir_write_enable=YES | 是否允许匿名用户有创建目录的权利 |
dirmessage_enable=YES | 是否显示目录说明文件,默认是YES但需要收工创建.message文件 |
xferlog_enable=YES | 是否记录ftp传输过程 |
connect_from_port_20=YES | 是否确信端口传输来自20(ftp-data) |
chown_upload=YES chown_username=username |
是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主 |
xferlog_file=/var/log/vsftpd.log | ftp传输日志的路径和名字默认是/var/log/vsftpd.log |
xferlog_std_format=YES | 是否使用标准的ftp xferlog模式 |
idle_session_timeout=600 | 设置默认的断开不活跃session的时间 |
data_connection_timeout=120 | 设置数据传输超时时间 |
nopriv_user=ftpsecure | 运行vsftpd需要的非特权系统用户默认是nobody |
async_abor_enable=YES | 是否允许运行特殊的ftp命令async ABOR. |
ascii_upload_enable=YES ascii_download_enable=YES |
是否使用ascii码方式上传和下载文件 |
ftpd_banner=Welcome to chenlf FTP service. | 定制欢迎信息 |
deny_email_enable=YES banned_email_file=/etc/vsftpd.banned_emails |
是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名 |
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list |
是否将系统用户限止在自己的home目录下,如果选择了yes那么chroot_list_file=/etc/vsftpd.chroot_list中 列出的是不chroot的用户的列表 |
max_clients=Number | 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止 |
message_file | 设置访问一个目录时获得的目录信息文件的文件名,默认是.message |
三、虚拟用户配置
3.1、创建虚拟用户文件
在ftp的默认配置路径/etc/vsftpd下创建一个专门用来存放虚拟用户账号密码的文件,名字随便起,在这里为了好记叫做virtusers,
奇数行为用户名,偶数行为密码,当然用户名肯定不能为root咯。例如:
vim /etc/vsftpd/virtusers
wesalt
wesalt
test1
test1
3.2、生成虚拟用户数据文件
将创建的用户密码加载到数据文件中。
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
修改数据文件权限为600
chmod 600 /etc/vsftpd/virtusers.db
3.3、修改ftp读取的虚拟用户文件
备份原有的ftp配置文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak 或者 mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
修改ftp配置文件
vim /etc/pam.d/vsftpd
注释配置文件中的auth 及 account 的配置行,增加如下两行(32位系统lib64换成lib):
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
四、用户和目录创建
4.1、创建系统用户和指定家目录
useradd test -d /web_source -s /bin/false
web_source:test用户的家目录,也是ftp需要使用的根目录
/bin/false:最严格的禁止login选项,一切服务都不能用,后期登录ftp使用的都是虚拟用户。
4.2、修改目录属主和属组
chown -R test:test /web_source
五、虚拟用户权限配置
5.1、创建虚拟用户配置存放目录
mkdir /etc/vsftpd/vconfig
cd /etc/vsftpd/vconfig
5.2、创建虚拟用户配置权限
创建文件跟虚拟用户名一致:vim wesalt
增加配置如下:
local_root=/web_source/wesalt/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
5.3、创建虚拟用户管理目录
mkdir -p /web_source/wesalt/
可能在使用的时候会有权限问题,建议再次执行修改属主属组命令:chown -R test:test /web_source
六、安全设置
6.1、防火墙设置
关闭firewall:systemctl stop firewalld.service
关闭iptables:service iptables stop
配置firewall允许ftp通过:
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent
配置iptables允许ftp通过:
vim /etc/sysconfig/iptables
在文件中增加如下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT
6.2、selinux设置
查询selinux状态:sestatus、getenforce
selinux三种模式:
enforcing—是强制模式系统受selinux保护。就是你违反了策略,你就无法继续操作下去
permissive—是提示模式系统不会受到selinux保护,只是收到警告信息。permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来(警告信息)
disabled—禁用selinux
ftp通过selinux的方式:
法一:临时调整selinux
setenforce 1开启(Enforcing)
setenforce 0关闭(Permissive)
法二:永久调整selinux,需重启
去配置文件/etc/selinux/config中修改SELINUX的值,重启生效。
法三、解除selinux对ftp限制
setsebool -P ftpd_connect_all_unreserved 1
七、自动创建和删除虚拟用户
7.1、自动创建虚拟用户
#!/bin/bash echo "wesalt">> /etc/vsftpd/virtusers ser=`openssl rand -base64 12` echo $ser >> /etc/vsftpd/virtusers db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
7.2、删除虚拟用户
#!/bin/bash var1=`grep -n 'wesalt' /etc/vsftpd/virtusers |cut -d ":" -f 1` var2=$(($var1+1)) sed -i "${var1},${var2}d" /etc/vsftpd/virtusers db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db