Linux FTP 服务器配置
Ø 简介
本文主要介绍 Linux FTP 服务器配置,包括如下内容:
1. FTP 介绍
2. 安装及配置
3. 用户访问
4. 匿名访问
5. 连接ftp 的常用命令
6. nmap 端口扫描工具
1. FTP 介绍
FTP(File Transfer Protocol)文件传输协议,是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式,FTP 属于网络传输协议的应用层。
通俗的将就是,如果一台服务器上如果启用了 ftp 协议,任意的一台电脑就可以与这台服务器建立连接。只要权限足够,就可以从这个服务器上下载文件和上传文件。
ftp 有两个端口号,一个端口号是21,用于传输控制流;另一个端口号是20,用于传输数据流。也就是21号端口用于建立连接,20号端口用于传输数据。
n 常用的FTP 软件
1) Wu-FTP
古老、配置比较复杂,安全性不是特别理想。UNIX 系统自带的 FTP 软件。
2) Proftp(Professional FTP daemon)
功能强大。
Proftpd 简介:
全称Professional FTP daemon,是针对Wu-FTP 的弱项而开发的,软件在经过多年的发展之后完善了很多功能,ProFTP 已经成为继Wu-FTP 之后最为流行的FTP 服务器软件,越来越多的站点选用它构筑安全高效的FTP 站点。Proftpd 软件和vsftpd 一样是一个开放源代码的ftp 服务器软件,但是可配置项比vsftpd 要多,是目前比较流行的ftp 软件,Proftpd 的配置和apache 的配置相似,因此该软件也十分容易配置和管理。
3) vsftp(推荐使用)
安全、高速、稳定。具有以下特点:
1. 配置简洁、使用方便,使用加密传送安全性较高。
2. 绝大多数Linux 提供的官方下载,都是有vsftp 来提供的。
vsftp 简介:
全称Very secure FTP daemon,比ProFTPD 具有更高的安全性。vsftpd 使用一般身份启动服务,降低了FTP 服务的PID 权限,使该服务即使被入侵也无法得到有效的系统管理权限。同时vsftpd 利用chroot 软件来改变登录者的根目录,使登陆者只能在这个目录中活动,限制了登录者的执行权限。vsftpd 通过配置vsftpd.conf 文件来完成部署,设定简单,登录者仅分为anonymous 和real user 两种。可以使用standalone 和super daemon 的方式启动。vsftpd 无法控制每个目录的流量、不能控制上传和下载的比例、不能针对不同的登陆者进行不同的权限设定。
2. 安装及配置
说明:以下标红的文本为安装vsftp 所需的步骤。
更多配置参考:https://www.cnblogs.com/wenwei-blog/p/8890436.html
n 首先检查系统是否安装了 vsftp
rpm -q vsftpd
vsftpd-3.0.2-27.el7.x86_64
如果没有安装,直接使用yum 安装
yum -y install vsftpd
安装完成后,启动 vsftpd 服务
systemctl start vsftpd
systemctl enable vsftpd #开机自启动
或者 service vsftpd restart
启动后默认支持用户访问宿主目录,及匿名用户访问 /var/fpt目录。
n vsftp 相关配置
vi /etc/vsftpd/vsftpd.conf
1. 日志选项(建议开启)
xferlog_enable=YES #是否启用日志功能,默认开启
xferlog_std_format=YES #日志文件记录的格式(标准格式),默认开启
xferlog_file=/var/log/xferlog #如果启用日志,需要将日志文件存放的位置注释取消掉,默认注释
提示:在 Linux 系统中,建议都将日志存放在 /var/log 目录下。
2. 设置非标准端口
listen_port=18021 #默认连接断开为21,数据传输端口为20
添加至 listen=NO 下面;
1024以上的端口,不与其他知名端口冲突;
使用非标准断开时,需要显示指定端口号,比如:ftp 192.168.1.150 18021;
设置为非标准端口,主要是为了安全性考虑,可以防止如 nmap 这种端口扫描器扫描。
3. 其他选项
ftpd_banner=Welcome to blah Abeam FTP service. #设置登录欢迎信息
idle_session_timeout=600 #用户会话空闲10分钟后被断开
max_clients=50 #服务器总的并发连接数为50
max_per_ip=3 #每个客户机的最大连接数为3
3. 用户访问
1) 创建ftp 用户
groupadd ftpg
useradd -g ftpg -d /opt/res ftpuser
echo "ftpuser" | passwd --stdin ftpuser
2) 防火墙开发相应端口
systemctl start firewalld
firewall-cmd --zone=public --list-ports --permanent #查看开放端口
firewall-cmd --zone=public --add-port=18021/tcp --permanent
# 被动式端口
firewall-cmd --zone=public --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
3) 设置 vsftpd.conf 配置文件
vi /etc/vsftpd/vsftpd.conf
必须设置以下3个选项:
local_enable=YES #默认YES
write_enable=YES #默认YES(NO 禁止用户上传)
local_umask=022 #本地用户创建目录或文件的掩码,默认022
local_max_rate=200000 #设置用户最大传输速率为200KB/s(添加)
若启用了 SELinux,允许用户上传文件到宿主目录,需要执行以下命令:
getsebool -a | grep ftp #查看状态
setsebool -P tftp_home_dir on
setsebool -P allow_ftpd_full_access on
注意:否则用户也无法上传文件。
关闭 SELinux,编辑 /etc/selinux/config
SELINUX=enforcing 改为 disabled #阿里云 ESC 默认为 disabled
注意:阿里云 ESC 一定不要设置为enforcing,否则重启后无法连接。
后来,登录阿里云控制台远程连接,发送远程命令才得以解决!!!
mv /etc/selinux/config /etc/selinux/config.bak
sed 's/enforcing/disabled/g' /etc/selinux/config.bak >> /etc/selinux/config #将 enforcing 替换为 disabled
4) 用户访问控制(两种方式)
限制指定的用户不可以访问,而其他用户可以访问,适合大多数可以访问:
userlist_enable=YES #默认只有该选项
userlist_deny=YES #是否为禁止模式
userlist_file=/etc/vsftpd.user_list #每个用户名占一行
限制指定的用户可以访问,而其他用户不可以访问,适合大多数用户不可以访问:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
5) 设置 chroot
chroot 就是把ftp 用户宿主目录作为/根目录,使其用户无法切换到其他目录。
设置所有用户执行chroot
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #限制只能访问自身目录,默认注释
allow_writeable_chroot=YES #加入此项
设置指定的用户不执行chroot
chroot_local_user=YES #启用chroot,默认注释
chroot_list_enable=YES #启用指定的用户执行chroot,默认注释
chroot_list_file=/etc/vsftpd/chroot_list #每个用户名占一行,默认注释
6) 启用被动连接模式
vi /etc/vsftpd/vsftpd.conf #末尾添加以下选项
#启用被动连接模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
4. 匿名访问
n 设置 vsftpd.conf 配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #是否允许匿名访问,默认为YES
anon_max_rate=100000 #设置匿名用户最大传送速率为100KB/s(这个选项默认没有,需要添加,开启匿名下载时建议开启此限制)
开启匿名用户上传功能
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
1) 匿名 FTP 用户名:ftp 或anonymous,密码为空即可;
2) 匿名用户访问的目录:为ftp 伪用户的宿主目录下:/var/fpt;
grep ftp /etc/passwd #查看ftp 伪用户的宿主目录
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
3) 使用Windows DOS 命令测试连接 vsftp
C:\Users\Abeam>ftp 192.168.1.150
用户(192.168.1.150:(none)): ftp #用户名输入ftp
或者
C:\Users\Abeam>ftp
ftp> open 192.168.1.150
# 如果连接不上,关闭防火墙或开放20、21端口
systemctl stop firewalld
5. 连接ftp 的常用命令
连接ftp:ftp FTP地址
ftp>
ls #查看目录下的文件
cd #切换目录(FTP服务器)
bin #二进制传输(vsftp 不需要)
lcd #指定下载目录(本地),如果不指定默认下载到当前登录目录
get #下载单个文件
mget #下载多个文件
put #上传单个文件
mput #上传多个文件
prompt #关闭交互模式(如:提示某某文件是否需要下载?关闭后默认为下载)
bye #退出
open #连接 FTP 服务器
user #输入 FTP 服务器用户名和密码
另外,ftp 命令也可以执行 Linux 的一些命令,如:pwd
说明:其实也可以不用掌握这些命令,通常都使用 FTP 的客户端来实现上传和下载。但如果需要实现自动化的上传和下载,就需要了解这些命令了。
6. nmap 端口扫描工具
nmap 基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。
1) 光盘安装nmap
mount /dev/cdrom /mnt/cdrom/
find /mnt/cdrom -name "nmap*" #搜索软件包
/mnt/cdrom/Packages/nmap-6.40-16.el7.x86_64.rpm #命令行
/mnt/cdrom/Packages/nmap-ncat-6.40-16.el7.x86_64.rpm #图形工具
rpm -ivh /mnt/cdrom/Packages/nmap-6.40-16.el7.x86_64.rpm #安装
2) 使用方法
nmap 192.168.1.150 认扫描1 – 65535
nmap -p1-1024 192.168.1.150 #扫描指定端口范围