Saugus SSH prisijungimas be slaptažodžio.

Kas dirba su Linux puikiai žino, kaip svarbu apsaugoti savo paskyrą kai jungiamasi per SSH protokolą prie nutolusio serverio. Dažniausiai yra naudojami slaptažodžiai, tačiau pastarieji gali būti nulaužiami. Todėl nusprendžiau parašyti apie kiek kitokį prisijungimą prie serverio.

Šiame straipsnelyje trumpai aprašysiu kaip prisijungti prie Linux serverio be slaptažodžio naudojantis sugeneruotu raktu. Dėmesio! Visa pateikiama informacija buvo atliekama Linux sistemoje remiantis oficialaus tinklapio ssh.com medžiaga. Čia pateikiama su paprastinta versija. Patariu prieš vykdant veiksmus pirma perskaityti straipsnį iki galo.

Raktų sugeneravimas

Taigi pradedame. Pirmiausia reikia sugeneruoti privatų ir viešąjį raktą. Tai daroma vedant komandą kur ssh-keygen pati komanda, -f ~/.ssh/neo-key nusakoma vieta kur bus patalpinti raktai, bei raktų pavadinimas mano atveju neo-key ir -t ecdsa -b 521 raktų šifravimo algoritmas.

ssh-keygen -f ~/.ssh/neo-key -t ecdsa -b 521

Generatorius paprašys įvesti saugumo frazę Enter passphrase (empty for no passphrase): kurią primygtinai rekomenduoju naudoti. Jei viskas pavyko, tai ekrane turite pamatyti kažką panašaus į tai

Panašiai turi atrodyti sėkmingai įvykdyta komanda.

Komanda ls -l .ssh/ galime patikrinti ar raktai yra vietoje.

ls -l .ssh/

Kaip matome viskas ten, kur ir turi būti.

neoromancer@neotech:~$ ls -l .ssh/
viso 8
-rw------- 1 neoromancer neoromancer 444 gruod  3 13:41 neo-key
-rw-r--r-- 1 neoromancer neoromancer 273 gruod  3 13:41 neo-key.pub

Kaip matome gauname du failus neo-key ir neo-key.pub. Failas neo-key yra privatus raktas, kuris liks gulėti kompiuteryje ,kuriame jį ir sugeneravome, o viešasis raktas neo-key.pub keliaus į nutolusį serverį.

Viešojo rakto patalpinimas į serverį

Kad saugiai perkeltume viešąjį raktą į nutolusį serverį, reikia įvykdyti sekančią komandą:

ssh-copy-id -i ~/.ssh/neo-key.pub vartotojas@ip_adresas 

Į klausimą Are you sure you want to continue connecting (yes/no)? atsakome yes ir paprašius įvesti slaptažodį suvedame serverio prisijungimo slaptažodį. Po sėkmingos operacijos parašoma, kad vienas raktas įtrauktas ir jau galima išbandyti prisijungimą, mano atveju tai bus ssh pi@192.168.1.120

Baigiamieji darbai

Pasibandome sujungimą su serveriu ir jei mūsų neklausia prisijungimo slaptažodžio, tada galime serveryje pakoreguoti sshd_config, kad apskritai nepriimtų prisijungimų su slaptažodžiais. Tam vedame komandą:

sudo nano /etc/ssh/sshd_config

Ir atsiradusiame faile susirandame #PermitRootLogin forced-commands-only ir nuėmę groteles įrašome PermitRootLogin yes. Taip pat įrašome PasswordAuthentication no Failo turinys turėtų atrodyti panašiai taip (ištrauka):

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

Spaudžiame Ctrl+O tada Ctrl+X taip išsaugodami ir išeidami iš redaguojamo failo. Belieka perkrauti patį ssh. Tai padarome įvykdę komandą:

sudo service ssh restart

SSH prisijungimo redagavimas reikalauja atidumo, todėl primygtinai rekomenduoju pasidaryti redaguojamų failų kopijas, kad jei suklydus ir negalint prisijungti būtų galimybė atstatyti konfigūraciją. Būtent PasswordAuthentication no yra atsakingas už slaptažodžio reikalavimą, todėl šį parametrą aktyvuokite įsitikinę, kad viskas tikrai veikia korektiškai.

