第十单元
selinux 的管理
一 显示及更改 SELINUX 模式
getenforce ###显示selinux模式
setenforce 0|1 ##0指permissive警告,1 表示 enforcing强制###
vim /etc/sysconfig/selinux ###修改selinux开机状态###
注:disable表示关闭,enforcing表示强制,permissive表示警告,disable状态切换到permissive状态或则enforcing状态要重启系统
测试:将/mnt下的文件westos用mv移动到/var/ftp/pub目录下,用lftp登入,查看当selinux为enforcing时,不能看到westos文件,当selinux为permissive时,能看到
二 显示 SELinux 文件上下文
1 将父目录的上下文指定给新创建的文件。这对 vimcp 和 touch 等命令其作用 , 但是 , 如果文件是在其他位置创建的并且保留了权限 ( 与 mv 或 cp -a 一样 ) 则还将保留 SELinux 上下文
2 显示上下文
ps axZ
ps -ZC
ls -Z
三 修改selinux安全上下文
chcon -t ####一次性定制安全上下文
semanage fcontext ####永久更改文件的上下文####\
测试:将selinux的模式改成enforcing,将匿名用户家目录改成/westos,用lftp登入,查看是否能看到/westos下的文件,发现无法看到,因为安全上下文不同,用semanage fcontext更改安全上下文。
semanage fcontext -l | grep westos ###查看内核上是否有指定文件的安全上下文###
semanage fcontext -a -t public_content_t '/westos(/.*)?'####-a指添加,-t指安全上下文的类型(/.*)?是格式,因为*和?有特殊意义,所以加上‘’转义###
restorecon -RvvF /westos/ ###刷新/westos###
过程如下:
[root@localhost Desktop]# ls /westos/
westosfile1 westosfile2 westosfile4 westosfile6 westosfile8
westosfile10 westosfile3 westosfile5 westosfile7 westosfile9
[root@localhost Desktop]# vim /etc/vsftpd/vsftpd.conf ###将匿名用户家目录改成/westos
[root@localhost Desktop]# systemctl restart vsftpd.service
[root@localhost Desktop]# lftp 172.25.254.212
lftp 172.25.254.212:~> ls ###测试发现看不到westos下的文件####
lftp 172.25.254.212:/> quit
[root@localhost Desktop]# ps auxZ | grep vsftpd ###查看vsftp的进程信息,显示安全上下文###
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root 2426 0.0 0.0 52756 560 ? Ss 21:29 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 2469 0.0 0.0 112640 936 pts/0 R+ 21:30 0:00 grep --color=auto vsftpd
[root@localhost Desktop]# ls -Zd /var/ftp/ ###ftpd_t的安全上下文可以访问public_content_t的安全上下文###
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/
[root@localhost Desktop]# ls -Zd /westos/ ###查看/westos的安全上下文###
drwxr-xr-x. root root system_u:object_r:default_t:s0 /westos/
[root@localhost Desktop]# semanage fcontext -l | grep westos ###查看内核上是否有指定文件的安全上下文###
[root@localhost Desktop]# semanage fcontext -l | grep var/ftp ###查看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
[root@localhost Desktop]# semanage fcontext -a -t public_content_t '/westos(/.*)?'####-a指添加,-t指安全上下文的类型(/.*)?###
[root@localhost Desktop]# semanage fcontext -l | grep westos
/westos(/.*)? all files system_u:object_r:public_content_t:s0 ###all files指目录和目录下的文件,包括新建立的文件###
[root@localhost Desktop]# ls -Zd /westos/
drwxr-xr-x. root root system_u:object_r:default_t:s0 /westos/
[root@localhost Desktop]# restorecon -RvvF /westos/ ###刷新/westos###
restorecon reset /westos context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile1 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile2 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile3 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile4 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile5 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile6 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile7 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile8 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile9 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
restorecon reset /westos/westosfile10 context system_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
[root@localhost Desktop]# lftp 172.25.254.212 ###测试能否能看到###
lftp 172.25.254.212:~> ls
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile1
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile10
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile2
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile3
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile4
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile5
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile6
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile7
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile8
-rw-r--r-- 1 0 0 0 Apr 23 05:43 westosfile9
lftp 172.25.254.212:/> quit
[root@localhost Desktop]# touch /westos/westosfile11
[root@localhost Desktop]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile1
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile10
-rw-r--r-- 1 0 0 0 Apr 29 01:27 westosfile11
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile2
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile3
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile4
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile5
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile6
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile7
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile8
-rw-r--r-- 1 0 0 0 Apr 23 05:30 westosfile9
lftp 172.25.254.100:/>
四 setsebool
1 定义:SELinux 布尔值是更改 SELinux 策略行为的开关。是可以启用或禁用的规则。
selinux为了安全在默认情况下有些动作是不允许执行的,例如默认情况下不允许写权限,因为可能会导致一些病毒木马的可执行文件上传,这些规则可通过getsebool看到,可使用 SELinux 布尔值来调整策略 , 以有选择地进行调整。setsebool -P 修改 SELinux 策略 , -P指永久保留修改
例:默认情况下,lftp允许本地用户上传文件,当是selinux却不允许上传,因此上传不了,用setsebool修改bool值。
getsebool -a | grep ftp ###查看ftp的布尔值###
setsebool -P ftp_home_dir 1 ###使本地用户有写权限###
过程如下:
[root@localhost Desktop]# getenforce ###selinux在Enforcing情况下默认不允许写权限,因为可能会导致一些病毒木马的可执行文件上传,因此是不安全的###
Enforcing
[root@localhost Desktop]# lftp 172.25.254.212 -u student ##在配置文件允许上传文件,但是没有将setsebool打开情测试能否上传###
Password:
lftp student@172.25.254.212:~> ls
-rw-r--r-- 1 1000 1000 2048 Apr 23 05:45 passwd
lftp student@172.25.254.212:~> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd) ###上传不了###
lftp student@172.25.254.212:~> quit
[root@localhost Desktop]# 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
[root@localhost Desktop]# setsebool -P ftp_home_dir 1
[root@localhost Desktop]# getenforce
Enforcing
[root@localhost Desktop]# lftp 172.25.254.212 -u student
Password:
lftp student@172.25.254.212:~> ls
-rw-r--r-- 1 1000 1000 2048 Apr 23 05:45 passwd
lftp student@172.25.254.212:~> put /etc/passwd
2048 bytes transferred
lftp student@172.25.254.212:~> ls
-rw-r--r-- 1 1000 1000 2048 Apr 29 02:09 passwd
本文转自blueclo51CTO博客,原文链接: http://blog.51cto.com/12774272/1920403,如需转载请自行联系原作者