每日一记:文件服务器之FTP服务器

FTP(File transfer protocol):最主要的功能是在服务器与客户端之间进行档案的传输,使用的是明码传输方式

FTP服务器软件提供的不同等级的用户身份:user、guest、anonymous
三种身份的权限和功能有差异
FTP可以利用系统的syslogd来进行数据的记录,记录的数据包括用户曾经下达过的命令与用户传输数据的记录
FTP可以限制用户仅能在自己的家目录当中活动,登入FTP后,显示的 [根目录]就是自己家目录的内容,这种环境称为change root,简称chroot
FTP的两个端口:port 21用来接受命令、port 20用来传输数据
FTP的数据传输通道是在有数据传输的行为时才会建立的通道
port 21是接受来自客户端的主动连接;port 20为FTP服务器主动联机至客户端

FTP服务器与客户端隔着防火墙(客户端在防火墙后,FTP服务器在防火强前),无法建立联机的解决方法:
1、使用iptables所提供的FTP侦测模块;使用modprobe指令来加载ip_conntrack_ftp
ip_nat_ftp等模块(前提是没有更改FTP服务器的命令通道的默认端口21)
2、客户端选择被动式(Passive)联机模式;且透过passive ports的功能来[限定]服务器启动的port number来防止服务器启动的端口被劫持

较为安全的FTP: ssh提供的sftp-server ,优点是传输的数据是经过加密的

vsftpd软件可以透过 /etc/vsftpd/ftpusers 档案来设定不具有登入FTP的账号
vsftpd(Very Secure FTP Daemon)服务器基础设定:
vsftpd的特点:
vsftpd服务启动子身份为一般用户,对Linux系统的全年较低;vsftpd亦利用chroot()这个函式进行改换根目录的动作,是的系统工具不会对vsftpd服务所误用

vsftpd:使用yum install vsftpd安装
主要配置文件:/etc/vsftpd/vsftpd.conf ,以bash的变量设定相同的方式来处理的,参数=设定值,等号两边不能与空白

/etc/pam.d/vsftpd : 是vsftpd使用PAM模块时的相关配置文件,主要作为身份认证之用,还有一些用户身份的抵挡功能,也是透过这个档案来达成的

/etc/vsftpd/ftpusers :与上一个档案有关,这个档案就是PAM模块所指定的那个无法登入的用户配置文件;将不想让其登入的FTP账号写入这个档案即可,一行一个账号

/etc/vsftpd/user_list : 此档案能否生效与vsftpd.conf内的两个参数有关,分别是 userlist_enable,userlist_deny ; 预设这个档案与 /etc/vsftpd/ftpusers几乎一模一样,可将不希望可登入vsftpd的账号写入这里,这个档案会依据vsftpd.conf配置文件内的userlist_deny=[YES/NO]而不同

/etc/vsftpd/chroot_list : 预设是不存在的,需要手动建立,主要功能是可以将某些账号的使用者chroot在他们的家目录下;这个档案要生效与vsftpd.conf内的[chroot_list_enable,chroot_list_file]两个参数有关

/usr/sbin/vsftpd : 是vsftpd的主要执行档,vsftpd只有这一个执行档
/var/ftp/ : vsftpd的预设匿名者登入的根目录,与ftp这个账号的家目录有关

使用 man 5 vsftpd.conf 可以得到完整的参数说明

vsftpd启动的模式:vsftpd可以使用stand alone或super daemon 的方式来启动
预设(默认)是以stand alone来启动的
提供给整个因特网来进行大量下载的任务时,使用stand alone的方式
仅提供给内部人员使用时,使用super daemon 来管理

启动vsftpd : systemctl start vsftpd
如果自行设定以 super daemon 来启动:当FTP是很少被使用时
1、修改配置文件: vim /etc/vsftpd/vsftpd.conf
找到 listen=YES 这一行,将其改成 listen=No
2、修改super daemon 的配置文件,自行建立底下档案
yum install xinetd <==假设xinetd没有安装时
vim /etc/xinetd.d/vsftpd
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
3、重新启动
systemctl stop vsftpd
/etc/init.d/xinetd restart
netstat -tulnp | grep 21

