selinux控制

Je_suis_Lulu發表於2017-05-01

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 student@172.25.254.109:~> ls     

lftp student@172.25.254.109:~> 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  #新增寫許可權

再測試:lftpstudent@172.25.254.109:~> 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伺服器上傳檔案


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




相關文章