SELinux рд╕рд╛рдареА рдирд╡рд╢рд┐рдХреНрдпрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

SELinux рд╕рд╛рдареА рдирд╡рд╢рд┐рдХреНрдпрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

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

SELinux рдХрд┐рдВрд╡рд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдзрд┐рдд 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

рд╣рд╛ рдЖрджреЗрд╢ рдЙрдкрд▓рдмреНрдз рд╕реНрд╡рд┐рдЪреЗрд╕рдЪреА рддреНрдпрд╛рдВрдЪреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА (рдЪрд╛рд▓реВ рдХрд┐рдВрд╡рд╛ рдмрдВрдж) рдЖрдгрд┐ рд╡рд░реНрдгрдирд╛рд╕рд╣ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрд▓. рддреБрдореНрд╣реА рдлрдХреНрдд 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

semanage рд╡рд╛рдкрд░реВрди рд╕рдВрджрд░реНрдн рдмрджрд▓рд▓реНрдпрд╛рдирдВрддрд░, restorecon рдХрдорд╛рдВрдб рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдВрд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн рд▓реЛрдб рдХрд░реЗрд▓. рдЖрдордЪрд╛ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рдЖрддрд╛ рдлреЛрд▓реНрдбрд░рдордзреАрд▓ рдлрд╛рдЗрд▓реНрд╕ рд╡рд╛рдЪрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓ /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

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