Scenariet er at vi har et hacket website, en stor kodebase i PHP uden versionscontrol er kompromitteret og kunden har ingen kendskab til kodebasen. Altså synes eneste mulighed at være en gennemgang af kildekoden for at afdække eventuelle bagdøre. Dette var kunden ikke interesseret i at udføre og/eller financiere, men alligevel blev siden konstant hacket og uanset hvor grundige vi syntes vi var blev de ved med at komme ind.
Derfor besluttede vi os for at ty til andre midler, og derfor installerede vi auditd på maskinen. Bemærk at hvis du kører OpenVZ, som vi gjorde, så skal auditd installeres på host-maskinen. Installer auditd:
root@server:~# apt-get install auditd
Dernæst skal jeg oprette en regel, det kunne f.eks. se sådan her ud:
root@server:~# auditctl -w /var/www -p wa -k hack-alert
Derudover er der nogle default-regler som jeg ikke lige har luret hvor de kommer fra, det giver ihvertfald en masse junk i logfilerne, og når jeg lister reglerne:
root@server:~# auditctl -l
Så viste den kun den ene regel jeg selv havde lavet, men heldigvis kan man også lave exclude-regler:
root@server:~# auditctl -A exclude,never -Fmsgtype=LOGIN
Auditd indeholder sit eget logsystem, men det har jeg ærlig talt ikke noget at bruge til … jeg vil bare gerne have data i sikkerhed overpå min logserver, så hvis du redigerer /etc/audisp/plugins.d/syslog.conf og retter “active = no” til “active = yes” og genstarter auditd:
root@server~# /etc/init.d/auditd restart
Så ender log-entries i sysloggen, og hvis du derfra gerne vil have den videre til din logserver kan du oprette /etc/rsyslog.d/audit.conf og skrive:
if $programname == 'audispd' then @@syslog.server.com & ~
Når det er sagt, så er det her kun en getting-quick-started-guide … hvis du vil bruge det her så læs manualen, og øv dig på en test-server inden du skal bruge det i produktionen 🙂
Dokumentationen: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/chap-system_auditing.html