A szomszéd vár: OpenBSD mentőegység

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

Aki olvasgatja az írásaimat, az már rájöhetett, hogy a UNIX világ nekem nem munkaeszközt, vagy operációs rendszert jelent, hanem egyfajta hobbi. Ennek köszönhetően állandóan gyötör a kíváncsiság, és óriási vehemenciával megyek neki a dolgoknak, aztán persze győz a józan ész... Így volt ez a házi mentőegység révén is, őrületes koncepciók voltak, me majd NFS megosztás lesz, meg növekményes mentés lesz, meg minden lesz, és mindezt majd egy NAS rendszerrel fogom megoldani, jelesül az OpenMediaVaultal (ami amúgy remek). Aztán persze semmi nem lett, csak a jó öreg FTP-t használtam; újra tervez...

Miért OpenBSD? Először is mert már játszottam vele korábban is. Még a dinók idején jobb híján egy viseletes, törött kijelzős Acer netbook (nem röhög!) szolgált mentőegységként, és az OpenBSD még azon is hajlandó volt értelmezhető módon elfutkorászni. Másodszor pedig azért, mert alapértelmezetten tartalmaz eszközöket a projekt megvalósításához. Harmadszor pedig mert híres a stabilitásáról és biztonságáról.

Az OpenBSD telepítéséről nem kívánok beszélni, 100+ leírást, videót találsz róla, és egyébként sem agysebészet...

A vas: egy szó szerint a kuka mellől mentett Fujitsu Primergy TX100, Intel Xeon X3330, 4GB RAM, a célnak bőven megfelel.

FTP szerver:

Az OpenBSD-ben van saját, base system részeként szállított FTP szerver, az ftpd, tehát külön csomagot nem kell telepítened. A koncepció: belső hálózat, egyetlen felhasználó, jelszavas hozzáférés, home könyvtárra chrootolt konfiguráció.
Az OpenBSD ftpd erre közvetlenül alkalmas, felhasználót az `/etc/ftpchroot` fájlban megadva a saját login könyvtárára lehet chrootolni.
Fontos, hogy ne root felhasználót használj FTP-re! Az ftpd eleve korlátozza az alacsony UID-s felhasználókat, normál felhasználóval dolgozz.

Először ellenőrizd a felhasználót a biztonság kedvéért, főleg hogy a saját könyvtár megfelel-e:

getent passwd FELH

Ha rendben van, akkor egyszerűen add hozzá a felhasználóneved az /etc/ftpchroot fájlhoz!
Az `/etc/ftpchroot` olyan felhasználókat tartalmaz, akiknek az FTP-munkamenetben a gyökérkönyvtár a felhasználó saját könyvtára.

FTP kliens:

/
├── Dokumentumok
├── Letöltések
├── kep.png
└── fajl.txt

A valódi fájlrendszerben:

/home/FELH/
├── Dokumentumok
├── Letöltések
├── kep.png
└── fajl.txt

Ez biztonságosabb, mint ha az FTP-felhasználó az egész fájlrendszerben tudna navigálni.

A démont inetdn keresztül is indíthatnánk, de mivel gép erre van szánva, így egyszerűen az ftpd saját funkcióját használjuk, és egyben akkor már tiltjuk is az anonim bejelentkezéseket (természetesen admin jogokkal dolgozunk).
Az opciók: -D = démonként fut, -n = tiltjuk az anonim bejelentkezéseket, -l = naplózás.

rcctl set ftpd flags -D -n -l
rcctl enable ftpd
rcctl start ftpd

Ellenőrizhetjük a ténykedésünket.

rcctl check ftpd
rcctl get ftpd

Ha minden OK, állítsuk be a tűzfalat, hogy az FTP szerverünk csak a saját, belső hálózatunkról legyen elérhető, adjuk az /etc/pf.conf állományhoz (X.X.X.X helyére a saját hálózati IP-t):

local_net = "X.X.X.X/24"

# FTP
pass in proto tcp from $local_net to any port 21
pass in proto tcp from $local_net to any port 49152:65535

