рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ SELinux рдзреЛрдЦрд╛ рдкрд╛рдирд╛: рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ 42 рдЬрд╡рд╛рдл

рд▓реЗрдЦрдХреЛ рдЕрдиреБрд╡рд╛рдж рдкрд╛рдареНрдпрдХреНрд░рдордХрд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ "рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ".

рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ SELinux рдзреЛрдЦрд╛ рдкрд╛рдирд╛: рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ 42 рдЬрд╡рд╛рдл

рдпрд╣рд╛рдБ рддрдкрд╛рдИрдБрд▓реЗ рдЬреАрд╡рди, рдмреНрд░рд╣реНрдорд╛рдгреНрдб рд░ Linux рдорд╛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред

"рдХреБрд░рд╛рд╣рд░реВ рд╕рдзреИрдВ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдБрджреИрдирдиреН рднрдиреНрдиреЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕рддреНрдп рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣реЛ ..."

-рдбрдЧрд▓рд╕ рдПрдбрдореНрд╕, The Hitchhiker's Guide to the Galaxy

рд╕реБрд░рдХреНрд╖рд╛ред рдмрдвреЗрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ред рдкрддреНрд░рд╛рдЪрд╛рд░ред рдиреАрддрд┐ред Apocalypse sysadmin рдХреЛ рдЪрд╛рд░ Horsemenред рд╣рд╛рдореНрд░реЛ рджреИрдирд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВ - рдЕрдиреБрдЧрдорди, рдмреНрдпрд╛рдХрдЕрдк, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреЗ, рдЖрджрд┐рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд - рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫреМрдВред рддреА рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдкрдирд┐ рдЬрд╣рд╛рдБ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдкреНрд░рджрд╛рдпрдХрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдкрд░рд┐рд╖реНрдХреГрдд рд╕реБрд░рдХреНрд╖рд╛ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдЫред рдХрд╛рдо рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрдЫ рдЗрдерд╛рди рд╣рдиреНрдЯ "рдорд┐рд╢рди: рдЕрд╕рдореНрднрд╡" рдмрд╛рдЯред

рдпрд╕ рджреБрд╡рд┐рдзрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрджреИ, рдХреЗрд╣рд┐ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрд▓реЗ рд▓рд┐рдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫрдиреН рдиреАрд▓реЛ рдЧреЛрд▓реА, рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рд╕реЛрдЪреНрдЫрдиреН рдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЬреАрд╡рди, рдмреНрд░рд╣реНрдорд╛рдгреНрдб рд░ рддреА рд╕рдмреИрдХреЛ рдареВрд▓реЛ рдкреНрд░рд╢реНрдирдХреЛ рдЬрд╡рд╛рдл рдХрд╣рд┐рд▓реНрдпреИ рдерд╛рд╣рд╛ рдкрд╛рдЙрдиреЗ рдЫреИрдирдиреНред рд░ рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рддреНрдпреЛ рдЬрд╡рд╛рдл 42 рд╣реЛред

The Hitchhiker's Guide to the Galaxy рдХреЛ рднрд╛рд╡рдирд╛рдорд╛, рдпрд╣рд╛рдБ рдирд┐рдпрдиреНрддреНрд░рдг рд░ рдкреНрд░рдпреЛрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рекреи рдЙрддреНрддрд░рд╣рд░реВ рдЫрдиреНред SELinux рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ред

1. SELinux рдПрдХ рдЬрдмрд░рдЬрд╕реНрддреА рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реЛ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд▓реЗрдмрд▓ рд╣реБрдиреНрдЫред рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓, рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд░ рдкреНрд░рдгрд╛рд▓реА рд╡рд╕реНрддреБрдорд╛ рдкрдирд┐ рд▓реЗрдмрд▓рд╣рд░реВ рдЫрдиреНред рдиреАрддрд┐ рдирд┐рдпрдорд╣рд░реВрд▓реЗ рдЯреНрдпрд╛рдЧ рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд░ рд╡рд╕реНрддреБрд╣рд░реВ рдмреАрдЪ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫред рдХрд░реНрдиреЗрд▓рд▓реЗ рдпреА рдирд┐рдпрдорд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред

2. рджреБрдИ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рд╣реБрдиреН: рд▓реЗрдмрд▓рд┐рдВрдЧ тАФ рдЪрд┐рдиреНрд╣рд╣рд░реВ (рдлрд╛рдЗрд▓рд╣рд░реВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ, рдкреЛрд░реНрдЯрд╣рд░реВ, рдЖрджрд┐) рд░ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╡рд░реНрддрди (рдЬрд╕рд▓реЗ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЖрдзрд╛рд░рдорд╛ рдПрдХрдЕрд░реНрдХрд╛рдмрд╛рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓рд╛рдИ рдЕрд▓рдЧ рдЧрд░реНрдЫ)ред

3. рд╕рд╣реА рд▓реЗрдмрд▓ рдврд╛рдБрдЪрд╛ user:role:type:level (рд╡реИрдХрд▓реНрдкрд┐рдХ)ред

4. рдмрд╣реБ-рд╕реНрддрд░реАрдп рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рдЙрджреНрджреЗрд╢реНрдп (рдмрд╣реБ-рд╕реНрддрд░реАрдп рд╕реБрд░рдХреНрд╖рд╛ - MLS) рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдбреЗрдЯрд╛рдХреЛ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд╕реНрддрд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ (рдбреЛрдореЗрдирд╣рд░реВ) рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╣реЛред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЧреЛрдкреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рд╢реАрд░реНрд╖ рдЧреЛрдкреНрдп рдбрд╛рдЯрд╛ рдкрдвреНрди рд╕рдХреНрджреИрдиред

5. рдмрд╣реБ-рд╢реНрд░реЗрдгреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджреИ (рдмрд╣реБ-рд╢реНрд░реЗрдгреА рд╕реБрд░рдХреНрд╖рд╛ - MCS) рд╕рдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓рд╛рдИ рдПрдХрдЕрд░реНрдХрд╛рдмрд╛рдЯ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрджрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ, рдУрдкрдирд╢рд┐рдлреНрдЯ рдЗрдиреНрдЬрд┐рдирд╣рд░реВ, SELinux рд╕реНрдпрд╛рдиреНрдбрдмрдХреНрд╕рд╣рд░реВ, рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ, рдЖрджрд┐)ред

6. рдмреБрдЯрдорд╛ SELinux рдореЛрдбрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ:

  • autorelabel=1 тЖТ рдкреНрд░рдгрд╛рд▓реАрд▓рд╛рдИ рд░рд┐рд▓реЗрдмрд▓рд┐рдЩ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░рдг рдмрдирд╛рдЙрдБрдЫ
  • selinux=0 тЖТ рдХрд░реНрдиреЗрд▓рд▓реЗ SELinux рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд▓реЛрдб рдЧрд░реНрджреИрди
  • enforcing=0 тЖТ рдЕрдиреБрдорддрд┐ рдореЛрдбрдорд╛ рд▓реЛрдб рдЧрд░реНрджреИ

7. рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдкреБрди: рд▓реЗрдмрд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ:

# touch /.autorelabel
#reboot

рдпрджрд┐ рдкреНрд░рдгрд╛рд▓реА рдорд╛рд░реНрдХрд┐рдЩрдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдлрд▓ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдЯрд┐рдкреНрдкрдгреА рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рдореЛрдбрдорд╛ рдмреБрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред

8. SELinux рд╕рдХреНрд╖рдо рдЫ рдХрд┐ рдЫреИрди рдЬрд╛рдБрдЪ рдЧрд░реНрди: # getenforce

9. SELinux рд▓рд╛рдИ рдЕрд╕реНрдерд╛рдпреА рд░реВрдкрдорд╛ рд╕рдХреНрд╖рдо/рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрди: # setenforce [1|0]

10ред SELinux рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ: # sestatus

11ред рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓: /etc/selinux/config

12ред SELinux рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ? рдпрд╣рд╛рдБ Apache рд╡реЗрдм рд╕рд░реНрднрд░ рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ:

  • рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡: /usr/sbin/httpdтЖТhttpd_exec_t
  • рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: /etc/httpdтЖТhttpd_config_t
  • рд▓рдЧ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: /var/log/httpd тЖТ httpd_log_t
  • рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: /var/www/html тЖТ httpd_sys_content_t
  • рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН: /usr/lib/systemd/system/httpd.service тЖТ httpd_unit_file_d
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛: /usr/sbin/httpd -DFOREGROUND тЖТ httpd_t
  • рдкреЛрд░реНрдЯрд╣рд░реВ: 80/tcp, 443/tcp тЖТ httpd_t, http_port_t

