RHEL6.5_VSFTP

测试环境:Red Hat Enterprise Linux Server release 6.5 (Santiago)、VSFTP版本:vsftpd-2.2.2-24.el6.x86_64。

1、安装VSFTP

yum install -y vsftpd #yum安装vsftpd,前提设置好yum软件仓库
rpm -qa | grep vsftp* #查看是否安装vsftpd
service vsftpd start #运行vsftpd软件包
chkconfig vsftpd on #设置vsftpd服务开机自启

2、配置iptables防火墙

service iptables status #查看防火墙状态
cat /etc/sysconfig/iptables #修改防火墙规则,如下:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-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 30000:31000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

允许访问21、30000-31000目的端口。

3、关闭SELinux,设置为如下:

cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disable
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

4、设置FTP虚拟用户

cd /etc/vsftpd/ #切换到vsftp目录
cp user_list user_list.back #备份原先的虚拟用户列表文件
修改user_list文件如下,奇数行为用户名,偶数行为密码

cat user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
zhangsan
zs#4564#!wl,.
lisi
lisi123456
wangwu
wangwu@123

db_load -T -t hash -f user_list user_list.db #生成虚拟用户数据库文件(每次向这个文件添加用户后都需要运行此命令刷新数据库文件)
mkdir vsftpd_user_conf #新建虚拟用户配置文件目录
cd vsftpd_user_conf #切换到虚拟用户配置文件目录中
touch zhangsan lisi wangwu #新建对应用户名的用户配置文件
修改zhangsan用户配置文件如下:

cat zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_umask=022
local_root=/ftp/zhangsan

其他账户同上配置,需改对应参数!

5、设置PAM认证

cd /etc/pam.d/ #切换到pam.d目录中
cp vsftpd vsftpd.back #备份原先的vsftp文件
echo > vsftpd #清空文件vsftpd的内容
向vsftpd文件中加入如下两行:

cat vsftpd
auth      required        pam_userdb.so        db=/etc/vsftpd/user_list
account    required        pam_userdb.so        db=/etc/vsftpd/user_list

6、配置vsftpd.conf文件

cd /etc/vsftpd/ #切换到vsftp目录
cp vsftpd.conf vsftpd.conf.back #备份vsftpd.conf文件
echo > vsftpd.conf #清空文件vsftpd.conf的内容
向vsftpd.conf文件中加入如下行:

cat vsftpd.conf
####################################
#全局配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
dual_log_enable=YES
xferlog_file=/var/log/xferlog.log
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=欢迎使用Tachat_FTP服务!
listen=YES
listen_address=172.31.0.3
tcp_wrappers=YES
ls_recurse_enable=NO
max_clients=20
max_per_ip=1000
chroot_local_user=YES
chroot_list_enable=NO

#开启被动模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=192.168.100.124
####################################

#############  虚拟用户配置  ###########
guest_enable=YES
guest_username=ftp
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf/
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
virtual_use_local_privs=NO
#############  虚拟用户配置  ###########

注:如果FTP不需要对外映射无需添加第29行内容,设置外网IP地址

7、新建FTP目录及各个用户的FTP家目录

cd / #切换到根目录
mkdir ftp #创建ftp目录
cd ftp #切换到ftp目录
mkdir zhangjie hezhengwei tianyijie tianyi yuzhongyi yebiao #新建对应用户名的目录
chown ftp:ftp -R /ftp #修改ftp目录及子目录所属组和所有者

重器服务器!(SELINUX设置为disable后需要重启服务器生效)
至此就可以采用虚拟用户及密码访问FTP了!


为了安全起见,可以采用TLS来对FTP的访问进行加密,在以上7个步骤的基础上进行如下设置:

8、设置FTP_over_TLS

向vsftpd.conf文件后面增加如下行:

#############  SSL/TLS配置  ###########
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
require_ssl_reuse=NO
ssl_ciphers=HIGH
debug_ssl=YES
#############  SSL/TLS配置  ###########

生成SSL证书

openssl req -x509 -nodes -days 36500 -newkey rsa:2048  -keyout /etc/vsftpd/vsftpd.pem  -out /etc/vsftpd/vsftpd.pem
Generating a 2048 bit RSA private key
......................................................................................................+++
...........................................+++
writing new private key to '/etc/vsftpd/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:heilongjiang       
Locality Name (eg, city) [Default City]:heihe
Organization Name (eg, company) [Default Company Ltd]:sangfor
Organizational Unit Name (eg, section) []:technology  
Common Name (eg, your name or your server's hostname) []:www.sangfor.com
Email Address []:[email protected] 

service vsftpd restart #重启vsftpd服务
重启vsftpd服务即可,在设置为tls之后,浏览器无法登入tls的ftp,需要采用WinSCP或Xftp、Filezilla软件登入。

为FTP创建公共目录,在以上7或8个步骤的基础之上均可,进行如下设置:

cd /ftp #进入ftp目录
mkdir Public_Directory #创建公共目录
chown ftp:ftp Public_Directory #修改公共目录所属组和所有者
cd zhangsan/ #进入zhangsan的ftp家目录
mkdir Public_Directory #创建公共目录
cd ../lisi #进入lisi的ftp家目录
mkdir Public_Directory #创建公共目录
cd .. #返回ftp目录

ll -i     #查看inode索引节点编号
total 12
521219 drwxr-xr-x. 3 root root 4096 Dec  9 14:42 lisi
521218 drwxr-xr-x. 3 root root 4096 Dec  9 14:41 zhangsan
521220 drwxr-xr-x. 2 root root 4096 Dec  9 14:39 Public_Directory

ll -i zhangsan/ ; ll -i lisi/
total 4
521221 drwxr-xr-x. 2 root root 4096 Dec  9 14:41 Public_Directory
total 4
521222 drwxr-xr-x. 2 root root 4096 Dec  9 14:42 Public_Directory

挂在zhangsan和lisi的Public_Directory目录到ftp目录中的Public_Directory目录
mount --bind Public_Directory/ zhangsan/Public_Directory/
mount --bind Public_Directory/ lisi/Public_Directory/

ll -i zhangsan/ ; ll -i lisi/
total 4
521220 drwxr-xr-x. 2 root root 4096 Dec  9 14:39 Public_Directory
total 4
521220 drwxr-xr-x. 2 root root 4096 Dec  9 14:39 Public_Directory

赋予Public_Directory +a属性,只允许向目录添加/下载数据,不可以删除数据!
chattr -R +a Public_Directory/ #-R递归设置
lsattr Public_Directory/ #查看特殊属性

cat /etc/fstab #自动挂载公共目录,添加最后两行

# /etc/fstab
# Created by anaconda on Tue Dec 10 16:23:55 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_thftp-lv_root /                       ext4    defaults        1 1
UUID=25492fe9-ce34-424e-887f-8802far7bfd2 /boot                   ext4    defaults        1 2
/dev/mapper/vg_mjxftp-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/ftp/Public_Directory                /ftp/zhangsan/Public_Directory                none                bind                0 0
/ftp/Public_Directory                /ftp/lisi/Public_Directory                none                bind                0 0

注,其他用户依次添加如上挂在配置!

你可能感兴趣的:(RHEL6.5_VSFTP)