Selinux
一、selinux--内核级控制
selinux
1.selinux工作模式
vim /etc/sysconfig/selinux
# This file controls the state of SELinuxon the system.
# SELINUX= can take one of these threevalues:
# 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 these twovalues:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes areprotected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2.查看selinux工作模式
[root@localhost ~]# getenforce
Disabled
3.更改工作状态
setenforce 0 #表示工作在permissive模式,可以查看文件
setenforce 1 #表示工作在enfrocing模式,即强制模式
注意:若更改了状态,一定要重启系统。
二、安全上下文修改
1.selinux文件上下文通常是由父目录指定的,即在创建文件时,将父目录的安全上下文指定给新建文件。若文件是在别处建立,再利用mv或cp -a等命令移至其他位置,该文件仍将保持原来的selinux上下文。
如:修改匿名用户登录FTP服务器的家目录是/linux,检测是否可以查看家目录中问题
[root@foundation90 ~]# lftp 172.25.254.109
lftp 172.25.254.109:~> ls #查看家目录内容,未显示家目录中内容,知存在安全上下文问题
2.显示文件的安全上下文
ls -Z /目录名 #查看某目录的安全上下文
ps -lZ /目录名
ps auxZ | grep /目录名
显示内容中“?”表示安全上下文不同
3.临时修改安全上下文
chcon -t public_content_t /linux #指定linux文件的安全上下是public_content_t
三、semanage
1.getenfoce #查看工作在enforcing状态
2.mkdir /westos
mkdir -p /westos/{1..3}
3.修改匿名用户登录FTP服务器的家目录
vim/etc/vsftpd/vsftpd.conf
anon_root=/westos
4.匿名登录FTP服务器
[root@foundation9 ~]# lftp 172.25.254.109
lftp 172.25.254.109:~> ls
lftp 172.25.254.109:/> ls
可以看出此时不能显示家目录/westos中的内容,存在安全上下文问题
5.查看安全上下文
[root@localhost109 ~]# ps auxZ | grepvsftpd
system_u:system_r:ftpd_t:s0-s0:c0.c1023root 3979 0.0 0.0 52760 564 ? Ss 21:29 0:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023root 4014 0.0 0.0 112640 936 pts/1 R+21:31 0:00 grep --color=auto vsftpd
内容显示:vsftp只能查看并显示安全上下文是ftpd_t的文件
[root@localhost109 ~]# ls -lZ /var/ftp
drwxr-xr-x. root rootsystem_u:object_r:public_content_t:s0 pub #安全上下文类型是public_content_t
[root@localhost109 ~]# ls -lZ /westos/
-rw-r--r--. root rootunconfined_u:object_r:default_t:s0 file #安全上下文类型是默认类型
6.修改安全上下文
(1)chcon -t 命令可以临时更改安全上下文类型。
所谓临时更改即内核中并没有记录某文件的特殊安全上下文。所以若要永久更改安全上下文,则需要将特殊安全上下文类型记录在为文件中。
(2)先查看内核是否有记录某文件的特殊安全上下文,命令如下:
semanage fcontext -l | grep /westos #查看关于/westos的安全上下文,若无显示,即没有记录
semanege fcontext -l | grep /var/ftp #查看/var/ftp的安全上下文
[root@localhost109 ~]# semanage fcontext -l| grep /var/ftp
/var/ftp(/.*)? all files #包括该目录及目录中的内容以及将要新建的文件 system_u:object_r:public_content_t:s0
/var/ftp/bin(/.*)? all files system_u:object_r:bin_t:s0
/var/ftp/etc(/.*)? all files system_u:object_r:etc_t:s0
/var/ftp/lib(/.*)? all files system_u:object_r:lib_t:s0
/var/ftp/lib/ld[^/]*\.so(\.[^/]*)* regular file system_u:object_r:ld_so_t:s0
(3)将/westos安全上下文修改为与/var/ftp相同的上下文
根据以上内容显示,修改命令格式如下:
semanage fcontext -a -t public_content_t '/westos(/.*)?'
-a #表示添加安全上下文文件
-t #安全上下文类型
7.刷新安全上下文,完成修改
restorecon -RvvF /westos/
8.匿名登录FTP,ls 进行测试
二、布尔值更改
1.FTP服务器默认的本地用户具有写功能--vsftpd的配置文件中write_enable=YES,则具有上传功能
2.setenfoce 1 #为安全起见,selinux应处于强制模式
3.[root@foundation9 ~]# lftp 172.25.254.109-u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put/etc/passwd
put: Access failed: 553 Could not createfile. (passwd) #上传失败,553表示权限用户权限太小
4.查看用户权限
[root@localhost109 ~]# ls -l /home/student
total 4
-rw-r--r--. 1 student student 2367 Apr 2822:08 passwd #用户无写权限
[root@localhost109 ~]# chmod u+w/home/student #添加写权限
再测试:[email protected]:~> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd) #上传失败
5.setenforce 0 #使工作在警告状态
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
本地用户可以上传文件,但为了安全起见,selinux为强制状态
6.可以通过更改布尔值,开发个用户的某些功能。
getsebool -a | grep ftp #查看FTP服务器各功能的状态
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off #用户上传文家的功能处于关闭状态
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
setsebool -P ftp_home_dir 1 #永久开启上传文件功能
setsebool -P ftp_home_dir 0 #关闭该功能
7.本地用户登录FTP服务器上传文件