рд╕рдиреНрджрд░реНрднрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ httpd_t, рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд╡рд╕реНрддреБрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдЫ httpd_something_t.

13ред рдзреЗрд░реИ рдЖрджреЗрд╢рд╣рд░реВрд▓реЗ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫрдиреН -Z рд╣реЗрд░реНрди, рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рд╕рдиреНрджрд░реНрдн рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреНрдЫрдиреН рдЬрдм рдлрд╛рдЗрд▓рд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрднрд┐рднрд╛рд╡рдХ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╣реБрдиреНрдЫрдиреН (рдХреЗрд╣реА рдЕрдкрд╡рд╛рджрд╣рд░реВ рд╕рд╣рд┐рдд)ред RPM рд▓реЗ рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдХреНрд░рдордорд╛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫред

14ред SELinux рддреНрд░реБрдЯрд┐рд╣рд░реВрдХрд╛ рдЪрд╛рд░ рдореБрдЦреНрдп рдХрд╛рд░рдгрд╣рд░реВ рдЫрдиреН, рдЬрд╕рд▓рд╛рдИ рддрд▓рдХреЛ рдЕрдВрдХ резрел-реирез рдорд╛ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ:

  • рд▓реЗрдмрд▓рд┐рдЩ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ
  • SELinux рд▓рд╛рдИ рдерд╛рд╣рд╛ рд╣реБрдиреБ рдкрд░реНрдиреЗ рдХреБрд░рд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ
  • SELinux рдиреАрддрд┐/рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рддреНрд░реБрдЯрд┐
  • рддрдкрд╛рдИрдВрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдореНрдЭреМрддрд╛ рд╣реБрди рд╕рдХреНрдЫ

15ред рд▓реЗрдмрд▓рд┐рдЩ рд╕рдорд╕реНрдпрд╛: рдпрджрд┐ рддрдкрд╛рдЗрдБрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдЫрдиреН /srv/myweb рдЧрд▓рдд рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ, рдкрд╣реБрдБрдЪ рдЕрд╕реНрд╡реАрдХрд╛рд░ рд╣реБрди рд╕рдХреНрдЫред рдпрд╣рд╛рдБ рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реНрди рдХреЗрд╣реА рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:

  • рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд▓реЗрдмрд▓ рдерд╛рд╣рд╛ рдЫ рднрдиреЗ:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • рдпрджрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдмрд░рд╛рдмрд░ рдЪрд┐рдиреНрд╣рд╣рд░реВ рднрдПрдХреЛ рдлрд╛рдЗрд▓ рдерд╛рд╣рд╛ рдЫ рднрдиреЗ:
    # semanage fcontext -a -e /srv/myweb /var/www
  • рд╕рдиреНрджрд░реНрдн рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ (рджреБрд╡реИ рдЕрд╡рд╕реНрдерд╛рдорд╛):
    # restorecon -vR /srv/myweb

16ред рд▓реЗрдмрд▓рд┐рдЩ рд╕рдорд╕реНрдпрд╛: рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рд╕рд╛рд░реНрдиреБ рднрдпреЛ рднрдиреЗ, рдлрд╛рдЗрд▓рд▓реЗ рдпрд╕рдХреЛ рдореВрд▓ рд╕рдиреНрджрд░реНрдн рдХрд╛рдпрдо рд░рд╛рдЦреНрдиреЗрдЫред рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди:

  • рд▓реЗрдмрд▓рдХреЛ рд╕рд╛рде рд╕рдиреНрджрд░реНрдн рдЖрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • рд▓рд┐рдЩреНрдХ рд▓реЗрдмрд▓рдХреЛ рд╕рд╛рде рд╕рдиреНрджрд░реНрдн рдЖрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • рд╕рдиреНрджрд░реНрдн рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рджреБрд╡реИ рдХреЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐): # restorecon -vR /var/www/html/

17ред рдпрджрд┐ SELinux рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫHTTPD рд▓реЗ рдкреЛрд░реНрдЯ реорелреорел рдорд╛ рд╕реБрдирд┐рд░рд╣реЗрдХреЛ рдЫ, SELinux рд▓рд╛рдИ рднрдиреНрдиреБрд╣реЛрд╕реН:

# semanage port -a -t http_port_t -p tcp 8585

