Šioje pamokoje pateikiami būdai kaip suteikti papildomo saugumo serveryje naudojamai OpenSSH programai. Ši programa suteikia galimybę prisijungti prie serverio nuotoliniu būdu ir jį valdyti, tad šiuo atveju nepasirūpinus SSH saugumu išlieka pakankamai didelė rizika jog į jūsų serverį bus įsibrauta trečiųjų asmenų.
Straipsnis sukurtas naudojantis CentOs 6 operacine sistema.
1. Slaptažodis.
Visuomet naudokite sudėtingus slaptažodžius. Keletas patarimų:
- Naudokite mažiausiai 8 simbolių kombinaciją
- Naudokite didžiūjų ir mažūjų raidžių kombinacijas
- Naudokite raides ir skaičius
- Naudokite simbolius, pvz.: ! " £ $ % ^
Pravartus įrankis slaptažodžio generavimui -
http://freepasswordgenerator.com/
2. Išjungiame root vartotoją.
root vartotojas dedikuotame serveryje turi visas teises operuoti serveryje vykstančiais procesais. Daugeliu atveju
root vartotojas nėra reikalingas, norint vykdyti komandą
root vartotojo teisėmis tiesiog naudojama komanda
su ( pvz.:
su yum install nano ). Sukurkime pradžiai vartotoją ir pašalinkime galimybę prisijungti prie serverio
root vartotojo teisėmis:
adduser petras
passwd petras
Nurodykite slaptažodį, nepamirškite rekomendacijų pirmąjame punkte.
Serverio SSH konsolėje vykdome komandas:
cd /etc/ssh/
nano sshd_config
raskite eilutę
PermitRootLogin pakeiskite į:
PermitRootLogin no
Po šių pakeitimų perkrauname SSH programą:
service sshd restart
3. Apribojame prisijungimą vartotojams.
Šiuo apribojimu nurodysime SSH programai priimti tik tam tikrų vartotojų vardus mėginant jungtis prie SSH konsolės. Redaguojame
sshd_config failą prisijungę prie serverio SSH konsolės vykdome komandas:
nano /etc/ssh/sshd_config
randame eilutę
AllowUsers ir ties ja nurodome vartotojo vardą ar vardus. Pavyzdys:
AllowUsers petras jonas antanas
Atlikus pakeitimus, perkrauname SSH tarnybą:
service sshd restart
4. Keičiame SSH prievadą.
Pagal nutylėjimą SSH naudoją 22 prievadą (port) įeinančių susijungimų palaikymui. Dažniausias įsibrovėlių taikinys būna serveriai kurių prievadas yra standartinis. Pakeiskime standartinį prievadą nestandartiniu:
nano /etc/ssh/sshd_config
Randame eilutę
#Port 22 ir keičiame ją į:
Port XXXX (čia: XXXX - bet kokie 4 skaičiai, pvz.: 2322)
Atlikus pakeitimus, perkrauname SSH programą.
5. Apribojame priėjimą ugniasienėje prie SSH specifiniams IP adresams.
Šis nustatymas blokuos ir fiksuos bet kokius mėginimus kreiptis nurodytu prievadu iš nekorektiško IP adreso. Vykdome šią komandą SSH konsolėje:
iptables -A INPUT -p tcp -s jūsų_IP_adresas --dport nustatytas_prievadas -j ACCEPT
Čia:
Jūsų_IP_adresas - įrašykite IP adresą kuriam pageidauajte suteikti leidimą kreiptis nurodytu prievadu. Pavyzdys: 79.98.25.55
nustatytas_prievadas - įrašykite SSH programos pasirinktą prievadą (port). Pavyzdys.: 2322
Tuomet apsaugome prievadą nuo
Brute force atakos įvykdydami komandas:
iptables -A INPUT -p tcp --dport nustatytas_prievadas -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport nustatytas_prievadas -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
Čia:
nustatytas_prievadas - įrašykite SSH programos pasirinktą prievadą (port). Pavyzdys.: 2322
Tuomet apribojame prisijungimų skaičių per minutę prie specifinio prievado:
iptables -A INPUT -p tcp --dport nustatytas_prievadas --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport nustatytas_prievadas --syn -j DROP
Čia:
nustatytas_prievadas - įrašykite SSH programos pasirinktą prievadą (port). Pavyzdys.: 2322
6. Viešo ir privataus SSH rakto naudojimas autentikacijai.
Šio būdo naudojimas autentikacijai turi du pagrindinius privalumus. Pirmasis, prisijungimui Jums nebereikalingas slaptažodis (jei nesate nustatę, jog rakto šifravimui būtų reikalingas slaptažodis). Antrais, naudojant viešąjį ir privatų raktą serveryje galima visiškai išjungti prisijungimą prie serverio naudojant slaptažodžius, tad visiškai nebėra galimybės prie serverio prisijungti nulaužus (crack, brute force ir pan.) slaptažodį.
1. Sukuriame viešąjį ir privatų raktą kliento pusėje iš kurios jungsitės prie serverio (tai reikia atlikti kiekviename kompiuteryje iš kurio norėsite jungtis):
ssh-keygen -t rsa
Tai sukurs du failus kataloge (hidden) ~/.ssh directory pavadintus
id_rsa ir
id_rsa.pub. Pirmasis yra Jūsų privatus raktas, o antrasis viešas.
Jei norite, jog jungiantis nebūtų prašomas viešojo ir privataus SSH rakto slaptažodis, kai bus prašome įvesti slaptažodį (passphrase), tiesiog paspauskite "Enter".
2. Nustatome privataus rakto teises:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
3. Nukopijuojame viešą raktą (id_rsa.pub) į serverį įdiegiame jį į "authorized_keys" sąrašą:
cat id_rsa.pub >> ~/.ssh/authorized_keys
4. Nustatome failų teises serveryje:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Tai reikalinga, jei "StrictModes" nustatytas "yes" konfiguracineme faile "/etc/ssh/sshd_config". Šis nustatymas yra standartinis.
5. Dabar prisijungiant prie serverio Jūsų jau neprašys slaptažodžio (jei nesate jo nustatę viešam ir privačiam raktui). Jei šis autentifikacijos būdas nepavyktu serveris automatiškai grįš prie senojo, tai yra slaptažodžio prašymo. Tačiau prisijungimą su slaptažodžiu galima visiškai išjungti. Tai atlikti galite faile "/etc/ssh/sshd_config" pakeitus į šiuos nustatymus:
# Disable password authentication forcing use of keys
PasswordAuthentication no
=========
Pastaba:
Iptables taisyklių išvalymą atlikti galite sekdami šiomis instrukcijomis:
- Prisijunkite prie mūsų klientų sistemos:
https://klientams.iv.lt/services.php
- Pasirinkite pageidaujamą serverio nuomos paslaugą;
- Naujai atsidariusiame lange pasirinkite "Išvalyti iptables";
- Naujai atsidariusiame lange ties klausimu "Ar tikrai pageidaujate išvalyti serverio <hostname> iptables?" pasirinkite "Taip" ir nuspauskite "Toliau >>".
Atlikus šiuos veiksmus serverio
<hostname> iptables taisyklių valymo komanda bus sėkmingai išsiųsta ir įvykdyta per 5-10 min.
Komentarai