Kako koristiti Port Knocking za osiguranje SSH usluge u Linuxu


Port Knocking je odlična tehnika kontrole pristupa portu tako što se dozvoljava pristup samo legitimnim korisnicima servisu koji radi na serveru. Funkcioniše na način da kada se napravi pravi redosled pokušaja povezivanja, firewall rado otvara port koji je bio zatvoren.

Logika iza kucanja portova je da zaštitite vaš Linux sistem od automatizovanih skenera portova koji tragaju za otvorenim portovima. U ovom vodiču ispitujemo kako možete instalirati port knocking i kako ga možete konfigurirati za sigurnu SSH uslugu. Za potrebe demonstracije koristićemo Ubuntu 18.04.

Korak 1: Instalirajte i konfigurišite knockd

Za početak, prijavite se na svoj Linux sistem i instalirajte knockd demon kao što je prikazano.

sudo apt install knockd

Jednom instaliran, otvorite konfiguraciju knockd.conf pomoću željenog uređivača teksta. Ovdje koristimo vim uređivač teksta na komandnoj liniji.

sudo vim /etc/knockd.conf

Zadana konfiguracijska datoteka se pojavljuje na sljedeći način.

U odjeljku [openSSH], moramo promijeniti zadanu sekvencu kucanja – 7000,8000,9000 – u nešto drugo. To je zato što su ove vrijednosti već poznate i mogu ugroziti sigurnost vašeg sistema.

Za potrebe testiranja, postavili smo vrijednosti na 10005, 10006, 10007. Ovo je sekvenca koja će se koristiti za otvaranje SSH porta sa klijentskog sistema.

U trećem redu – počevši sa komanda, promijenite -A u -I odmah nakon /sbin/iptables naredbu i prije INPUT.

I na kraju, u odjeljku [closeSSH] ponovo promijenite zadanu sekvencu na željeni izbor. Ovo je sekvenca koja će se koristiti za zatvaranje SSH veze nakon što korisnik završi i odjavi se sa servera.

Evo naše kompletne konfiguracije.

Kada završite, sačuvajte promjene i izađite.

Druga konfiguracija koju moramo izmijeniti je /etc/default/knockd. Još jednom, otvorite ga pomoću uređivača teksta.

sudo vim /etc/default/knockd

Pronađite liniju START_KNOCKD=0. Dekomentirajte ga i postavite vrijednost na 1.

Zatim prijeđite na red KNOCKD_OPTS= ”-i eth1 ” Otkomentirajte ga i zamijenite zadanu vrijednost eth1 aktivnim mrežnim sučeljem vašeg sistema. Da biste provjerili svoj mrežni interfejs, jednostavno pokrenite ip addr ili naredbu ifconfig.

Za naš sistem, enp0s3 je aktivna mrežna kartica.

Kompletna konfiguracija je kao što je prikazano.

Sačuvajte promjene i izađite.

Zatim pokrenite i omogućite knockd demon kao što je prikazano.

sudo systemctl start knockd
sudo systemctl enable knockd

Da provjerite status knockd demona, pokrenite naredbu:

sudo systemctl status knockd

Korak 2: Zatvorite SSH port 22 na zaštitnom zidu

Pošto je cilj usluge knockd da ili odobri ili odbije pristup ssh servisu, mi ćemo zatvoriti ssh port na firewall-u. Ali prvo, provjerimo status UFW firewall-a.

sudo ufw status numbered

Iz izlaza možemo jasno vidjeti da je SSH port 22 otvoren na oba IPv4 i IPv6 protokola s brojevima 5 i 9 respektivno.

Moramo izbrisati ova dva pravila kao što je prikazano, počevši od najveće vrijednosti – koja je 9.

sudo ufw delete 9
sudo ufw delete 5

Sada, ako pokušate daljinski da se prijavite na server, dobićete grešku vremenskog ograničenja veze kao što je prikazano.

Korak 3: Konfigurirajte knock klijenta za povezivanje sa SSH serverom

U poslednjem koraku, konfigurisaćemo klijenta i pokušati da se prijavimo tako što ćemo prvo poslati knock sekvencu koju smo konfigurisali na serveru.

Ali prvo, instalirajte knockd daemon baš kao što ste uradili na serveru.

sudo apt install knockd

Kada se instalacija završi, pošaljite sekvencu kucanja koristeći prikazanu sintaksu

knock -v server_ip knock_sequence

U našem slučaju, ovo znači:

knock -v 192.168.2.105 10005 10006 10007

Trebali biste dobiti izlaz sličan onome što imamo, ovisno o vašem redoslijedu. Ovo pokazuje da su pokušaji kucanja bili uspješni.

U ovom trenutku, trebali biste biti u poziciji da se uspješno prijavite na server koristeći SSH.

Kada završite sa obavljanjem posla na udaljenom serveru, zatvorite SSH port slanjem sekvence zatvaranja.

knock -v 192.168.2.105 10007 10006 10005

Svaki pokušaj prijave na server neće uspjeti kao što je prikazano.

Završne misli

Ovo završava ovaj vodič o tome kako iskoristiti kucanje portova da biste osigurali SSH uslugu na vašem serveru. Bolji i lakši pristup bio bi konfiguriranje SSH provjere autentičnosti pomoću SSH parova ključeva. Ovo osigurava da se samo korisnik s privatnim ključem može autentifikovati na serveru na kojem je pohranjen javni ključ.