it-swarm-eu.dev

Port Knocking je to dobrý nápad?

Normálně pro server chci zamknout SSH a další neveřejné služby, aby byly přístupné pouze určitým IP adresám. To však není vždy praktické, pokud firma nemá statické adresy IP nebo pokud externí vývojáři potřebují přístup.

Slyšel jsem o Port Knocking před chvílí a konečně jsem měl šanci podívat se na to jako řešení výše uvedeného problému. V důsledku toho mám spoustu otázek, doufám, že mi lidé mohou pomoci.

  • Nasadil ji někdo v rámci své firmy/organizace a může vám nabídnout radu?
  • Jaký je nejlepší démon, který běží pod Linuxem?
  • Jaké jsou nejlepší klienty pro Linux, Windows a OSX?
  • Jaká je doporučená délka pro knock sekvence a je nejlepší použít TCP, UDP nebo Both?
  • Jaké jsou související nevýhody a problémy s jeho používáním?
  • Je to jen bezpečnost díky obscurity?
  • Existují nějaké alternativy přístupu k klepání portů?
41
Mark Davidson

I když jsem to ještě nezasadil, znám mnoho lidí, kteří jej nasadili. Každá z nich zaznamenala výrazné snížení množství šířky pásma spotřebované věcmi, jako jsou útoky SSH na hrubou sílu.

To však neznamená, že neexistují nevýhody. AFAIK, nejsou k dispozici žádné implementace klepání portů založené na jádře, což by pro mě bylo skutečným klíčem k přijetí. Démoni s klepáním na port se spoléhají na neúspěšné čtení (a filtrované/zakázané) položky souboru protokolu ze systému brány firewall. To je v pořádku a dandy, ale co se stane, když se souborový systém zaplní? Co se stane, když démona zabije kvůli tomu, že nějaký utečený proces pohlcuje systém RAM a swap? Co se stane, když něco jiného, ​​na čem záleží jen jedna z těchto dvou věcí, přestane fungovat? pravděpodobně skončí se serverem, ke kterému budete muset fyzicky přistupovat. To by mohlo být nákladnější, než je rozumné, zejména pokud jste od serveru vzdáleni více než několik desítek kilometrů a nemáte nikoho, na kterého byste mohli volat. spěchejte.

Jednu věc, kterou mohu říci, je, že nejde o „bezpečnost skrze nejasnost“. Srážení portů je forma autentizace a jako každý autentizační systém může být proveden tak jednoduchý nebo složitý, jak je požadováno. Může být provedeno něco tak jednoduchého jako „klepat na port 10 000 + realPortNumber“, což by znamenalo triviální zlom, nebo by klepání portu mohlo být samo o sobě použito k přenosu nějaké formy skutečné autentizace (řekněme, 1 blok dat kódovaných AES při klíč odvozený jinou metodou). Nebylo by však možné použít klepání portů k přenosu velkého množství dat, protože by to trvalo podstatně déle, než jen odeslání jednoho paketu, a pokud by paket překročil TCP než alespoň může být známo, zda byl úspěšně přijat nebo došlo k nějaké formě chyby.

Jednou zajímavou otázkou, která to vyvolává, je však to, jak spravovat protokolové soubory --- implementace userland většinou vyžadují protokolové soubory, aby bylo možné určit, zda bylo nebo nebylo úspěšně zasláno klepání, a co se stane, pokud tyto protokoly uniknou? Ověřovací údaje jsou známy a to zjevně není velmi dobrá věc.

Nemohu vám říct, zda v nastavení použít klepání portů. Ještě nejsem a nejsem si stoprocentně jistý, že někdy budu. Dává mi větší smysl používat silné autentizační systémy, které jsou založeny na silné kryptografii (jako je infrastruktura PKI), než to, že brání klepání portů do cesty. Také přidání jediného bodu selhání přístupu ke kritické infrastruktuře se mi jeví jako špatný nápad a mnohem obtížnější je řádně podporovat jakoukoli záruku. To však opět vychází z představy, že software pro klepání portů není integrován do brány firewall na úrovni jádra operačního systému; pokud se to někdy změní, mohu také změnit, jak se cítím při používání.

34
Michael Trausch

Srážení portů není jen dalším heslem prostého textu - alespoň pokud je použito k ochraně služeb, které poslouchají na portu TCP jako SSH.) Srážení portů znamená, že vyhledávání služeb pomocí nmap již není možné kvůli použití zásady firewallu výchozího dropu. SSHD má také vzdálené zneužitelné chyby a ty nemají nic společného se slabými hesly. Nechci, aby někdo mohl vystřelit nmap a viděl, že poslouchám SSHD.

Existuje také silnější varianta klepání portů s názvem „Single Packet Authorization“, ale je to také zcela pasivní ověřovací schéma, takže si zachovává výhody klepání portů, ale řeší jeho omezení (opakované útoky jsou snadné, útoky DoS jsou snadné atd.) .).

13
Michael Rash

