#############################################################

一.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查看文件或目录的上下文信息

[root@foundation38 ~]# 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账户之间的映射关系

[root@foundation38 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##