Linux (Server / Admin) radionica

Pozdrav svima.

Posle serije radionica vezanih za mreže, nastavljamo sa radionicama o Linux sistemima, administraciji i zaštiti istih.
Ova radionica ima za cilj da upozna apsolutne početnike sa osnovnim komandama u Linuks sistema, povezivanje preko SSH-a, upravljanje logovima, fajlovima, korisnicima i grupama, zaštiti linuks servera, pokretanje i konfiguracija web servera, virtuelizacija, kontejneri (docker, vagrant), kao i automatizacija taskova.

Cela serija radionica fokusirana je na konkretne praktične i korisne stvari za koje možete iskoristiti za Linux server za sebe kao što su Web, mejl, DNS, Fajl server, lični blog ili Wiki i mnogo toga.

Kroz praktične primere ćemo proći na našem lokalnom okruženju u Haklabu gde imamo pravi server ( HP DL360 G6: 2x 6 cores Xeon X5650, 72GB RAM, 2x 1TB + 2x 300 GB RAID 1) na kome je Proxmox virtuelno okruzenje (open-source alternativa VMware-u).

Za praktikovanje znanja sa ove radinice vam naravno ne treba ovakav server kući, većina stvari se može instalirati i na prosežnom račuaru, ili čak na RaspberryPi, ali i na računarima koje možete iznajmiti online tzv. VPS i upravljati njima sa svog laptopa od kuče bez da kupujete i razmišljate o hardveru.

Trudiću se da sve potrebne informacije i materijale vezane za radionicu kačim u ovom tredu.

Termin raionica je nedeljom od 19h.

Vidimo se.

P.S.
Na kraju radionice, ko bude želeo može da se priključi haklab administratorima (Alekseju, Stevanu, meni i dugima) u upravljanju i održavanju haklabovih servera i servsa, a nadam se da će učesnicima ovo znanje i iskustvo pomoći da nadju i posao u Linux Server Admin ili Devops branšama.

2 Likes

Iako je ovo zapravo prva radionoica, voleo bih da obavestim da smo se prosle nedelje bavili hardverom servera i instalacijom Proxmox-a na njega.

Za sve koji nisu dosli, nisu mnogo propustili, ubacili smo diskove u kedije, podesili RAID 1 (2x 300GB u jedan RAID i 2x 1TB u drugi).

Proxmox je instaliran na 1TB RAID-u, dok je 300GB RAID tu za bekab nekih virtuelnih mašina i kontejnera tj. za snapshot.

RAID se koristi za redundansu diskova, da se podaci nebi izgubili u slučaju da jedan disk otkaže. Za detaljnije objašnjenje za RAID možete pogledati ovaj YT video.

2 Likes

Bravo Petre! Jel u planu i ofanzivni deo ?

1 Like

Jeste, posle Linux & Admin radionice ide pentest deo, gde cemo testirati to sto smo ucili da zastitimo, kako bi jos bolje uvideli slabe tacke sistema ili mreze.

1 Like

Radionica 1/x – SSH

SSH (Secure Shell) je standardni i najkorišćeniji način osiguranog pristupa drugoj Linuks mašini preko mreže.
Kada imate računar (zvaćemo ga server) kome želite pristupiti sa svog računara, potrebno je na serveru da instalirate (ako već nije instaliran) i pokrenete ssh server. Ovo je obična klijent server arhitektura u kojoj računar na koji želite da se povežete ima SSH server na sebi i sluša na nekom portu (port 22 je uobičajen).

Dakle na serveru je potrebno instalirati i pokrenuti SSH (za Debian distribucije koristite apt-get, a za RHEL yum ):

	$ sudo apt-get update
	$ sudo apt-get install openssh-server

Pošto SSH servis na serveru treba da bude stalno aktivan, čak i kada se server restartuje, potrebno je SSH servis omogućti da automatski startuje kad god se i server pokrene. To je pogodno u slučaju da namerno ili slučajno restartujete server, i ponovo želite da se povežete na njega.

 sudo systemctl sshd enable

Da bi se uverili da server radi bez problema možemo proveriti status našeg SSH servera:

 sudo systemctl status ssh

I ako nije pokrenut, pokrenuti ga sa

 sudo systemctl start ssh

Nakon čega bi ste trebali videti ovakav ispis:

Povezivanje može biti pomoću šifre ili pomoću ključa, i uvek se preporučuje ovo drugo jer je sigurnije.

