SELinux рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╢реБрд░реБрдЖрддреА рдЧрд╛рдЗрдб

SELinux рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╢реБрд░реБрдЖрддреА рдЧрд╛рдЗрдб

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

SELinux рд╡рд╛ рд╕реЗрдХреНрдпреБрд░рд┐рдЯреА рдПрдиреНрд╣рд╛рдиреНрд╕реНрдб рд▓рд┐рдирдХреНрд╕ рдпреВрдПрд╕ рдиреЗрд╢рдирд▓ рд╕реЗрдХреНрдпреБрд░рд┐рдЯреА рдПрдЬреЗрдиреНрд╕реА (NSA) рджреНрд╡рд╛рд░рд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдШреБрд╕рдкреИрда рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рд╕рдВрдпрдиреНрддреНрд░ рд╣реЛред рдпрд╕рд▓реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА (рд╡рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп) рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдореЛрдбреЗрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг, MAC) рдЕрд╡рд╕реНрдерд┐рдд рд╡рд┐рд╡реЗрдХрд╛рддреНрдордХ (рд╡рд╛ рдЪрдпрдирд╛рддреНрдордХ) рдореЛрдбреЗрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд┐рд╡реЗрдХрд╛рдзрд┐рдХрд╛рд░ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг, DAC) рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рддреНрдпреЛ рд╣реЛ, рдкрдвреНрди, рд▓реЗрдЦреНрди, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдЕрдиреБрдорддрд┐рд╣рд░реВред

SELinux рдорд╛ рддреАрди рдореЛрдбрд╣рд░реВ рдЫрдиреН:

  1. рдкреНрд░рд╡рд░реНрдзрди рдЧрд░реНрджреИ - рдиреАрддрд┐ рдирд┐рдпрдорд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкрд╣реБрдБрдЪ рдЕрд╕реНрд╡реАрдХрд╛рд░ред
  2. рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ - рдиреАрддрд┐ рдЙрд▓реНрд▓рдЩреНрдШрди рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рдЧ рд░рд╛рдЦреНрдиреЗ, рдЬреБрди рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдореЛрдбрдорд╛ рдирд┐рд╖реЗрдзрд┐рдд рд╣реБрдиреЗрдЫред
  3. рдЕрдХреНрд╖рдо - SELinux рдХреЛ рдкреВрд░реНрдг рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрджреИред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдЫрдиреН /etc/selinux/config

SELinux рдореЛрдбрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ

рд╣рд╛рд▓рдХреЛ рдореЛрдб рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

$ getenforce

рдЕрдиреБрдорддрд┐рдорд╛ рдореЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

$ setenforce 0

рд╡рд╛, рдмрд╛рдЯ рдореЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди Permissive рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджреИ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

$ setenforce 1

рдпрджрд┐ рддрдкрд╛рдЗрдБ SELinux рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдорд╛рд░реНрдлрдд рдорд╛рддреНрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ

$ vi /etc/selinux/config

рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ SELINUX рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:

SELINUX=disabled

SELinux рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ

рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓ рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ SELinux рд╕рдиреНрджрд░реНрднрд╕рдБрдЧ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдиреНрдЫ, рдЬрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛, рднреВрдорд┐рдХрд╛, рдкреНрд░рдХрд╛рд░, рдЖрджрд┐ рдЬрд╕реНрддрд╛ рдердк рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫред рдпрджрд┐ рдпреЛ рддрдкрд╛рдЗрдБрдХреЛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ SELinux рд╕рдХреНрд╖рдо рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рд╕рдиреНрджрд░реНрдн рд░ рд▓реЗрдмрд▓рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред рд▓реЗрдмрд▓ рд░ рд╕рдиреНрджрд░реНрдн рдЕрд╕рд╛рдЗрди рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЯреНрдпрд╛рдЧрд┐рдЩ рднрдирд┐рдиреНрдЫред рдорд╛рд░реНрдХрд┐рдЩ рд╕реБрд░реБ рдЧрд░реНрди, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рд╣рд╛рдореА рдореЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ Permissive.

$ vi /etc/selinux/config
SELINUX=permissive

рдореЛрдб рд╕реЗрдЯ рдЧрд░реЗрдкрдЫрд┐ Permissive, рдирд╛рдордХреЛ рд╕рд╛рде рд░реВрдЯрдорд╛ рдЦрд╛рд▓реА рд▓реБрдХреЗрдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН autorelabel

$ touch /.autorelabel

