linux运维之搭建出符合自己要求的vsftp服务


本文摘自PHP中文网,作者齐天大圣,侵删。

当我们在服务器上安装好了vsftpd这个软件后,并且已经理解该软件的主配置文件/etc/vsftpd/vsftpd.conf后,我们就可以搭建出自己想要的ftp服务了。

指定端口等

listen_port=21 设置监听的端口

download_enable=YES 允许下载文件

max_clients=100 限制并发客户端连接数

max_per_ip=100 限制统一ip的并发链接数

禁止匿名、实体用户登陆

首先把匿名用户登陆给关了,不给匿名用户浏览权限。

1

anonymous_enable=NO

那么为什么不允许实体用户登陆呢?因为实体用户本就可以用更安全的sftp登陆,所以,就不用使用ftp协议登陆了。另外,因为ftp是明文传输协议,如果账号密码被截获了,那就不好了。

如何禁止实体用户登陆呢?在文章下面配置虚拟用户的第三步骤会讲到,把/etc/pam.d/vsftpd下的所有内容都注释掉。

主动连接、被动连接设置

我们想要搭建既要支持主动连接模式也支持被动连接,那么设置如下:

主动连接模式的端口设置

1

connect_from_port_20=YES

设置防火墙,将21端口放行,另外不用开启20端口,直接对于主机主动向外请求的而响应的数据包允许进入本机(establish/related)。

1

2

iptables -A INPUT -p tcp --dport 21 -j ACCEPT # FTP服务

iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

开启被动模式,被动连接的端口限定为10001~11000中的任意一个。

1

2

3

pasv_enable=YES

pasv_min_port=10001

pasv_max_port=11000

设置防火墙,允许10000~11000之间的端口开放。

1

iptables -A INPUT -p tcp --dport 10001::11000 -j ACCEPT # ftp被动连接端口

配置虚拟用户

配置虚拟用户的步骤如下:

  1. 建立虚拟用户口令文件

  2. 生成虚拟用户口令认证文件

  3. 编辑vsftpd的PAM认证文件

  4. 建立本地映射目录并设置宿主目录权限

  5. 修改配置文件。

  6. 给每一个虚拟用户弄一个单独的配置文件

1.建立虚拟用户的口令文件,该文件的格式为奇数行为用户名,偶数行为密码。下面建立一个这样的文件/etc/vsftpd/vusers,内容如下:

1

2

3

4

ftptest1

111111

ftptest2

222222

2.生成虚拟用户口令认证文件,执行如下命令:

1

db_load -T -t hash -f  /etc/vsftpd/vusers  /etc/vsftpd/login.db

当命令正确执行后,就会出现 /etc/vsftpd/login.db文件。为了安全起见,我们将该文件的权限设置为600.

1

chmod 600 login.db

3.编辑虚拟用户所需的PAM配置文件

1

vim /etc/pam.d/vsftpd

将之前的内容全部给注释掉,并新加入两行

1

2

auth    required    /lib64/security/pam_userdb.so  db=/etc/vsftpd/login

account   required    /lib64/security/pam_userdb.so  db=/etc/vsftpd/login

注意,如果是32位的去掉lib后面64,另外login后面不用加入后缀的。这样操作之后,实体用户就不能登陆ftp服务了。

4.建立本地映射目录并设置宿主目录权限。

建立虚拟用户的宿主用户

1

# useradd -d /home/vsftp -s /sbin/nologin ftpuser

修改目录权限为755

1

# chmod 755 /home/vsftp/

5.修改配置文件。

把下面几行配置信息写入到/etc/vsftpd/vsftpd.conf配置文件中。

1

2

3

4

5

6

7

8

9

10

11

# 开启虚拟用户登陆功能

guest_enable=YES

 

# 将虚拟用户与宿主用户对应

guest_username=ftpuser

 

# pam认证文件(该配置默认存在)

pam_service_name=vsftpd

 

# vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了,所以要加入下面配置

allow_writeable_chroot=YES

6.给每一个虚拟用户建立单独的配置文件。

若想给每一个虚拟用户都建立单独的配置文件,则需要在主配置文件中加入

1

user_config_dir=/etc/vsftpd/config

指定虚拟用户的配置文件路径。接下来给两个虚拟用户建立各自的配置文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# ftptest1虚拟用户的配置文件

 

# 创建虚拟用户家目录

# mkdir /home/vsftp/ftptest1

# chown ftpuser:ftpuser /home/vsftp/ftptest1/

 

# 建立配置文件

# mkdir /etc/vsftpd/config

# vim /etc/vsftpd/config/ftptest1  <=== 虚拟用户各自配置文件和自己的用户名对应起来

 

# 指定家目录

local_root=/home/vsftp/ftptest1

# 允许相关权限

download_enable=yes

anon_upload_enable=yes

anon_other_write_enable=YES

anon_mkdir_write_enable=yes

anon_world_readable_only=no

# 设置最大传输速度,单位b/s

anon_max_rate=100000

注意:目前还没给ftptest2虚拟用于建立单独的配置文件,那么对于此用户就使用主配置文件的配置(/etc/vsftpd/vsftpd.conf)

更多相关技术文章,请访问linux系统教程栏目!

以上就是linux运维之搭建出符合自己要求的vsftp服务的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

云服务器ecs实例上如何安装nodejs并部署项目

如何通过ecs控制台创建来提前创建模板

tomcat7.0.82在Linux下安装的方法

什么是弹性裸金属服务器faq

Linux截取命令是什么?

Linux系统日志在哪?

Linux 环境下如何通过 mtr 命令行工具进行链路测试

Linux如何操作

Linux下如何运行.sh文件

Linux系统安装软件失败的总结

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...