Π’ΠΎΠ΄ΠΈΡ‡ Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ†ΠΈ Π·Π° SELinux

Π’ΠΎΠ΄ΠΈΡ‡ Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ†ΠΈ Π·Π° SELinux

ΠŸΡ€Π΅Π²ΠΎΠ΄ Π½Π° написот ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π·Π° студСнти Π½Π° курсСви β€žΠ‘Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ‚ Π½Π° Π›ΠΈΠ½ΡƒΠΊΡβ€œ

SELinux ΠΈΠ»ΠΈ Security Enhanced Linux Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристап Ρ€Π°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ амСриканската ΠΠ³Π΅Π½Ρ†ΠΈΡ˜Π° Π·Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»Π½Π° бСзбСдност (NSA) Π·Π° Π΄Π° сС спрСчат ΠΌΠ°Π»ΠΈΡ†ΠΈΠΎΠ·Π½ΠΈ ΡƒΠΏΠ°Π΄ΠΈ. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ (ΠΈΠ»ΠΈ Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½) ΠΌΠΎΠ΄Π΅Π» Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристап (англиски Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристап, MAC) Π½Π° Π²Ρ€Π²ΠΎΡ‚ Π½Π° постоСчкиот дискрСционСн (ΠΈΠ»ΠΈ сСлСктивСн) ΠΌΠΎΠ΄Π΅Π» (англиска дискрСциона ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристап, 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 (Π°ΠΏΠ°Ρ‡ΠΈ) ΠΈΠ»ΠΈ smbd (самба), Π³ΠΈ ΠΏΡ€Π΅Ρ„Π°ΡœΠ°ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΈ создавамС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π½ΠΈΠ²:

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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€