一.查看是否已经安装vsftpd:
rpm -qa|grep vsftpd
如果已经安装,需要卸载的话使用:
rpm -e vsftpd-2.2.2-11.el6_3.1.x86_64 --nodeps
如果没有安装,则安装:
yum -y install vsftpd
配置vsftpd
vi /etc/vsftpd/vsftpd.conf
二.开启匿名登录
ftp匿名登录一般只作为公共文件服务器下载使用,一般只读下载,不提供上传功能
anonymous_enable=YES #开启匿名登录,默认的服务路径是ftp用户的宿主目录
#anon_upload_enable=YES #禁止上传
#anon_mkdir_write_enable=YES #禁止写
#激活上传和下载日志
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#设置欢迎信息
ftpd_banner=Welcome to blah FTP service.
#设置匿名用户最大传输速率
anno_max_rate=100000 #大约是100KB/s
#最后加入如下配置:ftp会使用随机端口,这里做一下限制,保证端口可控,下面开通防火墙即可
pasv_enable=YES
pasv_max_port=30100
pasv_min_port=30000
开启防火墙:
开启端口:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 30000:30100 -j ACCEPT
重启防火墙:
service iptables restart
重启vsftpd服务
service vsftpd restart
测试:
windows下开启cmd:
C:\Users\Administrator>ftp 192.168.36.24
连接到 192.168.36.24。
220 Welcome to blah FTP service.
用户(192.168.36.24:(none)): anonymous #输入anonymous,回车
331 Please specify the password.
密码: #直接回车
230 Login successful.
说明:
1.用户也可以使用ftp,不过要修改/etc/passwd,将ftp的密码位去掉,否则会要求你输入密码。
2.下载文件使用命令:get filename ,默认下载到登录ftp前的目录
3.ftp命令
退出:quit、bye
查看文件:ls
切换目录:cd
查看当前目录:pwd
切换为二进制传输模式:bin/binary :比如tar.gz等二进制文件,否则传输后可能无法正常使用
切换目录:lcd dir:ftp的工作目录,上传file时,表示file在该目录下,下载file时,表示下载到该目录
hash:传输过程中显示进度,每传输1k数据打印一个#
下载:get file
下载多个:mget file1 file2 # *:表示全部
上传:put file
上传多个:mput file1 file2
关闭交互模式:prompt,就是不询问
如果没有在ftp命令后面指定ip地址,可以使用open,user命令登录:
链接ftp服务器:open ip
输入用户名密码:user username passwd
根据上面的命令,可以写一个自动化的ftp上传或者下载脚步,下面就是一个上传文件的自动化脚步:
#!/bin/bash
#ftp_put.sh file
ftp -v -n 192.168.36.24 << EOF #-n 关闭命令行模式 -v 输出信息
user ftp ftp@ #如果没有密码,则密码位输入任意字符即可
binary
hash
lcd /usr/local/doc #登录用户要有该目录的相关权限
prompt
mput $1
bye
EOF
4.也可以使用windows资源管理器登录,ftp://192.168.36.24
三.普通用户登录
1.默认情况下,任意linux的有效用户都可以通过用户名/密码的方式登录ftp服务器,默认访问宿主目录,支持上传下载。
如果要禁止用户ssh到linux ,但是可以ftp到linux,则在创建用户时使用如下方式:
/usr/sbin/adduser -d /opt/ftp -g ftp -s /sbin/nologin ftpuser :禁止ftpuser用户登录系统,但可以ftp登录,家目录是/opt/ftp ,如果目录不存在,则需要先mkdir
passwd ftpuser :设置登录密码
2.配置文件设置:
#必须开启这三个配置
local_enable=YES #允许用户登录
write_enable=YES #允许写权限
local_umask=022 #默认创建的目录、文件的权限
local_max_rate=200000 #用户最大传输速率200KB/s
3.限制指定的用户不能访问,而其它用户可以访问
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list #一个用户名占一行,写入这个文件的用户不能访问
4.限制指定的用户可以访问,而其它用户不可以访问(推荐)
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list #一个用户名占一行,写入这个文件的用户可以访问
5.使登录ftp的用户只能访问自己的宿主目录
chroot_local_user=YES #把宿主目录当成根目录,使用户不能访问其他目录
#如果希望有些用户仍可以访问根目录,则开启如下设置
chroot_list_enable=YES #开启限制列表功能
chroot_list_file=/etc/vsftpd/chroot_list #设置哪些用户可以访问根目录,注意这里不是限制,是开启
四.其他设置选项
idle_session_timeout=600 #会话空闲600秒后挂断
max_clients=50 #允许的最大并发数
max_per_ip=3 #每个客户机允许的最大连接数
listen_port=10011 #指定非标准端口,默认服务监听是21 ,数据传输端口20,推荐修改21端口,避免端口扫描攻击。
如果修改了标准端口,使用ftp ip port 登录
端口扫描工具:安装:yum install nmap -y
nmap IP #如果修改了默认端口,则不能被扫描到。
nmap -p1-65535 IP #指定端口扫描范围从1到65535,这样就会扫描到,但是会非常慢,另外也判断不出是什么服务