рд▓реЗрдЦрд╛рдЪрд╛ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рд╢реЗрд╖рддрдГ рдЕрднреНрдпрд╛рд╕рдХреНрд░рдорд╛рдЪреНрдпрд╛ рд╡рд┐рджреНрдпрд╛рд░реНрдереНрдпрд╛рдВрд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓рд╛ рд╣реЛрддрд╛
рдпреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреАрд╡рди, рд╡рд┐рд╢реНрд╡ рдЖрдгрд┐ Linux рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдмрджреНрджрд▓рдЪреНрдпрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рд╕реБрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╣ рдорд┐рд│рддреАрд▓.
"рдЧреЛрд╖реНрдЯреА рдиреЗрд╣рдореА рдЬрд╢рд╛ рджрд┐рд╕рддрд╛рдд рддрд╢рд╛ рдирд╕рддрд╛рдд рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рд╕рддреНрдп рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдЖрд╣реЗ..."
-рдбрдЧреНрд▓рд╕ рдНрдбрдореНрд╕, рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рд╕рд╛рдареА Hitchhiker's рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛. рд╡рд╛рдврд▓реЗрд▓реА рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛. рдкрддреНрд░рд╡реНрдпрд╡рд╣рд╛рд░. рдзреЛрд░рдг. Apocalypse sysadmin рдЪреЗ рдЪрд╛рд░ рдШреЛрдбреЗрд╕реНрд╡рд╛рд░. рдЖрдордЪреНрдпрд╛ рджреИрдирдВрджрд┐рди рдХрд╛рдорд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд - рдирд┐рд░реАрдХреНрд╖рдг, рдмреЕрдХрдЕрдк, рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди, рдЕрдкрдбреЗрдЯ рдХрд░рдгреЗ рдЗ. - рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╛рдареА рджреЗрдЦреАрд▓ рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЛрдд. рдЕрдЧрджреА рддреНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдо рдЬреЗрдереЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рджрд╛рддреНрдпрд╛рдиреЗ рдЖрдореНрд╣реА рд╡рд░реНрдзрд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЖрд╣реЗ. рдХрд╛рдо рд╡рд╛рдЯрддрдВ
рдпрд╛ рдХреЛрдВрдбреАрд▓рд╛ рддреЛрдВрдб рджреЗрдд, рдХрд╛рд╣реА рдпрдВрддреНрд░рдгрд╛ рдкреНрд░рд╢рд╛рд╕рдХ рдШреЗрдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд╛рдд
The Hitchhiker's Guide to the Galaxy рдЪреНрдпрд╛ рднрд╛рд╡рдиреЗрдиреБрд╕рд╛рд░, рдирд┐рдпрдВрддреНрд░рдг рдЖрдгрд┐ рд╡рд╛рдкрд░рд╛рд╡рд┐рд╖рдпреА рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рекреи рдЙрддреНрддрд░реЗ рдпреЗрдереЗ рдЖрд╣реЗрдд.
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 рд╕рдХреНрд╖рдо рдХрд░реВ рдирдХрд╛.
рджреБрд╡реЗ:
SELinux byрдбреЕрди рд╡реЙрд▓реНрд╢ SELinux рдкреЙрд▓рд┐рд╕реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рддреБрдордЪреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдХрд╕реЗ-рдХрд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдбреЕрди рд╡реЙрд▓реНрд╢ рдпрд╛рдВрдиреАрдлрдХреНрдд рдорд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдзрд┐рдд рд▓рд┐рдирдХреНрд╕ byрдереЙрдорд╕ рдХреЕрдореЗрд░реВрди SELinux рдХрд▓рд░рд┐рдВрдЧ рдмреБрдХ byрдорд╛рдпрд░рд┐рди рдбрдлреА SELinux рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдгрд┐ рдкреНрд░рд╢рд╛рд╕рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХтАФRed Hat Enterprise Linux 7
рд╕реНрддреНрд░реЛрдд: www.habr.com