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č.