#1.selinux
內核級加強型防火墻
1)針對文件,會對系統中每個文件添加安全上下文(context)
2)針對進程,會對系統中的每個進程添加安全上下文(context)
3)會在系統服務上設定sebool開關
4)當進程安全上下文和文件的安全上下文不匹配時,那么進程無法訪問此文件
5)sebool會限制服務的不安全功能,如果需要用此功能,必須調整sebool值
#2.管理selinux
1)selinux的開關
vim /etc/sysconfig/selinux
SELINUX=enforcing ##selinux開啟,并且級別為強制
SELINUX=permissive ##selinux開啟,并且級別為警告
SELINUX=disabled ##selinux關閉
注意:當linux從關到開,或者從開到關,需要重啟系統
2)selinux中對文件安全上下文的設定
[root@localhost ~]# touch /mnt/file
[root@localhost ~]# mv /mnt/file /var/ftp
[root@localhost ~]# touch /mnt/file1
[root@localhost ~]# cp /mnt/file1 /var/ftp/
[kiosk@foundation30 Desktop]$ lftp 172.25.254.130
lftp 172.25.254.130:~> ls ##file1是復制過來的,ftp服務的可以訪問安全上下文public_content_t,file是移動過來的,ftp服務不能訪問安全上文mnt_t,將他的安全上下文改為public_content_t就可以訪問了,用chcon修改安全上下文public_content_t
-rw-r--r-- 1 0 0 0 Nov 11 03:49 file1
drwxr-xr-x 2 0 0 6 Aug 03 2015 pub
lftp 172.25.254.130:/> quit
[root@localhost ~]# ls /var/ftp/ -Z ##列出/var/ftp的安全上下文(由于file是移動過來的他的安全上下文還是原來的)
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 file
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 file1
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
[root@localhost ~]# chcon -t public_content_t /var/ftp/file ##修改/var/ftp/file 的安全上下文為public_content_t,ftp就可以訪問到了
[kiosk@foundation30 Desktop]$ lftp 172.25.254.130
lftp 172.25.254.130:~> ls
-rw-r--r-- 1 0 0 0 Nov 11 03:48 file ##fpt可以訪問
-rw-r--r-- 1 0 0 0 Nov 11 03:49 file1
drwxr-xr-x 2 0 0 6 Aug 03 2015 pub
lftp 172.25.254.130:/> quit
##臨時更改適用于更改文件
修改selinux的安全上下文
chcon -t 一次性定制安全上下文,執行restorecon刷新后還原 文件
[root@localhost ~]# mkdir /qq
[root@localhost ~]# touch /qq/qq{1..10}
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd.service
[root@localhost ~]# chcon -t public_content_t /qq/
[root@localhost ~]# chcon -R -t public_content_t /qq/
reboot
內核級的安全上下文,用semanage fcontext -l查看
#永久修改更改安全上下文
semanage fcontext
[root@localhost ~]# semanage fcontext -a -t public_content_t
a:添加 t:類型
[root@localhost ~]# semanage fcontext -a -t public_content_t '/qq(/.)?' #更改此目錄內核級的安全上下文
[root@localhost ~]# semanage fcontext -l | grep qq
/qq(/.)? all files system_u:object_r:public_content_t:s0
[root@localhost ~]# ls -Zd /qq/ #列出目錄的安全上下文
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /qq/
[root@localhost ~]# restorecon -RvvF /qq/ #刷新安全上下文
[kiosk@foundation30 Desktop]$ lftp 172.25.254.130
lftp 172.25.254.130:~> ls
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq1
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq10
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq2
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq3
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq4
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq5
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq6
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq7
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq8
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq9
lftp 172.25.254.130:/> quit
#selinux的bool值的設定
管理selinux布爾值
selinux布爾值是更改selinux策略行為的開關。selinux是可以啟用或禁用的規則。安全管理員可以使用selinux來調整策略,以有選擇地進行調整。許多軟件包都具有man page *_selinux(8),其中詳細說明了所使用的一些布爾最值;man -k '_selinux' 可以輕松的找到這些手冊
getsebool 用于顯示布爾值
sebool值是控制服務功能開關,用于修改布爾值
getsebool -a | grep 服務名稱
setsebool -P bool值 on|off
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off
[root@localhost ~]# setsebool -P ftp_home_dir on
p:永久
[root@localhost ~]# getenforce
Enforcing
[kiosk@foundation30 Desktop]$ lftp 172.25.254.130 -u student
Password:
lftp student@172.25.254.130:~> ls
lftp student@172.25.254.130:~> put /etc/passwd
2367 bytes transferred
lftp student@172.25.254.130:~> ls
-rw-r--r-- 1 1000 1000 2367 Nov 11 06:02 passwd
lftp student@172.25.254.130:~> quit
#selinux排錯
監控selinux沖突
必須安裝setroubleshoot-server軟件包,才能將selliunx消息發送至/var/log/messages
setroubleshoot-server偵聽/var/log/audit/audit.log中的審核信息并將簡短摘要發送至/var/log/messages
/var/log/audit/audit.log 用于在該文件中生成所有事件的報告
轉載于:https://blog.51cto.com/13363488/2048868