рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрд╕рд╛рдареА SELinux рдЪреАрдЯ рд╢реАрдЯ: рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА 42 рдЙрддреНрддрд░реЗ

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

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрд╕рд╛рдареА SELinux рдЪреАрдЯ рд╢реАрдЯ: рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА 42 рдЙрддреНрддрд░реЗ

рдпреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреАрд╡рди, рд╡рд┐рд╢реНрд╡ рдЖрдгрд┐ Linux рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдмрджреНрджрд▓рдЪреНрдпрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рд╕реБрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╣ рдорд┐рд│рддреАрд▓.

"рдЧреЛрд╖реНрдЯреА рдиреЗрд╣рдореА рдЬрд╢рд╛ рджрд┐рд╕рддрд╛рдд рддрд╢рд╛ рдирд╕рддрд╛рдд рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рд╕рддреНрдп рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдЖрд╣реЗ..."

-рдбрдЧреНрд▓рд╕ рдНрдбрдореНрд╕, рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рд╕рд╛рдареА Hitchhiker's рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

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

рдпрд╛ рдХреЛрдВрдбреАрд▓рд╛ рддреЛрдВрдб рджреЗрдд, рдХрд╛рд╣реА рдпрдВрддреНрд░рдгрд╛ рдкреНрд░рд╢рд╛рд╕рдХ рдШреЗрдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд╛рдд рдирд┐рд│реА рдЧреЛрд│реА, рдХрд╛рд░рдг рддреНрдпрд╛рдВрдирд╛ рдЕрд╕реЗ рд╡рд╛рдЯрддреЗ рдХреА рддреНрдпрд╛рдВрдирд╛ рдЬреАрд╡рдирд╛рдЪреНрдпрд╛, рд╡рд┐рд╢реНрд╡рд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рддреНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдЪреНрдпрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рдХрдзреАрдЪ рдХрд│рдгрд╛рд░ рдирд╛рд╣реА. рдЖрдгрд┐ рдЬрд╕реЗ рдЖрдкрдг рд╕рд░реНрд╡ рдЬрд╛рдгрддреЛ, рддреЗ рдЙрддреНрддрд░ 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 рддреНрд░реБрдЯреАрдВрдЪреА рдЪрд╛рд░ рдореБрдЦреНрдп рдХрд╛рд░рдгреЗ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдВрдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдЦрд╛рд▓реАрд▓ рдмрд┐рдВрджреВ 15-21 рдордзреНрдпреЗ рдХреЗрд▓реЗ рдЖрд╣реЗ:

  • рд▓реЗрдмрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛
  • 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 рдкреЛрд░реНрдЯ 8585 рд╡рд░ рдРрдХрдд рдЖрд╣реЗ, 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 Access Vector Cache (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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