Stránka 1 z 2

zabezpeceni ssh

Napsal: 11 Nov 2018 10:58
od imhotepcz
zdravim

potrebuji zabezpecit ssh proti utokum.
pokud udelam toto

;;; drop ssh brute forcers
chain=input action=drop protocol=tcp src-address-list=ssh_blacklist dst-port=22 log=no log-prefix=""
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage3 address-list=ssh_blacklist address-list-timeout=1w3d dst-port=22 log=no log-prefix=""
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage2 address-list=ssh_stage3 address-list-timeout=1m dst-port=22 log=no log-prefix=""
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage1 address-list=ssh_stage2 address-list-timeout=1m dst-port=22 log=no log-prefix=""
chain=input action=add-src-to-address-list connection-state=new protocol=tcp address-list=ssh_stage1 address-list-timeout=1m dst-port=22 log=no log-prefix=""

tak ochranim samotny mikrotik, to mi funguje ale pokud chci ochranit jeste ssh na serveru co je za nim tak to uz nic nedela

tam mam nat s presmerovanim na port 2222
;;; ssh

chain=dstnat action=dst-nat to-addresses=192.168.0.3 to-ports=22 protocol=tcp in-interface=O2_VDSL dst-port=2222 log=no log-prefix=""


;;; drop ssh_anubis brute forcers
chain=input action=drop protocol=tcp src-address-list=ssh_anubis_blacklist dst-port=2222
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_anubis_stage3 address-list=ssh_anubis_blacklist address-list-timeout=1w3d dst-port=2222
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_anubis_stage2 address-list=ssh_anubis_stage3 address-list-timeout=1m dst-port=2222
chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_anubis_stage1 address-list=ssh_anubis_stage2 address-list-timeout=1m dst-port=2222
chain=input action=add-src-to-address-list connection-state=new protocol=tcp address-list=ssh_anubis_stage1 address-list-timeout=1m dst-port=2222 log=no log-prefix=""

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 11:32
od okoun
co třeba chain=forward ?

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 11:54
od ludvik
Prosím všechny (a leckdy i nezačátečníky), nastudujte si linuxový netfilter. Není to zase až tak složité a moc to pomůže. Stejně tak doporučuji Linux documentation project, především část o síťování. Dostane to do hlavy principy.

K věci:

Co přijde do chainu INPUT v tabulce filter nikdy neopustí tento stroj. Je to jen VSTUP.
Co jde zkrz, je vždy FORWARD.

Tuto ochranu je lepší vyčlenit do extra chainu (a nespecifikovat to na úroveň portů) a provádět tam jen odskok pro connection-state new z INPUTU a klidně i forwardu. Pak je to univerzální (odskočím si tam s libovolným portem) a lze tím ochránit cokoliv (dělám to i pro winbox, chain se pak nemění). Příklad jsem tu už dával, nejspíš ne jednou.

Také doporučuji používat whitelist. Aby pak člověk nebyl deset dnů na nervy ...

Ale jinak je to ochrana jen částečná. Počítá to připojení. Jenže v jedné konexi lze většinou zkusit těch přihlášení víc (a v MK tohle nejde změnit).

Kód: Vybrat vše

add action=drop chain=sshchain comment="SSH prevent brute force" src-address-list=sys_ssh_blacklist
add action=accept chain=sshchain comment="whitelist" src-address-list=sysSshWhitelist
add action=add-src-to-address-list address-list=sys_ssh_blacklist address-list-timeout=3d chain=sshchain connection-state=new src-address-list=sys_ssh_stage3
add action=add-src-to-address-list address-list=sys_ssh_stage3 address-list-timeout=1m chain=sshchain connection-state=new src-address-list=sys_ssh_stage2
add action=add-src-to-address-list address-list=sys_ssh_stage2 address-list-timeout=1m chain=sshchain connection-state=new src-address-list=sys_ssh_stage1
add action=add-src-to-address-list address-list=sys_ssh_stage1 address-list-timeout=1m chain=sshchain connection-state=new
add action=accept chain=sshchain


Kód: Vybrat vše

/ip firewall filter
add chain=input comment=navazane connection-state=established,related,untracked

#nejenom ochrana tim pocitanim konexi, ale zaroven globalnejsi povoleni addresslistem
add action=jump chain=input connection-state=new dst-port=22,8291 jump-target=sshchain protocol=tcp src-address-list=sysInputNets

#sem samozrejme prijdou ostatni povoleni INPUTu

