Archiv pro štítek: fail2ban

Linux mini-howto: Základní pravidla bezpečnosti serverů

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Základní pravidla bezpečnosti serverů

Proč? Základní představa o bezpečnosti serverů je často mylná nebo žádná, tímto soupisem praxí ověřených pravidel se jí pokusme nastínit, v některých případech jde obecná pravidla platná napříč světem IT v jinde cílíme přímo na UNIX systémy, znovu připomínáme jde o takový dobrý základ od čeho se odrazit a v případě zájmu můžeme pokračovat dalším dílem.

Bezpečnost IT systémů není stav, je to neustálý proces a i z toho důvodu je 100% zabezpečení přelud, kterého nelze dosáhnout, ale můžeme se k němu zkusit přiblížit, jediný bezpečný systém je ten který nemáte ala jediné auto které Vám nezestárne je to které jste si nekoupili.

Pokračování textu Linux mini-howto: Základní pravidla bezpečnosti serverů

WordPress fail2ban

WordPress fail2ban

Máte WordPress na vlastním serveru? Štvou Vás neustálé pokusy o uhádnutí hesla, máte plný access.log web serveru hlášek  “POST http://domain/wp-login.php HTTP/1.1″ ?

Pokud používáte na server-u nástroj fail2ban můžete zkoncovat s hádáním hesel WordPressu jednou pro vždy, velmi jednoduše, pojďme na to.

Plugin wp-fail2ban

