Hvordan bruke portbanking for å sikre SSH-tjenesten i Linux


Portbanking er en smart teknikk for å kontrollere tilgangen til en port ved kun å gi legitime brukere tilgang til tjenesten som kjører på en server. Det fungerer på den måten at når riktig rekkefølge av tilkoblingsforsøk er gjort, åpner brannmuren gjerne porten som ble stengt.

Logikken bak portbanking er å beskytte Linux-systemet ditt mot automatiserte portskannere som leter etter åpne porter. I denne veiledningen undersøker vi hvordan du kan installere portbanking og hvordan du kan konfigurere den for å sikre SSH-tjenesten. For demonstrasjonsformål vil vi bruke Ubuntu 18.04.

Trinn 1: Installer og konfigurer knockd

For å komme i gang, logg inn på Linux-systemet og installer knockd-demonen som vist.

sudo apt install knockd

Når den er installert, åpner du knockd.conf-konfigurasjonen med ditt foretrukne tekstredigeringsprogram. Her bruker vi vim kommandolinjetekstredigerer.

sudo vim /etc/knockd.conf

Standard konfigurasjonsfilen vises som følger.

Under [openSSH]-delen må vi endre standard bankesekvens – 7000,8000,9000 – til noe annet. Dette er fordi disse verdiene allerede er kjent og kan kompromittere sikkerheten til systemet ditt.

For testformål har vi satt verdiene til 10005, 10006, 10007. Dette er sekvensen som vil bli brukt til å åpne SSH-porten fra et klientsystem.

På den tredje linjen – begynner med kommando, endre -A til -I like etter /sbin/iptables kommando og før INPUT.

Og til slutt, under [closeSSH]-delen, endre igjen standardsekvensen til ditt foretrukne valg. Dette er sekvensen som vil bli brukt til å lukke SSH-tilkoblingen når brukeren er ferdig og logger ut av serveren.

Her er vår komplette konfigurasjon.

Når du er ferdig, lagre endringene og avslutt.

En annen konfigurasjon vi må endre er /etc/default/knockd. Igjen, åpne den ved hjelp av tekstredigereren.

sudo vim /etc/default/knockd

Finn linjen START_KNOCKD=0. Fjern kommentaren og sett verdien til 1.

Gå deretter over til linjen KNOCKD_OPTS= ”-i eth1 ” Fjern kommentaren og erstatt standardverdien eth1 med det aktive nettverksgrensesnittet til systemet ditt. For å sjekke nettverksgrensesnittet ditt, kjør bare ip-addr eller ifconfig-kommandoen.

For systemet vårt er enp0s3 det aktive nettverkskortet.

Den komplette konfigurasjonen er som vist.

Lagre endringene og avslutt.

Start og aktiver deretter knockd-demonen som vist.

sudo systemctl start knockd
sudo systemctl enable knockd

For å sjekke statusen til knockd daemon, kjør kommandoen:

sudo systemctl status knockd

Trinn 2: Lukk SSH-port 22 på brannmuren

Siden formålet med knockd-tjenesten er å enten gi eller nekte tilgang til ssh-tjenesten, kommer vi til å lukke ssh-porten på brannmuren. Men først, la oss sjekke statusen til UFW-brannmuren.

sudo ufw status numbered

Fra utgangen kan vi tydelig se at SSH port 22 er åpen på både IPv4 og IPv6 protokoller nummerert < henholdsvis5 og 9.

Vi må slette disse to reglene som vist, og starter med den høyeste verdien – som er 9.

sudo ufw delete 9
sudo ufw delete 5

Nå, hvis du prøver å logge på eksternt til serveren, vil du få en tilkoblingstidsavbruddsfeil som vist.

Trinn 3: Konfigurer en knock-klient for å koble til SSH Server

I det siste trinnet vil vi konfigurere en klient og forsøke å logge på ved først å sende bankesekvensen som vi konfigurerte på serveren.

Men først, installer knockd-demonen akkurat som du gjorde på serveren.

sudo apt install knockd

Når installasjonen er fullført, send bankesekvensen ved å bruke syntaksen som vises

knock -v server_ip knock_sequence

I vårt tilfelle oversettes dette til:

knock -v 192.168.2.105 10005 10006 10007

Du bør få utgang som ligner på det vi har, avhengig av sekvensen din. Dette viser at bankeforsøkene var vellykkede.

På dette tidspunktet bør du være i stand til å logge på serveren med SSH.

Når du er ferdig med å gjøre jobben din på den eksterne serveren, lukker du SSH-porten ved å sende den avsluttende bankesekvensen.

knock -v 192.168.2.105 10007 10006 10005

Alle forsøk på å logge på serveren vil mislykkes som vist.

Avsluttende tanker

Dette avslutter denne veiledningen om hvordan du kan utnytte portbanking for å sikre SSH-tjenesten på serveren din. En bedre og enklere tilnærming ville være å konfigurere passord-SSH-autentisering ved hjelp av SSH-nøkkelpar. Dette sikrer at bare brukeren med den private nøkkelen kan autentisere seg med serveren som den offentlige nøkkelen er lagret på.