#a konci se dropem vseho ostatniho
add action=drop chain=input

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 12:15
od the.max
A není lepší použít na Linuxu fail2ban? Funguje to na kde co, ne jen na SSHčko. To co tu je pro Mikrotik, z toho fal2ban v podstatě vychází, akorát že mikrotik hází odchycený IPčka dynamicky do address listu a po restartu se smažou.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 12:45
od imhotepcz
okoun píše:co třeba chain=forward ?


vyzkouseno a nic to nedela.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 12:48
od imhotepcz
ludvik píše:Prosím všechny (a leckdy i nezačátečníky), nastudujte si linuxový netfilter. Není to zase až tak složité a moc to pomůže. Stejně tak doporučuji Linux documentation project, především část o síťování. Dostane to do hlavy principy.

K věci:

Co přijde do chainu INPUT v tabulce filter nikdy neopustí tento stroj. Je to jen VSTUP.
Co jde zkrz, je vždy FORWARD.

Tuto ochranu je lepší vyčlenit do extra chainu (a nespecifikovat to na úroveň portů) a provádět tam jen odskok pro connection-state new z INPUTU a klidně i forwardu. Pak je to univerzální (odskočím si tam s libovolným portem) a lze tím ochránit cokoliv (dělám to i pro winbox, chain se pak nemění). Příklad jsem tu už dával, nejspíš ne jednou.

Také doporučuji používat whitelist. Aby pak člověk nebyl deset dnů na nervy ...

Ale jinak je to ochrana jen částečná. Počítá to připojení. Jenže v jedné konexi lze většinou zkusit těch přihlášení víc (a v MK tohle nejde změnit).

Kód: Vybrat vše

add action=drop chain=sshchain comment="SSH prevent brute force" src-address-list=sys_ssh_blacklist
add action=accept chain=sshchain comment="whitelist" src-address-list=sysSshWhitelist
add action=add-src-to-address-list address-list=sys_ssh_blacklist address-list-timeout=3d chain=sshchain connection-state=new src-address-list=sys_ssh_stage3
add action=add-src-to-address-list address-list=sys_ssh_stage3 address-list-timeout=1m chain=sshchain connection-state=new src-address-list=sys_ssh_stage2
add action=add-src-to-address-list address-list=sys_ssh_stage2 address-list-timeout=1m chain=sshchain connection-state=new src-address-list=sys_ssh_stage1
add action=add-src-to-address-list address-list=sys_ssh_stage1 address-list-timeout=1m chain=sshchain connection-state=new
add action=accept chain=sshchain


Kód: Vybrat vše

/ip firewall filter
add chain=input comment=navazane connection-state=established,related,untracked

#nejenom ochrana tim pocitanim konexi, ale zaroven globalnejsi povoleni addresslistem
add action=jump chain=input connection-state=new dst-port=22,8291 jump-target=sshchain protocol=tcp src-address-list=sysInputNets

#sem samozrejme prijdou ostatni povoleni INPUTu

#a konci se dropem vseho ostatniho
add action=drop chain=input


i toto jsem vyzkousel a kdyz se prihlasim na ssh tak se nestane nikde nic, navic tu druhou cast prilis nechapu. pridal sem tam jeste port 2222 tak ze ted tam je dst-port=22,8291,2222 a nic se nedeje, a nebo deje a nevim kam se kouknout.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 13:57
od rsaf
Je vůbec potřeba SSH takto chránit? Podle mě je nestandardní port (ale 222 či 2222 to není) + použití klíčů naprosto dostatečná ochrana.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:03
od imhotepcz
rsaf píše:Je vůbec potřeba SSH takto chránit? Podle mě je nestandardní port (ale 222 či 2222 to není) + použití klíčů naprosto dostatečná ochrana.


