一、简要说明
ftp:文件传输协议
vsftpd:非常安全的ftp进程
二、工作模式
ftp的命令端口为21
主动模式(不推荐):ftp数据端口为20,服务器连接客户端,因为客户端都有防火墙,所有使用不便
被动模式(推荐):服务器告诉客户端我开放的端口,客户端连接服务器
三、安装vsftpd
yum -y install vsftpd setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
安装完成后,防火墙设置开启21和配置文件中(pasv_min_port 到 pasv_max_port)的端口
配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
四、被动模式配置ftp
1.通用配置
#anonymous anonymous_enable=NO #local system user local_enable=YES allow_writeable_chroot=YES #passive mode and port pasv_enable=YES pasv_min_port=20000 pasv_max_port=20999 #listen listen=YES listen_ipv6=NO connect_from_port_20=YES #log xferlog_enable=YES xferlog_file=/var/log/xferlog #welcome info dirmessage_enable=YES #trans limit idle_session_timeout=120 data_connection_timeout=120 tcp_wrappers=YES max_clients=10 max_per_ip=10 #safe local_umask=022 chroot_local_user=YES
2.匿名用户配置(不推荐)
匿名用户anonymous,对应服务器的ftp用户,访问的文件夹为/var/ftp,除root不能有写权限
开启配置
#anonymous anonymous_enable=YES
3.系统用户配置(不推荐)
因为ftp是明文传输,如果被抓包了就能看到系统用户的用户名和密码,导致服务器不安全
相关配置
#local system user local_enable=YES write_enable=YES
五、虚拟用户配置(推荐)
可以基于数据库和文件两种模式,文件模式配置如下:
1.创建用户数据库文件
vm_user.txt格式必须是一行用户名一行密码如
tom
123456
vi /etc/vsftpd/vm_user.txt cd /etc/vsftpd/ db_load -T -t hash -f vm_user.txt vm_user.db chmod 600 vm_user.db
2.创建映射的用户和FTP目录
useradd -s /sbin/nologin ftpuser
3.创建pam文件
vi /etc/pam.d/vm-vsftpd auth required pam_userdb.so db=/etc/vsftpd/vm_user account required pam_userdb.so db=/etc/vsftpd/vm_user
4.在vsftp.conf中进行配置
#vm_ftp guest_enable=YES guest_username=ftpuser pam_service_name=vm-vsftpd user_config_dir=/etc/vsftpd/vm_ftp.d/
5.为虚拟用户进行单独权限设置
mkdir /etc/vsftpd/vm_ftp.d/ mkdir /home/ftpuser/life chown -R ftpuser:ftpuser /home/ftpuser/ vi /etc/vsftpd/vm_ftp.d/tom write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/ftpuser/life
6.完整的vsftpd.conf配置如下
#anonymous anonymous_enable=NO #local system user local_enable=YES allow_writeable_chroot=YES #passive mode and port pasv_enable=YES pasv_min_port=20000 pasv_max_port=20999 #listen listen=YES listen_ipv6=NO connect_from_port_20=YES #log xferlog_enable=YES xferlog_file=/var/log/xferlog #welcome info dirmessage_enable=YES #trans limit idle_session_timeout=120 data_connection_timeout=120 tcp_wrappers=YES max_clients=10 max_per_ip=10 #safe local_umask=022 chroot_local_user=YES #vm_ftp guest_enable=YES guest_username=ftpuser pam_service_name=vm-vsftpd user_config_dir=/etc/vsftpd/vm_ftp.d/
7.重启并加入开机启动项
systemctl restart vsftpd systemctl enable vsftpd
六、基于mysql或mariadb的虚拟文件配置
基本配置同上面一样,不同之处在于修改pam模块文件和数据库建表
1.pam文件内容改为,crypt为0表示数据库明文存放,1位加密存放
auth required /usr/lib64/security/pam_mysql.so user=ftpuser passwd=ftp123456 host=localhost db=mylab table=ftp_user usercolumn=name passwdcolumn=password crypt=0 account required /usr/lib64/security/pam_mysql.so user=ftpuser passwd=ftp123456 host=localhost db=mylab table=ftp_user usercolumn=name passwdcolumn=password crypt=0
2.安装pam所需文件
yum -y install pam-devel
安装pam_mysql-0.7RC1
tar xf pam_mysql-0.7RC1.tar.gz cd pam_mysql-0.7RC1 ./configure --with-mysql=/home/program/mariadb/ --with-pam-mods-dir=/lib64/security/ make & make install
pam模块文件需要用到数据库的库文件所以
vi /etc/ld.so.conf.d/mysql.conf /home/program/mariadb/lib ldconfig
3.数据库建立表和授权用户
create table ftp_user(id int not null auto_increment primary key,name char(20) binary not null,password char(48) binary not null); insert into ftp_user(name,password) values('ftphome','123'),('ftpwork','456'); grant select on mylab.ftp_user to 'ftpuser'@'localhost' identified by '123456'; flush privileges;
七、配置说明
anonymous_enable=YES 是否启用匿名用户 local_enable=YES 是否启动系统用户 write_enable=YES 可以上传文件 anon_upload_enable=YES 默认匿名用户不能上传,开启上传,但是默认var/pub目录本身没有写权限, anon_mkdir_write_enable=YES 匿名用户可以创建文件夹 anon_other_write_enable=YES 匿名用户其他写权限 dirmessage_enable=YES 是否显示欢迎信息 目录下的隐藏文件.message为内容 xferlog_enable=YES 是否启动传输日志 xferlog_file=/var/log/xferlog 指定日志文件 xferlog_std_format=YES 日志文件是否使用标准格式 chown_uploads=YES 上传后是否改变属主 chown_username=whoever 改变的属主为 idle_session_timeout=600 命令连接超时 data_connection_timeout=120 数据连接超时 ascii_upload_enable=YES 以文本模式上传 ascii_download_enable=YES 以文本模式下载 chroot_local_user=YES 全部用户锁定到家目录 chroot_list_enable=YES 需要例外 chroot_list_file=/etc/vsftpd/chroot_list 例外用户列表 allow_writeable_chroot=YES 当设置禁锢目录后,默认对根文件夹没有写权限才能登陆,该设置可以启用写入 listen=YES 是否监听 pam_service_name=vsftpd pam验证文件模块名 userlist_enable=YES 启用user_list文件 userlist_deny=NO 当为yes时,列表中的不能登录,当为no时只有列表中的用户才能登陆 tcp_wrappers=YES 可以通过host文件进行限制 nax_clients = 10 最多客户端连接数 max_per_ip = 10 每个ip可以连接几个 anon_world_readable_only=YES 是否允许下载,YES不能下载,NO可以
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。