De auteur heeft het Free and Open Source Fund geselecteerd om een donatie te ontvangen als onderdeel van het Write for Donations-programma.
Introductie
Wanneer je naar authenticatielogs kijkt, zie je mogelijk verschillende mislukte aanmeldingspogingen van verschillende IP-adressen. Deze mislukte aanmeldingspogingen komen vaak van een node op een botnet dat het hele web scant op kwetsbare servers met standaardreferenties. Hoewel de meeste mensen een veilig wachtwoord of SSH-sleutels zullen hebben om te voorkomen dat aanvallers zich aanmelden bij hun server, zullen sommige servers kwetsbaar zijn voor deze scan. Hoewel je deze aanvallen misschien niet kunt stoppen, kun je ze vertragen met tarpits.
In deze zelfstudie installeer en configureer je Endlessh, een tarpit die langzaam een oneindig lange banner naar elke gebruiker stuurt die probeert in te loggen. Je configureert ook de SSH-service om op een ander poort te draaien, waardoor je authenticatielogs leesbaarder worden.
Na het voltooien van deze zelfstudie kun je verbinding maken met je server op een niet-standaard poort, terwijl eventuele bots die je server scannen ontdekken dat hun tijd verspild wordt door aan een deur te kloppen die nooit zal opengaan.
Vereisten
Om deze handleiding te voltooien, heb je het volgende nodig:
- Een Ubuntu-server met een sudo niet-rootgebruiker, een firewall en minimaal 1GB RAM, die je kunt instellen door de Initiële serverconfiguratie met Ubuntu 22.04 te volgen.
- Git geïnstalleerd op je server, wat je kunt voltooien met de Git-installatiehandleiding.
Stap 1 – SSH verplaatsen naar een niet-standaard poort
In deze stap verplaats je SSH naar een niet-standaard poort om een poort vrij te maken voor Endlessh. Omdat botnets niet eindeloze middelen hebben, scannen ze meestal alleen de standaard SSH-poort (22
). Door je SSH naar een niet-standaard poort te verplaatsen, kun je de bot gevangen houden in de Endlessh-tarpit.
Begin met het maken van een back-up van je SSH-configuratiebestand vanaf je server met het volgende commando:
Dit bestand kan worden gebruikt om de oorspronkelijke instellingen te herstellen als er iets niet werkt of als je besluit SSH terug te verplaatsen naar de standaard poort.
Open het SSH-configuratiebestand /etc/ssh/sshd_config
met nano of je favoriete teksteditor:
Zoek de regel #Port 22
. Verwijder het #
om deze regel uit te schakelen, en verander vervolgens de poort naar een ongebruikte poort op je server:
...
Port 2222
...
Een voorbeeld van een normaal ongebruikte poort is 2222
. Je kunt elke poort selecteren die je wilt gebruiken voor je terugkerende SSH-verbindingen. Sla het bestand op en sluit het.
Als je server een firewall gebruikt, zoals ufw
, moet je verkeer naar de nieuwe poort toestaan:
Herstart vervolgens de SSH-service:
Probeer in een aparte terminalsessie verbinding te maken met je server via de nieuwe poort:
Waarschuwing: Sluit je actieve SSH-sessie niet tenzij je hebt bevestigd dat je SSH kunt gebruiken op de nieuwe poort. Als je geen verbinding kunt maken via de nieuwe poort, loop je het risico je toegang tot de server te verliezen door de sessie te sluiten. Als je geen verbinding kunt maken met je server in een aparte terminalsessie, kun je je originele SSH-instellingen herstellen door de volgende commando’s uit te voeren:
Als je verdere problemen tegenkomt, controleer dan of sshd
succesvol is herstart en controleer je firewall-instellingen om ervoor te zorgen dat poort 2222
tcp-verkeer accepteert.
Zodra je hebt geverifieerd dat je een nieuwe verbinding kunt maken met poort 2222
, kun je je originele terminal veilig sluiten. Bij toekomstige verbindingen met je server moet je altijd de nieuwe poort specificeren, zoals volgt:
Nu je met succes SSH naar een niet-standaard poort hebt verplaatst, is het tijd om Endlessh in te stellen.
Stap 2 – Endlessh installeren
Endlessh heeft geen officieel pakket, dus je zult het repository klonen om het handmatig te bouwen. Je zult Git gebruiken om het repository te klonen, het build-essential
pakket (om het project te compileren), en het libc6-dev
pakket.
Installeer de vereiste pakketten met behulp van de apt-pakketbeheerder:
Bevestig de installatie met y
wanneer daarom wordt gevraagd.
Kloon vervolgens het Endlessh-repository van GitHub naar je thuismap:
Ga naar de projectdirectory en gebruik het make
commando om Endlessh te compileren:
Je kunt Endlessh nu starten met het volgende commando:
Om te testen of Endlessh werkt, kun je proberen een SSH-verbinding te maken met poort 22
met de -v
verbose vlag, die de eindeloze banner laat zien die wordt verzonden. In een nieuw terminalvenster maak je een SSH-verbinding met poort 22
met een van de volgende commando’s:
Wanneer je nieuwe SSH-sessie probeert verbinding te maken met poort 22
, zul je een reeks willekeurige tekens zien verschijnen in het verbindingsvenster elke 10 seconden totdat de sessie wordt gesloten, zoals de uitvoer hieronder:
Outputdebug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+
debug1: kex_exchange_identification: banner line 1: n<
debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK
debug1: kex_exchange_identification: banner line 3: i+ OZ
debug1: kex_exchange_identification: banner line 4: yn
debug1: kex_exchange_identification: banner line 5: T[V\\[HUg
Zodra je hebt bevestigd dat het werkt door te proberen verbinding te maken met een nieuwe sessie, kun je het nieuwe terminalvenster sluiten en Endlessh stoppen met Ctrl+C
in je oorspronkelijke terminalsessie.
In deze stap heb je Endlessh gedownload en gebouwd vanuit de bron. Vervolgens ga je het configureren en implementeren als een service om het persistent te maken bij het uitloggen en opnieuw opstarten van je server.
Stap 3 – Endlessh configureren
In deze stap ga je Endlessh instellen als een service die behouden blijft nadat je sessie is beëindigd en bij systeemherstarts.
Verplaats het gecompileerde binairbestand naar de /usr/local/bin
map:
Voer je wachtwoord in als daarom wordt gevraagd.
Kopieer het servicebestand van het project naar de /etc/systemd/system
map:
Je gaat het servicebestand iets aanpassen om Endlessh te laten draaien op poorten onder 1024
. Open het servicebestand in nano of je favoriete teksteditor:
Zoek het gedeelte over het draaien van Endlessh op poorten onder 1024
.
Werk het bestand bij door #
aan het begin van de regel met AmbientCapabilities=CAP_NET_BIND_SERVICE
te verwijderen en #
toe te voegen aan het begin van de regel PrivateUsers=true
, zoals dit:
...
## Als je wilt dat Endlessh bindt op poorten < 1024
## 1) voer uit:
## setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) decommentarieer de volgende regel
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) commentarieer de volgende regel
#PrivateUsers=true
...
Sla het bestand op en sluit het af.
Volgende, laat je Endlessh toe om te draaien op poorten lager dan 1024
, ook wel internetdomein-bevoorrechte poorten genoemd. Stel deze mogelijkheid in voor het Endlessh binair met het setcap
commando:
Je moet een configuratiebestand definiëren voor Endlessh om het te vertellen welke poort te gebruiken. Maak en open een configuratiebestand met de naam /etc/endlessh/config
:
In het configuratiebestand, definieer de poort om te gebruiken als 22
:
Port 22
Sla het bestand op en sluit het.
Nu kun je de Endlessh-service persistent starten:
Het opnemen van --now enable
zal ervoor zorgen dat de service persistent blijft na het opnieuw opstarten van je server.
Om te controleren of de service succesvol is gestart, kun je het systemctl status
commando gebruiken:
Als het succesvol is gestart, zie je een uitvoer zoals deze:
Output● endlessh.service - Endlessh SSH Tarpit
Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago
Docs: man:endlessh(1)
Main PID: 34007 (endlessh)
Tasks: 1 (limit: 1081)
Memory: 380.0K
CGroup: /system.slice/endlessh.service
└─34007 /usr/local/bin/endlessh
Als het draait, kun je proberen verbinding te maken op poort 22
in een nieuwe terminalsessie:
Omdat je tarpit draait, zal de nieuwe terminalsessie geen verbinding kunnen maken en zal deze voortdurend draaien totdat deze handmatig wordt gestopt met Ctrl+C
in de verbindende terminal.
Als je de service wilt stoppen met draaien, kun je het volgende commando gebruiken:
Na het stoppen van de service, kun je de SSH-herstelinstructies in de waarschuwing van Stap 1 gebruiken om je oorspronkelijke serverconfiguratie te herstellen. Je kunt de service opnieuw inschakelen met sudo systemctl --now enable endlessh
zonder het installatieproces opnieuw te doorlopen, maar zorg ervoor dat SSH niet draait op poort 22
wanneer je dit doet.
Conclusie
U hebt Endlessh succesvol geïnstalleerd en geconfigureerd, heeft uw authenticatielogs opgeschoond en bent klaar om de tijd van willekeurige SSH-bots te verspillen.
Na het instellen van uw Endlessh-tarpit, bekijk andere Aanbevolen beveiligingsmaatregelen om uw servers te beschermen.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-endlessh-tarpit-on-ubuntu-22-04