ne vzdy je pouziti klicu zadouci, navic pokud mekdo se chce nekam dostat tak si to oskenuje. Vzhledem k tomu ze me mikrotik uz hackli tak to hold resim, a pristup z venci proste potrebuji.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:18
od Myghael
Doporučil bych všechno zvenku znepřístupnit a vzdálený přístup řešit pomocí VPN.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:41
od ludvik
a) mluví se o mikrotiku
b) fail2ban je z principu relativně pomalý. Byť univerzální.
the.max píše:A není lepší použít na Linuxu fail2ban? Funguje to na kde co, ne jen na SSHčko. To co tu je pro Mikrotik, z toho fal2ban v podstatě vychází, akorát že mikrotik hází odchycený IPčka dynamicky do address listu a po restartu se smažou.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:45
od ludvik
Ideální řešení. V ideálním světě.
Při dohledu stovek zařízení, kde nestačí SNMP je VPNka dost overkill. Dohled VLAN přes celou síť může být nemožné využít. A pak je člověk rád za univerzální firewall přímo na zařízení. A i na tu VPN mohou být útoky. Kromě toho dost často potřebuje člověk přístup i v momentě, kdy ta VPN nejede.
Myghael píše:Doporučil bych všechno zvenku znepřístupnit a vzdálený přístup řešit pomocí VPN.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:48
od imhotepcz
Myghael píše:Doporučil bych všechno zvenku znepřístupnit a vzdálený přístup řešit pomocí VPN.


ale i to se hacknout, a resit to tim ze vsude budu tahat sebou certifikaty a resit to pomoci nich jeni uplne to prave, i kdyz bezpecne.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:50
od rsaf
Myghael píše:Doporučil bych všechno zvenku znepřístupnit a vzdálený přístup řešit pomocí VPN.

To je sice fajn ale ne vždy ideální, zvláště když se tam potřebuješ připojit narychlo někde z cest z cizího PC.

Jinak mě to prostě připadá zbytečná paranoia. Mám několik zařízení (mikrotik to ale asi není), která jsou již mnoho let vystrčená do internetu s SSHčkem na portu 22, používají se tam hesla (bezpečná) a kromě plnících se logů se nic neděje. Myslím si, že v OpenSSH nebyla nějaká použitelná remote zranitelnost už hooodně let.

Jinak málokdy povoluji SSH zvenčí přímo na zařízení - většinou se SSHčkuju na nějaký server a do zařízení až z něj. Pro stejný účel mám windowsovou virtuálku, kam chodím vzdálenou plochou.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:51
od ludvik
imhotepcz píše:i toto jsem vyzkousel a kdyz se prihlasim na ssh tak se nestane nikde nic, navic tu druhou cast prilis nechapu. pridal sem tam jeste port 2222 tak ze ted tam je dst-port=22,8291,2222 a nic se nedeje, a nebo deje a nevim kam se kouknout.

Tohle funguje. Pravidlo způsobí to, že při první paketu na port 22 skočí do chainu sshchain. Pokud je to první paket (za nějakou dobu) dojde až na předposlední pravidlo a uloží IP do toho addresslistu. A následující pravidlo tu konexi akceptuje.
Pokud během minuty přijde další nová konexe, už nezabere předposlední pravidlo, ale předpředposlední ... a pak poslední opět akceptuje.
Čtvrté připojení už to uloží do addresslistu blacklistu.
Páté skončí hned na prvním pravidle ... a nedovolí připojení, protože tam už je DROP.

Každý řádek firewallu má počítadlo.

Re: zabezpeceni ssh

Napsal: 11 Nov 2018 14:58
od iTomB
ludvik píše:
imhotepcz píše:i toto jsem vyzkousel a kdyz se prihlasim na ssh tak se nestane nikde nic, navic tu druhou cast prilis nechapu. pridal sem tam jeste port 2222 tak ze ted tam je dst-port=22,8291,2222 a nic se nedeje, a nebo deje a nevim kam se kouknout.

Tohle funguje. Pravidlo způsobí to, že při první paketu na port 22 skočí do chainu sshchain. Pokud je to první paket (za nějakou dobu) dojde až na předposlední pravidlo a uloží IP do toho addresslistu. A následující pravidlo tu konexi akceptuje.
Pokud během minuty přijde další nová konexe, už nezabere předposlední pravidlo, ale předpředposlední ... a pak poslední opět akceptuje.
Čtvrté připojení už to uloží do addresslistu blacklistu.
Páté skončí hned na prvním pravidle ... a nedovolí připojení, protože tam už je DROP.

Každý řádek firewallu má počítadlo.

Mas to taky trosku zbytecne.
Cele tohle vychazi z meho scriptu, co tu je uz hodne let. V sshchain nemusis uz testovat zda je to nova konexe, porty atd. Muzes tam skocit jak z INPUTu, tak z FORWARDu. Takze pak uz jen testujes zda je to utok ci nikoliv.

Dalsi zabezpeceni je portnocking. Pouzivam a celkem spokojene. Spojeni tehle dvou casti je zatim pro me 100% dostacujici.