Ok, sada je potrebno da na klijentu (našem laptopu ili desktopu sa koga ćemo se povezivati na server preko ssh) kreiramo par kljućeva. Tokom kreiranja ključeva pitaće vas da li želite da zaštitite šifrom svoj tajni ključ. Ovo je preporučljivo za slučaj da ga izgubite jer niko bez te šifre neće moći da ga koristi:

 ssh-keygen -b 4096 -t rsa

ssh keys

Ova komanda će kreirati RSA ključ dužine 4096 bita i smestiti ih u
~/.ssh/ folder trenutnog korisnika koji kreira kljućeve i ključevi će se podrazumevano zvati

id_rsa —> tajni ili privatni ključ
id_rsa.pub —> javni ključ

Ključeve takođe možete preimenovati kako želite da vam bude lakše da ih razlikujete, jer je veoma važno da vaš tajni ključ ne sazna niko drugi.

Sada kada smo na desktopu kreirali ključeve potrebno je javni ključ prebaciti na server.
Za ovo postoji komanda koja to automatski radi, smeštajući javni ključ sa vašeg desktopa na server u fajl na serveru u home direktorijumu korisnika

~/.ssh/authorized_keys

ssh-copy-id $HOME/.ssh/id_rsa.pub user@IP_ADDRESS_OF_SERVER

Na slici iznad se vidi da je korisnik “milica” sa svog računara pod imenom “x220” kopirala svoj javni ključ “id_rsa.pub” na server “95.179.214.200” za korisnika petar na serveru. Nakon toga povezala se preko SSH na server samo sa svojim ključem kao korisnik “petar” gde je izlistala javni ključ u fajlu “authorized_keys”.

Iz predhodnog primera izostavljen je korak gde se na serveru kreirao neprivilegovan korisnik pod imenom “petar”. To možete ispratiti u sledećem nastavku koji pokriva oblasti kreiranja korsnika i grupa i fajl permisije.

Generalno je preporučljivo iz sigurnosnih razloga da se na server preko ssh ne povezujete kao “root” korisnik, pa je zato i ovde dat takav primer. Preporuka je da se korisnik na serveru koji se povezuje bude neprivilegovan korisnik (nekad i korisnik koji nije član sudo grupe, pa da se tak nakon povezivanja ulogujete sa šifrom u privilegovanog korisnika).

Sada kada smo na serveru, treba da omogućimo povezivanje samo preko ključeva, da se korisnici koji nemaju svoj ssh ključ na serveru ne mogu povezati.

sudo nano /etc/ssh/sshd_config

i izmeniti sledeće linije da izgledaju ovako:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

Nakon ovoga na server cete moći da se ulogujete samo sa ljučem i bez šifre, a root korisnik neće nikako moći da se poveže preko SSH

Dodatno, možete sebi olakšati povezivanje pogotovo ako u buduće budete imali više servera na koje se logujete sa različitim korisnicima koji imaju različite SSH ključeve imenovanjem servera i dodavanjem na lokalnom desktop računaru konfiguraciju povezivanja za svaki pojedinačno sa kojim parametrima treba.
To možete uraditi u folderu ~/.ssh/ kreirajući fajl “config”

touch  ~/.ssh/config
nano ~/.ssh/config

I ubacivanjem parametara za povezivanje u taj konfig


Kada ovaj fajl sačuvamo na server se možemo povezati samo pomoću imena koji smo mu dali “DemoSSHServer”

2 Likes

Super su ti postovi @Anonionman ! Imam predlog da prvi post editujes i ostavis linkove(kao sadrzaj) ka postovima kako bi bilo preglednije, predpostavljam da kako radionica odmice da ce ih biti sve vise i onda je zgodnije imati sve na jednom mestu nego da se mora skrolovati, a i lepo izgleda :smiley:

1 Like

da, definitivno cemo da grupisemo nekako ako nastavi da pise

1 Like

Mozda blog da imamo neki ili Wiki
Podicicemo mi na radionici XD kao deo vezbe :slight_smile:

U subotu ce biti ponovljeni neki delovi do sadasnjeg predjenog na Linux admin radionicama od 16h.

Znaci ne prelazimo novo nego samo ako neko hoce da vidi i provezba zajedno sve ovo sa 3 radionice do sada

Pozdrav
Vecerasnja radionica je posvecena Docker-u.
Vidimo se.

Twitter https://twitter.com/hklbgd/status/1508072602576855042
Reddit: https://www.reddit.com/r/hklbgd/comments/tpkaw4/linuks_servaer_admin/

