
ΠΡΠ΅Π²ΠΎΠ΄ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈ Π² ΠΊΡΡΡΠ°
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. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ)
ΠΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ (booleans) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°, Π±Π΅Π· Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ. Π’Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΠ°ΠΏΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° SELinux.
ΠΡΠΈΠΌΠ΅Ρ
ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΎΠ±Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΏΠΎ FTP Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ, ΠΈ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ Ρ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ, Π½ΠΎ ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏ Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΈΡΠΎ. Π’ΠΎΠ²Π° Π΅, Π·Π°ΡΠΎΡΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° SELinux Π·Π°Π±ΡΠ°Π½ΡΠ²Π° Π½Π° FTP ΡΡΡΠ²ΡΡΠ° Π΄Π° ΡΠ΅ΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π° Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ FTP ΡΡΡΠ²ΡΡΡΡ Π΄Π° Π΄ΠΎΡΡΡΠΏΠΈ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ Π·Π° ΡΠΎΠ²Π° ΠΈΠΌΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ
$ semanage boolean -lΠ’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅ ΡΠΏΠΈΡΡΠΊ Ρ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π»ΠΈ Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΠΈΠΌ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ / on ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΎ / off) ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠΎΡΠ½ΠΈΡΠ΅ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ, Π΄ΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ grep, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Ρ ftp:
$ semanage boolean -l | grep ftpΠΈ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ
ftp_home_dir -> off ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ftp Π΄Π° ΡΠ΅ΡΠ΅ ΠΈ ΠΏΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠ’ΠΎΠ·ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π» Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° 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. ΠΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° (Local policy). ΠΡΠΈΡΠΊΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° audit2why, ΠΊΠ°ΠΊΡΠΎ Π±Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠ° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π³ΡΠ΅ΡΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ httpd (apache) ΠΈΠ»ΠΈ smbd (samba), Π½ΠΈΠ΅ Π³ΡΠ΅ΠΏΠ°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΡΡ :
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 ΠΈΠ»ΠΈ denial Π² audit.log.
Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΌΠΎΡΡ ΠΎΠΏΠΈΡ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ SELinux. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΏΡΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ΅ ΡΡΠ²ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎ-ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ Ρ SELinux.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