Viskas, dabar jungiatės tik su viešuoju raktus. Reikia pastebėti, kad ssh galima susiderinti visiškai pagal savo poreikius bet apie tai kada nors vėliau.

Geriname internetą su Pi-Hole. Reklamoms NE!

Pi-Hole

Taip jau nutiko, kad prieš gerus metus aptikau labai neblogą reklamų “kilerį” pavadinimu Pi-Hole. Iš pradžių jis man nepasirodė labai naudingu, bet paeksperimentavus supratau, jog tai yra tai, ko man reikia.

Tai kas gi tas Pi-Hole? Pi-Hole yra reklamų iš tinklapių naikintojas viso tinklo lygmeniu. Jis namų tinkle veikia kaip DNS serveris, kuris filtruoja visą į įrenginius patenkantį trafiką, tuo pačiu blokuodamas nepageidaujamą turinį, saugodamas nuo veiklos sekimo ir tuo pačiu valydamas reklamas iš tinklapių. Žinome 100% apsaugos nėra, bet veikimas tikrai pastebimas. Pvz. Pi-Hole visai sėkmingai išvalo Android programose esamas reklamas, tuos mažus baneriukus kurie paprastai atsiranda naudojamo app’o apačioje. Taip pat su Pi-Hole gan sėkmingai galima blokuoti nepageidaujamus tinklapius, kurių paprasčiausiai neužkraus nei viename namų kompiuteryje ar telefone, su sąlyga, kad viskas teisingai sukonfigūruota. Susidomėjote? Tai važiuojame toliau!

Kad viskas normaliai veiktų, viena iš sąlygų – tinkle dirbantis 24/7 įrenginys (kompiuteris) kuriame ir bus minėta Pi-Hole. Aš tam reikalui paskyriau vieną iš turimų mikro kompiuterių, kuriame sukasi Armbian operacinė sistema. Čia taip pat labai tinka ir Raspberry Pi mikro kompiuteris.

Operacinės sistemos sudiegimas ir paruošimas darbui

Kaip operacinę sistemą aš pasirinkau Rasbian Buster Lite. Parsisiunčiam img failą ir įrašome į mSD kortelę. Su kuo rašyti nepatarsiu, mano atveju tai Etcher programa, veikianti tiek Linux, tiek Windows sistemoje. Jei jūs turite savo mėgstamą programą naudokite ją. Girdėjau daug kas naudoja Rufus

Etcher pasirengusi įrašyti Rasbian Buster Light į mSD kortelę

Įrašius operacinę sistemą į kortelę reikia padaryti dar vieną žingsnį. Boot skirsnyje būtina sukurti tuščią failą be jokio plėtinio pavadinimu ssh. Čia tam, kad galėtume prie rasbian prisijungti per ssh komandą.

Šakniniame Boot skirsnyje sukurtas ssh failiukas.

Dabar jau galime mSD kortelę dėti į Raspberry Pi mikro kompiuterį ir laukti, kol pastarasis užsikraus. Tai užtruks keletą minučių. Po sėkmingo sistemos paleidimo dar reikia sužinoti kokį IP adresą naujai iškeptai “avietei” priskyrė maršrutizatorius. Čia galimi du variantai, arba paprasčiausiai prisijungus prie maršrutizatoriaus pamatyti IP, arba Linux terminale suvedus štai tokią komandą:

sudo nmap -sP 192.168.1.0/24

Gausime visų tinkle esančių įrenginių IP adresus, tarp kurių bus ir Raspberry Pi. Jei gerai pažįstate savo namų tinklą, susigaudyti kuris tas IP sunku nebus. Na o kai jau žinome koks tas mums reikalingas IP jungiamės prie jo vesdami Linux terminale komandą:

ssh pi@ipadresas #kur ipdresas įrašome aktualų IP

Sistema paklaus Raspberry Pi vartotojo pi slaptažodžio, kuris pagal nutylėjimą yra raspberry. Viskas, mes jau sistemoje. Na o kas naudojatės Windows sistema, prisijungimui naudokite programą Putty. O aš šiaip ant Linux naudoju puikią programą Remmina.

Pi-Hole diegimas

Kai jau sėkmingai pakėlėme rasbian os ir prie jos prisijungėme, galime sudiegti ir patį Pi-Hole. Tad iš karto prie reikalo. Iš pradžių rekomenduoju iš karto perimti root teisias vedant komandą:

