Difference between revisions of "SELinux"

From HackerNet
Jump to: navigation, search
m
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Security-Enhanced Linux, SELinux är en säkerhetsmodul i linuxkärnan som gör det möjligt att säkra upp både hård- och mjukvara. Detta är en standardmodul sedan kernel 2.6.
+
Security-Enhanced Linux, SELinux är en säkerhetsmodul i linuxkärnan som gör det möjligt att säkra upp både hård- och mjukvara. Kärnan i SELinux är labels. Man sätter SELinux labels på allt ifrån filer till portar, sedan applyar man policy på labels. Detta är en standardmodul sedan kernel 2.6 och går t.ex. att konfigurera med [[Ansible]] eller [[Puppet]].
  
 
Det är rekommenderat att alltid ha SELinux påslaget för att sedan whitelista de avstängda funktioner du vill åt. För att modifiera SELinux kan man använda sig av det enkla verktyget: semanage.  
 
Det är rekommenderat att alltid ha SELinux påslaget för att sedan whitelista de avstängda funktioner du vill åt. För att modifiera SELinux kan man använda sig av det enkla verktyget: semanage.  
 
  # semanage (# yum install policycoreutils-python)
 
  # semanage (# yum install policycoreutils-python)
  
Slå av och på SELinux
+
Slå av och på SELinux manuellt
 
  setenforce 0/1
 
  setenforce 0/1
 
  getenforce
 
  getenforce
Line 10: Line 10:
 
Byt SELinux-läge till nästa reboot (persistent)
 
Byt SELinux-läge till nästa reboot (persistent)
 
  sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
 
  sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
 +
 +
Status
 +
sestatus -v
 +
 +
Show labels, exempelkommandon
 +
ls -lhZ
 +
ps -eZ
 +
ss -Z
 +
semanage fcontext --list
  
 
=== Exempel på funktioner som är satta och avstängda av SELinux ===
 
=== Exempel på funktioner som är satta och avstängda av SELinux ===
 
'''httpd_can_network_connect''' - Ser till så att din httpd-tjänst inte kan få tillgång till nät. Denna kan vara bra att ha igång om du tex har en webbtjänst som hämtar information via tex http externt.
 
'''httpd_can_network_connect''' - Ser till så att din httpd-tjänst inte kan få tillgång till nät. Denna kan vara bra att ha igång om du tex har en webbtjänst som hämtar information via tex http externt.
 
<br />'''ssh_port_t''' - Denna är satt till 22. Om du vill köra ssh på annan port måste du byta eller lägga till din nya port i SELinux.
 
<br />'''ssh_port_t''' - Denna är satt till 22. Om du vill köra ssh på annan port måste du byta eller lägga till din nya port i SELinux.
 +
 +
=Setroubleshoot=
 +
Det finns ett paket som heter '''setroubleshoot-server''' som är till stor hjälp om man valt att använda SElinux. Paketet gör att loggar från SELinux hamnar i '''/var/log/messages''' och att dom blir väldigt enkla att läsa. Paketet kan också hjälpa dig att lösa problemet med hjälp av kommandot '''sealert'''
 +
 +
För att installera:
 +
yum -y install setroubleshoot-server
 +
 +
Starta sedan om audit
 +
systemctl restart audit
 +
 +
Loggar från SELinux ska nu hamna i '''/var/log/messages'''.
 +
 +
Om du redan har en fil med loggar du vill analysera kan du använda dig av '''sealert'''.
 +
sealert -a /var/log/audit/audit.log > /var/log/audit/audit_human_readable.log
 +
====Skapa egna selinux med grep och audit2allow.====
 +
Kommando
 +
cat /var/log/audit/audit.log |grep postgres_expo |grep denied |audit2allow
 +
Resultat som visar vad det är du skapar en regel på
 +
#============= init_t ==============
 +
allow init_t postgresql_port_t:tcp_socket name_connect;
 +
 +
Kommando
 +
cat /var/log/audit/audit.log |grep postgres_expo |grep denied |audit2allow -M postgres
 +
Resultat som bara visar vad du skall köra för att implementera selinux regeln ovan
 +
******************** IMPORTANT ***********************
 +
To make this policy package active, execute:
 +
semodule -i postgres.pp
 +
 +
kommando
 +
semodule -i postgres.pp

Latest revision as of 14:37, 13 December 2023

Security-Enhanced Linux, SELinux är en säkerhetsmodul i linuxkärnan som gör det möjligt att säkra upp både hård- och mjukvara. Kärnan i SELinux är labels. Man sätter SELinux labels på allt ifrån filer till portar, sedan applyar man policy på labels. Detta är en standardmodul sedan kernel 2.6 och går t.ex. att konfigurera med Ansible eller Puppet.

Det är rekommenderat att alltid ha SELinux påslaget för att sedan whitelista de avstängda funktioner du vill åt. För att modifiera SELinux kan man använda sig av det enkla verktyget: semanage.

# semanage (# yum install policycoreutils-python)

Slå av och på SELinux manuellt

setenforce 0/1
getenforce

Byt SELinux-läge till nästa reboot (persistent)

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Status

sestatus -v

Show labels, exempelkommandon

ls -lhZ
ps -eZ
ss -Z
semanage fcontext --list

Exempel på funktioner som är satta och avstängda av SELinux

httpd_can_network_connect - Ser till så att din httpd-tjänst inte kan få tillgång till nät. Denna kan vara bra att ha igång om du tex har en webbtjänst som hämtar information via tex http externt.
ssh_port_t - Denna är satt till 22. Om du vill köra ssh på annan port måste du byta eller lägga till din nya port i SELinux.

Setroubleshoot

Det finns ett paket som heter setroubleshoot-server som är till stor hjälp om man valt att använda SElinux. Paketet gör att loggar från SELinux hamnar i /var/log/messages och att dom blir väldigt enkla att läsa. Paketet kan också hjälpa dig att lösa problemet med hjälp av kommandot sealert

För att installera:

yum -y install setroubleshoot-server

Starta sedan om audit

systemctl restart audit

Loggar från SELinux ska nu hamna i /var/log/messages.

Om du redan har en fil med loggar du vill analysera kan du använda dig av sealert.

sealert -a /var/log/audit/audit.log > /var/log/audit/audit_human_readable.log

Skapa egna selinux med grep och audit2allow.

Kommando

cat /var/log/audit/audit.log |grep postgres_expo |grep denied |audit2allow

Resultat som visar vad det är du skapar en regel på

#============= init_t ==============
allow init_t postgresql_port_t:tcp_socket name_connect;

Kommando

cat /var/log/audit/audit.log |grep postgres_expo |grep denied |audit2allow -M postgres

Resultat som bara visar vad du skall köra för att implementera selinux regeln ovan

******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i postgres.pp

kommando

semodule -i postgres.pp