18ред SELinux рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдмреБрд▓рд┐рдпрди рдорд╛рдирд╣рд░реВ рдЬрд╕рд▓реЗ SELinux рдиреАрддрд┐рдХрд╛ рднрд╛рдЧрд╣рд░реВрд▓рд╛рдИ рд░рдирдЯрд╛рдЗрдордорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ SELinux рдиреАрддрд┐ рдЕрдзрд┐рд▓реЗрдЦрди рднрдПрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдмрд┐рдирд╛ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ httpd рдЗрдореЗрд▓ рдкрдард╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН: # setsebool -P httpd_can_sendmail 1

19ред SELinux рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ SELinux рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕рдХреНрд╖рдо/рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рддрд╛рд░реНрдХрд┐рдХ рдорд╛рдирд╣рд░реВ:

  • рд╕рдмреИ рдмреБрд▓рд┐рдпрди рдорд╛рдирд╣рд░реВ рд╣реЗрд░реНрди: # getsebool -a
  • рдкреНрд░рддреНрдпреЗрдХрдХреЛ рд╡рд┐рд╡рд░рдг рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐: # semanage boolean -l
  • рдмреБрд▓рд┐рдпрди рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрди: # setsebool [_boolean_] [1|0]
  • рд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдкрдирд╛рдХреЛ рд▓рд╛рдЧрд┐, рдердкреНрдиреБрд╣реЛрд╕реН -Pред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐: # setsebool httpd_enable_ftp_server 1 -P

20ред SELinux рдиреАрддрд┐рд╣рд░реВ/рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН, рдЬрд╕рдорд╛:

  • рдЕрд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдкрдерд╣рд░реВ
  • рдХрдиреНрдлрд┐рдЧреНрдпреБрд░рд╛рд╕реА
  • stdout рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрджреИ
  • рдлрд╛рдЗрд▓ рд╡рд┐рд╡рд░рдг рдЪреБрд╣рд╛рд╡рдЯ
  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА
  • рдирд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмрдиреЗрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ

рдЯрд┐рдХрдЯрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН (рдмрдЧрдЬрд┐рд▓рд╛рдорд╛ рдкреНрд░рддрд┐рд╡реЗрджрди рдкреЗрд╢ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН; рдмрдЧрдЬрд┐рд▓рд╛рдХреЛ рдХреБрдиреИ SLA рдЫреИрди)ред

21ред рддрдкрд╛рдИрдВрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдореНрдЭреМрддрд╛ рд╣реБрди рд╕рдХреНрдЫрдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдбреЛрдореЗрдирд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ:

  • рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ SELinux рдореЛрдб рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН etc_t/shadow_t
  • iptables рдирд┐рдпрдорд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

22ред рдиреАрддрд┐ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди SELinux рдЙрдкрдХрд░рдгрд╣рд░реВ:

# yum -y install setroubleshoot setroubleshoot-server

рд░рд┐рдмреБрдЯ рд╡рд╛ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН auditd рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐ред

23ред рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

journalctl

рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдмреИ рд▓рдЧрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24ред рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН journalctl рд╡рд┐рд╢реЗрд╖ SELinux рдЯреНрдпрд╛рдЧрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдмреИ рд▓рдЧрд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрдиред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25ред рдпрджрд┐ SELinux рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ рднрдиреЗ, рд▓рдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН setroubleshoot рдзреЗрд░реИ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИред
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмрд╛рдЯ journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

26ред рд▓рдЧрд┐рдЩ: SELinux рд▓реЗ рдзреЗрд░реИ рдард╛рдЙрдБрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд░реЗрдХрд░реНрдб рдЧрд░реНрдЫ:

  • / var / рд▓рдЧ / рд╕рдиреНрджреЗрд╢рд╣рд░реВ
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27ред рд▓рдЧрд┐рдЩ: рдЕрдбрд┐рдЯ рд▓рдЧрдорд╛ SELinux рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЦреЛрдЬреА рдЧрд░реНрджреИ:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28ред рд╡рд┐рд╢реЗрд╖ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ SELinux рдкрд╣реБрдБрдЪ рднреЗрдХреНрдЯрд░ рдХреНрдпрд╛рд╕ (AVC) рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди:

# ausearch -m avc -c httpd

