
ΠΡΠ΅Π²ΠΎΠ΄ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΠΊΡΡΡΠ°
SELinux ΠΈΠ»ΠΈ Security Enhanced Linux Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠ°ΡΠ° Π°Π³Π΅Π½ΡΠΈΡ Π·Π° Π½Π°ΡΠΈΠΎΠ½Π°Π»Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ (NSA) Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ½ΠΈΠΊΠ²Π°Π½ΠΈΡ. Π’ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ (ΠΈΠ»ΠΈ ΠΌΠ°Π½Π΄Π°ΡΠ΅Π½) ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ: Mandatory Access Control, MAC) Π²ΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠΎΠ½Π΅Π½ (ΠΈΠ»ΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π΅Π½) ΠΌΠΎΠ΄Π΅Π» (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ: Discretionary Access Control, DAC), Ρ.Π΅. ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, Π·Π°ΠΏΠΈΡ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
SELinux ΠΈΠΌΠ° ΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°:
- Enforcing β Π·Π°Π±ΡΠ°Π½Π° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°.
- Permissive β Π²ΠΎΠ΄ΠΈ Π·Π°ΠΏΠΈΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΡΡΡΠ°Π²Π°ΡΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ° enforcing Π±ΠΈΡ Π° Π±ΠΈΠ»ΠΈ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ.
- Disabled β ΠΏΡΠ»Π½ΠΎ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° SELinux.
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΡΠ° Π² /etc/selinux/config
Π‘ΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° SELinux
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ΅ΠΆΠΈΠΌ, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅
$ getenforceΠΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° permissive, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°
$ setenforce 0ΠΈΠ»ΠΈ, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΡ permissive Π½Π° Π½Π°, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅
$ setenforce 1ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ SELinux, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ»
$ vi /etc/selinux/configΠΠ° Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° SELINUX ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
SELINUX=disabledΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° SELinux
ΠΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° SELinux, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΡΠΎΠ»Ρ, ΡΠΈΠΏ ΠΈ Ρ.Π½. ΠΠΊΠΎ Π·Π° ΠΏΡΡΠ² ΠΏΡΡ Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ SELinux, ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅. ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° Π½Π°Π·Π½Π°ΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅. ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ, ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° permissive.
$ vi /etc/selinux/config
SELINUX=permissiveΠ‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° permissive, ΡΡΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΊΠΎΡΠ΅Π½Π° ΠΏΡΠ°Π·Π΅Π½ ΡΠΊΡΠΈΡ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅ .autorelabel
$ touch /.autorelabelΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡΠ°
$ init 6ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΠΆΠΈΠΌ permissive Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΈΠ² Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
ΠΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΠΉΡΠ΅, Π°ΠΊΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π·Π°Π±ΡΠΊΡΡΠ²Π° Π½Π° Π½ΡΠΊΠΎΠΉ ΡΠ°ΠΉΠ», ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° Π²ΡΠ΅ΠΌΠ΅. Π‘Π»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅:
$ 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 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), ΠΏΡΠ°Π²ΠΈΠΌ 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 ΠΈΠ»ΠΈ denial Π² audit.log.
Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΌΠΎΡΡ ΠΎΠΏΠΈΡ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ SELinux. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΏΡΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ΅ ΡΡΠ²ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎ-ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΡΡΡ SELinux.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
