SELinux安全防護
1.將Linux服務器的SELinux設爲enforcing強制模式
2.從/root目錄下移動一個包文件到FTP下載目錄,調整策略使其能夠被下載
步驟一:將Linux服務器的SELinux設爲enforcing強制模式
1)固定配置:修改/etc/selinux/config文件
確認或修改SELINUX爲enforcing模式:
[root@proxy ~]# vim /etc/selinux/config
SELINUX=enforcing //設置SELinux爲強制模式
SELINUXTYPE=targeted //保護策略爲保護主要的網絡服務安全
2)臨時配置:使用setenforce命令
查看當前SELinux狀態,如果是disabled則需要根據第1)步的配置重啓系統;如果是permissive則使用setenforce命令修改爲enforcing即可:
[root@proxy ~]# getenforce //查看當前狀態爲警告模式
Permissive
[root@proxy ~]# setenforce 1 //設置SELinux爲強制模式
[root@proxy ~]# getenforce //查看當前模式爲強制模式
Enforcing
[root@proxy ~]# setenforce 0 //設置SELinux爲強制模式
[root@proxy ~]# getenforce //查看當前模式爲警告模式
Permissive
步驟二:在SELinux啓用狀態下,調整策略打開vsftpd服務的匿名上傳訪問
1)配置一個允許匿名上傳的vsftpd服務作爲測試環境
[root@proxy ~]# setenforce 1
[root@proxy ~]# yum -y install vsftpd
.. ..
[root@proxy ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //開啓匿名訪問
anon_upload_enable=YES //允許上傳文件
anon_mkdir_write_enable=YES //允許上傳目錄
[root@proxy ~]# systemctl start vsftpd //啓動服務
//默認Vsftpd共享目錄爲/var/ftp/
步驟三:從/root目錄下移動2個包文件到FTP下載目錄,調整文件的安全上下文
1)建立兩個FTP下載用的測試文件
由root用戶創建兩個測試壓縮包,一個直接建立到/var/ftp/目錄下,另一個先在/root/下建立,然後移動至/var/ftp/目錄。
//測試文件1,直接在ftp目錄下創建文件
[root@proxy ~]# tar -czf /var/ftp/log1.tar /var/log
[root@proxy ~]# ls -lh /var/ftp/
-rw-r--r--. 1 root root 8M 8月 16 10:16 log1.tar
[root@proxy ~]# ls -Z /var/ftp/
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 log1.tar
//測試文件2,在/root下建立,然後移動至/var/ftp目錄
[root@proxy ~]# tar -czf log2.tar /var/log
[root@proxy ~]# mv log2.tar /var/ftp/
[root@proxy ~]# ls -lh /var/ftp/
-rw-r--r--. 1 root root 8M 8月 16 10:16 log2.tar
[root@proxy ~]# ls -Z /var/ftp/
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 log2.tar
3)通過FTP方式測試下載
使用wget命令分別下載這兩個包文件,第二個包將會下載失敗(看不到文件)。
[root@proxy ~]# wget ftp://192.168.4.5/log1.tar //下載第一個文件,成功
[root@proxy ~]# wget ftp://192.168.4.5/log2.tar //下載第二個文件,失敗
4)檢查該測試包的安全上下文,正確調整後再次下載第二個包成功。
文件已經存放到共享目錄下,但客戶端無法訪問下載,是因爲被SELinux攔截了!
[root@proxy ~]# ls -Z /var/ftp/
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 log1.tar
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 log2.tar
[root@proxy ~]# chcon -t public_content_t /var/ftp/d2.tar.gz
[root@proxy ~]# ls -Z /var/ftp/log2.tar
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 log2.tar
[root@proxy ~]# wget ftp://192.168.4.5/log2.tar //再次下載,成功