ãäÐ ÝÊÑÉ æ ÇäÇ ÇÈÍË Úä ãæÖæÚ íÊßáã Úä åÐÇ ÇáÌÈÇÑ Ýí ÚÇáã ÇáÓíßíæÑíÊí æ ÇáÐí íÓãì SELinux Çæ Secure Linux ¡ æ ØÈÚÇ áã ÃÌÏ Çí ãæÖæÚ ÚÑÈí íÔÑÍ åÐå ÇáÊÞäíÉ æ ÇÍÈÈÊ Çä ÇÚÏ åÐÇ ÇáãæÖæÚ áíßæä äÞØÉ ÇäØáÇÞ áßí íÚÑÝ ÇáäÇÓ ãÇ åæ ÇáSELinux .
ØÈÚÇ ÇáãæÖæÚ ãæÌå áãÏÑÇÁ ÇáÃäÙãÉ æÐæí ÇáÎÈÑÉ ÝÞØ æ åæ áÇíäÇÓÈ ÇáÇÚãÇÑ Ïæä Çá18 ÓäÉ

áÇ ÊÃÎÐæÇ ßáÇãí Úáì ãÍãá ÇáÌÏ :thumpsup_green:
-ãÞÏãÉ:
ØÈÚÇ ßãíÒÉ ÌÏíÏÉ Ýí ÊæÒíÚÇÊ ÑíÏåÇÊ áíäßÓ ÇäÊÑÈÑÇíÒ æ ÈÇáÊÍÏíÏ ÇáÇÕÏÇÑ ÇáÑÇÈÚ ãäåÇ Êã ÇÖÇÝÉ ÇáSELinux áÊßæä ÇÖÇÝÉ ÌÏíÏÉ áãÏÑÇÁ ÇáÇäÙãÉ ãä ÃÌá ÑÝÚ ãÓÊæì ÇáÍãÇíÉ Úáì ÎæÇÏãåã. æ ØÈÚÇ ÇáSELinux ÈÏà ßãÔÑæÚ ãä ÊØæíÑ ÇáNSA "www.nsa.gov/selinux" ßÎÏãÉ áãÏÑÇÁ ÇáÇäÙãÉ áíÊãßäæÇ ãä Úãá ÊÞäíÇÊ ÍãÇíÉ Úáì ãÓÊæì ÇáßíÑäá ÇËäÇÁ ÃÏÇÁå áæÙÇÆÝå ÇáÚÇÏíÉ.
ÈÇÓÊÎÏÇã ÇáSELinux íÊã ÊÕäíÝ ÇáÎÏãÇÊ processes áÊÚãá Öãä ãÇ íÓãì ÇáSELinux domain æßá ÇáãÕÇÏÑ ÇáÃÎÑì ( ãËá ÇáãáÝÇÊ ¡ ÇáÓæßÊÓ ¡ ÇáÓÓÊã ßæáÒ ...) íÊã ÝÑÖ ãÇ ÊÓãì SELinux context ÚáíåÇ¡ æ åí Çápolicy Ãæ ÇáÂáíÉ ÇáÊí ÓíÊã ÊØÈíÞåÇ Ýí ÍÇáÉ ØáÈ åÐÇ ÇáÑíÓæÑÓ (ÇáãáÝ ãËáÇ) ãä ÞÈá Çí ÎÏãÉ ÇÎÑì (ãËá ÇáSSH Ãæ Çáscp Úáì ÓÈíá ÇáãËÇá) . íÊã ÊÍãíá Çápolicy Úáì ÇáßíÑäá ÚÇÏÉ Ýí ãÑÍáÉ ÇáÈææÊ æåí ÓÊÍÏÏ Çí process domain íãßäåÇ ÇÓÊÎÏÇã Çí resource context .
Çä Çí ãíßÇäíßíÉ ááÍãÇíÉ ÊÊØáÈ Çä Êßæä ãÑäÉ æÓåáÉ áãÏíÑ ÇáäÙÇã ÈÍíË íÊÌäÈ ÇáãÔßáÉ ÇáÔÇÆÚÉ ÇáÊí íÞÚ ÝíåÇ Çí ãÏíÑ ááÍãÇíÉ æ åí åá ÇáäÙÇã ãßÔæÝ ÇßËÑ ãä ÇááÇÒã¿ Ãæ Çäå áíÓ ãÊæÝÑÇ ßÝÇíÉ áÈÇÞí ÇáÎÏãÇÊ æ ÇáãÓÊÎÏãíä¿ áÐáß ÝÅä Ãí ãÏíÑ ááÍãÇíÉ íÑÛÈ Ýí ÇÓÊÎÏÇã ÇáSELinux Úáíå Çä íÓÃá äÝÓå ÇáÃÓÆáÉ ÇáÊÇáíÉ:
1- åá ÇÍÊÇÌ ÝÚáÇ Çáì ÊÝÚíá ÇáSELinux ¿
2- ÇÐÇ ßÇä ÇáÌæÇÈ ÈäÚã¡ åá ÇÌÚáå ÈæÖÚ Çáenforcing Çí ÊØÈíÞ Çápolicy Ãã æÖÚ Çápermissive Çí ÇáÊÍÐíÑí ÝÞØ Ïæä ãäÚ ÇáÎÏãÇÊ¿
3-ãÇ åí Çácontext ÇáãäÇÓÈÉ ÇáÊí ÓÃØÈÞåÇ Úáì ÇáãáÝ ÍÊì ÇÑÝÚ ãä ãÓÊæì ÇáÍãÇíÉ Úáíå¿
ÇáãäåÌíÉ (policy) ÇáÊí ÓíÎÊÇÑåÇ ãÏíÑ ÇáäÙÇã áäÙÇãå ÞÏ ÊÔßá ãæÖæÚÇ ÕÚÈÇ Úáíå ¡ æÑÛã æÌæÏ ÇáÚÏíÏ ãä ÇáãäåÌíÇÊ Çæ Çápolices áßä ÑíÏåÇÊ ÇäÊÑÈÑÇíÒ ÊÃÊí ãÚ policy æÇÍÏå ÑÆíÓíÉ ÊÓãì targeted æåí ÊÔãá ÈÚÖ ÇáÎÏãÇÊ ÇáÎÇÕÉ ÈÇáÔÈßÇÊ ÝÞØ æÇáÎÏãÇÊ ÇáãÔãæáÉ åí ßÇáÊÇáí:
dhcpd
httpd
mysqld
named
nscd
ntpd
portmap
postgres
snmpd
squid
syslogd
æØÈÚÇ íãßäß ÊÝÚíá Çácontext Úáì Çí ÎÏãÉ ãä ÇáÎÏãÇÊ ÇÚáÇå æ ÊÚØíáåÇ ÇíÖÇ.
-ÊÝÚíá ÇáSELinux
ÚäÏ ÊÔÛíá ÇáäÙÇã æ Ýí ãÑÍáÉ ÇáÈææÊ íÊã ÊÍÏíÏ ÇáÍÇáÉ ÇáÊí ÓíÚãá ÝíåÇ ÇáSELinux æåí ÇáÍÇáÇÊ ÇáËáÇËÉ ÇáÊÇáíÉ:
1-disabled : Çí ÎíÇÑ ÇáÊÚØíá æ ÚäÏåÇ áä íÊã ÊØÈíÞ Çí ÎíÇÑ ááSELinux .
2-Ç permissive : æåí ÇÍÏì ÍÇáÇÊ ÇáÊÝÚíá ááSELinux æ ÊÚãá Úáì ãÈÏà Çä Çí ãÍÇæáÉ áÇÓÊÎÏÇã ÇáãáÝ ÇáãÑÇÞÈ ãä ÞÈá Çácontext ÓíÊã ÊÓÌíáå Ýí ÇááæÛ /var/log/messeges æáßä áä íÊã ãäÚ ÇáæÕæá ááÑíÓæÑÓ Çæ ÇáãáÝ.
3-enforcing : æåí ÇáÍÇáÉ ÇáËÇäíÉ Ýí ÍÇáÇÊ ÇáÊÝÚíá ááSELinux ÍíË íÊã ãäÚ Çí ãÍÇæáÉ æÕæá áÇ ÊÓãÍ ÈåÇ Çácontext ááãáÝ Çæ ÇáÑíÓæÑÓ ÇáãØáæÈ.
-ãáÝ ÇÚÏÇÏÇÊ ÇáSELinux
Ýí ÑíÏåÇÊ ÇäÊÑÈÑÇíÒ ÇáãÓÇÑ áãáÝ ÇáÇÚÏÇÏÇÊ ÇáÇÓÇÓí ááSELinux åæ :
æ åÐÇ ãËÇá áãÍÊæì ÇáãáÝ:
[root@Gr3yHun73r ~]$ cat /etc/sysconfig/selinux
# 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=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
ØÈÚÇ ÇáãáÝ æÇÖÍ æ ÇáÓØÑ ÇáÐí íÍÊÇÌ ááÊÚÏíá åæ:
ØÈÚÇ ÇáÍÇáÇÊ ÇáÊí íãßääÇ ÇÓÊÎÏÇãåÇ åí:
permissive , enforcing , disabled
ØÈÚÇ Ýí ÍÇáÉ ÇáÊÍæíá ãä ÇáæÖÚ disabled Çáì ÇÍÏ æÖÚí ÇáÊÝÚíá (enforcing , permissive ) ÝÅä Ðáß íÓÊáÒã Úãá ÇÚÇÏÉ ÊÔÛíá ááÌåÇÒ áíÊã ÊØÈíÞ ÇáÎíÇÑ Úáì ãÓÊæì ÇáßíÑäá ßãÇ ÓÈÞ æ ÐßÑäÇ. æáßäí ÇÝÖá æÖÚå Úáì ÇáÎíÇÑ permissive Ýí ÇáÈÏÇíÉ ÚäÏ ÇÚÇÏÉ ÇáÊÔÛíá áÃä ÇáæÖÚ enforcing ÞÏ íÈÏÇ ÈãäÚ ÈÚÖ ÇáÎÏãÇÊ ãä ÇáæÕæá ááãáÝÇÊ ÚäÏ ÈÏÁ ÇáÊÔÛíá ááÎÏãÇÊ ããÇ ÓíÓÈÈ Ýí ßËíÑ ãä ÇáÇÍíÇä ÚÏã ÇÞáÇÚ ÇáÌåÇÒ ÈÇáÔßá ÇáØÈíÚí. æ áßä áÇ ÊÈÇáí áÃäß ÓÊÊãßä ãä ÇáÇäÊÞÇá ãä ÇáæÖÚíÉ permissive Çáì enforcing ÇËäÇÁ ÇáÚãá Ïæä ÇáÍÇÌÉ áÇÚÇÏÉ ÊÔÛíá ÇáÌåÇÒ.
- ÇáÊÈÏíá Èíä ÇáæÖÚíä ÇáÊÍÐíÑí permissive æÇáæÖÚ ÇáÊäÝíÐí enforcing
íãßäß Úãá Ðáß ÈÇÓÊÎÏÇã ÇáÃãÑ setenforce Úáì ÇáäÍæ ÇáÊÇáí:
[root@Gr3yHun73r ~]# setenforce 0
[root@Gr3yHun73r ~]# getenforce
Permissive
ØÈÚÇ ÇáÑÞã 0 áÊÝÚíá ÇáÎíÇÑ permissive ÇáÊÍÐíÑí ¡ æÇáÑÞã 1 áÊÝÚíá ÇáÎíÇÑ enforcing :
[root@Gr3yHun73r ~]# setenforce 1
[root@Gr3yHun73r ~]# getenforce
Enforcing
ØÈÚÇ ßãÇ áÇÍÙÊ ÝÅä ÇáÃãÑ getenforce íÚØíß ÇáÍÇáÉ ÇáÍÇáíÉ.
-ßíÝ ÇÔÇåÏ Çácontext ÇáãØÈÞÉ Úáì ãáÝ Çæ ÎÏãÉ ãÇ¿
ÇáÃãÑíä ps -Z æ ls -Z íÚØíÇäß ÇÓãÇÁ Çácontext ÇáãØÈÞÉ Úáì ÎÏãÉ Çæ ãáÝ Úáì ÇáÊÑÊíÈ:
[root@Gr3yHun73r ~]$ ps ax -Z
LABEL PID TTY STAT TIME COMMAND
user_u:system_r:unconfined_t 1 ? S 0:00 init [5]
user_u:system_r:unconfined_t 2 ? SN 0:00 [ksoftirqd/0]
user_u:system_r:unconfined_t 3 ? S< 0:00 [events/0]
user_u:system_r:unconfined_t 4 ? S< 0:00 [khelper]
...
user_u:system_r:syslogd_t 2251 ? Ss 0:00 syslogd -m 0
user_u:system_r:unconfined_t 2255 ? Ss 0:00 klogd -x
user_u:system_r:portmap_t 2277 ? Ss 0:00 portmap
root:system_r:httpd_t 3955 ? Ss 0:00 /usr/sbin/httpd
root:system_r:httpd_t 3956 ? S 0:00 /usr/sbin/httpd
...
ãËÇá ÂÎÑ:
[root@Gr3yHun73r ~]$ ls -a -Z
drwxr-xr-x student student root:object_r:file_t .
drwxr-xr-x root root ..
-rw------- student student user_u:object_r:file_t .bash_history
-rw-r--r-- student student root:object_r:file_t .bash_logout
-rw-r--r-- student student root:object_r:file_t .bash_profile
-rw-r--r-- student student root:object_r:file_t .bashrc
drwx------ student student user_u:object_r:file_t .gconf
drwx------ student student user_u:object_r:file_t .gconfd
- ãÑÇÞÈÉ ãÍÇæáÇÊ ÊÚÏí ÇáSELinux
ßãÇ ÓÈÞ æ ÐßÑÊ ÝÅä Çí ãÍÇæáÉ ÓíÊã ÊÓÌíáåÇ Ýí ÇáãáÝ var/log/messeges æÇáÂÊí åæ ãËÇá:
kernel: audit(1122958950.808:0): avc: denied { getatt
r }for pid=15842 exe=/usr/bin/ssh path=/etc/krb5.conf dev=hda3 ino=609458 scon
text=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:krb5_conf_t tcl
ass=file
ØÈÚÇ ÈÚÖ ãÇ äÓÊÎáÕå ãä ÇáãËÇá ÇáÓÇÈÞ Ãäå Êã Úãá ãäÚ denied áÎÏãÉ ÈÑÞã 15842 ,æåí ÇáÃãÑ usr/bin/ssh áãÍÇæáÉ ÇÓÊÎÏÇã ÇáÑíÓæÑÓ ÇáãáÝ etc/krb5.conf æ ÇÓã Çácontext ÇáÊí ÞÇãÊ ÈãäÚå.
-ÊÚÏíá Çácontext ÇáãØÈÞÉ Úáì ãáÝ
íÊã Ðáß ÈÇÓÊÎÏÇã ÇáÃãÑ chcon æåæ ÇÎÊÕÇÑ á change context æ ÈÇÓáæÈ ÊØÈíÞ context ãÚÑæÝÉ áãáÝ íÚãá ÌíÏÇ Úáì ÇáãáÝ ÇáÐí áÇ äÓÊØíÚ ÇáæÕæá Çáíå ÈÓÈÈ ÇáSELinux Çáíßã åÐÇ ÇáãËÇá:
áÏíäÇ ãáÝ ÇÓãå named.conf íÞæã ÇáSELinux ÈãäÚ ÇáæÕæá Çáíå¡ æáÏíäÇ ãáÝ ÂÎÑ ÇÓãå named.conf.rpmorig íÚãá ÈÔßá ØÈíÚí æ ÛíÑ ãÍÌæÈ ÈæÇÓØÉ ÇáSELinux ¡ ÚäÏåÇ äÞæã ÈÇáÊÇáí:
[root@Gr3yHun73r ~]# chcon --reference=/etc/named.conf.rpmorig /etc/named.conf
-ÊÝÚíá Çæ ÊÚØíá Çácontext Úáì ÎÏãÉ ãÚíäÉ.
íãßääÇ ÊÚÏíá ÈÚÖ ÇáãÊÛíÑÇÊ ÇáÎÇÕÉ ÈÇácontext ÇáãØÈÞÉ Úáì ÎÏãÉ ÈÚíäåÇ ÈÚãá on Ãæ off áåÇ æ ÈÇÓÊÎÏÇã ÇáÃãÑ setsebool ÇáÇÎÊÕÇÑ áset SELinux boolean æ ÇáãËÇá ÇáÊÇáí íæÖÍ ÇáÂáíÉ:
ÇáÃãÑ getsebool ÓíÚØíäÇ ãÚáæãÉ Úä ÍÇáÉ Çácontext æåá åí ÝÚÇáÉ Ãã áÇ Úáì ÎÏãÉ ãÚíäÉ:
[root@Gr3yHun73r ~]# getsebool -a
allow_ypbind --> active
dhcpd_disable_trans --> inactive
httpd_disable_trans --> inactive
httpd_enable_cgi --> active
httpd_enable_homedirs --> active
...
áÊÝÚíá context ãÚíäÉ íãßääÇ Úãá ÇáÊÇáí:
[root@Gr3yHun73r ~]# getsebool syslogd_disable_trans
syslogd_disable_trans --> inactive
[root@Gr3yHun73r ~]# setsebool syslogd_disable_trans 1
[root@Gr3yHun73r ~]# getsebool syslogd_disable_trans
syslogd_disable_trans --> active
ßãÇ åæ æÇÖÍ ãä ÇáãËÇá ÝÅääÇ ÞãäÇ ÈÊÝÚíá context Úáì ÇÍÏì ÇáÎÏãÇÊ ÇáÎÇÕÉ ÈÇááæÛ æåí Çásyslogd
ØÈÚÇ åÐå ÇáãÊÛíÑÇÊ íÊã ÊÎÒíäåÇ ÈÔßá ãÄÞÊ Ýí ÇáãáÝ :
/etc/selinux/targeted/booleans
ÔÇåÏ ÇáãËÇá ÇáÊÇáí ÇáÐí íÓÊÚÑÖ ÇáãÊÛíÑÇÊ ÇáãÎÒäÉ Ýíå:
[root@Gr3yHun73r ~]# cat /etc/selinux/targeted/booleans
httpd_enable_cgi=1
httpd_enable_homedirs=1
httpd_ssi_exec=1
named_write_master_zones=0
httpd_unified=1
httpd_tty_comm=0
ÐßÑÊ Ãä ÇáÞíã ÓÊÚæÏ áÍÇáÊåÇ ÇáÃÕáíÉ ÚäÏ ÇÚÇÏÉ ÇáÊÔÛíá (active or inactive) æÇÐÇ ÑÛÈÊ Ýí ÊËÈíÊåÇ ÇÓÊÎÏã ÇáÎíÇÑ -P ãÚ ÇáÃãÑ setsebool .
-ÇÓÊÎÏÇã graphical tool
áãÓÊÎÏãí ÑíÏåÇÊ ÇäÊÑÈÑÇíÒ íãßäß ÊÚÏíá ÎíÇÑÇÊ ÇáSELinux ÈÇÓÊÎÏÇã ÇáÃÏÇÉ system-config-securitylevel æåÐå ÕæÑÉ ááÃÏÇÉ:
-ÇáÎÇÊãÉ
ÇÑÌæ Çä íßæä ÇáãæÖæÚ ÞÏ ÍÇÒ Úáì ÇÚÌÇÈßã æ ÑÖÇßã æ ÇÑíÏ Çä ÇæÖÍ Çääí áã ÃÊØÑÞ áßËíÑ ãä ÇáÃãæÑ ÇáÃÎÑì ÇáÊí íÊãíÒ ÝíåÇ ÇáSELinux ÍíË Çä åäÇß ßæÑÓ ßÇãá Ýí ÔåÇÏÉ ÇáRHCSS íÔÑÍ Úä åÐÇ ÇáãæÖæÚ æ áä ÇÓÊØíÚ Ôãáå Ýí ãæÖæÚí åÐÇ ¡ æáßäå íÔßá äÞØÉ ÇäØáÇÞ ÌíÏÉ ááÑÇÛÈíä Ýí ÇáÊÚÑÝ Úáì åÐå ÇáÊÞäíÉ ÇáÌÏíÏÉ. æ Ýí ÇáäåÇíÉ ÇÑÌæßã Ëã ÇÑÌæßã Çä áÇ ÊäÓæäí ãä ÏÚÇÆßã Ýí ÞáæÈßã áÃäí Ýí ÃãÓ ÇáÍÇÌÉ Çáíå

ãæÇÞÚ ÇáäÔÑ (ÇáãÝÖáÉ)