рд░ рдХрдореНрдкреНрдпреБрдЯрд░ рд░рд┐рдмреБрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

$ init 6

рдиреЛрдЯ: рд╣рд╛рдореА рдореЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ Permissive рдорд╛рд░реНрдХрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐, рдореЛрдбрдХреЛ рдкреНрд░рдпреЛрдЧрджреЗрдЦрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрджреИ рд░рд┐рдмреБрдЯ рдЧрд░реНрджрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреНрд░реНрдпрд╛рд╕ рд╣реБрди рд╕рдХреНрдЫред

рдЪрд┐рдиреНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН рдпрджрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд╣реА рдлрд╛рдЗрд▓рдорд╛ рдЕрдбреНрдХрд┐рдпреЛ рднрдиреЗ, рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рдХреЗрд╣реА рд╕рдордп рд▓рд╛рдЧреНрдЫред рдорд╛рд░реНрдХрд┐рдЩ рдкреВрд░рд╛ рднрдПрдкрдЫрд┐ рд░ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдгрд╛рд▓реА рдмреБрдЯ рднрдПрдкрдЫрд┐, рддрдкрд╛рдИрдВ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рдЧрдПрд░ рдореЛрдб рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд▓рд╛рдЧреВ рдЧрд░реНрджреИрд░ рдкрдирд┐ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

$ setenforce 1

рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ SELinux рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫред

рд▓рдЧрд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджреИ

рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рд░реНрдХрд┐рдЩ рдЧрд░реНрджрд╛ рд╡рд╛ рдкреНрд░рдгрд╛рд▓реА рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛рдорд╛ рдХреЗрд╣реА рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫред рддрдкрд╛рдИрдХреЛ SELinux рд▓реЗ рдареАрдХрд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рд╡рд╛ рдЫреИрди рднрдиреА рдЬрд╛рдБрдЪ рдЧрд░реНрди рд░ рдпрджрд┐ рдпрд╕рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдкреЛрд░реНрдЯ, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЖрджрд┐рдорд╛ рдкрд╣реБрдБрдЪ рд░реЛрдХрд┐рд░рд╣реЗрдХреЛ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдИрд▓реЗ рд▓рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреБ рдкрд░реНрдЫред SELinux рд▓рдЧ рдорд╛ рд╕реНрдерд┐рдд рдЫ /var/log/audit/audit.log, рддрд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдХреБрд░рд╛ рдкрдвреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рддрдкрд╛рдИрдВ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди adit2why рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

$ audit2why < /var/log/audit/audit.log

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред рдпрджрд┐ рд▓рдЧ рдорд╛ рдХреБрдиреИ рддреНрд░реБрдЯрд┐ рдЫреИрди рднрдиреЗ, рдХреБрдиреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдиреЗ рдЫреИрдиред

SELinux рдиреАрддрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ

SELinux рдиреАрддрд┐ SELinux рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдпрдиреНрддреНрд░рд▓рд╛рдИ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЧрд░реНрдиреЗ рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╣реЛред рдиреАрддрд┐рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рдЕрдм рд╣рд╛рдореА рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдЕрдиреБрдорддрд┐ рджрд┐рди рдиреАрддрд┐рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рд╕рд┐рдХреНрдиреЗ рдЫреМрдБред

1. рддрд╛рд░реНрдХрд┐рдХ рдорд╛рдирд╣рд░реВ (рд╕реНрд╡рд┐рдЪрд╣рд░реВ)

рд╕реНрд╡рд┐рдЪрд╣рд░реВ (рдмреВрд▓рд┐рдпрдирд╣рд░реВ) рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд░рдирдЯрд╛рдЗрдордорд╛ рдиреАрддрд┐рдХреЛ рднрд╛рдЧрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдирдпрд╛рдБ рдиреАрддрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдирдЧрд░реАрдХрдиред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ SELinux рдиреАрддрд┐рд╣рд░реВ рд░рд┐рдмреБрдЯ рд╡рд╛ рдкреБрди: рдХрдореНрдкрд╛рдЗрд▓ рдирдЧрд░реА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдЙрджрд╛рд╣рд░рдг:
рдорд╛рдиреМрдВ рдХрд┐ рд╣рд╛рдореА FTP рдкрдвреНрди/рд▓реЗрдЦрди рдорд╛рд░реНрдлрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЧреГрд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд╛рдЭрд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ, рддрд░ рдЬрдм рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣реА рджреЗрдЦреНрджреИрдиреМрдВред рдпреЛ рдХрд┐рдирднрдиреЗ SELinux рдиреАрддрд┐рд▓реЗ FTP рд╕рд░реНрднрд░рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЧреГрд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдкрдвреНрди рд░ рд▓реЗрдЦреНрдирдмрд╛рдЯ рд░реЛрдХреНрдЫред рд╣рд╛рдореАрд▓реЗ рдиреАрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ FTP рд╕рд░реНрднрд░рд▓реЗ рдЧреГрд╣ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рд╕реНрд╡рд┐рдЪрд╣рд░реВ рдЫрдиреН рднрдиреЗ рд╣реЗрд░реМрдВ

