GNU/Linux >> Znalost Linux >  >> Debian

Jak zakrýt síťové porty pomocí sekvence klepání portů na Debianu 10

Klepání portů je metoda dynamického otevírání síťových portů „klepáním“ (tj. připojením) na předem definovanou sekvenci portů. To je zvláště užitečné pro zakrytí otevřeného síťového portu před skenováním portů, protože dotyčný port bude uzavřen, pokud nebude provedena sekvence klepání portu. Dostatečně dlouhou sekvenci klepání portů je prakticky nemožné vynutit hrubou silou:například k úspěšnému uhodnutí (hrubou silou) kombinace 3 portů TCP by útočník musel zkusit zaklepat na každou z 281 bilionů možných kombinací a vyhledat otevřete porty po každé sekvenci klepání portu. Jak si pravděpodobně dokážete představit, bude to trvat velmi, velmi dlouho.

Tato příručka vám pomůže s instalací knockd, flexibilního démona klepání portů, na Debian 10. Pro demonstrační účely jej nakonfigurujeme tak, aby zakryl port SSH, ačkoli tímto přístupem lze chránit jakýkoli jiný port/službu.

Požadavky

  • Server se systémem Debian 10.
  • Přístup uživatele root k vašemu serveru.
  • Měla by být nastavena proměnná prostředí $EDITOR.
  • Druhý systém pro testování.

POZNÁMKA:Pokud máte v úmyslu použít klepání portů k zakrytí portu SSH, ujistěte se, že máte alternativní přístupovou metodu (například přes konzolu), která se bude hodit, pokud se omylem uzamknete.

Před instalací knockd zkontrolujte název veřejného síťového rozhraní vašeho systému pomocí následujícího příkazu:

zobrazit odkaz IP | grep -v lo
2:ens18: mtu 1500 qdisc pfifo_fast state Režim UP DEFAULT výchozí skupina qlen 1000

Poznamenejte si název rozhraní (v tomto případě ens18). Bude potřeba později.

Krok 1:Instalace Knockd

knockd je démon klepající na porty, který naslouchá připojení a podle toho otevírá porty. K implementaci klepání portů budeme používat knockd s pravidly iptables. Nainstalujte požadované balíčky následovně:

instalace apt updateapt knockd iptables-persistent

Krok 2:Konfigurace Knockd

Knockd používá jediný konfigurační soubor, /etc/knockd.conf, k definování sekvencí klepání a dalších parametrů. K dispozici jsou dva praktické provozní režimy. První vyžaduje jedinou sekvenci klepání k otevření a zavření předdefinovaného portu, zatímco druhá používá samostatné sekvence otevírání a zavírání. Budeme používat první možnost, protože vyžaduje méně uživatelské interakce.

Nejprve zálohujte stávající konfigurační soubor:

mv /etc/knockd.conf /etc/knockd.conf.bak

Zadruhé otevřete konfigurační soubor ve svém textovém editoru:

$EDITOR /etc/knockd.conf

A zadejte konfiguraci zobrazenou níže:

(Nahraďte ens18 svým názvem vašeho síťového rozhraní.)

[možnosti] UseSyslog Interface =ens18[SSH] sekvence =1000,2000,3000 seq_timeout =15 tcpflags =syn start_command =/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT stop_command =/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout =20

To dá pokyn knockd, aby povolil provoz na portu 22 po obdržení správné sekvence zaklepání (1000,2000,3000 v tomto případě) a poté znovu deaktivoval provoz po 20sekundovém zpoždění. Připojení SSH tak budou akceptována pouze během tohoto 20sekundového okna.

Dále povolte knockd úpravou souboru /etc/default/knockd:

$EDITOR /etc/default/knockd

A nastavte START_KNOCKD na 1:

START_KNOCKD=1

Uložte soubor a ukončete. Upravíme také jednotku systemd pro knockd. Chcete-li tak učinit, vytvořte nový soubor jednotky, který přepíše výchozí:

