文章目录
FTP
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定,使用的应是大于1024的任意端口。
一.ftp服务的部署
1.配置SELINUX环境
命令行输入genenfore
,查一下是否为disable,如果不是要修改成disable。
修改的地址在:etc/sysconfig/selinux 。 改SELINUX=disabled
修改完成后必须重启,才能重新加载为disabled。
2.安装并开启vsftp服务
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 。从此名称可以看出来,编制者的初衷是代码的安全。
1. yum search vsftp
2. yum search lftp
3. yum install vsftp.x86_64 lftp.x86_64 -y
4. yum start vsftpd
3.火墙开启ftp功能
开启火墙图形设置firewall-config
将ftp设置为永久开启并重启火墙
4.查看vsftp的相关文件
rpm -ql vsftpd###查看相关配置文件
二.匿名用户设定
1.匿名用户登录
通过实验,我们可以发现默认设置里匿名用户是可以登陆的。
如果不想让匿名用户登录,需要在配置文件中修改。
vim /etc/vsftpd/vsftp.conf ###修改配置文件
2.匿名用户上传
匿名用户默认不可以上传文件。
想开启匿名用户上传功能,配置文件中修改:
write_enable=YES
agon_upload_enable=YES
修改完成后重启服务。此时匿名用户依然无法上传文件。这是因为权限太小。
chgrp ftp /var/ftp/pub #匿名用户使用ftp用户的身份访问ftp服务器,所以将ftp目录的所有组改为ftp
chmod 775 /var/ftp/pub ###修改ftp组的权限。注意不能修改为777,权限过大也会出现错误500
3.匿名用户删除文件
此时如果我们想把刚才上传的文件删除可以吗?答案是否定的。
如果想让匿名用户可以删除文件,需在配置文件中加入一行:
.anon _other-write_enable=YES(允许匿名用户删除)|NO(不允许匿名用户删除)
4.匿名用户建立目录
匿名用户能否建立目录,在配置文件中决定:
anon_mkdir_write_enable=YES(允许匿名用户建立目录)|NO (不允许)
5.匿名用户下载
匿名用户默认不允许下载文件,若想下载,需在配置文件中添加:
anon_world_readable_only=NO(可下载所有文件)|YES(只允许下载可读文件)
6.匿名用户修改上传文件默认权限
配置文件中加入:
anon_umask=022 ###修改匿名用户默认权限,上传文件权限为666-umask=644;如果不指定umask,上传文件权限默认为600
7.匿名用户使用的本地用户身份修改
== chown_uploads=YES
chown_username=student ##修改后的本地用户身份==
长传文件发现文件所有人不同了。
查看student id信息,发现符合。修改成功。
8.匿名用户上传速率
企业为了效益,需要区分会员与非会员的上传速率。可以在配置文件中修改:
anon_max_rate=102400 ##最大上传速率的设定,单位为k
修改前
可以看到上传速率大大降低。
修改后
9.最大连接数的设置
为了做到服务器稳定,需要限制登陆人数。最大连接数的设定,在配置文件中修改:
max_clients=2 ##最大连接数的设置,2的意思就是最多可以有两个用户登录
可以看到当有两台主机登陆后,第三台主机无法登陆。
三.本地用户设定
1.本地用户锁定在家目录
使用本地用户登陆时,默认可以进出目录。这太不安全了。我们可以设定使用本地用户登陆时,将其锁定在家目录,无法进入别的目录。
配置文件修改:
chroot_local_user=YES (将所有用户都锁住)
命令行输入:
chmod u-w /home* ####不修改本地用户权限太大
修改前:
修改后
2.锁定家目录的黑白名单设定
刚才的方法针对的是所有本地用户。可以通过黑白名单的方法来区分不同本地用户的权限。
配置文件修改:
chroot_list_enable=YES(黑名单)|No(白名单)
chroot_list_file=/etc/vsftpd/chroot_list ###文件里写入本地用户
值得注意的是:黑白名单的列表是同一列表。黑白名单的区别就是配置文件中设定:chroot_list_enable=时,YES即**/etc/vsftpd/chroot_lis**列表里的用户为黑名单;NO则为白名单。
我们可以看看效果:
设定黑名单
黑名单用户
无法离开家目录
改成白名单
则名单里的用户可以离开家目录
3.永久黑名单及临时黑名单
除了锁定用户进出家目录的黑白名单外,还有限制能否使用FTP服务的黑名单。
/etc/vsftpd/ftpusers内的用户为永久黑名单,无法使用FTP服务。
使用名单内的用户无法登陆ftp。
而临时黑名单内的用户也不可以使用ftp服务。
但临时黑名单可以转换成白名单,使得只有名单内的用户可以使用ftp服务。
配置文件内添加一行:
userlist_deny=NO
此时名单内的用户可以登陆
名单外的用户无法登陆
四.虚拟用户设定
在实际中,不可能给每一个用户都分配一个服务器的本地用户。这样不安全也不现实。因此,用户一般都是以虚拟用户登陆的。而虚拟用户的登陆,需要认证。这牵涉到了Linux系统的安全模式:3A认证。
3A机制: account auth author 帐号、认证和用户授权。
而认证的程序是PAM:Pluggable Authentication Modules,可插入认证模块。可以动态引入认证各种认证模块和插件,而无需重新加载系统。具有高度灵活性,随配随生效。
1.创建虚拟用户身份
1.创建虚拟用户名单
1. vim /etc/vsftpd/vuserlist ###创建虚拟用户名单
2. user1 ###用户
3. 123 ##密码
4. user2
5. 123
6. user3
7. 123
注意:编辑虚拟用户密码时注意不要空格,空格也算一个字符,且不易排错
2.对虚拟用户文件进行加密
db_load -T -t hash -f vuserlist vuserlist.db##对虚拟用户文件进行hash加密,加密后会生成vuserlist.db这个加密文件
3.配置认证
在pam.d下是各种认证。我们也需要将虚拟用户的认证写入。
vim /etc/pam.d/renzheng
account required pam_userdb.so db=/etc/vsftpd/vuserlist(默认带db)
当账户认证时,用pam_userdb.so工具检查与加密的db文件是否符合,正确认证,错误返回
auth required pam_userdb.so db=/etc/vsftpd/vuserlist
当密码认证时,用pam_userdb.so工具检查与db内容是否符合,正确认证,错误返回
4.将认证写入配置文件
vim /etc/vsftpd/vsftpd.conf ##编辑该配置文件
pam_service_name=renzheng ##将用户认证指向renzheng文件
guest_enable=YES ##虚拟用户可以登录
5.虚拟用户登录
lftp 172.25.70.251 -u user1 ###检测虚拟用户是否可以登陆
2.虚拟用户的授权
1.修改虚拟用户登陆的本地用户
配置文件中添加:
guest_username=student##虚拟用户以student登录
2.虚拟用户家目录独立设定(使虚拟用户登录进去不是默认使用的ftp用户的家目录,可以根据用户名称进入自己的家目录)
1. mkdir /var/ftpuser ###虚拟用户家目录的地址
2. mkdir /var/ftpuser/{user1,user2,user3} -p
3. mkdir /var/ftpuser/user{1,2,3}/pub -p
4. touch /var/ftpuser/user1/user1file ##可以观察是否更改成功
5. touch /var/ftpuser/user2/user2file
6. touch /var/ftpuser/user3/user3file
7. vim /etc/vsftpd/vsftpd.conf ###修改配置文件
8. local_root=/var/ftpuser/$USER ###家目录为/var/ftpusrdir/登陆名,$USER是shell下的变量,vim本身不识别
9. user_sub_token=$USER ,意为读取调用环境中的变量含义
10. chgrp ftp /var/ftpuser -R
11. chmod 775 /var/ftpuser/user{1..3}/pub
可以看到家目录已经成功改变了。
3.虚拟用户的独立配置
之前的配置都是针对某一类用户。想要用户具有单独配置,可以:
mkdir -p /etc/vsftpd/user_conf # ###建立指定目录
touch /etc/vsftpd/user_conf/user1 ###在刚建目录下创建虚拟用户user1的配置文件
vim /etc/vsftpd/user_conf/user1 ###编辑文件
文件内写入你想要该虚拟用户拥有的权限
==anon_upload_enable=YES ==
在配置文件内加入一行,指向你刚才创建的用户的配置文件:
vim /etc/vsftpd/vsftpd.conf
user-config_dir=/etc/vsftpd/user_conf ##用户配置目录指向刚才建立的目录
关闭公共的上传功能:
我们会发现:只有配置了上传的user1用户可以上传文件。