$ semanage boolean -l

рдпреЛ рдЖрджреЗрд╢рд▓реЗ рдЙрдкрд▓рдмреНрдз рд╕реНрд╡рд┐рдЪрд╣рд░реВрд▓рд╛рдИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ (рдЕрди рд╡рд╛ рдЕрдл) рд░ рд╡рд┐рд╡рд░рдгрд╕рдБрдЧ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрдиреЗрдЫред рддрдкрд╛рдИрдВ ftp-рдорд╛рддреНрд░ рдирддрд┐рдЬрд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди grep рдердкреЗрд░ рдЖрдлреНрдиреЛ рдЦреЛрдЬрд▓рд╛рдИ рдкрд░рд┐рд╖реНрдХреГрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

$ 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

рдЕрдм рд╣рд╛рдореНрд░реЛ рдПрдлрдЯреАрдкреА рдбреЗрдордирд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЧреГрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫред
рдиреЛрдЯ: рддрдкрд╛рдИрд▓реЗ рдмрд┐рдирд╛ рд╡рд░реНрдгрди рдЙрдкрд▓рдмреНрдз рд╕реНрд╡рд┐рдЪрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкрдирд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ 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

рд╕реЗрдореНрдпрд╛рдиреЗрдЬ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдиреНрджрд░реНрдн рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдкрдЫрд┐, рд░рд┐рд╕реНрдЯреЛрд░рдХрди рдЖрджреЗрд╢рд▓реЗ рдлрд╛рдЗрд▓рд╣рд░реВ рд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдиреНрджрд░реНрдн рд▓реЛрдб рдЧрд░реНрдиреЗрдЫред рд╣рд╛рдореНрд░реЛ рд╡реЗрдм рд╕рд░реНрднрд░рд▓реЗ рдЕрдм рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ рдлрд╛рдЗрд▓рд╣рд░реВ рдкрдвреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫ /home/dan/htmlрдХрд┐рдирднрдиреЗ рдпрд╕ рдлреЛрд▓реНрдбрд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдиреНрджрд░реНрднрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ httpd_sys_content_t.

3. рд╕реНрдерд╛рдиреАрдп рдиреАрддрд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдорд╛рдерд┐рдХрд╛ рд╡рд┐рдзрд┐рд╣рд░реВ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдирд╣реБрдиреЗ рд░ рддрдкрд╛рдИрдВрд▓реЗ audit.log рдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ (avc/denial) рдкрд╛рдЙрди рд╕рдХреНрдиреЗ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреНред рдЬрдм рдпреЛ рд╣реБрдиреНрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдиреАрдп рдиреАрддрд┐ рдмрдирд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, audit2why рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдмреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рддрдкрд╛рдИрдВ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕реНрдерд╛рдиреАрдп рдиреАрддрд┐ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ httpd (apache) рд╡рд╛ smbd (samba) рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рддреНрд░реБрдЯрд┐ рдкрд╛рдЙрдБрдЫреМрдВ, рд╣рд╛рдореА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЧреНрд░реЗрдк рдЧрд░реНрдЫреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐ рдмрдирд╛рдЙрдБрдЫреМрдВ:

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

рд╣рд╛рдореНрд░рд╛ рд╕реНрдерд╛рдиреАрдп рдиреАрддрд┐рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рд░ рд╣рд╛рдореАрд▓реЗ рдЕрдм audit.log рдорд╛ рдХреБрдиреИ рдкрдирд┐ avc рд╡рд╛ denail рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБ рд╣реБрдБрджреИрдиред

рдпреЛ SELinux рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкреНрд░рдпрд╛рд╕ рдерд┐рдпреЛред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рд▓реЗрдЦ рдкрдврд┐рд╕рдХреЗрдкрдЫрд┐ рддрдкрд╛рдИрд▓реЗ SELinux рд╕рдБрдЧ рдердк рд╕рд╣рдЬ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред

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

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