Je snadno ověřitelnou skutečností, že všechny služby, které čelí internetu, mají relativně často bezpečnostní chyby - služby, jako jsou SSH, OpenSSL atd. Útoky na tyto servery jsou hromadně vyzkoušeny na internetu a zaměřují se na všechny systémy, které mají vhodné otevřené porty.

Účelem klepání portů je zamezit těmto náhodným útočníkům od internetu, kteří hledají obecná zranitelnost. To znamená, že by se nemělo držet dál od vyhrazeného útočníka, ani by nemělo tvořit žádnou část skutečné bezpečnosti služeb. Výhodou klepání portů by mělo být to, že by bylo skutečně dost jednoduché, aby nebylo pravděpodobné, že v něm budou nějaké využitelné chyby.

Toto použití znamená, že klepání portů může být tak laxní, jak jen to je možné, pokud drží pryč většin útočníků. Je to může jen bezpečí na základě nejasností, ale lepší způsob je mít to jako slabou formu autentizace „heslem“.

Takže „nejlepší“ služba klepání portů by byla taková, o které je nepředstavitelné si představit jakékoli útoky proti ní, a přesto by byla dostatečně triviální, aby ji mohl legitimní uživatel použít z jakéhokoli klientského počítače.

9
Nakedible

Porty portů nejsou bezpečností skrze nejasnost. Je to hloubka obrany. Je to jako zaparkovat auto vedle stabilnějšího auta - nebude to moc bránit cílenému útoku, ale může to jen poslat oportunisty hledící jiným směrem.

8
jl6

Podle mých komentářů jinde, i když existuje spousta implementací, které používají různé druhy triků k reakci na klepání, lze jej implementovat čistě pomocí iptables v systému Linux. tj. toto je ve skutečnosti implementace klepání portů na jádře

Protože klepání je viditelné na síti, použití sekvencí více než 3 klepání dává malou výhodu. Doporučil bych použít TCP - - ačkoli to bude pomalejší, máte lepší záruky, že klepání bylo doručeno).

Přestože se spoléhá na programy userpace, mám přednost pro fail2ban , protože to nevyžaduje žádné další kroky/software pro připojení, běží spolehlivě, a pokud by to někdy selhalo, nezabránilo by mi to v přístupu na servery .

Překvapuje mě, že je tak málo přijato šifrované identifikace - ačkoli RFC1413 pouze zmiňuje tento možný přístup pomocí protokolu, nikoli definování toho, jak by měl fungovat.

Ale samozřejmě byste se měli ujistit, že jste omezili přístup co nejvíce nezávisle na tom (tj. Žádné root root, omezte přístup k nominované skupině, pokud je to nutné, vyžadují páry klíčů). SSH je navržen tak, aby byl bezpečný - a historicky bylo v implementacích hlavního proudu relativně málo zranitelných míst. Důvodem úspěchu útoků je obvykle kombinace hádatelných uživatelských jmen, jednoduchých hesel a útoků hrubou silou nebo sociálního inženýrství. Nezapomínejte, že nevynucujete složité ověření přístupové fráze (jiné než minimální délka) ani že požadujete, aby uživatelé neustále měnili svá hesla, existují lepší přístupy (např. Dvoufaktorové), ale bohužel jen velmi málo implementací.

7
symcbean

Portování klepání jsem neimplementoval již řadu let, mám však podezření, že se zásadně nezměnil. Další komentáře obsahují mnoho platných bodů a nebudu je jednoduše opakovat zde.

Jedním aspektem klepání portů, který jsem vždy implementoval jako samozřejmost, je založit sekvenci klepání na pseudonáhodnou, ale opakovatelnou hodnotu, jako je aktuální datum a čas. Tato strategie nevylučuje velkoobchodní nebezpečí opakovaného útoku, omezuje však expozici dané knockovací sekvence. Je zřejmé, že k tomu bude úspěšný synchronizovaný čas, v mém příkladu by byl pro konzistenci vyžadován zdroj.

4
Tok

Port Knocking je jen další heslo prostého textu. Může být brutálně vynuceno, objeveno, zachyceno a přehráno jako každé jiné heslo prostého textu. Proč znovu vynalézat telnet přihlášení?

Musíte něčemu věřit. Předpokládejme tedy, že důvěřujete vašemu síťovému zásobníku OS a důvěřujete sshd, když běží se zpožděnou kompresí, oddělením oprávnění a umožňuje pouze rozumnou formu dvoufaktorové autentizace (řekněme na základě klíče).

Můžete použít „jednoduché“ služby, jako je sshd, které vyvolá authpf k ochraně vašich složitějších zranitelných služeb.

authpf vám umožňuje upravit vaše sady pravidel brány firewall na základě toho, kdo se úspěšně autentizuje proti sshd, takže pouze IP adresy, které se podaří přihlásit k vaší bráně ssh, se mohou připojit k vaší farmě kompilace/výpočtu/databáze.

2
Alex Holst