实体账号的SELinux 问题: 预设的情况下,CentOS的FTP是不允许实体账号登入取得家目录数据的,是SELinux导致的
解决方法: getsebool -a | grep ftp
设定 ftp_home_dir --> off 修改这个设定为 on, 1代表on,0代表off
setsebool -P ftp_home_dir=1 或setsebool -P ftp_home_dir=on

对用户(包括未来新增用户)进行chroot :
1、修改vsftpd.conf的参数值
vim /etc/vsftpd/vsftpd.conf
#增加是否设定针对某些使用者来chroot的相关设定
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
2、建立不被chroot的使用者账号列表,即使没有任何账号,此档案也要存在
vim /etc/vsftpd/chroot_list
vbird
dmtsai
重启vsftpd软件

限制实体用户的总下载流量(带宽):
在配置文件vsftpd.conf里添加一个参数 :local_max_rate=1000000 <==流量的单位是bytes/second
重启vsftpd软件即可

限制最大同时上线人数与同一IP的FTP联机数:
修改vsftpd.conf配置文件: vim /etc/vsftpd/vsftpd.conf
#增加底下的这两个参数: max_clients=10
max_per_ip=1
重启vsftpd软件即可

建立严格的可使用ftp的账号列表:使得写入/etc/vsftpd/user_list的用户才能使用ftp
修改配置文件: vim /etc/vsftpd/vsftpd.conf
#这几个参数必须要修改成这样:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
重启vsftpd软件

匿名者默认登入的根目录是以ftp这个用户的家目录为主,所以可以使用 finger ftp来查阅
默认的匿名者根目录在 /var/ftp/ 中,匿名者取得的身份是ftp

FTP发生错误时,检查/var/log/vsftpd.log 、/var/log/xferlog与 /var/log/messages 排除错误
/var/log/vsftpd.log预设不会出现,可加入 /var/log/vsftpd.log的支持:
vim /etc/vsftpd/vsftpd.conf
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#加入这两个设定值即可; 重启vsftpd软件
这样设置后:未来有新联机或者是错误时,就会额外写一份到 /var/log/vsftpd.log中去

客户端的图形接口FTP联机软件:
ftp及lftp这两只指令是文字接口的
图形接口软件: gftp
windows 操作系统的自由软件 : Filezilla

透过浏览器取得FTP联机的方式:
ftp://username:yourpassword@your_ip

让vsftpd增加SSL的加密功能:
进行ftps的服务器建置:
1、检查vsftpd有无支持ssl模块
ldd $(which vsftpd) | grep ssl
有出现libssl.so.10=> /usr/lib64/libssl.so.10 (0x000007f0587879000)字样就是有支持,才能进行下一步
2、建立专门给vsftpd使用的凭证数据:
建立凭证的目录就是: /etc/pki/tls/certs/
cd /etc/pki/tls/certs
make vsftpd.pem
cp -a vsftpd.pem /etc/vsftpd/
ll /etc/vsftpd/vsftpd.pem 注意一下权限
3、修改vsftpd.conf的配置文件,假定有实体、匿名账号

总结:FTP的服务器软件非常多,有 Wu FTP、Proftpd、vsftpd等等
大多数的FTP服务器软件都提供chroot的功能,将实体用户限制在他的家目录内
FTP的指令、与用户活动所造成的登录档是放置在/var/log/xferlog里面
FTP的数据传送模式: ASCII与Binary两种;在进行ascii传送时,被传送的档案将会以文本模式来进行传送的行为,因此,档案的属性会被修改,一般来说,ACSII仅用在文本文件与一些原始码档案的传送

猜你喜欢

转载自blog.51cto.com/3134965/2138945
今日推荐