Π ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ Π·Π° SELinux

Π ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ Π·Π° SELinux

ΠŸΡ€Π΅Π²ΠΎΠ΄ Π½Π° статията, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π·Π° студСнтитС ΠΎΡ‚ курса β€žΠ‘ΠΈΠ³ΡƒΡ€Π½ΠΎΡΡ‚ Π½Π° Linuxβ€œ

SELinux ΠΈΠ»ΠΈ Security Enhanced Linux Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ АгСнцията Π·Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»Π½Π° сигурност Π½Π° БАЩ (NSA) Π·Π° прСдотвратяванС Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ прониквания. Π’ΠΎΠΉ ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π΅Π½ (ΠΈΠ»ΠΈ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½) ΠΌΠΎΠ΄Π΅Π» Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° (Π½Π° английски Mandatory Access Control, MAC) Π²ΡŠΡ€Ρ…Ρƒ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ дискрСционСн (ΠΈΠ»ΠΈ сСлСктивСн) ΠΌΠΎΠ΄Π΅Π» (Π½Π° английски Discretionary Access Control, DAC), тоСст Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, запис, изпълнСниС.

SELinux ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°:

  1. НалаганС β€” ΠΎΡ‚ΠΊΠ°Π· Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ въз основа Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°.
  2. ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»Π½ΠΎ β€” Π²ΠΎΠ΄Π΅Π½Π΅ Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° дСйствията, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° Π±ΠΈΠ»ΠΈ Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅.
  3. Π—Π°Π±Ρ€Π°Π½Π΅Π½ β€” пълно Π΄Π΅Π·Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€