Ako ochrániť SSH server pred útokom hrubou silou pomocou fail2ban. Zabezpečenie servera SSH Použite neštandardný port

SSH vám umožňuje vytvoriť bezpečné pripojenie k serveru, avšak samotná služba SSH musí mať prístup na internet, aby správne fungovala. To vytvára vektor útoku pre prípadných crackerov, a preto SSH potrebuje väčšiu ochranu.

Vo všeobecnosti je potenciálnym cieľom akákoľvek služba s prístupom do siete. V protokoloch týchto služieb si môžete všimnúť opakované, systematické pokusy o prihlásenie – ide o útoky hrubou silou používateľov a robotov.

Služba fail2ban dokáže zmierniť útoky pomocou pravidiel, ktoré automaticky prekonfigurujú firewall iptables na základe vopred definovaného počtu neúspešných pokusov o prihlásenie. To umožní serveru rýchlo reagovať na neoprávnený prístup bez zásahu správcu.

Táto príručka vám pomôže nainštalovať a nakonfigurovať fail2ban na serveri Ubuntu 14.04.

Inštaluje sa fail2ban

Úložisko Ubuntu poskytuje balík fail2ban, takže ho možno nainštalovať pomocou štandardného správcu balíkov.

Aktualizujte index balíka a nainštalujte fail2ban pomocou týchto príkazov:

aktualizácia sudo apt-get
sudo apt-get install fail2ban

Teraz môžete začať s konfiguráciou pomôcky.

fail2ban konfigurácie

Konfiguračné súbory fail2ban sú uložené v adresári /etc/fail2ban. Predvolené nastavenia nájdete v súbore jail.conf.

Pretože tento súbor je možné zmeniť počas aktualizácie balíka, nie je potrebné ho upravovať. Je lepšie skopírovať jeho obsah do iného súboru a tam upraviť parametre. Aby tieto dva súbory fungovali správne, je najlepšie ponechať v novom súbore len tie nastavenia, ktoré je potrebné prepísať v súbore jail.local. Všetky predvolené nastavenia sa načítajú zo súboru jail.conf.

Skopírujte súbor jail.conf a použite ho ako základ pre súbor jail.local. Ak to chcete urobiť, zadajte:

awk "( printf "# "; print; )" /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local

Potom si pozrite jail.conf:

sudo nano /etc/fail2ban/jail.conf

Niektoré nastavenia je možné aktualizovať v tomto súbore. Nastavenia sekcie sa budú vzťahovať na všetky služby, ktoré fail2ban podporuje (pokiaľ tieto hodnoty nie sú prepísané v konfiguračných súboroch týchto služieb).


. . .
ignoreip = 127.0.0.1/8
. . .

Voľba ignoreip konfiguruje zdrojové adresy, ktoré bude fail2ban ignorovať. V predvolenom nastavení prepúšťa všetku komunikáciu prichádzajúcu z lokálneho počítača. Môžete pridať ďalšie adresy na ignorovanie ich umiestnením na koniec direktívy ignoreip oddelené medzerou.


. . .
bantime = 600
. . .

Parameter bantime nastavuje čas, počas ktorého bude klient zablokovaný, ak sa nepodarí autentifikovať. Jeho hodnota sa meria v sekundách. Predvolená hodnota je 600 sekúnd (10 minút).


. . .
čas hľadania = 600
maxretry = 3
. . .

Ďalšie dva parametre, ktorým je potrebné venovať pozornosť, sú findtime a maxretry. Spoločne definujú podmienky, za ktorých budú nelegálni používatelia blokovaní.

Premenná maxretry určuje počet pokusov o prihlásenie a findtime je časový interval, počas ktorého musí byť užívateľ autentifikovaný. Ak klient prekročí niektorý z týchto ukazovateľov, bude zablokovaný. Služba fail2ban štandardne blokuje klientov, ktorí neposkytnú prihlasovacie údaje 3-krát do 10 minút.


. . .
destemail= [e-mail chránený]
meno odosielateľa = Fail2Ban
mta=odoslať poštu
. . .

Parametre destemail, sendername a mta vám umožňujú konfigurovať e-mailové upozornenia. Parameter destemail určuje adresu Email Ten by mal dostávať správy o zablokovaných používateľoch. Parameter sendername určuje odosielateľa správy. Parameter mta určuje, ktorá poštová služba sa použije na odosielanie pošty. Pridajte tieto možnosti do sekcie jail.local a nastavte príslušné hodnoty.


. . .
akcia = $(akcia_)s
. . .

Toto nastavenie konfiguruje akciu fail2ban v prípade zákazu. Hodnota action_ je definovaná v súbore kúsok pred týmto parametrom. Predvolená akcia zablokuje útočníkovu komunikáciu, kým nevyprší časový limit zákazu prekonfigurovaním brány firewall.

Ak chcete nastaviť e-mailové upozornenia, pridajte alebo odkomentujte prvok action v súbore jail.local a zmeňte jeho hodnotu z action_ na action_mw. Ak chcete, aby e-mail obsahoval príslušné riadky z denníkov, môžete zadať hodnotu action_mwl. Ak sa rozhodnete používať e-mailové upozornenia, uistite sa, že ich podporujú vaše nastavenia pošty.

Jednotlivé parametre

Podpora jednotlivých služieb je zahrnutá v špeciálnych sekciách s rovnakým názvom. Napríklad voľby služby ssh môžu byť špecifikované v súbore .

Každá z týchto sekcií môže byť povolená zrušením komentára v hlavičke sekcie v jail.local a zmenou hodnoty povoleného riadku na „true“:


. . .
povolené=pravda
. . .

V predvolenom nastavení je podporovaná iba služba SSH a všetky ostatné služby sú vypnuté.

Tieto sekcie používajú hodnoty nastavené v sekcii ako základ a podľa potreby ich upravujú. Ak chcete prepísať akékoľvek hodnoty, pridajte sekciu pre príslušnú službu do jail.local a zmeňte jej hodnoty.

Nastavujú sa tu aj niektoré ďalšie parametre. Parameter filtra pomáha určiť, či riadok v protokole označuje neúspešný pokus o autentifikáciu; parameter logpath informuje fail2ban, kde sa nachádzajú protokoly pre túto konkrétnu službu.

Hodnota parametra filter je odkaz na súbor .conf umiestnený v adresári /etc/fail2ban/filter.d. Tieto súbory obsahujú regulárne výrazy, ktoré určujú, či riadok v protokole predstavuje správu o zlyhaní autentifikácie. Tieto súbory nespadajú do rozsahu tohto návodu, pretože sú pomerne zložité a predvolené možnosti sú vo väčšine prípadov v poriadku.

Filtre môžete zobraziť v tomto adresári:

ls /etc/fail2ban/filter.d

Nájdite súbor priradený k požadovanej službe a otvorte ho pomocou textový editor. Väčšina súborov je dostatočne dobre komentovaná a môžete sa zoznámiť so skriptom ochrany služby. Väčšina z týchto filtrov má zodpovedajúce sekcie v súbore jail.conf (v predvolenom nastavení sú vypnuté). V prípade potreby ich možno povoliť v súbore jail.local.

Povedzme, že máte webovú stránku, ktorá je poskytovaná s Nginx. Protokoly webového servera sa neustále aktualizujú pri neúspešných pokusoch o prihlásenie. Nástroj fail2ban môže pomocou súboru nginx-http-auth.conf neustále kontrolovať /var/log/nginx/error.log.

Takmer všetky potrebné parametre na to sú už v sekcii v súbore /etc/fail2ban/jail.conf. Stačí odkomentovať túto sekciu v súbore jail.local a nastaviť hodnotu na true v povolenom parametri.

. . .
povolené=pravda
. . .

Potom musíte reštartovať fail2ban.

Konfigurácia fail2ban

Teraz poznáte základy fungovania fail2ban. Skúste nakonfigurovať politiku automatického blokovania pre službu SSH a Nginx. Potrebujeme tiež nástroj fail2ban na odosielanie e-mailových správ, keď je IP adresa zakázaná.

Najprv nainštalujte požadovaný softvér.

Budete potrebovať nginx, pretože fail2ban bude monitorovať svoje denníky a odosielať e-maily na odosielanie upozornení. Potrebujete tiež balík iptables-persistent, aby server uložil a automaticky načítal pravidlá brány firewall pri spustení servera. Všetky tieto balíčky je možné stiahnuť zo štandardných repozitárov Ubuntu:

aktualizácia sudo apt-get
sudo apt-get install nginx sendmail iptables-persistent

Zastavte službu fail2ban a nastavte základný firewall.

Nastavenia brány firewall

Základný firewall musí podporovať nadviazané spojenia, ako aj návštevnosť generovaná samotným serverom a návštevnosť určená pre porty SSH a webového servera. Všetka ostatná premávka bude zablokovaná. Pravidlá vyzerajú takto:

sudo iptables -A VSTUP -i lo -j PRIJAŤ
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j PRIJAŤ
sudo iptables -A INPUT -p tcp -m multiport --dports 80 443 -j PRIJAŤ
sudo iptables -A INPUT -j DROP

Tieto príkazy implementujú vyššie uvedenú politiku. Ak chcete zobraziť aktuálne pravidlá brány firewall, zadajte:

sudo iptables -S
-P VSTUP PRIJÍMATE
-P PREDAJ PRIJAŤ
-P AKCEPT VÝSTUPU
-A VSTUP -i lo -j PRIJAŤ




-A VSTUP -j KAPKA

Uložte si pravidlá brány firewall, aby sa po reštarte nestratili.

sudo dpkg-reconfigure iptables-persistent

Reštartujte fail2ban:

spustenie služby sudo fail2ban

Dopyt na pravidlá brány firewall:

sudo iptables -S
-P VSTUP PRIJÍMATE
-P PREDAJ PRIJAŤ
-P AKCEPT VÝSTUPU
-N fail2ban-ssh

-A VSTUP -i lo -j PRIJAŤ
-A INPUT -m conntrack --ctstate SÚVISIACE,NASTAVENÉ -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 22 -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 80 -j PRIJAŤ
-A VSTUP -j KAPKA
-A fail2ban-ssh -j RETURN

Každý reťazec má teraz svoju vlastnú predvolenú politiku. Firewall má tiež päť základných pravidiel. Štruktúra fail2ban je zvýraznená červenou farbou: tento nástroj už presadzuje pravidlá blokovania SSH. Niekedy sa táto štruktúra najskôr nezobrazí, pretože fail2ban môže štruktúru pridať až v prvom bloku.

Konfigurácia fail2ban

Teraz musíte do súboru jail.local pridať nastavenia fail2ban:

sudo nano /etc/fail2ban/jail.local

Tu môžete nastaviť prísnejší časový interval blokovania. Nájdite a odkomentujte názov. V tejto časti zmeňte parameter bantime tak, aby služba blokovala klienta na pol hodiny:


. . .
bantime=1800
. . .

Musíte si tiež nastaviť upozornenia. Najprv nájdite možnosť destemail, ktorá by mala byť tiež v súbore . Zadajte e-mailovú adresu, ktorú chcete použiť na zhromažďovanie týchto správ:


. . .
destemail= [e-mail chránený]
. . .

Zadajte akúkoľvek vhodnú hodnotu pre meno odosielateľa. Tu sa odporúča použiť popisnú hodnotu, ktorú môže poštová služba jednoducho odfiltrovať.

Potom musíte opraviť hodnotu akcie. Môžete nastaviť hodnotu action_mw, ktorá zablokuje klienta a potom odošle správu „whois“. Hodnota action_mwl robí to isté, ale tiež odosiela zodpovedajúce riadky protokolu v správe.


. . .
akcia = %(akcia_mwl)s
. . .

V časti SSH v direktíve maxretry môžete zmeniť počet neúspešných pokusov o autentifikáciu. Ak používate neštandardný port (nie 22), zadajte ho do parametra port. Ako už bolo uvedené, tento server je už povolený.

Potom nájdite sekciu nginx-http-auth. Odkomentujte hlavičku a zmeňte hodnotu povoleného parametra na "true".

. . .

povolené=pravda
. . .

Toto je všetko, čo je potrebné urobiť v tejto časti, ak webový server používa štandardné porty a jeho protokoly sú uložené v štandardnom adresári.

Reštartovanie fail2ban