sudo su

Prie komandinės eilutės turi pasikeisti simboliai iš ~$ į #. Na o tada vedame šią komandą:

curl -sSL https://install.pi-hole.net | bash

Paspaudus ENTER iš karto prasidės diegimo procesas.

Pi-Hole diegimo procesas

Tuo pačiu terminale pasirodys diegimo vedlys.

Pi-Hole diegimo vedlys

Spaudžiame ENTER, tada praneša, kad tai yra serveris ir bus reikalingas statinis IP adresas.

Pranešimas, kad bus naudojamas statinis IP adresas.

Tada paklausk, kurį tinklo interfeisą naudoti. Jei Raspberry Pi pajungtas per LAN kabelį, pasirenkame eth0, jei Wi-Fi, tai wlan0

Pasirenkame reikalingą tinklo interfeisą

Toliau paklaus kokį DNS naudoti. Aš pasirinkau OpenDNS, vėliau nustatymuose tai galima keisti.

Pasirenkame DNS

Sekančiame nieko nekeičiame, spaudžiame ENTER

Paliekame kaip yra.

Čia taipogi nieko nekeičiame

Paliekame kaip yra.

Sekančiuose taip pat spaudžiate ENTER. Dar paklaus ar įdiegti web interfeisą, kuris žinoma bus reikalingas.

Paliekame rekomenduojamą.

O čia, kiek suprantu dėl statistikos. Arba leisti viską, arba drausti pasirinktinai. Aš palikęs 0, bet gal kas turite kokių pastebėjimų dėl šito pasirinkimo, tai galite parašyti.

Palikau kaip yra.

Po šito prasideda finalinis programos diegimas ir pabaigoje pamatome finalinę lentelę, kur surašyta kaip pasiekti Pi-Hole ir koks prisijungimo slaptažodis. Slaptažodį nusirašome, mums jo dar prireiks.

Įdiegimo apibendrinimas.

Dabar, kai jau žinome koks mūsų Pi-Hole IP adresas jį reiktų įrašyti į maršrutizatorių, kad pastarasis visiems namie naudojamiems įrenginiams priskirtų šį DNS. Jei mes negalime administruoti savo maršrutizatoriau, tai yra dar keli būdai:

  • Sukonfigūruoti Pi-Hole kaip HDPC serverį;
  • Pi-Hole IP adresą įvesti prie DNS nustatymų į kiekvieną namų įrenginį;

Šiuo atveju aprašysiu kaip suvesti į maršrutizatorių. Mano atveju tai TP-Link maršrutizatorius, prisijungus einame į Advanced skyrių, ten pasirenkame Network, DHCP server ir prie Primary DNS: įvedame Pi-Hole įrenginio IP. Išsaugome. Galime perkrauti maršrutizatorių, tuo pačiu perkrauti ir visus namie esančius įrenginius, kad įsivyrautų naujo tinklo nustatymai juose.

Pi-Hole nustatymai

Atsidarome naršyklę ir vedame http://aktualusipadresas/admin Kadangi pas mane jau yra veikianti Pi-Hole, toliau medžiaga bus pateikta remiantis ja. Taigi patenkame į admino panelę. Kol nesame prisijungę, matome supaprastintą statistiką. Prisijungus ten matoma kur kas daugiau.

Veikiančios Pi-Hole statistika pagrindiniame lange.

Pradžioje galima nieko nekeisti. Pavartyti tinklapius, pažiūrėti ar viską gerai atidaro, ar nėra perteklinio blokavimo. Jei norime Pi-Hole papildyti reklamų blokavimo sąrašais, tai einame į Settings – Blocklists ir ten įdėti nuorodą į sąrašą.

Blokavimų sąrašai.

Įkėlus naują sąrašą spaudžiame Save and Update mygtuką. Sąrašų galima rasti kad ir čia.

Pabaigai…

Nenorėčiau, kad pagalvotumėte, jog Pi-Hole yra panacėja nuo visų ligų, t.y. reklamų. Daugeliu atveju ji veikia labai gerai, pastebimai pagreitėja naršymas. Na o jei naudojame kartu su į naršyklę diegiamais reklamų blokuotojais, tai iš viso pasaka. Jei kas naudojate Pi-Hole ir norite papildyti ar pataisyti mane, mielai rašykite komentaruose.