Kā aizsargāt SSH serveri no brutāla spēka uzbrukumiem, izmantojot fail2ban. SSH servera aizsardzība Izmantojiet nestandarta portu

SSH ļauj izveidot drošu savienojumu ar serveri, taču pašam SSH pakalpojumam ir jābūt piekļuvei internetam, lai tas darbotos pareizi. Tas rada uzbrukuma vektoru potenciālajiem uzbrucējiem, tāpēc SSH ir nepieciešama papildu aizsardzība.

Kopumā jebkurš pakalpojums ar piekļuvi tīklam ir potenciāls mērķis. Šo pakalpojumu žurnālos varat pamanīt atkārtotus, sistemātiskus pieteikšanās mēģinājumus — tie ir rupja spēka uzbrukumi, ko veic lietotāji un roboti.

Fail2ban pakalpojums var mazināt uzbrukumus, izmantojot noteikumus, kas automātiski pārkonfigurē iptables ugunsmūri, pamatojoties uz iepriekš noteiktu neveiksmīgu pieteikšanās mēģinājumu skaitu. Tas ļaus serverim nekavējoties reaģēt uz nesankcionētu piekļuvi bez administratora iejaukšanās.

Šī rokasgrāmata palīdzēs instalēt un konfigurēt fail2ban Ubuntu 14.04 serverī.

Fail2ban instalēšana

Ubuntu repozitorijs nodrošina fail2ban pakotni, tāpēc to var instalēt, izmantojot standarta pakotņu pārvaldnieku.

Atjauniniet pakotnes indeksu un instalējiet fail2ban, izmantojot šīs komandas:

sudo apt-get atjauninājums
sudo apt-get install fail2ban

Tagad jūs varat sākt utilīta iestatīšanu.

fail2ban konfigurācijas

Fail2ban konfigurācijas faili tiek glabāti direktorijā /etc/fail2ban. Noklusējuma iestatījumus var atrast failā jail.conf.

Tā kā pakotnes atjaunināšanas laikā šo failu var mainīt, tas nav jārediģē. Labāk ir pārkopēt tā saturu citā failā un pielāgot parametrus tur. Lai nodrošinātu šo divu failu pareizu darbību, jaunajā failā vislabāk ir atstāt tikai tos iestatījumus, kurus vēlaties ignorēt failā jail.local. Visi noklusējuma iestatījumi tiks nolasīti no faila jail.conf.

Kopējiet jail.conf un izmantojiet to kā pamatu failam jail.local. Lai to izdarītu, ievadiet:

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

Pēc tam apskatiet jail.conf:

sudo nano /etc/fail2ban/jail.conf

Dažus parametrus var atjaunināt šajā failā. Sadaļas iestatījumi attieksies uz visiem fail2ban atbalstītajiem pakalpojumiem (ja vien šīs vērtības nav ignorētas šo pakalpojumu konfigurācijas failos).


. . .
ignoreip = 127.0.0.1/8
. . .

Parametrs ignoreip konfigurē avota adreses, kuras fail2ban ignorēs. Pēc noklusējuma tas atļauj jebkuru trafiku, kas nāk no vietējās mašīnas. Varat pievienot citas ignorējamās adreses, ievietojot tās ignoreip direktīvas beigās, atdalot tās ar atstarpi.


. . .
bantime = 600
. . .

Parametrs bantime iestata laiku, kurā klients tiks bloķēts, ja autentifikācija neizdodas. Tās vērtību mēra sekundēs. Noklusējuma vērtība ir 600 sekundes (10 minūtes).


. . .
atrašanas laiks = 600
maksretrija = 3
. . .

Nākamie divi parametri, kuriem jāpievērš uzmanība, ir findtime un maxretry. Kopā tie nosaka nosacījumus, saskaņā ar kuriem tiks bloķēti nelegālie lietotāji.

Mainīgais maxretry norāda pieteikšanās mēģinājumu skaitu, un findtime norāda laika intervālu, kurā lietotājam ir jāveic autentifikācija. Ja klients pārsniegs kādu no šiem rādītājiem, viņš tiks bloķēts. Pēc noklusējuma fail2ban pakalpojums bloķē klientus, kuri 10 minūšu laikā 3 reizes nesniedz akreditācijas datus.


. . .
destemail = root@localhost
sūtītāja vārds = Fail2Ban
mta = sendmail
. . .

Parametri destemail, sendername un mta ļauj konfigurēt e-pasta brīdinājumus. Parametrs destemail norāda adresi e-pasts, kurai vajadzētu saņemt ziņojumus par bloķētajiem lietotājiem. Parametrs sendername norāda ziņojuma sūtītāju. Mta parametrs nosaka, kura pasta pakalpojumu tiks izmantots pasta sūtīšanai. Pievienojiet šos parametrus sadaļai jail.local un iestatiet atbilstošās vērtības.


. . .
darbība = $(action_)s
. . .

Šis iestatījums konfigurē fail2ban darbības, ja tas tiek bloķēts. Darbības_ vērtība failā ir definēta nedaudz pirms šī parametra. Noklusējuma darbība bloķēs uzbrucēja trafiku, līdz beidzas aizliegums, pārkonfigurējot ugunsmūri.

Ja vēlaties konfigurēt e-pasta brīdinājumus, failam jail.local pievienojiet darbības elementu vai atņemiet to no komentāriem un mainiet tā vērtību no action_ uz action_mw. Ja vēlaties, lai e-pastā būtu iekļautas atbilstošās rindas no žurnāliem, varat norādīt action_mwl vērtību. Ja izlemjat izmantot e-pasta brīdinājumus, pārliecinieties, vai jūsu e-pasta iestatījumi tos atbalsta.

Individuālie parametri

Atbalsts atsevišķiem pakalpojumiem ir iekļauts īpašās tāda paša nosaukuma sadaļās. Piemēram, sadaļā var norādīt ssh servisa parametrus.

Katru no šīm sadaļām var iespējot, jail.local atceļot sadaļas galvenes komentārus un mainot iespējoto rindiņu uz "true":


. . .
iespējots = patiess
. . .

Pēc noklusējuma tiek atbalstīts tikai SSH pakalpojums, un visi pārējie pakalpojumi ir atspējoti.

Šajās sadaļās par pamatu tiek izmantotas sadaļā iestatītās vērtības un vajadzības gadījumā tās tiek pielāgotas. Lai ignorētu vērtības, pievienojiet attiecīgā pakalpojuma sadaļu vietnei jail.local un mainiet tās vērtības.

Šeit ir iestatīti arī daži citi parametri. Filtra parametrs palīdz noteikt, vai rinda žurnālā norāda uz neveiksmīgu autentifikācijas mēģinājumu; Parametrs logpath norāda fail2ban, kur atrodas šī konkrētā pakalpojuma žurnāli.

Filtra parametra vērtība ir saite uz failu ar .conf paplašinājumu, kas atrodas direktorijā /etc/fail2ban/filter.d. Šie faili satur regulāras izteiksmes, kas nosaka, vai žurnāla rinda ir ziņojums par neveiksmīgu autentifikācijas mēģinājumu. Šie faili ir ārpus šīs apmācības darbības jomas, jo tie ir diezgan sarežģīti un vairumā gadījumu noklusējuma iestatījumi ir labi.

Šajā direktorijā varat skatīt filtrus:

ls /etc/fail2ban/filter.d

Atrodiet failu, kas saistīts ar nepieciešamo pakalpojumu, un atveriet to ar teksta redaktors. Lielākā daļa failu ir diezgan labi komentēti, un jūs varat iepazīties ar pakalpojuma aizsardzības skriptu. Lielākajai daļai šo filtru ir atbilstošas ​​sadaļas failā jail.conf (pēc noklusējuma tie ir atspējoti). Ja nepieciešams, tos var iespējot failā jail.local.

Pieņemsim, ka jums ir vietne, kas tiek apkalpota, izmantojot Nginx. Tīmekļa servera žurnāli tiek pastāvīgi atjaunināti ar neveiksmīgiem pieteikšanās mēģinājumiem. Fail2ban utilīta var izmantot failu nginx-http-auth.conf, lai pastāvīgi pārbaudītu /var/log/nginx/error.log.

Gandrīz visi tam nepieciešamie parametri jau ir faila /etc/fail2ban/jail.conf sadaļā. Jums vienkārši jāatmet šīs sadaļas komentārs failā jail.local un jāiestata iespējotais parametrs uz True.

. . .
iespējots = patiess
. . .

Pēc tam jums ir jārestartē fail2ban.

Fail2ban iestatīšana

Tagad jūs zināt fail2ban darbības pamatus. Mēģiniet iestatīt SSH un Nginx pakalpojuma automātiskās bloķēšanas politiku. Jums ir nepieciešams arī fail2ban rīks, lai nosūtītu e-pastu, ja IP adrese ir bloķēta.

Lai sāktu, instalējiet nepieciešamo programmatūru.

Jums būs nepieciešams nginx, jo fail2ban pārraudzīs savus žurnālus un sendmail, lai nosūtītu paziņojumus. Jums ir nepieciešama arī iptables-persistent pakotne, lai serveris saglabātu un automātiski ielādētu ugunsmūra noteikumus, kad serveris sāk sāknēties. Visas šīs pakotnes var lejupielādēt no standarta Ubuntu krātuvēm:

sudo apt-get atjauninājums
sudo apt-get instalēt nginx sendmail iptables-persistent

Apturiet fail2ban pakalpojumu, lai iestatītu pamata ugunsmūri.

Ugunsmūra iestatīšana

Jāatbalsta pamata ugunsmūris izveidoti savienojumi, kā arī trafiku, ko ģenerē pats serveris, un trafiku, kas paredzēts SSH un tīmekļa servera portiem. Visa pārējā satiksme tiks bloķēta. Noteikumi izskatās šādi:

sudo iptables -A IEVADE -i lo -j ACCEPT
sudo iptables -I INPUT -m conntrack --ctstate IZVEIDOTS, SAISTĪTS -j ACCEPT
sudo iptables -A IEVADE -p tcp -dport 22 -j ACCEPT
sudo iptables -A IEVADE -p tcp -m multiport -dports 80,443 -j ACCEPT
sudo iptables -I INPUT -j DROP

Šīs komandas īsteno iepriekš minēto politiku. Lai skatītu pašreizējos ugunsmūra noteikumus, ierakstiet:

sudo iptables -S
-P IEVADE AKCEPT
-P UZPRIEKŠU AKCEPT
-P OUTPUT ACCEPT
-A IEVADE -i lo -j ACCEPT




-IEVADE -j KRIENS

Saglabājiet savus ugunsmūra noteikumus, lai tie nepazustu pēc atsāknēšanas.

sudo dpkg-reconfigure iptables-persistent

Restartēt fail2ban:

sudo pakalpojuma fail2ban startēšana

Vaicājuma ugunsmūra noteikumi:

sudo iptables -S
-P IEVADE AKCEPT
-P UZPRIEKŠU AKCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh

-A IEVADE -i lo -j ACCEPT
-A IEVADE -m conntrack --ctstate SAISTĪTS, IZVEIDOTS -j ACCEPT
-A IEVADE -p tcp -m tcp -dport 22 -j ACCEPT
-IEVADE -p tcp -m tcp -dport 80 -j ACCEPT
-IEVADE -j KRIENS
-A fail2ban-ssh -j RETURN

Katrai ķēdei tagad ir sava noklusējuma politika. Ugunsmūrī ir arī pieci pamatnoteikumi. Fail2ban struktūra ir iezīmēta sarkanā krāsā: šis rīks jau ievieš SSH aizlieguma noteikumus. Dažreiz šī struktūra sākumā netiek parādīta, jo fail2ban var nepievienot struktūru līdz pirmajam aizliegumam.

Fail2ban iestatīšana

Tagad failam jail.local jāpievieno fail2ban iestatījumi:

sudo nano /etc/fail2ban/jail.local

Šeit varat iestatīt stingrāku bloķēšanas laika intervālu. Atrodiet virsrakstu un noņemiet komentāru. Šajā sadaļā mainiet bantime parametru, lai pakalpojums bloķētu klientu uz pusstundu:


. . .
bantime = 1800
. . .

Jums ir arī jāiestata paziņojumi. Vispirms atrodiet parametru destemail, kuram arī vajadzētu būt sadaļā. Ievadiet e-pasta adresi, kuru vēlaties izmantot šo ziņojumu apkopošanai:


. . .
destemail = [aizsargāts ar e-pastu]
. . .

Laukā Sendername norādiet jebkuru ērtu vērtību. Šeit ieteicams izmantot aprakstošu vērtību, ko e-pasta pakalpojums var viegli filtrēt.

Tad jums ir jākoriģē darbības vērtība. Varat iestatīt action_mw, lai bloķētu klientu, un pēc tam nosūtīt ziņojumu “whois”. Vērtība action_mwl dara to pašu, taču arī nosūta ziņojumā atbilstošās žurnāla rindas.


. . .
darbība = %(action_mwl)s
. . .

Maxretry direktīvas SSH sadaļā varat mainīt neveiksmīgo autentifikācijas mēģinājumu skaitu. Ja izmantojat nestandarta portu (nevis 22), norādiet to porta parametrā. Kā minēts iepriekš, šis serveris jau ir iespējots.

Pēc tam atrodiet sadaļu nginx-http-auth. Atceliet galvenes komentāru un mainiet iespējoto parametru uz “true”.

. . .

iespējots = patiess
. . .

Tas ir viss, kas jums jādara šajā sadaļā, ja tīmekļa serveris izmanto standarta portus un tā žurnāli tiek glabāti standarta direktorijā.

Restartējiet fail2ban

Saglabājiet un aizveriet failu.

Pēc tam restartējiet fail2ban pakalpojumu. Dažreiz ir pat labāk to pārtraukt un pēc tam sākt no jauna.

sudo pakalpojuma fail2ban apstāšanās
sudo pakalpojums fail2ban start

Var paiet dažas minūtes, līdz tiks lejupielādēti visi ugunsmūra noteikumi. Dažreiz noteikumi netiek pievienoti, kamēr pirmais klients nav bloķēts. Pēc kāda laika varēsiet pārbaudīt jaunos noteikumus:

sudo iptables -S
-P IEVADE AKCEPT
-P UZPRIEKŠU AKCEPT
-P OUTPUT ACCEPT
-N fail2ban-nginx-http-auth

-N fail2ban-ssh

-IEVADE -p tcp -m multiport -dports 80,443 -j fail2ban-nginx-http-auth


-IEVADE -p tcp -m multiport -dports 22 -j fail2ban-ssh

-A IEVADE -i lo -j ACCEPT
-A IEVADE -m conntrack --ctstate SAISTĪTS, IZVEIDOTS -j ACCEPT
-A IEVADE -p tcp -m tcp -dport 22 -j ACCEPT
-IEVADE -p tcp -m tcp -dport 80 -j ACCEPT
-IEVADE -j KRIENS
-A fail2ban-nginx-http-auth -j RETURN

-A fail2ban-ssh -j RETURN

Fail2ban politikas izveidotās līnijas ir iezīmētas sarkanā krāsā. Pašlaik viņi vienkārši novirza trafiku uz jaunām, galvenokārt tukšām ķēdēm un pēc tam novirza satiksmes plūsmu atpakaļ uz INPUT ķēdi.

Šīm ķēdēm tiks pievienoti bloķēšanas noteikumi.

Bloķēšanas politikas pārbaude

Tagad varat pārbaudīt noteikumus, izveidojot savienojumu no cita servera, kuram fail2ban serverī nav akreditācijas datu.

Mēģiniet izveidot SSH savienojumu ar serveri, izmantojot neesošus akreditācijas datus:

ssh blah@fail2ban_server_IP

Ievadiet nejaušu rakstzīmju kopu kā savu paroli. Atkārtojiet vairākas reizes. Kādā brīdī fail2ban liegs piekļuvi un parādīs ziņojumu “Atļauja liegta”.

Atgriezieties pirmajā serverī un skatiet jaunos iptables noteikumus:

sudo iptables -S
-P IEVADE AKCEPT
-P UZPRIEKŠU AKCEPT
-P OUTPUT ACCEPT
-N fail2ban-nginx-http-auth
-N fail2ban-ssh
-IEVADE -p tcp -m multiport -dports 80,443 -j fail2ban-nginx-http-auth
-IEVADE -p tcp -m multiport -dports 22 -j fail2ban-ssh
-A IEVADE -i lo -j ACCEPT
-A IEVADE -m conntrack --ctstate SAISTĪTS, IZVEIDOTS -j ACCEPT
-A IEVADE -p tcp -m tcp -dport 22 -j ACCEPT
-IEVADE -p tcp -m tcp -dport 80 -j ACCEPT
-IEVADE -j KRIENS
-A fail2ban-nginx-http-auth -j RETURN
-A fail2ban-ssh -s 203.0.113.14/32 -j REJECT --reject-ar icmp-port-unreachable
-A fail2ban-ssh -j RETURN

Jaunais noteikums ir iezīmēts sarkanā krāsā. Tas bloķē trafiku no otrā servera IP adreses uz SSH portu. Drīzumā saņemsit paziņojumu, ka klients ir bloķēts.

Secinājums

Tagad esat iepazinies ar fail2ban pamatiem un varat izveidot šī rīka pamata konfigurāciju.

Secure Shell var atrast visur. Kopš tā izlaišanas 1995. gadā SSH ir kļuvis plaši izmantots kā jaudīgs attālās piekļuves protokols operētājsistēmai Linux.

Tomēr, kā zināms, ar lielu spēku nāk liela atbildība. Nepareizi konfigurēts SSH dēmons var būt vairāk drauds nekā palīdzība. Šajā rakstā mēs apskatīsim piecus soļus, lai nostiprinātu SSH drošību.

1. Atspējojiet root pieteikšanos.

Vienkāršākais solis. Acīmredzot ir maz iemesla atļaut root pieteikšanos, izmantojot SSH. Šādas piekļuves atspējošana ir diezgan vienkārša un uzlabos drošību.

Atradīsim /etc/ssh/sshd_config (tas var atrasties citā direktorijā, tas ir atkarīgs no izplatīšanas). Tajā mēs definēsim PermitRootLogin atrašanās vietu un aizstāsim vērtību ar “no”:

PermitRootLogin Nr

Protams, tas nevienam netraucēs ielauzties sistēmā kā parastam lietotājam, taču tas tik un tā kalpos kā papildu šķērslis sistēmas dominēšanai.

Izlasot visu iepriekš rakstīto un īstenojot to praksē, mēs galu galā saņemsim atslēgas autorizācijai serverī. Kad esat pārliecināts, ka viss darbojas, varat atspējot interaktīvo ievadi.

Parole Autentifikācijas Nr
ChallengeResponseAuthentication Nr

Izmantojot šo Python skriptu, administrators var automātiski pievienot saimniekdatorus melnajam sarakstam neveiksmīgas pieteikšanās gadījumā, aizliedzot tos uz visiem laikiem. Vienkāršākais veids iestatījumi:

Europa ~ # emerge -pv denyhosts
Šīs ir pakotnes, kas tiks apvienotas šādā secībā:
Atkarību aprēķināšana... darīts!
app-admin/denyhosts-2,5 0 kB
Kopējais lejupielāžu lielums: 0 kB
europa ~ # emerge denyhosts

Programmai nav daudz dokumentācijas (piemēram, ja tāda ir), taču visas konfigurācijas opcijas parasti ir aprakstītas konfigurācijas fails.

Europa $ nano -w /etc/denyhosts.conf

Es nedomāju, ka DenyHosts konfigurēšana radīs īpašas problēmas - vienkārši uzmanīgi izlasiet konfigurāciju.

Pēc konfigurēšanas varat palaist programmu kā dēmonu vai caur plānotāju. Gentoo dēmonā:

Rc-update pievienot denyhosts noklusējuma

Izmantojot cron, sakiet ik pēc 10 minūtēm:

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

DenyHost prieks ir ne tikai tas, ka tiek bloķēti saimnieki, kas mēģina piekļūt jūsu SSH serverim, bet arī tas, ka varat sinhronizēt savu “melno sarakstu” ar DenyHost serveriem. Tādējādi tiek izveidots kolektīvs saimniekdatoru saraksts, kurā ir iekļauti visi uzbrucēji. Tas novērsīs uzbrukumu saknē.

4. Mainiet porta numuru.

Lielākā daļa uzlaušanas mēģinājumu nāk no automatizētiem skriptiem, kas tīklā skenē SSH dēmonus. Lielākajā daļā gadījumu viņi mēģina ielauzties 22. ostā, kas spēlē tikai mūsu rokās. Mainot portu, mēs automātiski pārtrauksim lielāko daļu nesankcionētas piekļuves mēģinājumu.

Ir vērts mainīt konfigurāciju.

Vairāki noteikumi piekļuves ssh serverim aizsardzībai.

1. Pievienojiet ssh servera konfigurācijai, lai papildus standarta portam klausītos vēl vienu portu. (Lai būtu vieglāk atcerēties, varat izmantot 4 atkārtotus skaitļus visiem saviem serveriem).

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

2. Mēs ierobežojam zvanus uz portu 22 tikai uz uzticamām IP adresēm *piemēram, 8.8.8.8 (varat izveidot vairākus šādus noteikumus, darbs/mājas)

$ sudo vi /etc/sysconfig/iptables -A IEVADE -s 8.8.8.8 -p tcp -m statuss --state JAUNS -m tcp --dport 22 -j ACCEPT

3. Neaizmirstiet pārbaudīt, vai mēs izmantojam ipv6, tad aizveriet nevajadzīgo

$ sudo vi /etc/sysconfig/ip6tables *filtrs: IEVADE ACCEPT :FORWARD ACCEPT :OUTPUT ACCEPT -A INPUT -m statuss -state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p ipv6-icmp -j ACCEPT -A INPUT i lo -j ACCEPT -A INPUT -m status --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -j REJECT -noraidīt-ar icmp6-adm-aizliegts -A FORWARD -j REJECT -noraidīt-ar icmp6-adm-aizliegts COMMIT

Lai izmantotu ssh tikai noteiktā adresē, pietiek ar to konfigurācijas failā sshd_config norādiet parametru Klausieties Adrese(piemēram, ListenAddress 74.125.200.100). Šajā gadījumā ssh būs pieejams tikai šajā adresē un nedarbosies, izmantojot ipv6

4. Izmantojiet ssh konfigurācijas failu klienta pusē.

Atrašanās vieta: ~/.ssh/config

# labot Rakstīšana neizdevās: salauzta caurule ServerAliveInterval 120 TCPKeepAlive nē # izmantot īsos nosaukumus Host dev-vps # ip adrese vai publisks domēna vārds resursdatora resursdatora nosaukums 127.0.0.3 # Ar kuru lietotāju pieteikties Lietotājs izstrādātājs # Atslēgas fails autorizācijai (ja tiek izmantots) IdentityFile ~/.ssh/id_rsa.dev

Un vēl viens konfigurācijas faila izmantošanas piemērs:
{<1>}

Host 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, ja pamatā ir RHEL un ar -q0 debian bāzes IdentityFile ~/.ssh/id_rsa.work -pc ProxyCommand ssh -q0 ssh-server-1 nc -q0 192.168.10.20 22

Un tagad, izveidojot savienojumu ar ssh-server-1, mēs nekavējoties pāriesim uz mums nepieciešamo resursdatoru. (Ērti lietojams, piemēram, ar dažādām serveru atslēgām)

Un arī hipsteris starpniekservera opcija:

{<2>}

Lejupielādējiet ngrok klientu serverī, kas atrodas aiz ugunsmūra. Mēs palaižam bināro failu un norādām, kurš ports mums ir jāpārsūta

SSH ir protokols, ko izmanto, lai nodrošinātu drošību un datu pārraides šifrēšanu tīklā. To plaši izmanto lokā Linux administratoriem, lai pārvaldītu attālo serveri. Servera savienojumiem ar internetu ļoti bieži uzbrūk SSH pakalpojums, lai piekļūtu serverim. Visbiežāk tiek uzminēta lietotāja ar administratora tiesībām parole. Šajā rokasgrāmatā mēs apskatīsim pamata drošības ieteikumus SSH savienojumiem.

Iestatiet sarežģītu paroli

Jūsu serverim var uzbrukt uzbrucēji, kas mēģina uzminēt servera paroli SSH Lai samazinātu uzlaušanas risku, iesakām iestatīt paroles serveru kontiem, kas atbilst šādiem parametriem:

  • Vismaz 8 rakstzīmes
  • Izmantojiet lielos un mazos burtus (AaBb)
  • Izmantojiet burtus — ciparus un zīmes (!BasDf345$@)

Spēcīga parole ne tikai aizsargās pret uzlaušanu SSH protokolu, bet kopumā uzlabos servera drošību.

Izmantojiet SSH atslēgas

Jūsu servera papildu aizsardzība būs atslēgas izmantošana, lai izveidotu savienojumu ar serveri SSH, jums ir jāģenerē atslēga datorā/serverī, no kura izveidosit savienojumu:

Kā izveidot SSH taustiņu ieslēgts Windows OS:

Lai izveidotu atslēgu Linux ierakstiet komandu:

Ssh-keygen -t rsa

Lai instalētu šo atslēgu serverī, ar kuru izveidosit savienojumu, ierakstiet komandu:

Ssh-copy-id -p 22 [aizsargāts ar e-pastu]

  • - 22. lpp- servera ports, kurā tas darbojas SSH protokols (var tikt mainīts, sīkāka informācija zemāk)
  • admin- Piesakieties no sava servera
  • 192.168.1.1 - Jūsu servera IP adrese

Ja visu izdarījāt pareizi, tagad varat izveidot savienojumu ar serveri, izmantojot atslēgu, un jums nebūs jāievada parole katru reizi.

Izmantojiet nestandarta portu

Standarta SSH pakalpojums, kas darbojas serverī, klausās 22 osta lai izveidotu savienojumu/pārsūtītu datus, uzbrucēji var to izmantot, rēķinoties ar to, ka lielākā daļa lietotāju nemaina standarta portu savienojumam ar serveri. Tāpēc mēs mainīsim portu, tādējādi vēlreiz samazinot mūsu servera uzlaušanas risku.

Lai to izdarītu, atveriet konfigurācijas failu SSH serverī:

Sudo nano /etc/ssh/sshd_config

Atradīsim šādu komentētu rindiņu:

# 22. ports

Izdzēsiet simbolu # - lai noņemtu komentāra opciju un mainītu 22 uz jebkuriem skaitļiem, sākot no 11060 un pieaugošā secībā, piemēram, izmantosim 11 060 , rindai tagad vajadzētu izskatīties šādi:

Ports 11060

Saglabājiet konfigurāciju" Ctrl+O"un iziet no redaktora" Ctrl+X".

Nepieciešams pārstartēt SSH pakalpojums - lai pieņemtu jaunos iestatījumus, palaidiet komandu:

Sudo pakalpojuma sshd restartēšana

Tādējādi mēs mainījām savienojuma portu, no šī brīža - lai izveidotu savienojumu ar serveri, jums jānorāda nestandarta ports ar opciju -lpp 11060 , Piemēram:

Ssh -p 11060 [aizsargāts ar e-pastu]

Ierobežojiet piekļuvi tikai lietotāju apakškopai

SSH savienojumu var ierobežot atsevišķiem kontiem, piemēram, ja serverī ir trīs konti: admin , Sergejs , Alekss- jums ir iespēja atļauties attālais savienojums tikai dažiem no tiem. Lai to izdarītu, atveriet konfigurācijas failu SSH:

Šajā failā izmantojiet bultiņas, lai dotos uz leju līdz pēdējai rindai un pievienotu jaunu ar šādu saturu:

AllowUsers administrators Alekss

Saglabājiet konfigurāciju" Ctrl+O"un iziet no redaktora" Ctrl+X".

Restartējiet pakalpojumu SSH:

Sudo pakalpojuma sshd restartēšana

Tā tu atļāvi attālināta piekļuve lietotājiem admin Un Alekss, kamēr lietotājs Sergejs vairs nevarēs izveidot savienojumu attālināti.

Iespējot SSH protokolu 2

Saskaņā ar standartu SSH darbojas 1. versijas režīmā, šī versija ir novecojusi un tai ir daudz ievainojamību, taču ir jānodrošina labāka drošība Mēs iesakām pārslēgties uz 2. versijas režīmu. Lai to izdarītu, atveriet konfigurācijas failu SSH:

Sudo nano /etc/ssh/ssh_config

Atrodiet līniju:

# 2. protokols

Noņemt rakstzīmi # - lai noņemtu komentāra opciju un izmantotu šo rindu, tai vajadzētu izskatīties šādi:

2. protokols

Saglabājiet konfigurāciju" Ctrl+O"un iziet no redaktora" Ctrl+X".

Restartējiet pakalpojumu SSH:

Sudo pakalpojuma sshd restartēšana

Atspējot tukšas paroles

Noklusējums SSH pakalpojums aizliedz lietotājiem bez paroles izveidot savienojumu, taču šī opcija var būt atspējota jūsu serverī, tāpēc atveriet konfigurācijas failu SSH:

Sudo nano /etc/ssh/ssh_config

Atrodiet līniju PermitEmptyPasswords un pārliecinieties, ka vērtība ir "nē".

AtļautEmptyPasswords Nr

Iespējot detalizētu reģistrēšanu

Uz servisu SSH saglabāja neveiksmīgo savienojumu žurnālu, norādot IP adreses, atveriet konfigurācijas failu SSH:

Sudo nano /etc/ssh/ssh_config

Atrodiet līniju LogLevel un tā vietā INFORMĀCIJA lūdzu norādiet DAUDZĪGI, līnijai vajadzētu izskatīties šādi:

LogLevel VERBOSE

Saglabāt failu" Ctrl+O"un iziet no redaktora" Ctrl+X".

Restartējiet pakalpojumu SSH:

Sudo pakalpojuma sshd restartēšana

To var pārbaudīt, ievadot komandu:

Cat /var/log/secure

Sistēma sniegs mums šādu informāciju:

21. jūnijs 13:06:28 centos sshd: neizdevās root parole no 118.212.143.47 porta 48263 ssh2

Tas ir, no šī ieraksta mēs redzam, ka bija neveiksmīgs mēģinājums iekļūšana serverī no norādītās adreses.

Paldies par uzmanību, tas arī viss.

Šajā īsajā piezīmē esmu apkopojis veidus, kā palielināt ssh servera drošību. Ir aprakstīti elementārākie un vienkāršākie paņēmieni, bet sarežģītāki ir norādīti tikai ieinteresētiem lasītājiem.

Pamatmetodes

Visas darbības tiek veiktas sshd dēmona konfigurācijas failā - /etc/ssh/sshd_config. Zemāk es sniegšu daļu no sava konfigurācijas faila ar komentāriem.

### Tīkls ### # Mēs izmantojam nestandarta portu (>1024) ports 5679 # Mēs izmantojam tikai IPv4 savienojumus # inet = IPv4, inet6 = IPv6, any = abi AddressFamily inet # Varat pieņemt tikai savienojumus no noteikta IP adreses #ListenAddress 0.0 # Mēs izmantojam otro protokola versiju, jo uz pirmo attiecas # zināma 2. protokola ievainojamība # Atspējot grafikas novirzīšanu (X serveris), līdz # jums tā ir skaidri nepieciešama X11Pāradresācija nē # Atspējot Atspējot TCPKeepAlive un tā vietā izmantot ClientAliveInterval #, lai novērstu tādus uzbrukumus kā TCP Spoofing TCPKeepAlive nē # Izsitiet lietotāju pēc 10 min 600 s) neaktivitātes ClientAliveInterval 600 ClientAliveCountMax 3 ### Atslēgas konfigurācijas faili ### # HostKeys protokola versijai 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_process. trafika # smilškaste - openSSH >= 5.9 ("jā" - zemākām versijām) UsePrivilegeSeparation smilškaste # Ja šīs vērtības mainās, tas ir jādzēš vecā atslēga# /etc/ssh/ssh_host_rsa_key(,.pub) un izveidojiet jaunu, # restartējot sshd. # # Atslēgas kalpošanas laiks, t.i. Cik ilgs laiks būs nepieciešams, lai tas tiktu ģenerēts? jauna atslēga# gadījumā, ja tika izmantots iepriekšējais. KeyRegenerationInterval 1h # atslēgas stiprums ServerKeyBits 2048 # Atļaut autorizāciju, izmantojot publisko atslēgu PubkeyAuthentication jā # Uzticamo atslēgu glabāšanas vieta lietotāja direktorijā AuthorizedKeysFile .ssh/authorized_keys ### Reģistrācija ### # Prefikss syslog SyslogFacility līmenis AUTHs #Ziņojuma detalizācijas līmenis pats LogLevel INFO ### Autentifikācija ### # atļauto lietotāju saraksts AllowUsers ivan # ierobežo laiku ssh atslēgas paroles ievadīšanai LoginGraceTime 30s # aizliedz attālo pieteikšanos kontu root PermitRootLogin nē # Iespējot tiešu failu un direktoriju tiesību pārbaudi ar ssh atslēgām StrictModes jā # Cik reižu atkārtoti prasīt paroli, ja ievadīta nepareizi MaxAuthTries 3 # Aizliegt pieteikšanos ar tukšu paroli PermitEmptyPasswords nē # Aizliegt pieteikšanos ar paroli princips # (Šī vietā izmantojiet publisko/privāto atslēgu) PasswordAuthentication nē # Atspējot "izaicinājuma-atbildes" autorizācijas izmantošanu, # jo tas ir bezjēdzīgi, izmantojot ChallengeResponseAuthentication atslēgas nē # Tā kā mēs neizmantojam paroli, mums nav nepieciešams (PAM, login(1)) UsePAM nē UseLogin nē # Atļaut klientam nodot tikai noteiktu vides mainīgo kopu # 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_TELEPTECENTAPHONE LC_CENTAPHONE LC_CCENTAPHONE

Šie ir parametri, kas ir konfigurēti sshd konfigurācijas failā. Pēc iestatījumu maiņas jums ir jārestartē sshd pakalpojums.

komentāri

  • Izmantojot atslēgas autentifikāciju, ir nepieciešama atslēga iepriekšģenerēt uz klienta mašīna un kopējiet publisko atslēgu serverī. Piemērs:
klients $ ssh-keygen klients $ cat ~/.ssh/id_rsa.pub | ssh -p 5679 [aizsargāts ar e-pastu]"kaķis >> ~/.ssh/authorized_keys"
  • Failā /var/log/auth.log būs ziņojumi no sshd. Ja šī faila trūkst, jums ir jākonfigurē reģistrēšanas sistēma.
piemērs syslog un syslon-ng. Es izmantoju syslog-ng, un failam /etc/syslog-ng/syslog-ng.conf jāpievieno šādas rindas:

mērķa authlog (fails("/var/log/auth.log"); ); žurnāls ( avots (src); galamērķis (authlog); );

  • un restartējiet syslog-ng pakalpojumu.
    Ja izmantojat nestandarta portu, iespējams, būs jākonfigurē ugunsmūris (iptables, firewalld utt.). Piemērs
iptables iestatījumi:

root# iptables -A INPUT -p tcp -m statuss -state JAUNS,IZVEIDOTS -dport 5679 -j ACCEPT root# service iptables saglabāt root# iptables -L -n Ķēdes IEVADE (politika ACCEPT) mērķis prot opt ​​avota galamērķis ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 stāvoklis JAUNS tcp dpt:22 ACCEPT tcp — 0.0.0.0/0 0.0.0. tcp dpt :80 ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 stāvoklis JAUNS, IZVEIDOTS tcp dpt:5679 ...

Ja ar to nepietiek Tas ir tikai pamata iestatījumi

  • . Turklāt jūs varat konfigurēt