https://www.hudic.si

Uporabni nasveti

Linux

Kako zagnati adhoc spletni strežnik

Včasih želimo zagnati adhoc spletni strežnik, da preizkusimo kako bi določena koda delovala, brez da bi nameščali namenski speltni strežnik.
Če imate nameščen python programski jezik, lahko to naredite kar iz orodne vrstice (CLI)

#python -m http.server "port"

Primer
#python -m http.server 7000


Če imate nameščen PHP lahko podobno naredit iz orodne vrstice (CLI):

#php -S 127.0.0.1 -p "port"

Primer
#php -S 127.0.0.1 -p 7000

Secure shell povezava javi napako

Ko se želimo povezati preko secure shell povezave javi napako:

ssh test@test.local
Unable to negotiate with test.localport 22: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1


Kaj storiti?

V novejših različicah ssh konfiguracije so se odstranili naketeri manj varni protokoli. Potrebno jih je dodati. Predlaga se, da za vsako destinacijo posebaj naredite vnos in en v konfiguracijsko datoteko, ki velja za cel sistem, ker s tem manjšate varnost naprave iz katere se povezujete.

V osebnem iemniku je potrebno narediti config datoteho pord .ssh mapo.

nano $user/.ssh/config

v datoteko dodamo naslednji zapis:

Host test.local
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

S tem se popravi samo povezava do test.local. Če želite narediti za vse, je potrebno v host vrstici namesto test.local dodati *.

"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

Framework prenosnik pojem popravljivosti

Pred dobrim letom dni sem začenjal spremljati podjetje Frame.work, ki je obljubljalo lahko popravljiv in nadgradljiv prenosnik, ki bo imel podobne karakterisike kot Apple prenosniki, Bil sem močno v dvomih, a vseeno nestrpno čakal kaj se bo zgodilo.

Ko so predstavili izdelek, sem se takoj zagrel za napravo in sem si jo želel poskusiti. Sem velik podpornik Right to Repir gibanja. Želim si, da se naprave, ki jih kupim, da enostavno popravili ali nadgraditi. Lahko sam, lahko pa pri pooblaščenih ali nepooblaščenih servisih. Framework prenosnik je definitivno popravljil in to do take mere, da lahko to opravite sami. Ponujajo vse rezervene dele in tudi navodil, kako to zamenjati. Polagam velike upe na njih, da uspejo in da ne bo ta prenosnik muha enodnevnica.

Ifixit je ocenil popravljivost prenosnika 10/10.

Na svoj prenosnik, ki se ga dobil pred kratkim, sem namestil elementary os 6.1. Več ali manj vse deluje po namestitvi razen za brezžično povezavo je potrebno nagraditi na zadni linux kernel, ki ibstaja za elementary in pobrisati /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm datoteko in brezžična povezavo po ponovnem zagonu prenosnika, deluje brez probelma.

Slika mojega rprenosnika:

framework

Več o prenosniku in namestitvi elementary OS-a.

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).

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
sudo groupmod -a -G tftp $(whoami)


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

Caffeine za Elementray OS Hera 5.1.7

Že nekaj časa na svojem Thinkpad-u X201 uporabljam Elementary OS. Zadnja verzija je Hera 5.1.7. Za večinoma stvari, ki jih delam pol profesionalno ali profesionalno. Ker sem še vedno navdušen nas macos-om, sem Hero poskušal približati izgledu macos-a. Torej moj desktop izgledaj približno tako kot bi izgledal macos Big Sur (slika)

hera-eos

Sem pa imel malo težav, da sem usposobil caffein in sam indikator, da se pokaže v opravilni vrstici. Rešitev je bila malo skrita, ker so developerji ElemntaryOS-a nehali uporabljati Ayatan idicators, ki omogoča, da dodajamo 3rd party indikatorje v opravilno vrstico. To se popravi na naslednji način.

Prvo moramo dodati APT respository, da bi lahko namestili zahtevano programsko opremo.
$ sudo add-apt-repository ppa:yunnxx/elementary
$ sudo apt update
$ sudo apt install indicator-application wingpanel-indicator-ayatana


V naslednjem koraku je potrebno omogočti, da se indikator pojavi na Patheon opravilni vrstici, ker po prevzetem, s pojavi samo za Unity ali Gnome, ki sta privzeeta za Ubuntu.
$ sudo nano /etc/xdg/autostart/indicator-application.desktop

potrebno je spremeniti vrstico:
OnlyShowIn=Unity;GNOME;

v in na koncu shraniti.
OnlyShowIn=Unity;GNOME;Pantheon;

Ko smo shranili spremembe, ponovno zagnati servis lightdm. Če karkoli še niste shranili v drugih programih, to le storite, ker ponovni zagon lightdm servisa, bo odjavil aktivnega uporabnika in vam ponudil prijavno okno. Torej ponovno zaženemo lightdm servis.
$ sudo service lightdm restart

Če imate dvakrat indikator za omrežje naredite naslednje
$ sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart/nm-applet.old

Še enkrat naredite ponovni zagon lightdm servisa.

Oddaljen dostop Ubuntu operacijskega sistema

Vedno se sprašujemo, kako oddaljeno nadzirati strežnik, ki je brez tipkovnice, miške in monitorja. Ponavadti so to virtualni računalniki. Za oddaljeni nadzor Ubuntu operacijskega sistema uporabljamo VNC (Virtual Network Computing).
V naslednjih korakih bom namestil VNC strežnik na virtualni računalnik, kateri poganja Ubuntu operacijski sistem.

Najprej namestimo zadnje popravke na operacijski sistem:
sudo apt update
sudo apt upgrade

Potem namestimo lightdm ("lažjo" različico Ubuntu grafičnega vmesnika) in sistem ponovno zaženemo.
sudo apt install lightdm
sudo reboot

Ob ponovnem zagonu računalnika, v terminalu namestimo še X11vnc.
sudo apt install x11vnc

Sedaj moramo narediti servis, ki se bo ob zagonu vedno zagnal, da bomo lahko oddaljeno dostopali do računalnika.
sudo nano /lib/systemd/system/x11vnc.service

V njega zapišemo naslednje ukaze in shranimo zapis.
[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target

[Service]
Type=simple
#Zamenjaj geslo s svojim
ExecStart=/usr/bin/x11vnc -forever -display :0 -auth guess -passwd password
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure

[Install]
WantedBy=multi-user.target

Sedaj moramo ponovno zagnati vse deamon-e, x11vnc omogočiti ob zagonu in zagnati X11vnc servis.
sudo systemctl deamon-reload
sudo systemctl enable x11vnc.service

Če želimo pogledati stanje x11vnc servisa uporabimo
sudo systemctl status x11vnc.service

Za odaljeni dostop bom uporabili VNC klienta. V samem macos-u je že vgrajen, za druge operacijske sisteme ga moramo namestiti posebaj.

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

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)

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