29ред рдЙрдкрдпреЛрдЧрд┐рддрд╛ audit2allow рдирд┐рд╖реЗрдзрд┐рдд рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рдЧрдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ SELinux рдЕрдиреБрдорддрд┐ рдиреАрддрд┐ рдирд┐рдпрдорд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

  • рдХрд┐рди рдкрд╣реБрдБрдЪ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреНрдиреЗ рдорд╛рдирд╡-рдкрдардиреАрдп рд╡рд┐рд╡рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди: # audit2allow -w -a
  • рдЕрд╕реНрд╡реАрдХреГрдд рдкрд╣реБрдБрдЪ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╡рд░реНрддрди рдирд┐рдпрдо рд╣реЗрд░реНрди: # audit2allow -a
  • рдЕрдиреБрдХреВрд▓рди рдореЛрдбреНрдпреБрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди: # audit2allow -a -M mypolicy
  • рд╡рд┐рдХрд▓реНрдк -M рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдордХреЛ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╡рд░реНрддрди рдлрд╛рдЗрд▓ (.te) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рд░ рдиреАрддрд┐ рдкреНрдпрд╛рдХреЗрдЬ (.pp) рдорд╛ рдирд┐рдпрдо рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрдЫ: mypolicy.pp mypolicy.te
  • рдЕрдиреБрдХреВрд▓рди рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди: # semodule -i mypolicy.pp

30ред рдЕрдиреБрдорддрд┐ рдореЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдбреЛрдореЗрди) рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди: # semanage permissive -a httpd_t

31ред рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрдм рдбреЛрдореЗрдирд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди рднрдиреЗ: # semanage permissive -d httpd_t

32ред рд╕рдмреИ рдЕрдиреБрдорддрд┐ рдбреЛрдореЗрдирд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди: # semodule -d permissivedomains

33ред MLS SELinux рдиреАрддрд┐ рд╕рдХреНрд╖рдо рдЧрд░реНрджреИ: # yum install selinux-policy-mls
╨▓ /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ SELinux рдЕрдиреБрдорддрд┐ рдореЛрдбрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ: # setenforce 0
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН fixfilesрдЕрд░реНрдХреЛ рд░рд┐рдмреБрдЯрдорд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреБрди: рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди:

# fixfiles -F onboot # reboot

34ред рд╡рд┐рд╢рд┐рд╖реНрдЯ MLS рджрд╛рдпрд░рд╛рдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН: # useradd -Z staff_u john

рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ useradd, рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдЕрд╡рд╕реНрдерд┐рдд SELinux рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдорд╛ рдирдХреНрд╕рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, staff_u).

35ред SELinux рд░ Linux рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдмреАрдЪрдХреЛ рдореНрдпрд╛рдкрд┐рдЩ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐: # semanage login -l

36ред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд╛рдпрд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН: # semanage login --modify --range s2:c100 john

37ред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЧреГрд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд▓реЗрдмрд▓ рд╕рдЪреНрдпрд╛рдЙрди (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рднрдП): # chcon -R -l s2:c100 /home/john

38ред рд╡рд░реНрддрдорд╛рди рдХреЛрдЯрд┐рд╣рд░реВ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐: # chcat -L

39ред рдХреЛрдЯрд┐рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рдЖрдлреНрдиреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд╛рдЗрд▓ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

/etc/selinux/_<selinuxtype>_/setrans.conf

40ред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╛рдЗрд▓, рднреВрдорд┐рдХрд╛, рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдиреНрджрд░реНрднрдорд╛ рдЖрджреЗрд╢ рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрди:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t рдлрд╛рдЗрд▓ рд╕рдиреНрджрд░реНрдн
  • -r рднреВрдорд┐рдХрд╛ рд╕рдиреНрджрд░реНрдн
  • -u рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдиреНрджрд░реНрдн

41ред SELinux рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ:

  • рдкреЛрдбрдореНрдпрд╛рди: # podman run --security-opt label=disable тАж
  • рдбрдХрд░: # docker run --security-opt label=disable тАж

42ред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрдиреНрдЯреЗрдирд░рд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкреВрд░реНрдг рдкрд╣реБрдБрдЪ рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ:

  • рдкреЛрдбрдореНрдпрд╛рди: # podman run --privileged тАж
  • рдбрдХрд░: # docker run --privileged тАж

рд░ рдЕрдм рддрдкрд╛рдИрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдЬрд╡рд╛рдл рдерд╛рд╣рд╛ рдЫред рддреНрдпрд╕реИрд▓реЗ рдХреГрдкрдпрд╛: рдирдбрд░рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ SELinux рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рдиреНрджрд░реНрднрд╣рд░реВ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди