https://www.hudic.si

Uporabni nasveti

Linux

sshuttle - VPN preko SSH

V današnjih domačih omrežjih imamo polno servisov, do katerih bi želeli prihajati od kjerkoli. Najboljša možnost je uporabiti VPN (Virtualno Navidezno Omrežje). Za to moramo imeti usmerjevalnik/požarni zid, ki to zna zaključevati in seveda moramo znati tudi namestiti in nastaviti. Alternativa temu je lahko SSH VPN, preko katerega lahko peljemo ves TCP promet ali pa samo promet, ki je namenjen v naše domače omrežje.

No svojem usmerjevalniku moramo "forwardirati" port do SSH steržnika. Privzeti je 22, a predlaga se, da se uporabi alternativni. Seveda ne pozabimo na zaščito SSH protokola, a to je zgodba za drugi prispevek.

Ko smo namestili in zaščitili SSH protokol na linux strežniku in do njega lahko dostopamo iz kjerkoli, bomo za vzpostavitev SSH VPN-ja potrebovali program SSHUTTLE. Namestimo ga lahko na linux distribucije in macos, z uporabo homebrew-ja.

Nemastitev za linux (debian in derivati)
sudo apt install sshuttle

Namestitev za macos (homebrew je obvezen)
brew install sshuttle

Ko imamo SSHUTTLE nameščen vpišemo naslednji ukaz:
sshuttle -r sshuser@remote-ip:remote-port ip-adresni-naslov/maska —dns —to-ns DNS-ip -v

—dns: pošlji vse DNS zahtevke preko SSH VPNja
—to-ns: definiramo oddaljen DNS strežmik, ki ga bomo uporabljali namesto privzetega
-v: izpiši dogajanje na SSH VPN-ju


Moram naglasiti, da SSH VPN deluje samo s TCP prometom in DNS prometom. Preko te povezav ne morete pošiljati ICMP in UDP prometa (razen DNS).

"no matching cipher found" pri povezovanju s SSH klientom

Pred nekaj dnvei sem se poskušal priklopiti na eno starejšo napravo preko SSH protokola, a sem dobil nazaj naslednjo napako:
no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

Napako, ki jo javi, ni problem klienta ampak odjemalca, ker le ta podpira samo "staro" slabo šifriranje, novejši klienti, pa tega nimajo omogočeno. Če želimo se povezati na to staro napravo lahko uporabimo dva načina. En način je, da omogočimo tudi šibkejše šifriranje ali pa v ukazni vrstici za SSH definiramo kateri šifrirni način bomo uporabili.

1. Omogoči šibke šifrirne načine:
Macos
sudo nano /etc/ssh/ssh_conf

omogoči je potrebno dve vrstici (pobrisati # simbol):
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com

Linux
sudo nano /etc/ssh/ssh_conf

omogočiti je potrebno dve vrstici (pobrisati # simbol) in ponovno zagnati SSH deamon:

# KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sh>
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc


sudo sudo systemctl restart ssh

2. Uporabiti šibkeši šifrirni način v SSH ukazni vrstici

ssh -c aes256-cbc test@test.local

Kako deluje HTTP/HTTPS protokol

Pred kratkim sem naletel na spletno stran, ki lepo v slikah, opiše kako delujeta protokola HTTP in HTTPS in zakaj uporabljati HTTPS protokol namesto HTTP protokola.

https://howhttps.works

Test Apache strežnika

Apache strežnik je namenjen za streženje spletnim stranem. Če želimo testirati, koliko hkratnih uporabnikov, ki obiskujejo spletno stran, zmore servirati spletni strežnik apache.

Na debian strežniku ali derivatih, moramo najprej namestiti AB. To naredimo z naslednjim ukazom:
sudo apt instačč apache2-utils

Na računalniku s katerim bomo delali obremenilni test naredimo naslednje:
ab -c 100 -n 100 -r http()s://example.com/

S tem ukazom bomo testirali 100 hkratnih uporabniko (-n 100) in vsak bo naredil 100 hkratnih zahtevkov (-c 100)

TFTP strežnik (postavitev in nastavitev)

TFTP (Trivial File Tranfer Protocol) je "okleščen" FTP (File Tramsfer Protocol). Namenjen je bil za enostavno uporabo, kjer ne potrebujemo avtentikacije. Uporaben je za shranjevanje konfigiracij in operacijskega sistema (Cisco naprave) ali poganjanje operacijskega sistem preko BOOTP, PXE ali kakšnega drugega omrežnega protokola. Veliko IOT naprav uporablja TFTP za prenos novega operaciskega sistema oz. popravkov, torej je še vedno uporaben.

V našem primeru bomo namestili TFTP strežnik na Ubuntu.

Namestitev TFTP strežnika

Namestili bomo TFTP strežnik, ki je že v Ubuntu sistemu. Paket se imenuje tftpd-hpa.
Najprej prenovimo bazo Ubuntu paketov, da dobimo posodobljeno sliko.
sudo apt update

Namestiomo tftpd-hpa
sudo apt install tftpd-hpa

Po namestitvi preverimo če tftpd-hpa servis deluje in je zagnan.
sudo systemctl status tftpd-hpa

Nastavitev TFTP strežnika
Če želimo spreminjati nastavitve. moramo spremeniti datoteko tftpd-hpa, ki se nahaja na /et/default/tftpd-hpa.
sudo nano /etc/default/tftpd-hpa

Privzete nastavitve:
TFTP_USERNAME="tftp"
TFTP_DIRECORTY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTION="—secure"


Po privzetem, ne omogoča kreiranje novih datotek, ki jih sproži oddaljen klient. Če želimo to omogočiti, je potrebno spemeniti zadnjo nastavitev na sledeći način:
TFTP_OPTION="—secure —create"

Če želimo spemeniti mapo, potem spremenimo naslednjo nastavitev:
TFTP_DIRECORTY="/tftp"

Mapo moramo še ustvariti in nastaviti privilegije za uporabnika tftp.
sudo mkdir /tftp
sudo chown tftp:tftp /tftp
sudo systemctl restart tftpd_hpa


S tem smo postavili tftp strežnik. Testiramo ga lahko z napravo, ki zna pisati na tftp (Cisco naprave) ali z uporabo tftp klienta.

Požarni zid (linux UFW)

Osnovna priporočena nastavitev ufw požarnega zidu na vsakem linux stražniku s souporabo fail2ban programa.

UFW configure
sudo ufw limit 22/tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable


Omogočili smo samo port 22, na katerem posluša SSH deamon. Le ta omogoča oddaljen nadzor nad strežnikom.
Če imamo kakšen drug servis na tem strežniku moramo obvezno spustiti ta promet skozi ufw požarni zid.

Kot primer naš web strežnik:
sudo ufw allow 80/tcp (http)
sudo ufw allow 443/tcp (https)
sudo systemctl restart ufw


Po koncu nastavljanja omogočimo še fail2ban. Po privzetem posluša samo za SSH servis, alhko ga uporabimo tudi za druge servise, če omogočamo avtentikacijo.
sudo systemctl start fail2ban