Leggyakoribb Linux rendszergazda hibák és megelőzésük

Hibát mindenki elkövet. Ebből tanulunk. Ezek egy része apró bosszúságok, némelyik komolyabb fejfájást okoz. Ebben az írásban a leggyakoribb hibákat szedtem össze azzal a céllal, hogy ötleteket adjak a megelőzésükhöz. A “figyelj jobban oda” nem tartozik ezek közé. Ha ez menne, akkor nem lennének hibák. Minden esetben olyan megoldást mutatok, ami az apró figyelmetlenségek ellen is megvéd.

Te milyen hibákat követtél el? Írd meg kommentben! Az ötletek alapján folyamatosan frissítem a cikket.

Kizártam magam a tűzfalon

A top 10 hibák egyike. Mindenki elköveti élete során legalább egyszer.

Elkövetés egyszerű módja: “iptables -A INPUT -j DROP” (vagy REJECT). Ez akkor lesz “hatásos”, ha nincs más tűzfal szabály, ami biztosítja legalább a meglévő SSH kapcsolatod életképességét (pl. egy ESTABLISHED engedély). Azonnali kizárás. Javítani konzolról vagy újraindítással lehet.

Elkövetés figyelmetlen módja: “iptables -I INPUT -j DROP” (vagy REJECT). Itt a “-I” a kulcs: a szabályok legelejére beszúrja az újat, így mindegy, hogy volt-e előtte szabály, ami beenged. Azonnali kizárás minden esetben. Javítás mint fent.

Elkövetés különösen figyelmetlen módja: “iptables -F“. Előfeltétel, hogy az alapértelmezett INPUT szabály DROP (iptables -P INPUT DROP). A “-F” törli az összes szabályt. Ha az alapértelmezett ACCEPT-et (logikusan) átállítottad DROP-ra korábban, azonnal kizár a rendszerből. Itt is csak a konzol vagy újraindítás a megoldás.

A hibát több módon is elkerülheted. Kiindulva abból, hogy nem használsz tűzfal-menedzsment szoftvert (ufw, shorewall, stb.), ami gyárilag tartalmaz erre megoldást, hanem közvetlenül a Netfilter szabályokat “piszkálod”, a jó megoldás ha azokat fájlba mented és ott módosítod. Ez amúgy is hasznos a szabályok induló betöltésénél (vagyis egy scriptbe írt iptables parancsok helyett is sokkal hatékonyabb). De akkor is működik, ha csak eseti módosításhoz használod (valójában az iptables parancs is valami hasonlót végez, csak az ellenőrzés lépés nincs beépítve).

A futó rendszered összes tűzfal szabályát az iptables-save parancs kiírja. Ezt egyszerűen tedd bele egy fájlba. Pl. “iptables-save > /tmp/iptables.up.rules“. Ezt a fájlt tudod módosítani (figyeld meg, hogy az iptables parancs paraméterei vannak benne a parancs nélkül!). Arra figyelj, hogy a mentéskor a számlálók aktuális értéke is bekerül ([] közé). Ezeket érdemes onnan kivenni, hogy a visszatöltésnél ne állítsa vissza őket.

A szerkesztés után az “iptables-apply /tmp/iptables.up.rules” parancs felülírja a tűzfaladat a fájlban lévő szabályokkal, majd megkérdezi, hogy ez így jó-e. 10 másodperced van válaszolni (-t paraméterében megadhatod a várakozási időt). Ha nem teszed, visszatölti az előző állapotot. Így ha elrontottad, max. a várakozási időre zártad ki magad.

Ha már így szépen fájlban van a tűzfalad beállítása, akkor érdemes azt betölteni az indulásnál. Tedd át a fájlt a /etc/network/ könyvtárba. Onnan az “iptables-restore /etc/network/iptables.up.rules” parancs tölti neked vissza, ami kérdés nélkül felülírja a meglévő szabályokat. A már tesztelt, biztosan működő szabályokkal ez nem lesz gond (és rendszer indításkor nem kérdezhet, így oda az apply változat nem jó). Sose ezt a fájlt módosítsd! Ha ezt teszed és kizárod megad, az újraindítás sem fog segíteni.

Extra tipp: ne feledd el tűzfalazni az IPv6 forgalmat is! A parancsok majdnem ugyan ezek, csak a parancs ip6tables (-apply, -save, – restore). A fájl logikusan ip6tables.up.rules. Ha van IPv6 elérhetősége a gépednek és kizártad magad IPv4-en vagy fordítva, akkor a másik protokollon még be tudsz lépni.

Rossz gépet állítottam le

Elég egy apró figyelmetlenség, hogy a rossz terminálba vagy fülbe írd be a “shutdown -h now“, “poweroff” vagy “systemctl poweroff” parancsot. Az enter lenyomása után azonnal tudod, de ott már késő. És nem elég, hogy egy éles üzemben lévő rendszert leállítottál, de messze is van, oda kell menni elindítani, ha az egy fizikai szerver és nincs távoli konzolja. De ha van, akkor is kellemetlen.

Ennek elkerülésére az odafigyelés mellett a legjobb a molly-guard program telepítése. Ez nem tesz mást, mint észleli, hogy a fenti parancsokat (a reboot-ot is beleértve) SSH-n keresztül adtad ki. Ilyenkor a parancs végrehajtása helyett megkérdezi, hogy melyik gépet akarod leállítani/újraindítani. Ha a beírt név egyezik a gép hostnevével végrehatjha, ha nem, akkor semmi sem történik. Ahhoz, hogy a gépnek pont ugyan az legyen a neve, mint amit leállítani akartál, de mégis másik gép pici az esélye. Főleg ha betartod azt az alapszabályt, hogy nem adod két gépnek ugyan azt a nevet 🙂

Te milyen hibákat követtél el? Írd meg kommentben!

A cikket folymatosan bővítem az ötletek alapján.

Szerző

Czakó Krisztián

Linux és DevOps oktató, a DevOps Akadémia alapítója.

Oszd meg!

Bejelentkezés

Iratkozz fel, hogy értesülj az újdonságokról!

Please enter your name.
Please enter a valid email address.
Please check the required field.
Something went wrong. Please check your entries and try again.

Nézd meg az ingyenes képzéseket!

Scroll to Top