centos6部署vsftpd服务
vsftpd 是一个非常安全和高效的FTP服务器软件
env
- centos6.x
vsftpd
#docs
feature
- 轻量级
- 支持匿名访问
- 支持虚拟用户
- 限速、日志记录
install
yum install -y vsftpd
配置
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd/ftpusers 指定用户不能访问FTP服务器 依据/etc/pam.d/vsftpd判断
/etc/vsftpd/user_list 文件中指定的用户是否可以访问ftp服务器vsftpd.conf文件中的userlist_deny的取值来决定
anonymous_enable=YES/no 是否允许匿名用户登录
anonymous_enable=yes/no 是否允许匿名上传文件
local_enable= YES/no 是否允许本地用户登录
write_enable= YES/no 是否允许本地用户上传
guest_enable=yes/no 是否允许虚拟用户登录;
local_mask=022 设置本地用户的文件生成掩码为022,默认值为077
dirmessage_enable= YES 设置切换到目录时显示.message隐含文件的内容
xferlog_enable= YES 激活上传和下载日志
connect_from_port_20=YES 启用FTP数据端口连接
pam_service_name=vsftpd 设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下
userlist_enable= YES 允许vsftpd.user_list文件中的用户访问服务器
userlist_deny= YES 拒绝vsftpd.user_list文件中的用户访问服务器
listen= YES/no 是否使用独占启动方式(这一项比较重要)
tcp_wrappers= YES/no 是否使用tcp_wrappers作为主机访问控制方式
ftpd_banner=welcome to ftp service 设置连接服务器后的欢迎信息
idle_session_timeout=60 限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)
data_connection_timeout=120 设置客户机在进行数据传输时,设置空闲的数据中断时间
accept_timeout=60 设置在多长时间后自动建立连接
connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;
max_clients=200 指明服务器总的客户并发连接数为200
max_per_ip=3 指明每个客户机的最大连接数为3
local_max_rate=50000(50kbytes/sec)
anon_max_rate=30000 设置本地用户和匿名用户的最大传输速率限制
pasv_min_port=端口
pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;
listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;
listen_port=端口号 设置FTP工作的端口号,默认的为21
chroot_local_user=YES 设置所有的本地用户可以chroot
chroot_local_user=NO 设置指定用户能够chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用户才能执行 )
local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;
chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;
chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;
userlist_enable=YES/NO 是否加载用户列表文件;
userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;
userlist_file=/etc/vsftpd.user_list 列表文件
更多参数详情查看example
anonymous_enable=YES YES 是否用于匿名用户(ftp或anonymous)登录FTP,登录后进入/var/ftp
local_enable=YES NO 是否允许本地用户登录FTP服务器,登录后进入用户主目录
write_enable=YES NO 是否允许写入
local_umask=022 077 默认的umask码
anon_upload_enable=YES NO 是否允许匿名用户上传文件。如果此项要生效,则配置write_enable必须激活。并且匿名用户所在相关目录有写权限。
anon_mkdir_write_enable=YES NO 是否允许匿名用户创建新目录。如果此项要生效,则配置write_enable必须激活。并且匿名用户所在相关目录有写权限。
dirmessage_enable=YES NO 是否激活目录欢迎信息功能。.message文件可以通过更改message_file来调整。
xferlog_enable=YES NO 是否启动记录上传和下载日志。
connect_from_port_20=YES 20 设定PORT模式下的连接端口(只要connect_from_port_20被激活)。
chown_uploads=YES NO 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
chown_username=whoever ROOT 置想要改变的上传文件的属主,如果需要,则输入一个系统用户名,例如可以把上传的文件都改成root属主。whoever:任何人
xferlog_file=/var/log/xferlog /var/log/xferlog 设置日志文件的文件名和存储路径
xferlog_std_format=YES NO 是否使用标准的ftpd xferlog日志文件格式
idle_session_timeout=600 300 设置空闲的用户会话中断时间,默认是10分钟
data_connection_timeout=120 300 设置数据连接超时时间,默认是120秒
nopriv_user=ftpsecure nobody 运行vsftpd需要的非特权系统用户
async_abor_enable=YES NO 是否允许运行特殊的ftp命令async ABOR。
ascii_upload_enable=YES
ascii_download_enable=YES NO 是否使用ascii码方式上传和下载文件。
deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails NO 禁止匿名用户通过banned_email_file定义的邮件地址做密码
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list NO 设置为NO时,用户登录FTP后具有访问自己目录以外的其他文件的权限;设置为YES时,chroot_list_file中的用户列表被锁定在自己的home目录下。此时chroot_local_user=NO,如果chroot_local_user=YES则chroot_list_file中的用户将不被锁定在home目录下。
ls_recurse_enable=YES NO 是否允许递归查询
listen=YES NO vsftpd 处于独立启动模式
listen_ipv6=YES NO 是否支持IPV6
pam_service_name=vsftpd ftp 设定vsftpd将要用到的PAM服务的名字。
userlist_enable=YES NO 设置为YES,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd查到该用户名在列表中,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚
userlist_deny=YES YES 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO,只允许在文件中的用户登录FTP服务器
userlist_file /etc/vsftpd/user_list 当userlist_enable被激活,系统将去这里调用文件。
tcp_wrappers=YES NO 是否允许tcp_wrappers管理
listen_port 21 如果vsftpd处于独立运行模式,这个端口设置将监听的FTP连接请求。
max_clients 0 FTP的最大连接数,0为无限制。
max_per_ip 0 单个IP的最大连接数。
anon_max_rate 0 匿名用户允许的最大传输速度,单位:字节/秒
local_max_rate 0 本地认证用户允许的最大传输速度,单位:字节/秒。/td>
#vsftp的登录方式
- 匿名帐号
- 本地帐号
- 虚拟帐号
匿名账户登陆
1.配置(默认生成配置支持匿名登陆)
[root@r6-24 vsftpd]# egrep -v "(^#|^$)" vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
默认ftpserver根目录/var/ftp/pub
2.匿名登陆ftp
[root@euler-201 ~]# ftp 172.24.20.31
Connected to 172.24.20.31 (172.24.20.31).
220 (vsFTPd 2.2.2)
Name (172.24.20.31:root): anonymous //输入登陆账户
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (172,24,20,31,171,244).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Jun 23 02:04 pub
226 Directory send OK.
ftp> cd pub //切换到公共目录
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (172,24,20,31,180,169).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 901 Jun 23 02:04 passwd
226 Directory send OK.
ftp> get passwd //下载文件
local: passwd remote: passwd
227 Entering Passive Mode (172,24,20,31,147,43).
150 Opening BINARY mode data connection for passwd (901 bytes).
226 Transfer complete.
901 bytes received in 3.3e-05 secs (27303.03 Kbytes/sec)
ftp> exit
221 Goodbye.
[root@euler-201 ~]# ll
total 4.0K
-rw-r--r-- 1 root root 901 Jun 23 10:07 passwd
[root@euler-201 ~]# cat passwd //查看文件
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ftp-mvp:x:500:500::/home/ftp-mvp:/sbin/nologin
本地用户登陆
1.add ftp user
useradd -d /data/ftp -s /sbin/nologin -M ftp-mvp
echo ftp-mvp:321321|chpasswd ftp-mvp
2.限定用户登陆后可访问目录
tee >/etc/vsftpd/chroot_list <<EOF
ftp-mvp
EOF
#mkdir -p /data/ftp && chown -R ftp-mvp: /data/ftp && chmod o+w /data/ftp
3.修改配置
tee >/etc/vsftpd/vsftpd.conf <<EOF
# 禁止匿名登陆
anonymous_enable=NO
# 本地用户开启
local_enable=YES
write_enable=YES
local_umask=022
# 日志相关设置
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
# 设置监听与会话时长
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
# 上传
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome
# chroot_list
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# chroot后根目录
#local_root=/data/ftp
# 名字连接数
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
max_clients=10000
EOF
4.restart vsftpd
[root@r6-24 vsftpd]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@r6-24 vsftpd]# cp /etc/inittab /data/ftp/
[root@r6-24 vsftpd]#
5.testing
[root@r6-24 ~]# ftp 172.24.20.31
Connected to 172.24.20.31 (172.24.20.31).
220 Welcome
Name (172.24.20.31:root): ftp-mvp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,24,20,31,39,22).
150 Here comes the directory listing.
226 Directory send OK.
ftp> put passwd
local: passwd remote: passwd
227 Entering Passive Mode (172,24,20,31,114,35).
150 Ok to send data.
226 Transfer complete.
994 bytes sent in 1.3e-05 secs (76461.54 Kbytes/sec)
ftp> dir
227 Entering Passive Mode (172,24,20,31,172,73).
150 Here comes the directory listing.
-rw-r--r-- 1 500 500 994 Jul 01 09:03 passwd
226 Directory send OK.
ftp>