SElinux配置與管理
1.1 SElinux概述
SELinux(Security-Enhanced Linux) 是美國國家安全域性(NAS)對於強制訪問控 制的實現,在這種訪問控制體系的限制下,程式只能訪問那些在他的任務中所需要檔案。大部分使用 SELinux 的人使用的都是SELinux就緒的發行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。它們都是在核心中啟用SELinux 的,並且提供一個可定製的安全策略,還提供很多使用者層的庫和工具,它們都可以使用 SELinux 的功能。
1.1.1 SElinux特點
1.MAC
對訪問的控制徹底化,對所有的檔案、目錄、埠的訪問都是基於策略設定的,可由管理員時行設定。
2.RBAC
對於使用者只賦予最小許可權。使用者被劃分成了一些role(角色),即使是root使用者,如果不具有sysadm_r角色的話,也不是執行相關的管理。哪裡role可以執行哪些domain,也是可以修改的。
3.安全上下文
當啟動selinux的時候,所有檔案與物件都有安全上下文。程式的安全上下文是域,安全上下文由使用者:角色:型別表示。
(1)系統根據pam子系統中的pam_selinux.so模組設定登入者執行程式的安全上下文
(2)rpm包安裝會根據rpm包內記錄來生成安全上下文,
(3)如果是手工他建的,會根據policy中規定來設定安全上下文,
(4)如果是cp,會重新生成安全上下文。
(5)如果是mv,安全上下文不變。
1.1.2 安全上下文格式
安全上下文由user:role:type三部分組成,下面分別說明其作用:
1.user identity:類似linux系統中的UID,提供身份識別,安全上下文中的一部分。
三種常見的user:
user_u-: 普通使用者登入系統後預設;
system_u-:開機過程中系統程式的預設;
root-: root登入後預設;
在targeted policy中users不是很重要;
在strict policy中比較重要,的有預設的selinuxusers都以 “_u”結尾,root除外。
2.role
檔案與目錄的role,通常是object_r;
程式的role,通常是system_r;
使用者的role,targetedpolicy為system_r;
strict policy為sysadm_r,staff_r,user_r
使用者的role,類似於系統中的GID,不同的角色具備不同的許可權;使用者可以具備多個role;但是同一時間內只能使用一role;
role是RBAC的基礎;
3.type
type:用來將主體與客體劃分為不同的組,組每個主體和系統中的客體定義了一個型別;為程式執行提供最低的許可權環境。
當一個型別與執行的程式關聯時,該type也稱為domain,也叫安全上下文。
域或安全上下文是一個程式允許操作的列表,決字一個程式可以對哪種型別進行操作。
1.1.3 SElinux配置檔案
vi/etc/selinux/config
# This filecontrols the state of SELinux on the system.
# SELINUX= cantake one of these three values:
# enforcing -SELinux security policy is enforced.
# permissive -SELinux prints warnings instead of enforcing.
# disabled -SELinux is fully disabled.
SELINUX=enforcing
#SELINUX=disabled
# SELINUXTYPE=type of policy in use. Possible values are:
# targeted -Only targeted network daemons are protected.
# strict -Full SELinux protection.
SELINUXTYPE=targeted
#SELINUX有「disabled」「permissive」,「enforcing」3種選擇。
1.模式的設定
enforcing:強制模式,只要selinux不允許,就無法執行
permissive:警告模式,將該事件記錄下來,依然允許執行
disabled:關閉selinux;停用,啟用需要重啟計算機。
2.策略的設定
targeted:保護常見的網路服務,是selinux的預設值;
stric:提供RBAC的policy,具備完整的保護功能,保護網路服務,一般指令及應用程式。
策略改變後,需要重新啟動計算機。
也可以通過命令來修改相關的具體的策略值,也就是修改安全上下文,來提高策略的靈活性。
3.策略的位置
/etc/selinux/<策略名>/policy/
1.2 SElinux命令介紹
1.2.1 查詢SElinux狀態命令
1.查詢selinux狀態
[root@redhat~]# sestatus
SELinux status: enabled
SELinuxfsmount: /selinux
Currentmode: enforcing
Mode fromconfig file: enforcing
Policyversion: 21
Policy fromconfig file: targeted
2.查詢selinux啟用狀態
[root@redhat~]# selinuxenabled
[root@redhat~]# echo $?
0
如果為-256為非啟用狀態。
1.2.2 切換SElinux型別
1.切換成警告模式
[root@redhat~]# setenforce 0或setenforce permissive
[root@redhat~]# sestatus
SELinuxstatus: enabled
SELinuxfsmount: /selinux
Currentmode: permissive
Mode fromconfig file: enforcing
Policyversion: 21
Policy fromconfig file: targeted
或
[root@redhat~]# getenforce
Permissive
2.切換成強制模式
[root@redhat~]# setenforce 1
[root@redhat~]# getenforce
Enforcing
注:使用setenforce切換enforcing與permissive模式不需要重啟計算機。
1.2.3 檢查安全上下文
1.檢查帳號的安全上下文
[root@redhat~]# id -Z
root:system_r:unconfined_t:SystemLow-SystemHigh
2.檢查程式的安全上下文
[root@redhathome]# ps -Z
LABEL PIDTTY TIME CMD
root:system_r:unconfined_t:SystemLow-SystemHigh2383 pts/0 00:00:00 bash
root:system_r:unconfined_t:SystemLow-SystemHigh2536 pts/0 00:00:00 ps
3.檢查檔案與目錄的安全上下文
[root@redhathome]# ls -Z
drwx—— tom tom system_u:object_r:user_home_dir_ttom
1.2.4 修改檔案/目錄安全上下文與策略
1.chcon命令
chcon -u[user] 物件
-r[role]
-t[type]
-R遞迴
示例:
chcon -R -tsamba_share_t /tmp/abc
注:安全上下文的簡單理解說明,受到selinux保護的程式只能訪問標識為自己只夠訪問的安全上下文的檔案與目錄。
例如:上面解釋為使用smb程式能夠訪問/tmp/abc目錄而設定的安全上下文。
2.getsebool命令
獲取本機selinux策略值,也稱為bool值。
getsebool-a 命令同sestatus -b
[root@redhatfiles]# getsebool -a
NetworkManager_disable_trans–> off
allow_cvs_read_shadow–> off
allow_daemons_dump_core–> on
allow_daemons_use_tty–> off
allow_execheap–> off
allow_execmem–> on
allow_execmod–> off
allow_execstack–> on
allow_ftpd_anon_write–> off
allow_ftpd_full_access–> off
…
httpd_disable_trans–> off
說明:selinux的設定一般通過兩個部分完成的,一個是安全上下文,另一個是策略,策略值是對安全上下文的補充。
3.setsebool命令
setsebool -Pallow_ftpd_anon_write=1
-P 是永久性設定,否則重啟之後又恢復預設值。
示例:
[root@redhatfiles]# setsebool -P allow_ftpd_anon_write=1
[root@redhatfiles]# getsebool allow_ftpd_anon_write
allow_ftpd_anon_write–> on
說明:如果僅僅是安全上下文中設定了vsftpd程式對某一個目錄的訪問,配置檔案中也允許可寫,但是selinux中策略中不允許可寫,仍然不可寫。所以基於selinux保護的服務中,安全性要高於很多。
1.3 SElinux應用
selinux的設定分為兩個部分,修改安全上下文以及策略,下面收集了一些應用的安全上下文,供配置時使用,對於策略的設定,應根據服務應用的特點來修改相應的策略值。
1.3.1 SElinux與samba
1.samba共享的檔案必須用正確的selinux安全上下文標記。
chcon -R -t samba_share_t /tmp/abc
如果共享/home/abc,需要設定整個主目錄的安全上下文。
chcon -R -r samba_share_t /home
2.修改策略(只對主目錄的策略的修改)
setsebool -P samba_enable_home_dirs=1
setsebool -P allow_smbd_anon_write=1
getsebool 檢視
samba_enable_home_dirs –>on
allow_smbd_anon_write –> on
1.3.2 SElinux與nfs
selinux對nfs的限制好像不是很嚴格,預設狀態下,不對nfs的安全上下文進行標記,而且在預設狀態的策略下,nfs的目標策略允許nfs_export_all_ro
nfs_export_all_ro
nfs_export_all_rw值為0
所以說預設是允許訪問的。
但是如果共享的是/home/abc的話,需要開啟相關策略對home的訪問。
setsebool -Puse_nfs_home_dirs boolean 1
getsebooluse_nfs_home_dirs
1.3.3 SElinux與ftp
1.如果ftp為匿名使用者共享目錄的話,應修改安全上下文。
chcon -R -t public_content_t /var/ftp
chcon -R -t public_content_rw_t /var/ftp/incoming
2.策略的設定
setsebool -P allow_ftpd_anon_write =1
getsebool allow_ftpd_anon_write
allow_ftpd_anon_write–> on
1.3.4 SElinux與http
apache的主目錄如果修改為其它位置,selinux就會限制客戶的訪問。
1.修改安全上下文:
chcon -R -t httpd_sys_content_t /home/html
由於網頁都需要進行匿名訪問,所以要允許匿名訪問。
2.修改策略:
setsebool -P allow_ftpd_anon_write = 1
setsebool -P allow_httpd_anon_write = 1
setsebool -P allow_<協議名>_anon_write =1
關閉selinux對httpd的保護
httpd_disable_trans=0
1.3.5 SElinux與公共目錄共享
如果ftp,samba,web都訪問共享目錄的話,該檔案的安全上下文應為:
public_content_t
public_content_rw_t
其它各服務的策略的bool值,應根據具體情況做相應的修改。
1.3.6 SElinux配置總結
以上內容的selinux的配置實驗還需要進行相關驗證,以便在實際環境中能夠直接應用,相關的內容還需要繼續補充。
對於多於牛毛的策略,可以用過濾還檢視一個服務相當開啟哪些策略。
——————————————————————————
SELinux主要配製檔案
SELinux主要配製檔案位於/etc/selinux/下。在網路中的伺服器,建議開啟SELinx,以提高系統的安全性。我這裡通過命令方式來改變SELinx的安全策略,就不在對SELinux的配製檔案做具體說明。
SELinux常用的命令
ls –Z |ps –Z | id –Z
分別用於檢視檔案(夾)、程式和使用者的SELinx屬性。最常用的是ls -Z
sestatus
檢視當前SELinux的執行狀態
setenforce
在SELinux為啟動模式下,用此命令可以暫時停用SELinux
getsebool
檢視當前Policy(策略)的布林值
setsebool
設定Policy的布林值,以啟用或停用某項Policy
chcon
改變檔案或資料夾的content標記
SELinux實用案例
SELinux對Apache的保護
新安裝的wordpress位於/vogins/share/wordpress下,按照系統的預設策略,/vogins,/vogins/share的SELinux屬性為file_t,而這是不允許httpd程式直接訪問的。為此,需要做如下高調整:
1) 改變/vogins,/vogins/share的SELinux屬性
Shell>chcon –t var_t /vogins
Shell>chcon –t var_t /vogins/share
2) 改變wrodpress目錄的SELinux屬性
Shell>chcon –R –t httpd_sys_content_t wordpress
3) 允許apache程式訪問mysql
setsebool -Phttpd_can_network_connect=1
4) 關於Apache裡虛擬主機的配製就裡就不多說,重新啟動apache,就可以正常訪問wordpress
Shell>/etc/init.d/httpd start
注意:如果出現不能訪問的情況,請檢視/var/log/messages裡的日誌。一般來說,按照提示就可以解決了。
LINUX 中SELINUX 的禁用方式
經網上檢視資料,發現是SELinux在作怪,現在記錄下來,以後繼續完善
1、臨時禁用SELinux:
root@server# setenforce 0
這樣重啟伺服器之後,還是會啟動SELinux,
2、永久禁用:
開啟伺服器上的SELinux配置檔案,預設為:/etc/selinux/config,內容如下:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted – Only targeted network daemons are protected.
# strict – Full SELinux protection.
SELINUXTYPE=targeted
將上面的
SELINUX=enforcing 改為:SELINUX=disable 禁用SeLinux
相關文章
- SELinux簡單配置Linux
- 使用semanage管理SELinux安全策略Linux
- Mysql管理與配置MySql
- 如何使用semanage管理SELinux安全策略Linux
- ASM的配置與管理ASM
- Oracle listener log配置與管理Oracle
- docker儲存配置與管理Docker
- SELinuxLinux
- 配置管理與IT資產管理:差異與協同共生
- SELinux: 如何讓selinux對某些命令放行,自定義selinux規則。Linux
- Centos配置叢集為什麼要關閉SELINUXCentOSLinux
- selinux控制Linux
- switch_selinux.sh | 開啟或禁用SELinuxLinux
- 檢視 SELinux狀態及關閉SELinuxLinux
- SELinux Introduce - SELinux技術簡介(轉)Linux
- Apache基礎配置與日誌管理Apache
- 網路防火牆的配置與管理防火牆
- 檢視selinux的狀態以及關閉selinuxLinux
- 網路裝置配置與管理————13、管理Cisco網路
- 淺析SELinuxLinux
- 關閉selinuxLinux
- SELinux tipsLinux
- 【資訊保安】SELinuxLinux
- SeLinux分析工具Linux
- Oracle 監聽器日誌配置與管理Oracle
- 路由策略和策略路由配置與管理-1路由
- SELinux如何永久禁用Linux
- SELinux 安全模型——TELinux模型
- ElasticSearch生命週期管理-索引策略配置與操作Elasticsearch索引
- Apache基礎配置與日誌管理解析Apache
- 網路裝置配置與管理————21、VTP
- AIX 5L網路卡管理與配置AI
- 軟體構造過程與配置管理
- 什麼是seLinux?Linux關閉seLinux有什麼影響?Linux
- Linux中selinux是什麼意思?SELinux的主要作用有哪些?Linux
- CentOS 8 禁用 SELinux 教程CentOSLinux
- selinux實戰手冊Linux
- selinux常用命令Linux