Uložte a zatvorte súbor.

Potom reštartujte službu fail2ban. Niekedy je dokonca lepšie to zastaviť a potom začať znova.

sudo služba fail2ban stop
spustenie služby sudo fail2ban

Načítanie všetkých pravidiel brány firewall môže trvať niekoľko minút. Niekedy sa pravidlá pridajú až po zablokovaní prvého klienta. Po chvíli budete môcť otestovať nové pravidlá:

sudo iptables -S
-P VSTUP PRIJÍMATE
-P PREDAJ PRIJAŤ
-P AKCEPT VÝSTUPU
-N fail2ban-nginx-http-auth

-N fail2ban-ssh

-A INPUT -p tcp -m multiport --dports 80 443 -j fail2ban-nginx-http-auth


-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

-A VSTUP -i lo -j PRIJAŤ
-A INPUT -m conntrack --ctstate SÚVISIACE,NASTAVENÉ -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 22 -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 80 -j PRIJAŤ
-A VSTUP -j KAPKA
-A fail2ban-nginx-http-auth -j RETURN

-A fail2ban-ssh -j RETURN

Riadky v červenej farbe sú generované politikou fail2ban. Práve teraz nasmerujú premávku do nových, takmer prázdnych reťazcov a potom nechajú premávku prúdiť späť do INPUT reťazca.

Do týchto reťazcov budú pridané pravidlá blokovania.

Testovanie politiky blokovania

Teraz môžete otestovať pravidlá pripojením z iného servera, ktorý nemá prihlasovacie údaje na serveri fail2ban.

Skúste vytvoriť pripojenie SSH k serveru pomocou neexistujúcich poverení:

ssh [e-mail chránený] _IP_servera

Zadajte náhodnú sadu znakov pre heslo. Opakujte niekoľkokrát. V určitom okamihu fail2ban zamietne prístup a zobrazí správu „Permission denied“.

Vráťte sa na prvý server a pozrite si nové pravidlá iptables:

sudo iptables -S
-P VSTUP PRIJÍMATE
-P PREDAJ PRIJAŤ
-P AKCEPT VÝSTUPU
-N fail2ban-nginx-http-auth
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 80 443 -j fail2ban-nginx-http-auth
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A VSTUP -i lo -j PRIJAŤ
-A INPUT -m conntrack --ctstate SÚVISIACE,NASTAVENÉ -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 22 -j PRIJAŤ
-A INPUT -p tcp -m tcp --dport 80 -j PRIJAŤ
-A VSTUP -j KAPKA
-A fail2ban-nginx-http-auth -j RETURN
-A fail2ban-ssh -s 203.0.113.14/32 -j ODMIETNUTIE --reject-s icmp-port-unreachable
-A fail2ban-ssh -j RETURN

Nové pravidlo je zvýraznené červenou farbou. Blokuje prenos z adresy IP druhého servera na port SSH. Čoskoro dostanete upozornenie, že klient bol zablokovaný.

Záver

Teraz ste oboznámení so základmi fail2ban a môžete vytvoriť základnú konfiguráciu tohto nástroja.

Secure Shell nájdete všade. Od svojho vydania v roku 1995 získal SSH široké uznanie ako výkonný protokol vzdialeného prístupu pre Linux.

Ako však viete, veľká moc prichádza s veľkou zodpovednosťou. Zle nakonfigurovaný démon SSH môže byť skôr hrozbou ako pomocou. V tomto článku sa pozrieme na päť krokov na posilnenie zabezpečenia SSH.

1. Zakázať prihlásenie root.

Najjednoduchší krok. Je zrejmé, že existuje niekoľko dôvodov, prečo povoliť prihlásenie root cez SSH. Zakázanie takéhoto prístupu je pomerne jednoduché a zvýši sa tým bezpečnosť.

Nájdite /etc/ssh/sshd_config (môže byť v inom adresári, závisí to od distribúcie). V ňom definujeme miesto PermitRootLogin a nahradíme hodnotu "no":

PermitRootLogin č

To samozrejme nikomu nezabráni v nabúraní sa do systému pod bežným používateľom, stále to však poslúži ako extra bariéra pre dominanciu systému.

Po prečítaní všetkého napísaného vyššie a uvedení do praxe nakoniec získame kľúče na autorizáciu na serveri. Po uistení sa, že všetko funguje, môžete interaktívny vstup zakázať:

HesloAutentifikácia č
ChallengeResponseAuthentication č

Pomocou tohto skriptu Python môže správca automaticky zakázať hostiteľov v prípade neúspešného prihlásenia, čím ich navždy zakáže. Najjednoduchší spôsob nastavenie:

Europa ~ # emerge -pv denyhosts
Toto sú balíčky, ktoré by sa zlúčili v tomto poradí:
Výpočet závislostí... hotovo!
app-admin/denyhosts-2,5 0 kB
Celková veľkosť stiahnutých súborov: 0 kB
europa ~ # emerge denyhosts

K programu nie je veľa dokumentácie (ak napríklad niečo existuje), avšak všetky možnosti konfigurácie sú bežne popísané v konfiguračný súbor.

Europa $ nano -w /etc/denyhosts.conf

Nemyslím si, že konfigurácia DenyHosts spôsobí nejaké špeciálne problémy - stačí si pozorne prečítať konfiguráciu.

Po konfigurácii môžete program spustiť ako démona alebo cez plánovač. Na démonovi Gentoo:

rc-update pridať denyhosts predvolene

Cez cron, povedzme každých 10 minút:

Python /usr/bin/denyhosts -c /etc/denyhosts.conf

Radosť z DenyHost nespočíva len v blokovaní hostiteľov, ktorí sa snažia dosiahnuť váš server SSH, ale aj v tom, že môžete synchronizovať svoju čiernu listinu so servermi DenyHost. Tým sa vytvorí spoločný zoznam hostiteľov obsahujúci všetkých útočníkov. Zabráni útoku na koreň.

4. Zmeňte číslo portu.

Väčšina pokusov o hackovanie pochádza z automatických skriptov, ktoré skenujú sieť na démonov SSH. V drvivej väčšine prípadov sa snažia prelomiť port 22, čo nám hrá len do karát. Zmenou portu automaticky prerušíme väčšinu pokusov o neoprávnený prístup.

Mali by ste to zmeniť v konfigurácii.

Niekoľko pravidiel na ochranu prístupu na ssh server.

1. Pridajte do konfigurácie ssh servera, aby ste okrem štandardného portu mohli počúvať ešte jeden port. (Pre ľahšie zapamätanie môžete použiť 4 opakujúce sa čísla pre všetky vaše servery).

$ sudo vi /etc/ssh/sshd_config Port 22 Port xxxx

2. Volania na port 22 obmedzujeme len na dôveryhodné IP adresy * napríklad 8.8.8.8 (takýchto pravidiel môžete urobiť niekoľko, práca / domov)

$ sudo vi /etc/sysconfig/iptables -A INPUT -s 8.8.8.8 -p tcp -m state --state NEW -m tcp --dport 22 -j PRIJAŤ

3. Nezabudnite skontrolovať, či používame ipv6, ak áno, zatvorte prebytok

$ sudo vi /etc/sysconfig/ip6tables *filter:INPUT ACCEPT :FORWARD ACCEPT :OUTPUT ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p ipv6-icmp -j ACCEPT -A INPUT - i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j PRIJAŤ -VSTUP -j ODMIETNUŤ --odmietnuť-s icmp6-adm-zakázané -A VPRED -j ZAMIETNUŤ --odmietnuť-s icmp6-adm-zakázané ZAKÚPIŤ

Aby ste mohli používať ssh iba na konkrétnej adrese, stačí v konfiguračnom súbore sshd_config zadajte parameter ListenAddress(napr. ListenAddress 74.125.200.100). V tomto prípade bude ssh dostupné iba na tejto adrese a nebude fungovať cez ipv6

4. Použite konfiguračný súbor ssh na strane klienta.

miesto: ~/.ssh/config

# oprava Zápis zlyhal: prerušené vedenie ServerAliveInterval 120 TCPKeepAlive nie # použiť krátke názvy Host dev-vps # IP adresa alebo verejná Doménové meno Názov hostiteľa 127.0.0.3 # Pod ktorým používateľom sa má prihlásiť Vývojár používateľa # Súbor kľúča na autorizáciu (ak sa používa) IdentityFile ~/.ssh/id_rsa.dev