Neki materijali sa predhodne Linuks radionice:
https://gitweb.hklbgd.org/?p=linux-radionica-hklbgd.git;a=tree;h=2857cf5efe3bf49df14eb4e2b2a1b8601303a89c;hb=2857cf5efe3bf49df14eb4e2b2a1b8601303a89c

Korisni PDF sa informacijama sta sadrzi Comptia kursevi koji su slicni onome sto mi vezbamo na nasoj Linuks radionici:
CompTIA Linuks plus.pdf
CompTIA Security plus.pdf

Pozdrav

Da li mogu da se prikljucim vecerasnjoj radionici ako se odrzava?
Imam neko najosnovnije znanje, manje-vise ovo sto ste presli do sada (bez Docker-a).

Naravno da moze.
TRudim se da su radionice modularne i sto maje zavisne jedne od drugih, da u bilo kom momentu moze da se novi ljudi prikljuce i slusaju sta ih interesuje.

Danas mozemo da radimo Apache/Nginx. ili neki uvod u shell skripting

1 Like

I sutra je radionica od 19h.
Verovatno ce Aleksej pokazati jos par trikova za Nginx.
Ja sam spremio nesto da pokazem za Firewall i jedan primer gde komnda Alias dolazi do izrazaja i ubrzava posao.
Vidimo se.

I sutra (u nedelju) je radionica od 19h.
Tema radionice je CronJob i Linux ShellScripting.
Pozdrav. Vidimo se.

Radionice nece biti ni ove nedlej jer je opet praznik (1. maj) posle uskrsa, pa onda prva sledeca nedelja je 8.Maj.
U subotu cemo revidirati setup nase internu mreze i servera pa mozete doci da ucestvujete.

Pozdrav, nastavljamo radionicu u nedelju 15.5.2022 sa promenjenim terminom od 17h.
Tema je i dalje Wordpress

Security ideje: #1 (‘Ghost server’)

SSH se moze zastiti skoro potpuno od izlozenosti internetu ukoliko postavite u podesavanjima da SSH server slusa na lokalnoj adresi.
Sta? Kako? Zasto?
Ideja je jednostavna:

  1. Napraviti VPN kao sto je Wireguard (UDP) - ovo je naglaseno zato sto nmap skenom se ne moze utvrditi da li je na nekom UDP portu zaista neki servis pokrenut ili nije zato sto UDP ne potvrdjuje da je paket stigao, tj. ne odgovara na ping ili poslati paket.
  2. Wireguard klijentima dodeljuje interne/lokalne/privatne IP adrese recimo iz opsega 10.10.10.0/24.
  3. SSH server moze da slusa na 10.10.10.1 internoj IP adresi na portu 22
    Na ovaj nacin, korisnici se sa svojih racunara prvo povezu na VPN i njihov racunar dobije adresu unutar 10.10.10.0/24 mreze, recimo 10.10.10.2 i onda se unutar VPN tunela moze povezati na SSH koji je na 10.10.10.1 adresi na portu 22.

Benefiti:
Napadac ne moze da skenira SSH i otkrije ga i pokusa ga napasti.
Konekcija je dvostruko zasticena.
Potrebno je manje napora uloziti oko zastite servera i SSH servisa, nadgledanje logova i azuriranja.
VPN tunel cak ne mora biti tzv. Puni tunel, i mozete rutirati samo saobracaj koji je za 10.10.10.0/24 kroz VPN tunel, a ostali saobracaj van tunela kao kada niste povezani na VPN - to je tzv Split-tunnel

Nedostatci:
Ukoliko pukne VPN ne moze te povezati na server (osim ako server nije na VPS pa imate WEB emergency konzolu ili IPMI/ILO/IDRAC port ka serveru povezan i podesen).

Sto je jos zanimljivije unutar wireguard tunela se mogu koristiti i IPV6 adrese :slight_smile:

Ceo tekst sa slikama objasnjenja, pokazane prave konfiguracije i testiranja mozete videti na:

incace server je sada ugasen i ti kljucevi i IP adresa se vise ne koriste, ako nekoga zanima da prekuca privatekey XD

dobar ti blog anonionmane

1 Like

Sutra 22.5.2022 je radionica opet u 17h.

7:34 PM

Teme su:

  1. nastavak za Workdpress da osiguramo (addons WAF, AV scan, vun. scan, 2FA pristup, BasicAuth, CAPTCHA, …)

  2. Cron da nadgledamo logove i saljemo na drugi server u labu (ssh,scp,cronjob, crypt, zip)

  3. MySQL osnovne komande za rad sa bazama (kreiranje usera, baze, pravila, export/import baza)

1 Like