pfctl -nf /etc/pf.conf paranccsal ellenőrizzük a konfigot, ha nem kapunk hibát töltsük újra a szabályokat a pfctl -f /etc/pf.conf paranccsal.
pfctl -sr paranccsal ellenőrizhetjük, mi hogyan van engedélyezve a rendszerben.

Ezzel készen is vagyunk, tölthetjük az adatokat az FTP szerverünkre!

Git szerver:

Szintén óriási vehemenciával regisztráltam Codeberg fiókot, me majd szép rendben tartom ott a szkriptjeimet, pontfájljaimat... Persze ebből sem lett semmi, hamar ráébredtem se időm, és főleg energiám nincs normálisan karbantartani, azt meg nem akartam, hogy megszóljanak, hogy még egy README.md-t sem tudok normálisan összehozni.
Viszont a verziókövetés jó dolog, így aztán "nincs más hátra mint előre" alapon jött a saját szerver ötlete Gitea felhasználásával.

Az OpenBSD alapból tartalmazza csomagban, tehát pkg_add gitea, és meg is van. Engedélyezd és indítsd el a Gitea démont: rcctl enable gitea, rcctl start gitea.

Következhet az első konfiguráció a webes felületen:

   1. Nyisd meg a böngésződet a szerver IP-címén a 3000-es porton (pl. http://szerver_ip:3000).
   2. Egy kezdeti beállító oldal fogad:
      * Database Type: Válaszd az SQLite3-at, ha nincsenek extra igényeid.
      * Path: Hagyd az alapértelmezetten (általában /var/gitea/data/gitea.db).
      * Server Domain / SSH Server Domain: Írd be a szervered helyi IP-címét vagy helyi domain nevét.
      * HTTP Listen Port: 3000
   3. Görgess az oldal aljára, és hozz létre egy Administrator fiókot (ez leszel te).
   4. Kattints a telepítés gombra.

Itt is kell mókolni egy kicsit a tűzfallal (ha esetleg már beállítottad a local_net változót az FTP miatt, akkor az nem kell; /etc/pf.conf):

# Gitea
ext_if = "em0"                                                                                     
local_net = "X.X.X.X/24"

pass in on $ext_if proto tcp from $local_net to any port { 22, 3000 } keep state

Innentől az eljárás az FTP-nél tárgyaltak szerint!

A fiók létrehozása szinte megegyezik a Codeberg regisztrációnál megszokottal.

A kliens gépeden:

   1. Generálj egy Ed25519 kulcsot (hagyd az alapértelmezett fájlnevet, a jelszót/passphrase-t pedig üresen is hagyhatod, ha a teljes automatizáció a cél):

  ssh-keygen -t ed25519 -C "kulcs"

   2. Olvasd be és másold ki a nyilvános (public) kulcsod tartalmát:

  cat ~/.ssh/id_ed25519.pub

   (Valami ilyesmit fogsz látni: ssh-ed25519 AAAAC3NzaC1l... kulcs)

A Gitea webes felületén:

   1. Nyisd meg a Gitea-t a böngészőben (http://szerver_ip:3000), és lépj be.
   2. Kattints a jobb felső sarokban a Profilodra -> Settings (Beállítások).
   3. A bal oldali menüben válaszd az SSH / GPG Keys menüpontot.
   4. Kattints az Add Key (Kulcs hozzáadása) gombra.
   5. Adj neki egy tetszőleges nevet (pl. Kulcsom), a Content (Tartalom) mezőbe pedig másold be az előbb kimásolt id_ed25519.pub teljes tartalmát.
   6. Kattints az Add Key gombra a mentéshez.

Kész is vagy, kezdődhet a móka!

Az OpenBSD egy rendkívül hatékony és biztonságos rendszer. A Gitea csomag alapból kiaknázza az operációs rendszer saját biztonsági mechanizmusait, pl. pledge (rendszerhívások korlátozása) és unveil (mit láthat a program a rendszerből), így a folyamat szigorúan el van zárva a rendszer többi részétől. És könnyedén beüzemelhetünk egy biztonságos kis FTP szervert is a beépített eszközökkel.
Az én kis igényeim szempontjából zseni, tényleg nem kell ennél több!

Berus