ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΊΡΡΡΠ°
SELinux ΠΈΠ»ΠΈ Security Enhanced Linux β ΡΡΠΎ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΠ³Π΅Π½ΡΡΡΠ²ΠΎΠΌ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π‘Π¨Π (ΠΠΠ Π‘Π¨Π) Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ
Π²ΡΠΎΡΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ (ΠΈΠ»ΠΈ ΠΌΠ°Π½Π΄Π°ΡΠ½ΡΡ) ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠΎΠΌ (Π°Π½Π³Π». Mandatory Access Control, MAC) ΠΏΠΎΠ²Π΅ΡΡ
ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠΎΠ½Π½ΠΎΠΉ (ΠΈΠ»ΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ) ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π°Π½Π³Π». Discretionary Access Control, DAC), ΡΠΎ Π΅ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΡ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π£ SELinux Π΅ΡΡΡ ΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°:
- Enforcing β Π·Π°ΠΏΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
- Permissive β Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π½Π°ΡΡΡΠ°ΡΡΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ enforcing Π±ΡΠ»ΠΈ Π±Ρ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ.
- Disabled β ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SELinux.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² /etc/selinux/config
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² SELinux
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅
$ getenforce
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° permissive Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
$ setenforce 0
ΠΈΠ»ΠΈ, Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° Ρ permissive Π½Π° enforcing, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅
$ 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 Π΄Π»Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° enforcing ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΡΠ°Ρ Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π·Π°ΡΡΡΡΠ½Π΅Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠ°ΠΉΠ»Π΅, ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ enforcing, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ:
$ 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 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. ΠΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ (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 ΠΈΠ»ΠΈ denail Π² audit.log.
ΠΡΠΎ Π±ΡΠ»Π° ΠΌΠΎΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ SELinux. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ Ρ SELinux Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com