Jedná se o pětiminutové cvičení pro zvýšení zabezpečení na počítači s adresou IPv4. Účelem nastavení popsaného v tomto návodu je na určitou dobu zablokovat skenery portů a škodlivé otvírače portů. Toto cvičení je pouze vyzkoušeno a aplikováno na Debian Jessie. Během cvičení je každý příkaz potvrzen jako root. Je na vás, jak získat root přístup.
Buď su -, sudo, přihlášení do konzole atd...
Pokyny pro líné začátečníky:Když zastupuji výzvu bash, stačí zkopírovat tučnou část textu do svého vlastního.
Složky
- Software fail2ban je schopen dynamicky zpracovávat vaše pravidla brány firewall a blokovat padouchy.
- Tinyhoneypot je schopen naslouchat na portu TCP/IP a zaznamenávat podrobnosti o otvírácích.
- Služba xinetd spustí tinyhoneypot a spravuje jeho naslouchací porty.
Instalujte přísady: (Stačí CopyPaste tučnou část textu )
[email protected]:~# apt-get install tinyhoneypot fail2ban xinetd
Nastavení
Chcete-li, aby SSH naslouchalo na jiném portu, nahraďte konfigurační soubor ssh alternativním portem ssh:
[email protected]:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config
Vaše původní konfigurace /etc/ssh/sshd_config je uložena jako /etc/ssh/sshd_config.orig
Když restartujete svou službu SSH, bude nyní naslouchat na portu 2201 (ne na 22).
[email protected]:~# service ssh restart
[email protected]:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd
Zatím dobrý..
Nakonfigurujte Xinetd tak, aby spustil tinyhoneypot a poslouchal na portu 22 TCP:
[email protected]:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/
Upravte svůj /etc/xinetd.d/thp-pasv takto:
[email protected]:~# cat /etc/xinetd.d/thp-pasv
# default: on # description: thp-ftpd calls the generic thpsvcs with param "ftp", # resulting in an ftpd emulation. service thp-pasv { type = UNLISTED socket_type = stream protocol = tcp port = 22 wait = no user = thpot server = /usr/sbin/thpot server_args = nullresp nice = 10 disable = no instances = 1 per_source = 1 }
(RE)Spusťte xinetd se svými novými nastaveními a ujistěte se, že naslouchá na portu 22.
[email protected]:~# service xinetd restart
[email protected]:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd
Ujistěte se, že to funguje
Otevřete ssh připojení z jiného počítače.
[email protected]:~$ ssh 192.168.88.212
Po chvíli by se nemělo nic stát, přerušte to pomocí [Ctrl + C]
A zkontrolujte položky protokolu na vašem testovacím počítači:
[email protected]:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39
V případě, že vše proběhlo v pořádku, měl by být záznam ve vašem záznamu zachycení.
Umožňuje vyladit váš Fail2Ban tak, aby spolupracoval s TinyHoneyPot
[email protected]:~# cd /etc/fail2ban/
[email protected]:/etc/fail2ban# cp -v jail.conf jail.local
Nikdy neupravujte svůj jail.conf!! Vytvořte jeho kopii jako jail.local a provádějte POUZE změny v souboru .local!
Najděte sekci [ssh] ve vašem jail.local a upravte ji v závislosti na [Port 2201] v /etc/ssh/sshd_config
[ssh] enabled = true port = 2201 filter = sshd logpath = /var/log/auth.log maxretry = 6
Značka a vstup do sekce JAIL na jail.local:
Díky tomu bude Fail2Ban číst soubor protokolu tinyhoneypot a získat z něj adresu IPv4, která bude zamítnuta. Doporučuji jej umístit za sekci [ssh]. Je to asi 137. řádek.
[thp-ssh] enabled = true port = all filter = thpot logpath = /var/log/thpot/captures banaction = iptables-allports maxretry = 1 findtime = 1800 bantime = 99999
Fail2ban by měl mít filtr, aby věděl, co odmítnout. Tam
[email protected]:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]
failregex = SRC=<HOST>
ignoreregex =
Bylo hotovo!
Jen krátké testování....
[email protected]:~# service fail2ban restart
Něco podobného byste měli vidět na konci /var/log/fail2ban.log
2016-02-29 13:54:06,915 fail2ban.jail [6102]: INFO Creating new jail 'thp-ssh' 2016-02-29 13:54:06,915 fail2ban.jail [6102]: INFO Jail 'thp-ssh' uses pyinotify 2016-02-29 13:54:06,920 fail2ban.jail [6102]: INFO Initiated 'pyinotify' backend 2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO Added logfile = /var/log/thpot/captures 2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO Set maxRetry = 1 2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO Set findtime = 1800 2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO Set banTime = 99999 2016-02-29 13:54:06,934 fail2ban.jail [6102]: INFO Jail 'ssh' started 2016-02-29 13:54:06,940 fail2ban.jail [6102]: INFO Jail 'thp-ssh' started
Své vlastní hodnoty můžete vidět na jail.local a v případě potřeby je doladit.
findtime = 1800 bantime = 99999
Podívejte se na svá aktuální pravidla iptables:
[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016 *filter :INPUT ACCEPT [2:64] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :fail2ban-ssh - [0:0] :fail2ban-thp-ssh - [0:0] -A INPUT -p tcp -j fail2ban-thp-ssh -A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh -A fail2ban-ssh -j RETURN -A fail2ban-thp-ssh -j RETURN COMMIT # Completed on Mon Feb 29 14:05:17 2016
Pojďme zkontrolovat pravidlo odmítnutí z jiného počítače:
[email protected]:~# ssh 192.168.88.212
^C
[email protected]:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused
První akce nic neudělá. Útočník to pravděpodobně po chvíli přeruší. Druhá akce bude odmítnuta.
Vaše pravidla iptables by nyní měla vypadat takto:
[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016 *filter :INPUT ACCEPT [4:542] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1:88] :fail2ban-ssh - [0:0] :fail2ban-thp-ssh - [0:0] -A INPUT -p tcp -j fail2ban-thp-ssh -A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh -A fail2ban-ssh -j RETURN -A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable -A fail2ban-thp-ssh -j RETURN COMMIT # Completed on Mon Feb 29 14:10:53 2016
Výsledek je:PC útočníka je ODMÍTNUTO na každém portu.
Postscript
V době psaní tohoto návodu nebyl ani Fail2Ban, ani tinyhoneypot schopen zvládnout IPv6. Pokud si myslíte, že je tento návod užitečný, sdílejte ho! Dejte o tom vědět svým přátelům.