A ďalší príklad použitia konfiguračného súboru:
{<1>}

Hostiteľ ssh-server-1 Hostname 1.2.3.4 User dev Port 1234 Host ssh-server-2 User root # Hostname 192.168.10.20 # nc bez -q0 ak RHEL založené a s -q0 debian založené IdentityFile ~/.ssh/id_rsa.work -pc ProxyCommand ssh -q0 ssh-server-1 nc -q0 192.168.10.20 22

A teraz, keď sa pripájame na ssh-server-1, okamžite preskočíme na hostiteľa, ktorého potrebujeme. (Vhodné na použitie napríklad s rôznymi kľúčmi na serveroch)

Ako aj Hipster možnosť proxy:

{<2>}

Stiahnite si klienta ngrok na server za firewallom. Spustite binárny súbor a zadajte, ktorý port musíme poslať ďalej

SSH je protokol používaný na zabezpečenie a šifrovanie prenosu dát cez sieť. Je široko používaný v kruhu linux správcom na správu vzdialeného servera. Server internetového pripojenia je veľmi často napadnutý službou SSH s cieľom získať prístup k serveru. Najbežnejší je výber hesla používateľa s právami správcu. V tejto príručke si prejdeme niekoľko základných bezpečnostných tipov. SSH spojenia.

Nastavte zložité heslo

Váš server môže byť napadnutý útočníkmi, ktorí sa snažia uhádnuť heslo k serveru SSH na zníženie rizika hackingu - odporúčame nastaviť heslá pre účty servera, ktoré zodpovedajú nasledujúcim parametrom:

  • Minimálne 8 znakov
  • Použite veľké a malé písmená (AaBb)
  • Používajte písmená - čísla a znaky ( [e-mail chránený])

Silné heslo ochráni nielen pred hackermi SSH protokol, ale vo všeobecnosti zlepší bezpečnosť servera.

Použite kľúče SSH

Dodatočnou ochranou pre váš server bude použitie kľúča na pripojenie k serveru cez SSH, musíte vygenerovať kľúč na počítači / serveri, z ktorého sa budete pripájať:

Ako vytvoriť SSH zapnite kľúč OS Windows:

Ak chcete vytvoriť kľúč linux zadajte príkaz:

ssh-keygen -t rsa

Ak chcete nainštalovať tento kľúč na server, ku ktorému sa pripojíte, zadajte nasledujúci príkaz:

ssh-copy-id -p 22 [e-mail chránený]

  • -p 22- port servera, na ktorom pracuje SSH protokol (môže sa zmeniť, viac podrobností nižšie)
  • admin- Prihláste sa z vášho servera
  • 192.168.1.1 - IP adresa vášho servera

Ak bolo všetko vykonané správne, teraz sa môžete pripojiť k serveru pomocou kľúča a nemusíte zakaždým zadávať heslo.

Použite neštandardný port

Štandardné SSH služba spustená na serveri počúva 22 Prístav na pripojenie/prenos dát to môžu využiť útočníci, ktorí sa spoliehajú na to, že väčšina používateľov nemení štandardný port pre pripojenie k serveru. Preto zmeníme port, čím opäť znížime riziko hacknutia nášho servera.

Ak to chcete urobiť, otvorte konfiguračný súbor SSH na serveri:

sudo nano /etc/ssh/sshd_config

Nájdite v ňom takto komentovaný riadok:

# Port 22

Vymažte symbol # - odstrániť možnosť komentára a zmeniť 22 na ľubovoľné číslo od 11060 a vo vzostupnom poradí, napríklad použijeme 11 060 , riadok by mal teraz vyzerať takto:

Port 11060

Uložiť konfiguráciu " ctrl+O"a ukončite editor" ctrl+X".

Je potrebné reštartovať SSH služba - ak chcete prijať nové nastavenia, spustite príkaz:

reštart služby sudo sshd

Preto sme zmenili port pre pripojenie, odteraz - na pripojenie k serveru musíte zadať neštandardný port s možnosťou -p 11060 , napríklad:

ssh -p 11060 [e-mail chránený]

Ponechajte prístup len časti používateľov

SSH pripojenie môže byť obmedzené pre jednotlivé účty, napríklad ak má server tri účty: admin , Sergey , Alex- Máte možnosť povoliť vzdialené pripojenie len pre niektoré z nich. Ak to chcete urobiť, otvorte konfiguračný súbor SSH:

V tomto súbore prejdite šípkami nadol na posledný riadok a pridajte nový s nasledujúcim obsahom:

AllowUsers admin alex

Uložiť konfiguráciu " ctrl+O"a ukončite editor" ctrl+X".

Znova načítajte službu SSH:

reštart služby sudo sshd

Tým ste dovolili vzdialený prístup pre používateľov admin a Alex, zatiaľ čo používateľ Sergey sa už nedá pripojiť na diaľku.

Povoliť protokol SSH 2

Podľa normy SSH funguje v režime verzie 1, táto verzia je zastaraná a má veľa zraniteľností, ale pre lepšiu bezpečnosť odporúčame prejsť do režimu verzie 2. Otvorte konfiguračný súbor SSH:

sudo nano /etc/ssh/ssh_config

Nájdite riadok:

#Protokol 2

Odstrániť symbol # - ak chcete odstrániť možnosť komentára a použiť tento riadok, malo by to dopadnúť takto:

Protokol 2

Uložiť konfiguráciu " ctrl+O"a ukončite editor" ctrl+X".

Znova načítajte službu SSH:

reštart služby sudo sshd

Zakázať prázdne heslá

Predvolené SSH služba zakazuje používateľom bez hesla pripojenie, ale táto možnosť môže byť na vašom serveri zakázaná, preto otvorte konfiguračný súbor SSH:

sudo nano /etc/ssh/ssh_config

Nájdite čiaru PermitEmptyPasswords a uistite sa, že hodnota je "nie".

PovolenieEmptyHeslá č

Zapnite podrobné zapisovanie do denníka

Do servisu SSH uchovával denník neúspešných pripojení s uvedením IP adries, otvorte konfiguračný súbor SSH:

sudo nano /etc/ssh/ssh_config

Nájdite čiaru LogLevel a namiesto toho INFOšpecifikovať VERBOSE, riadok by mal vyzerať takto:

LogLevel VERBOSE

Uložte súbor " ctrl+O"a ukončite editor" ctrl+X".

Znova načítajte službu SSH:

reštart služby sudo sshd

Môžete to skontrolovať zadaním príkazu:

cat /var/log/secure

Systém zobrazí tieto informácie:

21. júna 13:06:28 centos sshd: Zlyhalo heslo pre root z 118.212.143.47 port 48263 ssh2

To znamená, že podľa tohto záznamu vidíme, že došlo k neúspešnému pokusu preniknúť na server zo zadanej adresy.

Ďakujem za pozornosť, to je všetko.

V tomto krátkom príspevku som dal dohromady spôsoby, ako zvýšiť bezpečnosť ssh servera. Najzákladnejšie a najjednoduchšie techniky sú opísané a zložitejšie sú uvedené len pre čitateľov, ktorí majú záujem.

Základné triky

Všetky akcie sa vykonávajú v konfiguračnom súbore démona sshd -- /etc/ssh/sshd_config . Nižšie je časť môjho konfiguračného súboru s komentármi.