$EDITOR /etc/systemd/system/knockd.service

A vložte následující:

[Unit]Description=Port-Knock DaemonAfter=network.targetRequires=network.targetDocumentation=man:knockd(1)[Service]EnvironmentFile=-/etc/default/knockdExecStartPre=/usr/bin/sleep 1ExecStart=/usr /sbin/knockd $KNOCKD_OPTSExecReload=/bin/kill -HUP $MAINPIDKillMode=mixedRestart=alwaysSuccessExitStatus=0 2 15ProtectSystem=fullCapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMINget
 Poté pomocí následujícího příkazu načtěte a povolte novou jednotku:

systemctl daemon-reloadsystemctl enable --now knockd.service

Krok 3:Pravidla brány firewall

V tuto chvíli je Knockd připraven, ale veškerý provoz je standardně povolen přes bránu firewall. Vytvoříme pravidla brány firewall pro odepření přístupu k portu 22/tcp.

Následující příkazy zajistí, že stávající připojení nebudou přerušena.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Níže jsou uvedena pravidla pro přerušení připojení k portu 22/tcp:

iptables -A INPUT -p tcp --destination-port 22 -j DROPip6tables -A INPUT -p tcp --destination-port 22 -j DROP

Poté uložte aktuální řetězce pravidel pro přetrvání po restartování:

iptables-save> /etc/iptables/rules.v4ip6tables-save> /etc/iptables/rules.v6

Krok 4:Testování

Z jiného systému zkuste spustit novou relaci SSH na vašem serveru. Nemělo by se vám podařit se připojit. K provedení sekvence klepání lze použít různé nástroje, i když budeme demonstrovat pomocí klepání, klienta klepání, který je součástí Knockd. Nainstalujte balíček knockd, jak je znázorněno v kroku 1, do jiného systému a poté spusťte příkazy:

knock server_ip_address 1000 2000 3000ssh [e-mail protected]_ip_address

Připojení SSH by nyní mělo být úspěšné.

Alternativní konfigurace

Knockd lze alternativně nakonfigurovat tak, aby vyžadoval dvě odlišné sekvence pro otevírání a zavírání síťových portů. To je užitečné, pokud chcete mít porty otevřené po delší dobu. Chcete-li nakonfigurovat Knockd tímto způsobem, otevřete jeho konfigurační soubor:

$EDITOR /etc/knockd.conf

A nahraďte stávající konfiguraci následujícím:

[možnosti] UseSyslog Interface =your_interface[openSSH] sekvence =1000,2000,3000 seq_timeout =15 tcpflags =syn start_command =/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT sekvence [closeSSH] =3000,2000,1000 seq_timeout =15 tcpflags =syn start_command =/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j PŘIJÍMAT

Poté restartujte službu, aby se načetla nová konfigurace:

systemctl restart knockd.service

Závěr

Knockd může být efektivním řešením útoků hrubou silou, které jsou na SSH a dalších službách velmi běžné. I když systemd restartuje Knockd, pokud selže, měli byste mít vždy záložní metodu přístupu k vašemu serveru, pokud používáte port-knocking ke skrytí SSH portu.


Debian
  1. Jak nastavit statickou IP adresu na Debian Linuxu

  2. Jak zakrýt síťové porty pomocí sekvence klepání portů na Debianu 10

  3. Jak nainstalovat WonderCMS s Nginx na Debian 11

  1. Jak nainstalovat Steam pomocí Steam Play na Debian 10 Buster

  2. Jak převést HTML do PDF pomocí HTMLDoc na Debianu 10

  3. Jak zabezpečit službu SSH pomocí funkce Port Knocking

  1. Jak nastavit firewall s UFW na Debianu 10

  2. Jak nastavit firewall s UFW na Debianu 9

  3. Jak nastavit FTP server s VSFTPD na Debianu 9