vsftp服务部署

2025-11-11 16:50:01

1、安装vsftp软件包

yum -y  install vsftpd

chkconfig vsftpd on

2、系统安全设置

2.1 vi /etc/sysconfig/iptables(如果防火墙关闭,省略此步)

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT

2.2 关闭selinux

3、重启服务

service iptables reload

service vsftpd reload

++++++++++++++++++++

4、几点总结

✔建议使用主动模式

✔安装完vsftpd,会创建一个账户,ftp账户

✔ftp账户家目录在 / var/ftp目录

✔ftp账户家目录权限是755

1、创建上传目录

cd /var/ftp

mkdir upoad

chown ftp. upload

chmod 755 upload

2、修改配置文件vsftpd.conf(确保如下字段行是取消注释的)

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES(匿名账户可以有删除的权限)

1、编辑配置文件vsftpd.conf

#以下行注释

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

#以下行取消注释<禁锢用户在自己家目录>

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

2、增加虚拟账号

useradd -d /data/ftpdata -s /sbin/nologin dbftp

passwd dbftp

请确认/data/ftpdata所有者所有组为dbftp

3、编辑chroot_list

vi /etc/vsftp/chroot_list

默认此文件不存在

内容为刚刚创建的虚拟用户名,每个用户占一行

dbftp

4、只允许特定账户登录

系统添加一个用户也默认有ftp的登陆权限

编辑配置文件vsftpd.conf

文件最后添加两行

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

然后修改

/etc/vsftpd/user_list文件,把允许登录的账户添加进去

1、vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账户分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式

2、安装依赖包

yum install  db4 db4-utils -y 

3、创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码)

vim /etc/vsftpd/virtual.users 

user1

123

user2

456

4、生成虚拟用户认证的db文件

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

chmod 600 /etc/vsftpd/vsftpd.login.db  

5、配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义)

vim /etc/pam.d/vsftpd.pam

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

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

6、配置vsftpd.conf,如下

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to blah FTP service.

chroot_local_user=YES

listen=YES

userlist_enable=YES

pam_service_name=vsftpd.pam

guest_username=ftp 

guest_enable=YES

user_sub_token=$USER

local_root=/var/ftp/virtual/$USER

tcp_wrappers=YES

7、创建相应的虚拟用户目录,用于虚拟用户访问ftp服务所用到的默认目录

mkdir -p /var/ftp/virtual/{user1,user2} 

chown ftp.ftp /var/ftp/virtual/{user1,user2} 

touch /var/ftp/virtual/user1/user1.txt

touch /var/ftp/virtual/user2/user2.txt

8、经过上面配置,实现了如下功能

✔可以创建很多虚拟账户且仅能访问ftp上各自虚拟家目录

✔所有虚拟账户都可以上传、删除、创建、下载、重命名家目录里的文件或目录

缺点是:

所有虚拟账户权限都是统一的,现实里需求总是多变的,假如我想不同虚拟账户有不同的权限如何实现,见下文

1、基于上面我们创建两个用户user1和user2。我想user1具有全部权限,而user2尽具有上传权限。

我们从基于虚拟账户统一认证第6步开始修改,1-5步不变。

2、配置vsftpd.conf,如下

anonymous_enable=NO

local_enable=YES

local_umask=022

anon_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to blah FTP service.

chroot_local_user=YES

listen=YES

userlist_enable=YES

pam_service_name=vsftpd.pam

guest_username=ftp 

guest_enable=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

tcp_wrappers=YES

3、mkdir -p /etc/vsftpd/vsftpd_user_conf

在conf里创建 刚才用户名的配置文件 配置文件名要与用户名一样

user1要有所有全部权限

vi user1

local_root=/opt/vsftp/user1

write_enable=yes

download_enable=yes

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_world_readable_only=no

idle_session_timeout=600

data_connection_timeout=120

max_clients=2

max_per_ip=3

local_max_rate=512000

user2只有上传和下载权限

local_root=/opt/vsftp/user2

write_enable=YES

download_enable=yes

anon_upload_enable=yes

anon_other_write_enable=no

anon_mkdir_write_enable=no

anon_world_readable_only=no

4、更改虚拟用户目录权限为配置文件指定映射账户

mkdir -p /opt/vsftp/{user1,user2}

cd /opt

chown -R ftp. vsftp

5、经过上面配置,实现了如下功能

✔不同用户具有不同的权限

✔几个重要参数总结

write_enable=YES (写权限)

anon_mkdir_write_enable=YES (新建目录权限)

anon_upload_enable=YES(上传权限)

anon_other_write_enable=YES(删除/重命名的权限)

6、提升:

将用户保存到mysql.并记录用户登录log

见百度网盘

http://pan.baidu.com/s/1kTMiG8v

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