### Sieť ### # Použite neštandardný port (>1024) port 5679 # Používajte iba pripojenia IPv4 # inet = IPv4, inet6 = IPv6, ľubovoľné = obe AddressFamily inet # Môže akceptovať pripojenia iba z určitých adries IP #ListenAddress 0.0.0.0 # Používame druhú verziu protokolu, pretože prvá je # známa zraniteľnosť protokolu 2 # Zakážte presmerovanie grafiky (X server), kým to # jasne nepotrebujete X11Preposielanie nie # Zakážte Vypnite TCPKeepAlive a namiesto toho použite ClientAliveInterval, # na zabránenie útokom ako TCP Spoofing TCPKeepAlive nie # Vyhoďte používateľa po 10 minútach ( 600 sec) nečinnosti ClientAliveInterval 600 ClientAliveCountMax 3 ### Konfiguračné súbory kľúča ### # HostKeys pre protokol verzie 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # Použiť proces # na proces neprivilegovaného klienta traffic # sandbox - openSSH >= 5,9 ("áno" - pre nižšie verzie) UsePrivilegeSeparation sandbox # Ak zmeníte tieto hodnoty, vyžaduje sa odstránenie starý kľúč# /etc/ssh/ssh_host_rsa_key(,.pub) a vytvorte nový # reštartovaním sshd. # # Životnosť kľúča, t.j. ako dlho bude trvať generovanie nový kľúč# v prípade, že bola použitá predchádzajúca. KeyRegenerationInterval 1h # Sila kľúča ServerKeyBits 2048 # Povoliť autentifikáciu verejným kľúčom PubkeyAuthentication yes # Uložiť dôveryhodné kľúče do používateľského adresára AuthorizedKeysFile .ssh/authorized_keys ### Protokolovanie ### # Predpona pre syslog SyslogFacility Úroveň AUTH # Samotnú úroveň AUTH # Log # Autentifikácia ### # zoznam povolených používateľov AllowUsers ivan # obmedziť čas na zadanie hesla pre kľúč ssh LoginGraceTime 30s # zakázať vzdialené prihlásenie pod účtu root PermitRootLogin nie # Povoliť explicitnú kontrolu práv súborov a adresárov pomocou ssh kľúčov StrictModes áno # Koľkokrát znova požiadať o heslo, ak je zadanie nesprávne MaxAuthTries 3 # Zakázať prihlásenie s prázdnym heslom PermitEmptyPasswords nie # Zakázať prihlásenie pomocou heslo v princípe # (Namiesto tohto používame verejný / súkromný kľúč) PasswordAuthentication no # Zakázať používanie autentifikácie "výzva-odpoveď", # pretože pri použití kľúčov je to zbytočné ChallengeResponseAuthentication nie # Keďže nepoužívame heslo, nepotrebujeme ani (PAM, login(1)) UsePAM no UseLogin no # Umožniť klientovi odovzdať len určitú množinu premenných prostredia # RH BZ#CVE-2014-2532 # ShellShock exploit AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELELEPHONE LC_MEASUREMENT_IDEn Accept

Toto sú parametre, ktoré sa konfigurujú v konfiguračnom súbore sshd. Po zmene nastavení je potrebné reštartovať službu sshd.

Komentáre

  • Pri použití autorizácie na základe kľúča sa vyžaduje kľúč predtým vygenerovať na klientskom počítači a skopírovať verejný kľúč na server. Príklad:
klient $ klient ssh-keygen $ cat ~/.ssh/id_rsa.pub | ssh -p 5679 [e-mail chránený]"cat >> ~/.ssh/authorized_keys"
  • Súbor /var/log/auth.log bude obsahovať správy od sshd. Ak tento súbor chýba, musíte nakonfigurovať systém protokolovania. príklad pre syslog a syslon-ng . Používam syslog-ng a potrebujem pridať nasledujúce riadky do súboru /etc/syslog-ng/syslog-ng.conf:
cieľový authlog ( file("/var/log/auth.log"); ); log ( source(src); destination(authlog); );

a reštartujte službu syslog-ng.

  • Ak používate neštandardný port, možno budete musieť nakonfigurovať bránu firewall (iptables, firewalld atď.).
    Príklad nastavenia pre iptables:
root# iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 5679 -j PRIJAŤ root# službu iptables uložiť root# iptables -L -n Reťazový VSTUP (prijatie politiky) cieľ prot opt ​​​​zdrojový cieľ PRIJAŤ icmp -- 0.0.0.0/0 0.0.0.0/0 PRIJAŤ tcp -- 0.0.0.0/0 0.0.0.0/0 stav NOVÝ tcp dpt:22 PRIJAŤ tcp -- 0.0.0.0/0 0.0.0.0/0 stav tcp dpt :80 PRIJAŤ tcp -- 0.0.0.0/0 0.0.0.0/0 stav NOVÝ, ZATVORENÝ tcp dpt: 5679 ...

Ak toto nestačí

Je to len základné nastavenia. Okrem toho môžete konfigurovať

  • firewall (iptables)