Nainstalujte plugin wp-fail2ban (https://wordpress.org/plugins/wp-fail2ban/), tento plugin zajistí logování neplatných pokusů o přihlašení do Vašeho WordPress.

V logu /var/log/auth.log najdete podobné informace o pokusech o přihlášení.

Authentication failure for havel.mojeservery.cz from 46.119.117.47
Authentication failure for admin from 109.98.228.188
Authentication failure for havel.mojeservery.cz from 46.119.117.47

Nastavení filtru fail2ban pro WordPress

Přidáme filter (pravidlo) do fail2ban pro Wodpress (auth.log)(Debian a deriváty std v adresáři /etc/fail2ban/filter.d).

Ukázkový příklad filtru je přímo součástí wp-fail2ban pluginu, stáhněte si zip , rozbalte a použijte wodpress.conf.

root@www:/etc/fail2ban/filter.d# cat wordpress.conf 
# Fail2Ban configuration file
#
# Author: Charles Lecklider
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf


[Definition]

_daemon = wordpress

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values:  TEXT
#
failregex = ^%(__prefix_line)sAuthentication failure for .* from $
            ^%(__prefix_line)sBlocked authentication attempt for .* from $
            ^%(__prefix_line)sBlocked user enumeration attempt from $
            ^%(__prefix_line)sPingback requested from $

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Zavedení filter pravidla do fail2ban. (debian /etc/fail2ban/jail.conf přidejte)

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
port = http,https
maxretry = 3

Reload fail2ban a hotovo!

root@www:~# /etc/init.d/fail2ban restart
root@www:~# iptables -L -n
Chain fail2ban-wordpress (1 references)
target prot opt source destination
DROP all -- 46.119.117.47 0.0.0.0/0 
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Hotovo, ani to nebolelo. Zmíněný postup vyžaduje přístup jako root na server, tedy na sdíleném hostingu není aplikovatelný, zde se poohlédněte po jiným bezpečnostních nástrojích (např. oblíbený Wordfence).

Užívejte moudře, díky za pozornost.
František Havel, MOJEservery.cz

Linux: Fail2ban a Mikrotik firewall

Bezpečnost a ochrana skupiny serverů jako celku je velmi efektivní, pojďme si ukázat jak elegantně spojit firewall Mikrotik s řešením Fail2ban a chránit tak skupinu serverů jako jeden celek.

Fail2ban, nástroj dobře znám z unix světa, co dělá, jak funguje, v jednoduchosti scanuje log soubory, hledá chybné pokusy o přihlášení na jejich základě blokuje (ban) IP adresu utočníka po určitou dobu v lokálním firewallu serveru, jednoduché.

Složitěji?

Mějme následující situaci, Mikrotik jako hraniční firewall a router, za routerem skupina fyzických či virtuálních serverů, cílem je propojit fail2ban na serverech, tak aby upravovaly firewall na hraničním routeru, tedy ban bude probíhat na firewallu.

Proč?

Je pravděpodobně, že skupina serverů sdílý společný rozsah veřejných IP adres v případě pokusu o napadení jednoho serveru se automaticky začné chránit celý rozsah a to chceme, chránit celek je většinout(nikoliv vždy) efektivnější.

Obrázek pro dokreslení situace.

linux-fail2ban-mikrotik

Mikrotik firewall router

Základem je mít možnost přístupu na router Mikrotik via ssh, nejlépe pomocí klíčů, vygeneruje si tedy pár veřejný-soukromý klíč, přenést a importovat veřejný klíč na firewall router, nezadávejte při generování passphrase!

root@raspberrypi:~# ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/root/.ssh/id_dsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /root/.ssh/id_dsa.
 Your public key has been saved in /root/.ssh/id_dsa.pub.
 The key fingerprint is:
 ac:6c:02:92:bb:b0:b8:e4:4d:bc:ac:c6:eb:1b:cd:

Vzniklý soubor id_dsa.pub přeneste na Mikrotik router (winbox, ftp, scp …), založte samostatného uživatele a importujte mu klíč, za address dosaďte IP adresu linux serveru s instalovaným fail2ban. (uživatel je omezen na přístup z této IP, nebo nechte volné pokud chcete či chráníte ssh jinak), na Mikrotiku máme vše hotovo.

[admin@ro1.faha.neutron.mojeservery.cz] > user add name=fail2ban address=xx.xx.xx.xx group=full
[admin@ro1.faha.neutron.mojeservery.cz] > /user ssh-keys import public-key-file=id_dsa.pub user=fail2ban

Linux server

Instalace fail2ban démona (Debian součásti reposítářů, pro CentOS použíjte např. tento návod).

root@raspberrypi:~# apt-get install fail2ban

Nyní ta “magie”, vytvořet soubor /usr/local/bin/mikrotik-fail2ban s tímto obsahem, za xx.xx.xx.xx dosaďte IP adresu (nebo dns, v této ukázce) firewall Mikrotik (většinou brána)

#!/bin/bash
ssh -l failban -p22 -i /root/.ssh/id_dsa ro1.faha.neutron.mojeservery.cz "$1"

Naučíme fail2ban používat Mikrotik, vytvořte soubor /etc/fail2ban/action.d/mikrotik.conf s tímto obsahem.

# Mikrotik fail2ban
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = mikrotik-fail2ban ":ip firewall filter add action=drop chain=forward dst-address=<ip> comment=AutoFail2ban-<ip>"
actionunban = mikrotik-fail2ban ":ip firewall filter remove [:ip firewall filter find comment=AutoFail2ban-<ip>]"

Jsme téměr u konce, zapneme služby které mají být kontrolovány službou fail2ban a nastavíme action na mikrotik, v našem případě si ukážeme službu FTP, editujte soubor /etc/fail2ban/jail.conf.

[vsftpd]
enabled  = false
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
action = mikrotik
sendmail-whois[name=FTP, dest=havel@mojeservery.cz, sender=fail2ban-neutron@mojeservery.cz]
maxretry = 5
bantime = 300

Hotovo!

To bylo snadné, že?! Nyní postup můžete rozšířit na libovolný počet serverů v DMZ, dostanete automaticky ochranu celku při pokusu o napadnutí jednoho stroje.

Tento základní mustr lze zdokonalit, vylepšit, meze fantazii se nekladou, dejte pozor na přílišnou kreativitu.

Děkuji za Váš čas. František Havel