Prispevky v kategorii: ‘Bezpečnost’

Hacklý server – řešení problému I.

Jednou z rychlých kontrol zda není systém napaden používám příkaz:

lsattr /sbin/* /bin/* /lib/* /usr/sbin/* /usr/bin/* | \
grep  -v "\-\-\-\-\-\-\-\-\-\-\-\-\-" | grep -v "consolefonts"

Pokud vám to vrátí nějaký výsledek, např.: –s-i–a—— /usr/bin/top s vysokou pravděpodobností máte hacklý server.
Pokud se zrovna nechcete pustit do přeinstalování celého serveru, můžete postupovat podle následujících kroků, jako příklad uvádím hacklý soubor /usr/bin/top:

První věcí kterou si musíte uvědomit je, že hacker změnil atributy souboru (–s-i–a——) aby jej nebylo možné smazat, nebo přeinstalovat, nebo editovat ani když jste nalogován jako root. Takovýto soubor byl určitě změněn/hacknut. Abyste se o tom přesvědčili použijete příkaz:

rpm -qf /usr/bin/top

To vám ukáže kterého balíčku je soubor součástí, v tomto případě balíček procps.

rpm --verify procps

Pokud vám tento příkaz vrátí nějaký výsledek, soubor byl hacknut.
S největší pravděpodobností vám to ukáže více hacklých souborů.
Bohužel reinstalace balíčku vám nepomůže protože vám systém nedovolí soubor /usr/bin/top přepsat. Odblokujete soubor příkazem:

chattr -sia /usr/bin/top

Jako atribut použijete právě písmenka z výsledku lsattr (–s-i–a—— /usr/bin/top). Tímto způsobem odblokujete všechny hacklé soubory v balíčku procps.

Nyní máte dvě možnosti. Pokud existuje novější balíček než ten který máte nainstalován, jednoduše zadáte:

yum update procps

Update balíčku přepíše všechny hacklé soubory v tomto balíčku novými.
Pokud už máte aktuální verzi balíčku nainstalovanou, stáhnete si stejný balíček např z: rpm.pbone.net a upgradujete příkazem:

rpm -Uhv procps-* --force

Zkontrolujete znovu či je vše ok příkazem:

rpm --verify procps

Nemělo by to vrátit žádný výsledek. Takto postupujete u všech hacklých souborů a všech balíčků.
Toto je ovšem pouze řešení, kdy napravíte hacklé soubory. Nezacelíte však díru v systému, kudy se hacker dostal na váš server. Doporučuji projet systém programem rkhunter, nebo jinými programy. Zkontrolujte zda máte zakázáno spouštění programů v adresáři /tmp, /var/tmp, a zkontrolujte adresář /dev/shm, měl by být prázdný.

admin Bezpečnost

Užitečné programy – fail2ban

Dalším dobrým pomocníkem je balíček fail2ban. Nainstalujete jej pomocí:

yum -y install fail2ban
chkconfig fail2ban on

Tento balíček běží na pozadí jako daemon kdy kontroluje systémové logy a vyhodnocuje podle zadaných pravidel zda se jedná o útok na server atd.
fail2ban používám pro služby ssh, ftp a postfix. Konfigurační soubor naleznete v /etc/fail2ban/fail2ban.conf a dalších souborech v /etc/fail2ban/ adresáři.

Můj jail.conf soubor obsahuje mimo jiné:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=2212, protocol=tcp]
           sendmail-whois[name=SSH, dest=kontakt@server.com, sender=fail2ban@server.com]
logpath  = /var/log/secure
maxretry = 3

[proftpd-iptables]

enabled  = true
filter   = pure-ftpd
action   = iptables[name=pure-ftpd, port=ftp, protocol=tcp]
           sendmail-whois[name=pure-ftpd, dest=kontakt@server.com]
logpath  = /var/log/messages
maxretry = 5

[postfix-tcpwrapper]

enabled  = true
filter   = postfix
action   = iptables[name=postfix, port=25, protocol=tcp]
logpath  = /var/log/maillog
maxretry = 1
bantime  = 600

Soubory v adresáři /etc/fail2ban/filter.d (..popisuji pouze mnou změněné soubory).
Soubor pure-ftpd.conf:

[Definition]

__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
failregex = pure-ftpd(?:\[\d+\])?: (.+?@) \[WARNING\] %(__errmsg)s \[.+\]$
ignoreregex =

Soubor sshd.conf:

failregex = (?:error: PAM: )?Authentication failure for .* from \s*$
   Failed [-/\w]+ for .* from (?: port \d*)?(?: ssh\d*)?\s*$
   ROOT LOGIN REFUSED.* FROM \s*$
   [iI](?:llegal|nvalid) user .* from \s*$
   User .+ from  not allowed because not listed in AllowUsers\s*$
   User .+ from  not allowed because none of user's groups are listed in AllowGroups\s*$
ignoreregex =

Soubor postfix.conf:

[Definition]

failregex = reject: RCPT from (.*)\[\]: 554
            reject: RCPT from (.*)\[\]: 550
            Blocked SPAM, \[\] \[
ignoreregex =

fail2ban spouštíte příkazem:

service fail2ban start

admin Bezpečnost

Užitečné programy – rkhunter

Dobrým pomocníkem při kontrole systému je balíček rkhunter.
rkhunter nainstalujete a zprovozníte pomocí příkazů:

yum -y install rkhunter
rkhunter --update --propupd

Pozor při použití –propupd. Tento příkaz použijte pouze pokud jste si jistí že máte systémové soubory vpořádku. Např. po čerstvé instalaci serveru. Protože –propupd učiní jakoby otisk všech kontrolovaných programů a při příštím spuštění rkhunteru porovná tento otisk s aktuálními soubory. Pokud se obsah souborů změnil, označí soubory jako podezřelé. To znamená pokud použijete příkaz –propupd a nějaké soubory už máte hacklé, rkhunter při dalším spuštění bude podle nich porovnávat aktuální verzi souborů. To znamená že chybně vyhodnotí že soubory jsou vpořádku i když ve skutečnosti nejsou.
rkhunter spustíte příkazem:

rkhunter --check

Konfigurační soubor naleznete v /etc/rkhunter.conf a cron v /etc/cron.daily-rkhunter.

admin Bezpečnost

Rychlá kontrola systémových souborů

Jednou z rychlých kontrol zda není systém napaden používám příkaz:

lsattr /sbin/* /bin/* /lib/* /usr/sbin/* /usr/bin/* | \
grep  -v "\-\-\-\-\-\-\-\-\-\-\-\-\-" | grep -v "consolefonts"

Pokud vám to vrátí nějaký výsledek, např.: –s-i–a—— /usr/bin/top s vysokou pravděpodobností máte hacklý server.
Pokud se zrovna nechcete pustit do přeinstalování celého serveru, můžete postupovat podle následujících kroků.

admin Bezpečnost