Uvod
Preduvjeti
Korak 1: Knockd instalacija
Korak 2: pravila iptablesa
Korak 3: Knockd konfiguracija
Korak 4: Testiranje
Zaključak
Uvod
Osim promjene zadanog porta za SSH i korištenja para ključeva za autentifikaciju, kucanje porta može se koristiti za daljnju sigurnost (ili točnije, zatamnjenje) vašeg SSH poslužitelja. Djeluje tako što odbija veze s vašim SSH mrežnim portom. Ovo u biti skriva činjenicu da koristite SSH poslužitelj sve dok se ne napravi niz pokušaja povezivanja s unaprijed definiranim portovima. Vrlo siguran i jednostavan za implementaciju, lupanje porta je jedan od najboljih načina da zaštitite svoj poslužitelj od zlonamjernih pokušaja SSH povezivanja.
Preduvjeti
- Vultr poslužitelj koji koristi Ubuntu 18.04.
- Sudo pristup.
Prije nego što slijedite dolje navedene korake, ako niste prijavljeni kao root korisnik, nabavite privremenu root ljusku tako što ćete pokrenuti sudo -ii unijeti svoju lozinku. Alternativno, možete dodati sudonaredbe prikazane u ovom članku.
Korak 1: Knockd instalacija
Knockd je paket koji se koristi u kombinaciji s iptablesom za implementaciju kucanja porta na vašem poslužitelju. Paket " iptables-persistent" je također obavezan.
apt update
apt install -y knockd iptables-persistent
Korak 2: pravila iptablesa
Pokrenite sljedeće naredbe redom:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Ove naredbe će učiniti sljedeće, odnosno:
- Uputite iptables da održava postojeće veze na životu.
- Uputite iptables da ispusti bilo kakvu vezu s portom tcp/22 (ako vaš SSH daemon sluša na portu koji nije 22, trebali biste u skladu s tim izmijeniti gornju naredbu.)
- Spremite ova dva pravila tako da će se zadržati nakon ponovnog pokretanja.
Korak 3: Knockd konfiguracija
Pomoću uređivača teksta po svom izboru otvorite datoteku /etc/knockd.conf.
Vidjet ćete sljedeće:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Trebali biste promijeniti redoslijed portova (izaberite brojeve portova iznad 1024i koje druge usluge ne koriste) i pohranite ih na sigurno. Ovu kombinaciju treba tretirati kao lozinku. Ako zaboravite, izgubit ćete pristup SSH-u. Ovu novu sekvencu nazivat ćemo x,y,z.
seq-timeoutlinija je broj sekundi Knockd će čekati klijenta za dovršetak slijed port-kucati. Bilo bi dobro promijeniti ovo u nešto veće, pogotovo ako će se lupanje porta obavljati ručno. Međutim, manja vrijednost timeouta je sigurnija. 15Preporuča se mijenjanje u jer ćemo u ovom vodiču kucati ručno.
Promijenite redoslijed otvaranja na odabrane portove:
[openSSH]
sequence = x,y,z
Promijenite vrijednost naredbe na sljedeću:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Sada promijenite slijed zatvaranja u skladu s tim:
[closeSSH]
sequence = z,y,x
Spremite promjene i izađite te otvorite datoteku /etc/default/knockd:
- Zamijenite
START_KNOCKD=0s START_KNOCKD=1.
- Dodajte sljedeći redak na kraj datoteke:
KNOCKD_OPTS="-i ens3"(zamijenite ens3imenom vašeg javnog mrežnog sučelja ako se razlikuje.)
- Spremi i izađi.
Sada pokrenite Knockd:
systemctl start knockd
Ako sada prekinete vezu sa svojim poslužiteljem, morat ćete pritisnuti portove x, y, i zza ponovno povezivanje.
Korak 4: Testiranje
Sada se nećete moći povezati sa svojim SSH poslužiteljem.
Možete testirati lupanje porta s telnet klijentom.
Korisnici Windowsa mogu pokrenuti telnet iz naredbenog retka. Ako telnet nije instaliran, pristupite odjeljku "Programi" na upravljačkoj ploči, a zatim pronađite "Uključi ili isključi značajke sustava Windows". Na ploči sa značajkama pronađite "Telnet Client" i omogućite ga.
U svoj terminal/naredbeni redak upišite sljedeće:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Učinite sve to za petnaest sekundi, jer je to ograničenje nametnuto u konfiguraciji. Sada se pokušajte povezati sa svojim poslužiteljem putem SSH-a. Bit će pristupačan.
Da biste zatvorili pristup SSH poslužitelju, pokrenite naredbe obrnutim redoslijedom.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
Zaključak
Najbolji dio u korištenju port-knockinga je da ako je konfiguriran uz provjeru autentičnosti privatnog ključa, praktički nema šanse da bi netko drugi mogao ući osim ako netko nije znao vaš slijed kucanja porta i imao vaš privatni ključ.