开发者社区> 问答> 正文

系统默认安装的vsftp的简单配置教程

mxf851x 2012-10-07 19:32:42 12126
有点麻烦哈!不会的直接用xftp可以管理所有的文件夹,把vsftpd关了就行!


VSFTPD的文件结构主要包括:

  /usr/sbin/vsftpd ---- VSFTPD的主程序。

  /etc/rc.d/init.d/vsftpd ---- 启动脚本。

  /etc/vsftpd/vsftpd.conf ---- 主配置文件。

  /etc/pam.d/vsftpd ---- PAM认证文件。

  /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件。

  /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件。

  /var/ftp ---- 匿名用户主目录。

  /var/ftp/pub---- 匿名用户的下载目录。

  此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log。
二: .vsftpd 的关闭与启动
如果你不会配置的话建议关闭吧!虽然我不知道开启会有什么影响,但是我觉得多了一个对外的服务,就多了一份安全隐患,(个人认为哈!)
1.       启动:/etc/rc.d/init.d/vsftpd start 或者service vsftpd start
2.       停止:/etc/rc.d/init.d/vsftpd stop  或者 service vsftpd stop
3.       重启:/etc/rc.d/init.d/vsftpd stop  或者service vsftpd restart
分别对应的状态是:
root@test ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@test ~]# service vsftpd stop
Shutting down vsftpd: [ OK ]
[root@test ~]# service vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
[root@test ~]# /etc/rc.d/init.d/vsftpd start
Starting vsftpd for vsftpd:  [ OK ]
[root@test ~]# /etc/rc.d/init.d/vsftpd stop
Shutting down vsftpd: [ OK ]
[root@test ~]# /etc/rc.d/init.d/vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
[root@test ~]# /etc/rc.d/init.d/vsftpd status
vsftpd (pid 3931) is running...
[root@test ~]#
三::vsftp提供3种远程的登录方式:
(1)匿名登录方式
  就是不需要用户名,密码。就能登录到服务器电脑里面
(2)本地用户方式
需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。
(3)虚拟用户方式
  同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)
四:其他命令
--查看vsftpd 启动状态
[root@test ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@test ~]# chkconfig vsftpd on
[root@test ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
五:这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的运行级别。

我们也可以加level 选项来指定:
[root@test ~]# chkconfig --level 0 vsftpd on
[root@test ~]# chkconfig --list vsftpd
vsftpd 0:on 1:off 2:on 3:on 4:on 5:on 6:off
我们看到0已经设置为on了。

我们可以使用man chkconfig 来查看帮助:
--level levels
Specifies the run levels an operation should pertain to. It is given as a string of numbers from 0 to 7. For example, --level 35 specifies runlevels 3 and 5.

传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:
(1)0级是完全关闭系统的级别
(2)1级或者S级代表单用户模式
(3)2-5 级 是多用户级别
(4)6级 是 重新引导的级别
防火墙
(1)查看防火墙
我一般都是把系统的防火墙关闭了。 因为开了会有很多限制。

[root@test ~]# /etc/init.d/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
2 ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

You have new mail in /var/spool/mail/root
--添加开放21号端口:
[root@test~]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
[root@test ~]# /etc/init.d/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
2 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
2 ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
--保存配置
[root@test ~]# /etc/rc.d/init.d/iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
--重启防火墙:
[root@test ~]# service iptables {start|stop|restart}

(2)查看关闭selinux

[root@test ~]# sestatus
SELinux status: disabled
我这里在安装操作系统的时候就关闭了selinux,如果没有关闭,可以修改如下文件来关闭:
[root@test ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
[root@test ~]#

保存退出并重启系统reboot

三. FTP配置文件

FTP 安装好之后,在/etc/vsftpd/目录下会有如下文件:
[root@test ~]# cd /etc/vsftpd/
[root@test vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@test vsftpd]#

vsftpd.conf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器
user_list: 指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

[root@test vsftpd]# cat user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.

我们过滤掉#的注释后,查看一下vsftpd.conf 文件:
[root@test ftp]# cat /etc/vsftpd/vsftpd.conf |grep -v '^#';
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

至于这些参数的意思,在注释里有详细的说明。


我们可以在vsftpd.conf 文件设置如下参数:
(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息
(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)
(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间
(4)accept_timeout=60 设置在多长时间后自动建立连接
(5)connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;
(6)max_clients=200 指明服务器总的客户并发连接数为200
(7)max_per_ip=3 指明每个客户机的最大连接数为3
(8)local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制
(9)anon_max_rate=30000匿名用户的最大传输速率限制
(10)pasv_min_port=端口
(11)pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;
(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;
(13)listen_port=端口号 设置FTP工作的端口号,默认的为21
(14)chroot_local_user=YES 设置所有的本地用户可以chroot
(15)chroot_local_user=NO 设置指定用户能够chroot
(16)chroot_list_enable=YES
(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 )
(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;
(19)chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;
(20)chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;
(21)userlist_enable=YES/NO 是否加载用户列表文件;
(22)userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;
(23)userlist_file=/etc/vsftpd/user_list 列表文件

限制IP 访问FTP:
#vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY 设置该IP地址不可以访问ftp服务

FTP 访问时间限制:
#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd
#vi /etc/xinetd.d/vsftpd/
修改 disable = no
access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)
例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp
ftp的配置基本上只有这些了。

默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:
[root@test ftp]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

创建一个用户来访问FTP,并指定该用户的FTP 目录:
[root@test u02]# useradd -d /u02/qsftp qs
[root@test u02]# passwd qs
Changing password for user qs.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

这里指定的是/u02/qsftp 这个目录,要注意个目录的权限。

更改用户不能telnet,只能ftp:
usermod -s /sbin/nologin username //用户只能ftp,不能telnet
usermod -s /sbin/bash username //用户恢复正常

禁止用户ssh登陆
useradd username -s /bin/false

更改用户主目录:
usermod -d /bbb username //把用户的主目录定为/bbb

然后用qs这个用户就可以访问了。


以上只是一些简单的设置。

网络协议 安全 Unix Linux Shell 网络安全 数据安全/隐私保护
分享到
取消 提交回答
全部回答(2)
  • ali5153940
    2012-11-01 16:17:57
    Re系统默认安装的vsftp的简单配置教程
    没装过,学习一下
    0 0
  • yamise
    2012-10-07 21:51:08
    我是直接用xftp了。
    0 0
添加回答
+ 订阅

云安全开发者的大本营

推荐文章
相似问题
推荐课程