ΠΡΠ΅Π²ΠΎΠ΄ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΠΊΡΡΡΠ°
SELinux ΠΈΠ»ΠΈ Security Enhanced Linux Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΠ³Π΅Π½ΡΠΈΡΡΠ° Π·Π° Π½Π°ΡΠΈΠΎΠ½Π°Π»Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° Π‘ΠΠ© (NSA) Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ½ΠΈΠΊΠ²Π°Π½ΠΈΡ. Π’ΠΎΠΉ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π΅Π½ (ΠΈΠ»ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½) ΠΌΠΎΠ΄Π΅Π» Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ° (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Mandatory Access Control, MAC) Π²ΡΡΡ
Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠΎΠ½Π΅Π½ (ΠΈΠ»ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π΅Π½) ΠΌΠΎΠ΄Π΅Π» (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Discretionary Access Control, DAC), ΡΠΎΠ΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, Π·Π°ΠΏΠΈΡ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
SELinux ΠΈΠΌΠ° ΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°:
- ΠΠ°Π»Π°Π³Π°Π½Π΅ β ΠΎΡΠΊΠ°Π· Π½Π° Π΄ΠΎΡΡΡΠΏ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°.
- ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅Π»Π½ΠΎ β Π²ΠΎΠ΄Π΅Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π°ΡΡΡΠ°Π²Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π±ΠΈΡ Π° Π±ΠΈΠ»ΠΈ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅.
- ΠΠ°Π±ΡΠ°Π½Π΅Π½ β ΠΏΡΠ»Π½ΠΎ Π΄Π΅Π·Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° SELinux.
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΡΠ° Π² /etc/selinux/config
ΠΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° SELinux
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ΅ΠΆΠΈΠΌ, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅
$ getenforce
ΠΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅Π»Π΅Π½, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°
$ setenforce 0
ΠΈΠ»ΠΈ, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΡ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½ Π½Π° Π½Π°Π»Π°Π³Π°Π½Π΅, ΠΈΠ·ΠΏΡΠ»Π½ΠΈ
$ setenforce 1
ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ SELinux, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ»
$ vi /etc/selinux/config
ΠΠ° Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° SELINUX, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
SELINUX=disabled
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° SELinux
ΠΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ Ρ SELinux ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΡΠΎΠ»Ρ, ΡΠΈΠΏ ΠΈ Ρ.Π½. ΠΠΊΠΎ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ SELinux, ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅. ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅. ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ, Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½.
$ vi /etc/selinux/config
SELINUX=permissive
Π‘Π»Π΅Π΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½, ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ°Π·Π΅Π½ ΡΠΊΡΠΈΡ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΡΠ΅Π½Π° Ρ ΠΈΠΌΠ΅ΡΠΎ autorelabel
$ touch /.autorelabel
ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡΠ°
$ init 6
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π°Π»Π°Π³Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΈΠ² Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
ΠΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΠΉΡΠ΅, Π°ΠΊΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ΡΠΎ Π·Π°ΡΠ΅Π΄Π½Π΅ Π²ΡΡΡ Ρ Π½ΡΠΊΠΎΠΉ ΡΠ°ΠΉΠ», ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π²ΠΈ ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π°Π»Π°Π³Π°Π½Π΅ΠΈ ΡΡΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅:
$ setenforce 1
ΠΠ΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ ΡΠ΅ SELinux Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ.
ΠΠ°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅
ΠΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΅ ΡΡΠ΅ΡΠ½Π°Π»ΠΈ Π½ΡΠΊΠΎΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ. ΠΠ° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ Π²Π°ΡΠΈΡΡ SELinux ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈ Π΄Π°Π»ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Π½ΡΠΊΠΎΠΉ ΠΏΠΎΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ.Π½., ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π Π΅Π³ΠΈΡΡΡΡΡΡ Π½Π° SELinux ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² /var/log/audit/audit.log
, Π½ΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° audit2why, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ audit2why < /var/log/audit/audit.log
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΊΠΎ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½ΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ, Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° SELinux ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° SELinux Π΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΠΈΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° SELinux. ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΡΠ΅Π΄Π°. Π‘Π΅Π³Π° ΡΠ΅ Π½Π°ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
1. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ)
ΠΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ (Π±ΡΠ»Π΅Π²ΠΈ) Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π±Π΅Π· Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ. Π’Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° SELinux ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ
ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΡΡΠ΅Π· FTP ΡΠ΅ΡΠ΅Π½Π΅/Π·Π°ΠΏΠΈΡ ΠΈ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ Ρ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ, Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌ, Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΈΡΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° SELinux Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° FTP ΡΡΡΠ²ΡΡΠ° Π΄Π° ΡΠ΅ΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π° Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ FTP ΡΡΡΠ²ΡΡΡΡ Π΄Π° ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ Π·Π° ΡΠΎΠ²Π°
$ semanage boolean -l
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΡΠΎΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ Ρ ΡΡΡ Π½ΠΎΡΠΎ ΡΠ΅ΠΊΡΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΎ) ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ ΡΠΈ, ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ grep, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠ°ΠΌΠΎ Π·Π° ftp:
$ semanage boolean -l | grep ftp
ΠΈ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ
ftp_home_dir -> off Allow ftp to read & write file in user home directory
Π’ΠΎΠ·ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π» Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ Ρ setsebool $ setsebool ftp_home_dir on
Π‘Π΅Π³Π° Π½Π°ΡΠΈΡΡ ftp Π΄Π΅ΠΌΠΎΠ½ ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ Π±Π΅Π· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ getsebool -a
2. ΠΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° SELinux ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°. ΠΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ», ΠΏΠ°ΠΏΠΊΠ°, ΠΏΡΠΎΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° SELinux:
- ΠΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π½ΠΈ ΡΡΡ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ ls -Z /etc/httpd
- ΠΠ° ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅, Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π·ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
ΠΏΡΠΎΡΠ΅Ρ
$ ps βauxZ | grep httpd
ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΠ΅
$ netstat -anpZ | grep httpd
ΠΡΠΈΠΌΠ΅Ρ
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΠΊΠΎΠΉΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /var/www/html/ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ /home/dan/html/
. SELinux ΡΠ΅ ΡΡΠΈΡΠ° ΡΠΎΠ²Π° Π·Π° Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΈ Π²ΠΈΠ΅ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π± ΡΡΡΠ°Π½ΠΈΡΠΈ. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ Π½Π΅ ΡΠΌΠ΅ Π·Π°Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ Ρ HTML ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ ls βlz /var/www/html
-rw-rβrβ. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/
ΠΡΠΎ Π½ΠΈ httpd_sys_content_t
ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π° html ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’ΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π·Π° Π½Π°ΡΠ°ΡΠ° ΡΠ΅ΠΊΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ:
-rw-rβrβ. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/
ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ:
$ semanage fcontext -l | grep '/var/www'
ΠΠΈΠ΅ ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ semanage, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°. ΠΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° /home/dan/html, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
$ semanage fcontext -a -t httpd_sys_content_t β/home/dan/html(/.*)?β
$ semanage fcontext -l | grep β/home/dan/htmlβ
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° semanage, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° restorecon ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ°ΡΠΈΡΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° /home/dan/html
ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·ΠΈ ΠΏΠ°ΠΏΠΊΠ° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Π½Π° httpd_sys_content_t
.
3. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠΌΠ° ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π³ΠΎΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ° Π±Π΅Π·ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Π²Π°Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ (avc/denial) Π² audit.log. ΠΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ΅ΡΡΠ½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π³ΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° audit2why, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ httpd (apache) ΠΈΠ»ΠΈ smbd (samba), Π½ΠΈΠ΅ grep Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΡΡ :
apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy
Π’ΡΠΊ http_policy
ΠΈ smb_policy
ΡΠ° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΌΠ΅ΡΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅. Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΠΌ ΡΠ΅Π·ΠΈ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° SELinux. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
$ semodule βI http_policy.pp
$ semodule βI smb_policy.pp
ΠΠ°ΡΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ΠΈ ΠΈ Π²Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ avc ΠΈΠ»ΠΈ denail Π² audit.log.
Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΌΠΎΡΡ ΠΎΠΏΠΈΡ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ SELinux. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ²ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎ-ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΡΡΡ SELinux.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com