Linux 之 vsftpd
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 之 vsftpd相关的知识,希望对你有一定的参考价值。
#############################################################
一.vsftpd简介
vftpd(Very Secure FTP),文件共享软件。支持IPv6以及SSL加密。
vsftpd安全性主要体现的三方面:
进程分离,处理不同任务的进程是独立运行的;
进程运行时,均已最小权限运行的;
多数进程都使用chroot进行禁锢,防止客户访问非法共享目录;
安装vsftpd:
yum install vsftpd -y
vsftpd相关的核心文件与目录说明:
/etc/logrotate.d/vsftpd ##日志轮转备份配置文件
/etc/pam.d/vsftpd ##基于PAM的vsftpd验证配置文件
/etc/rc.d/init.d/vsftpd ##vsftpd启动脚本
/etc/vsftpd ##软件主目录
/etc/vsftpd/ftpusers ##默认的vsftpd黑名单
/etc/vsftpd/user_list ##临时黑名单,可通过主配置文件设置为白名单
/etc/vsftpd/vsftpd.conf ##vsftpd主配置文件
/usr/sbin/vsftpd ##vsftpd主程序
/var/ftp ##默认vsftpd共享目录
#############################################################
二.匿名账号登录
vsftpd默认开启的是匿名共享,默认共享路径为/var/ftp
anonymous_enable=YES
local_enable=YES
#############################################################
三.本地账号登录
vim /etc/vsftpd/vsftpd.conf
修改;
anony_enable=NO,默认共享路径为账户个人家目录
!注意:开启本地9账户登录后,用户可离开家目录,从而进入系统中的其他目录,这样是很危险的,所以在文件中使用
chroot_local_user=NO,用户将禁锢在自己的家目录下
测试:
useradd -s /sbin/nologin tom
useradd -s /sbin/nologin jerry
useradd -s /sbin/nologin smith
touch /home/{tom,jerry,smith}/test.txt
setenforce 0
systemctl stop firewall
service vsftpd start
#############################################################
四.虚拟账号登录
1.创建虚拟用户
vim /etc/vsftpd/userfile ##虚拟用户名和密码文件
添加:
westos1 ##用户名1
123 ##用户1密码
westos2 ##用户名2
123 ##用户2密码
westos3 ##用户名3
123 ##用户3密码
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db
## db_load :创建虚拟用户
## -T :允许应用程序将文本文件转译载入数据库
## -t : 指定转译载入的数据类型
## hash :hash码加密
## /etc/vsftpd/userfile : 记录用户名和密码
## /etc/vsftpd/userfile.db : hash加密过的文件
rm -fr /etc/vsftpd/userfile##删掉虚拟用户文件
2.修改vsftpd配置文件,设置相关参数
vim /etc/vsftpd/vsftpd.conf
添加:|
pam_service_name=vuser ##pam认证方式
userlist_enable=YES ##启用userlist用户列表文件
tcp_wrappers=YES ##启动tcp_wrappers
guest_enable=YES ##所有的非匿名用户登录都映射为guest_username指定的账户
guest_username=ftp ##设定来宾用户
local_root=/ftpdir/$USER ##本地账号访问ftp的根路径
#local_root=/var/ftp/pub/ ##本地账号访问ftp的根路径
user_sub_token=$USER ##
allow_writeable_chroot=YES ##
user_config_dir=/etc/vsftpd/vuser-conf##
3.认证机制(账号,密码)
vim /etc/pam.d/vuser
添加
account required pam_userdb.so db=/etc/vsftpd/userfile
auth required pam_userdb.so db=/etc/vsftpd/userfile
4. 创建本地账号的根目录
mkdir /ftpdir/westos1
mkdir /ftpdir/westos2
mkdir /ftpdir/westos3
5.更改权限和组名
chmod 775 /ftpdir/westos*
chgrp ftp /ftpdir/westos*
systemctl restart vsftpd
6.
vim /etc/vstpd/vuser-conf/westos* ##匿名用户的配置文件
添加:(任何你想给的权限,例子如下)
anon_upload_enable=YES
#############################################################
五.
vim /etc/selinux/config
chcon -t public_content_t /ftpdir -R
vim /etc/vsftpd/vsftpd.conf
+- anon_root=/ftpdir
vim /etc/selinux/config
reboot
vim /etc/selinuxconfig
reboot
semanage fcontext -a -t public_content_t ‘/ftpdir(/.*)?‘
semanage fcontext -l |grep ftpdir
ls -Zd /ftpdir
restorecon -RvvF /ftpdir/
#############################################################
SELinux(Security-Enhanced Linux)
一.SELinux简介
基于Linux内核的强制访问控制机制,旨在增强传统Linux操作系统的安庆性。
vim /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 - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELINUX总开关 三种状态 enforcing、permissive、disabled
enforcing :强制开启(会拦截非法的访问,并记录日至)
permissive :警告模式(会在SELinux日至中记录,但不会拦截)
disabled :禁用(设置为j禁用,应重新启动计算机)
SELINUXTYPE=targeted 设置SELinux类型,类型两种 ,targeted 、mls
targeted:主要对服务进程进行访问控制
mls:对所有的进程进行控制
########################################################二.访问及简单设置
临时设置(重启后失效)
setenforce 0##设置SELinux为permissive模式
setenforce 1##设置SELinux为enforcing模式
永久模式(修改配置文件)
vim /etc/sysconfig/selinux
########################################################三.
SELinux会为进程与文件添加安全信息标签(SELinux用户、角色、类型、级别)
(1)SELinux安全上下文
ls -Z查看文件或目录的上下文信息
[[email protected] ~]# ls -Z anaconda-ks.cfg
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
ps aux -Z 查看进程的上下文信息
semanage login -l##查看系统账户与SELinux账户之间的映射关系
[[email protected] kiosk]# semanage login -l
Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
(2)SELinux用户被授予特定角色,角色被授予操作特定的域
(3)类型定义了进程的域以及文件的类型
(4)级别 MLS MCS
########################################################四.修改安全上下文
chcon -t admin_home_t /root/passwd ##修改文件安全上下文中的类型
chcon -R -t admin_hom_t /root/##递归修改目录安全上下文
chcon --reference=/etc/passwd /root/passwd##
以上是关于Linux 之 vsftpd的主要内容,如果未能解决你的问题,请参考以下文章