Sådan bruges portknocking på Ubuntu for at skjule SSH-porten

Sådan bruges portknocking på Ubuntu for at skjule SSH-porten

Du kender alle disse gamle gangsterfilm, hvor en fyr bruger en knocksekvens på en dør for at komme ind? Port banking er præcis det, bare for din server. Hvis du ændrer din standard ssh-port, garanterer du ikke, at du ikke får hacket. Hackere bruger ofte værktøjer til at foretage automatiske scanninger til åbne porte, før de angriber en server. Portknocking er en måde, hvorpå du kan forsvare dig mod portscannere. Den nægter adgang til en beskyttet port, indtil en klient har adgang til en række andre porte i den rigtige rækkefølge på forhånd.

Det er nemt at installere porten på Ubuntu. Jeg vil vise dig i denne artikel, hvordan man installerer og opsætter portknocking. Trinnene fra disse tutorials skal også fungere for Debian 8.

Trin 1: Sørg for, at alle de nødvendige pakker er installeret

Alle kommandoer nedenfor har ikke kørsel som root-bruger. Jeg ønsker ikke at forkaste sudo til alle kommandoer, så jeg bruger:

sudo su

at blive rodbruger. Det allerførste skridt er at opdatere Ubuntu-pakken lister:

apt-get update

Installer derefter SSH-serveren (hvis du ikke allerede har installeret den).

apt-get installer openssh-server

Installer nu knockd-softwaren, som er dæmonen, der styrer porten banker.

apt-get install knockd

Få: 1 http://security.debian.org wheezy / opdateringer Release.gpg [1,554 B] Få: 2 http://security.debian.org wheezy / updates Udgiv [102 kB] Få: 3 http: // sikkerhed .debian.org wheezy / opdateringer / main amd64 pakker [336 kB] Hit http://mirrors.digitalocean.com wheezy Release.gpg Hit http://mirrors.digitalocean.com wheezy Release Get: 4 http: // security. debian.org wheezy / opdateringer / main Translation-en [195 kB] Hit http://mirrors.digitalocean.com wheezy / main amd64 Pakker Hit http://mirrors.digitalocean.com wheezy / main Oversættelse-og Fetched 635 kB in 1s (358 kB / s) Læser pakke lister ... Udført [email protected]: ~ # [email protected]: ~ # apt-get installer openssh-server Læser pakke lister ... Udført Building afhængighed træ læsning state information .. . Udført Følgende ekstra pakker vil blive installeret: openssh-client Foreslåede pakker: ssh-askpass libpam-ssh nøglering monkeysphere rssh molly-guard ufw Følgende pakker vil blive opgraderet: openssh-client openssh-server 2 opgraderet, 0 nyinstalleret, 0 for at fjerne og 32 ikke opgraderet. Behov for at få 1,364 kB arkiver. Efter denne operation vil 0 B med ekstra diskplads blive brugt. Vil du fortsætte [Y / n]?

Tryk på Y, og indtast derefter for at fortsætte.

Installer knockd.

Når du har installeret pakken, skal du installere iptables kernel firewall. Løb:

apt-get installer iptables

Trin 2: Tilføjelse af regler til iptables

Først spoler vi eksisterende firewallregler og sikrer, at udgående forbindelser ikke bliver tabt.

iptables-flush
iptables -t nat-flush
iptables -t mangle-flush
iptables -policy OUTPUT ACCEPT

Vi vil sørge for at tillade alle etablerede forbindelser og igangværende sessioner gennem firewallen, ellers vil firewallen blokere den nuværende SSH-session:

iptables -A INPUT -m conntrack -ctstate OPSTILLET, RELATERET -J ACCEPT

Noter: Ovennævnte regel har ingen mellemrum på hver side af kommaet i STABLISHED, RELATED.

Brug derefter følgende regel til at blokere indgående port 22 (SSH):

iptables -A INPUT -p tcp-destination-port 22 -j DROP

Når du har oprettet dine iptables regler, kan du automatisere genoprettelsesprocessen ved genstart med iptables-vedholdende. Vi kan downloade dette fra Ubuntu's standardbibliotek:

apt-get installer iptables-vedholdende

Nuværende iptables regler kan gemmes i konfigurationsfilen? ? /etc/iptables/rules.v4. Disse regler vil så blive indlæst automatisk? ? under systemstart. ? ? ? ? Regler gemmes kun automatisk under pakkeinstallationen. Se? ? manuel side af iptables-save (8) for instruktioner om at holde reglerne? ? fil up-to-date. ? ? ? ? Gem nuværende IPv4 regler?
Nuværende iptables regler kan gemmes i konfigurationsfilen? ? /etc/iptables/rules.v6. Disse regler vil så blive indlæst automatisk? ? under systemstart. ? ? ? ? Regler gemmes kun automatisk under pakkeinstallationen. Se? ? manuel side af ip6tables-save (8) for instruktioner om at holde reglerne? ? fil up-to-date. ? ? ? ? Gem nuværende IPv6 regler?

Installer iptables vedvarende.

IPTables vedvarende, del 2

Under installationen vil programmet bede dig om at gemme de nuværende iptables regler (ipV4 og ipV6), bare vælg Ja for begge.

Gem det aktuelle regelsæt i en fil med kommandoen iptables-save. Denne fil kan bruges af iptables-gendannelse senere for at gendanne den samme iptables opsætning:

iptables-save

 # Genereret af iptables-gemme v1.4.14 på Tue Feb 23 04: 59: 28 2016 * filter: INGANG ACCEPT [1: 40]: FORWARD ACCEPT [0: 0]: OUTPUT ACCEPT [17: 1976] - EN INGANG - -ctstate RELATERET, OPSTILLET -J ACCEPT -A INPUT -m CONTRACck --ctstate RELATERET, OPSTILLET -J ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP COMMIT # Afsluttet på tirsdag 23 04: 59: 28 2016

Nu forbliver du forbundet med din eksisterende forbindelse, mens du blokkerer andre forbindelser på SSH-porten.

Dernæst skal vi konfigurere knockd.

For at konfigurere tjenesten skal vi redigere konfigurationsfilen /etc/knockd.conf. Åbn filen med nano:

nano /etc/knockd.conf

Redigering af knockd.conf med nano.

Du vil se de afsnit, der vil se sådan ud.

[options] UseSyslog [openSSH] sekvens = 7000,8000,9000 seq_timeout = 5 kommando = / sbin / iptables -A INPUT -s% IP% -p tcp --dport 22 -J ACCEPT tcpflags = syn [closeSSH] sekvens = 9000,8000,7000 seq_timeout = 5 kommando = / sbin / iptables -D INPUT -s% IP% -p tcp --dport 22 -J ACCEPT tcpflags = syn
  • I afsnittet "muligheder" ses et direktivnavn UseSyslog. logfil er ret indlysende - det logger alle bankeforsøg
  • Ungerneath, vi har to sektioner: openSSH og closeSSH. Den første vil give knockeren adgang til port 22 (SSH), og den anden lukker porten, når knockeren er færdig.
  • knockd erstatter automatisk% IP% med IP-adressen til den klient, der sendte knocken, så du kun kan åbne porten til den autoriserede klient.
sekvens = 9000,8000,7000

Dette betyder, at dette sæt regler vil stemme overens, hvis den samme IP kræver en forbindelse på port 7000, fulgt direkte af port 8000, efterfulgt af slutningen af ​​port 9000. Det er meget tilrådeligt at ændre standardporte og deres rækkefølge, da standardordren også er kendt for angriberne.

seq_timeout = 5

Indstillingen "seq_timeout" definerer i sekunder, hvor længe du har tid til at angive alle tal for banken. Denne standardværdi skal være fint, og det vil ikke være et problem, hvis du automatisk genererer dine knapper.

kommando = / sbin / iptables -A INPUT -s% IP% -p tcp --dport 22 -J ACCEPT

Angiv kommandoen, der skal udføres, når en klient foretager den korrekte port-knock. Alle forekomster af% IP% vil blive erstattet med knockerens IP-adresse.

tcpflags = syn

Vær opmærksom på pakker, der skal bruges til at indstille dette flag, i dette tilfælde synpakker. Når du bruger TCP flag, vil knockd IGNORE tcp pakker, der ikke matcher flagene.

Aktiver nu knockd. Rediger filen / etc / default / knockd med nano:

nano / etc / default / knockd

og ændre:

START_KNOCKD = 0

til

START_KNOCKD = 1

Herefter gem og afslut. Hvis du har flere netværksadaptere eller oplever problemer, der knocks, ikke starter automatisk under systemstart, kan du manuelt angive netværksgrænsefladen for at lytte til ved uncommenting og ændre anden linje KNOCKD_OPTS.

Start derefter knockd manuelt:

service knockd start

Dette starter daemonen og giver dig mulighed for at ændre iptables-regelsætene ved at banke på portens sekvenser.

Du har installeret de nødvendige pakker, hvis du er afbrudt fra din server, for at genoprette forbindelsen skal du slå de porte, du definerede i den rigtige rækkefølge, oprette en SSH-forbindelse.

Trin 3: Få adgang til serveren, når knockd kører

Hvis du har fulgt ovenstående trin, kan du ikke længere forbinde til SSH-serveren uden at banke på port.

Du skal ikke modtage noget svar fra serveren, og SSH-klienten skal have timeout. Dette skyldes, at vores SSH-dæmon er blokeret af iptables. Indtast ctrl-C for at afslutte SSH-forsøget, hvis det ikke slår automatisk ud.

Test banke med en telnet klient

For Linux-brugere: Installer telnet-pakken med apt.

For Windows-brugere: Du kan installere Telnet-klienten ved at gå til afsnittet "Programmer", søge efter "Drej" windows funktioner til eller fra ", derfra aktivere Telnet-klienten.

Skriv følgende kommando i kommandoprompten (erstat portsekvens med din brugerdefinerede sekvens):

telnet dinaddress 7000
telnet dinaddress 8000
telnet dinaddress 9000

Du skal gøre alt dette i 5 sekunder, fordi dette er den frist, der er pålagt for konfigurationen. Prøv nu at oprette forbindelse til din server via SSH. Du vil kunne få adgang til forbindelsen.

Kør ovenstående kommandoer i omvendt rækkefølge for at lukke SSH-serveren.

telnet dinaddress 9000
telnet dinaddress 8000
telnet dinaddress 7000

Den bedste del af portknocking er, at du kan konfigurere det sammen med den private nøgleautentificering. Hvis du konfigurerer begge, så er der stort set ingen chance for, at nogen kunne få adgang eller tilslutte, indtil og medmindre de kender både portene og den private nøgle.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.