- IT Blog – Linux & Windows - https://it.naxoblog.hu -

Bejelentkezés: helyi és távoli

Egy többfelhasználós rendszernek szükséges megkülönböztetnie egymástól a felhasználóit, hogy tudjanak egyszerre is dolgozni, valamint megakadályoznia, hogy hozzáférhessenek egymás fájljaihoz és könyvtáraihoz engedély nélkül. Nézzük át, hogy a felhasználók hogyan léphetnek be a rendszerbe.

Mielőtt használatba vennénk a parancsértelmezőnket, előbb be kell jelentkezni a rendszerbe. Ezt kétféleképpen tehetjük meg, vagy a számítógép előtt ülve, vagy távolról. A következőkben átvesszük mindkettőt.

Helyi bejelentkezés

A bejelentkezési folyamat a getty program indulásával kezdődik. Az inittab fájlban állíthatjuk be, hogy mely terminálokon induljon el a getty program, azaz hányas számú terminálok legyenek aktívak a belépésre. A getty feladata, elindítani a login programot, amely kéri a felhasználói nevet és a jelszót. Ne ijedjünk meg, biztonsági okok miatt, nem fog megjelenni karakter a jelszó gépelése közben.

Naxonet login: jonci
Password:

A login program a /etc/passwd és ha létezik, akkor a /etc/shadow fájlt is felhasználja a felhasználó azonosítására. E két fájlról a Felhasználók és csoportok kezelése fejezetben (hamarosan) lehet bővebben olvasni.

A /etc/nologin fájl létrehozásával megakadályozható a felhasználók belépése, ilyenkor csak a rendszergazda jelentkezhet be. A rendszer lekapcsolásakor is automatikusan létrejön, hogy senki se léphessen be, amíg a rendszer újra be nem töltődik.

Karakteres, helyi bejelentkezés esetén a <gépnév> login: előtt a rendszer megjeleníti a /etc/issue fájl tartalmát (pre-login message, belépés előtti üzenet). Ebben különböző információk kiírására utasíthatjuk a getty programot.

Távoli bejelentkezés

Vonatkoztassunk el a hardver feltételektől, foglalkozzunk inkább csak a szoftver oldalával. A két gépnek kommunikálnia kell egymással és ehhez programok szükségesek. Amelyik géphez akarunk csatlakozni, azt nevezzük szerver gépnek, a másikat pedig kliensnek. Többféle kommunikációs csatorna létezik, a használni kívánt programtól függ, hogy melyikkel jön létre az adatforgalom. Amikor csatlakozni akarunk egy szerverhez, akkor először kéréssel fordulunk hozzá.

A kérésre háromféleképpen reagálhat a szerver. Az egyik lehetőség, hogy a szolgáltatást biztosító program fut a háttérben (démon), fogadja a kéréseket és biztosítja a kommunikációt. A másik lehetőség, hogy – a háttérben mindig futó – inetd démon fogadja a kérelmeket és elindítja a szolgáltatást biztosító programot. A /etc/inetd fájlban állíthatjuk be a biztosítani kívánt szolgáltatásokat. Figyeljünk rá, hogy alapesetben sok szolgáltatás engedélyezve lehet (feleslegesen), ami biztonsági rést is jelenthet, így a nem használt szolgáltatást jobb, ha bezárjuk. A harmadik esetben a szerver elutasítja a kapcsolatot. Többek között lehet oka, hogy nem fut a szolgáltatás, ami feldolgozná a kéréseket, vagy a tűzfal blokkolja a csatlakozást.

Távoli bejelentkezés előtti üzenetet a /etc/issue.net fájlban helyezhetünk el. Manapság már nem használatos telnet szolgáltatás alapból megjelenítette (magát a telnet programot gyakran használják tesztelés céljára), az ssh esetén engedélyezni kell a /etc/ssh/sshd_config fájlban:

Banner /etc/issue.net

A beállítás érvényesítéséhez indítsuk újra az ssh a szolgáltatást:

root@bash# /etc/init.d/ssh restart

Ezután a következő bejelentkezésnél megjelenik a tartalma.

Sikeres bejelentkezés után

A képernyőre kerül a /etc/motd (message of the day) fájl tartalma (post-login message, belépés utáni üzenet). Rendszergazdák ezt a fájlt használják a rendszer hirdető táblájának, hisz alapértelmezetten minden felhasználó minden bejelentkezésénél megjelenik a tartalma. Ezen felül a rendszer ellenőrzi, hogy van-e levél a postaládánkban (alapesetben: /var/mail/<felhasználónév>). Ha a fájl nem létezik, nem ír ki semmi, ha létezik, de nincs benne levél, akkor a no mail for <felhasználóné> üzenet látható. Ha van levelünk, de mind olvasatlan, akkor a You have mail, ha olvasatlan is akad közöttük, akkor a You have new mail fogad minket.

Csendes bejelentkezés

Mind a /etc/motd fájl, mind a levelesláda állapotának megjelenítését letilthatjuk, ha elhelyezünk egy tetszőleges tartalmú .hushlogin fájlt a home könyvtárunkban (alapesetben: /home/<felhasználónév>/). A feltétel nélküli letiltás gondot okozhat, ezért ajánlott csak az ismétlődő megjelenítést mellőzni. Az alábbi példát helyezzük el a ~felhasználónév/.bash_profile fájlban:

if [ ! -e ~/.hushlogin -o /etc/motd -nt ~/.hushlogin ] 2>/dev/null
then
     cp /etc/motd ~/.hushlogin
     more ~/.hushlogin
fi

Ha nem létezik a .hushlogin fájl, vagy létezik, de régebbi, mint a /etc/motd, akkor lemásolja a /etc/motd fájlt a felhasználó saját könyvtárba .hushlogin néven és megjeleníti a képernyőn, minden más eseten nem történik kiírás.

A make program felhasználásával is bemutatunk egy példát (bár sok rendszeren alapból nem települ a make, szerveren pedig egyenesen kerülendő):

if [ -f /etc/motd ]
then
     make -s -f .hushlogin .hushlogin
fi

Azaz, ha létezik a /etc/motd, akkor a make programmal (-s, csöndes üzemmód), feldolgoztatjuk a .hushlogin-t mint makefile és ugyanaz lesz a célállomány is.
A .hushlogin fálba a következőket helyezzük el (a -> a tabulátor jele):

.hushlogin: /etc/motd
->   touch .hushlogin
->   more /etc/motd

Megadjuk, hogy a .hushlogin a /etc/motd fájltól függ, és ha régebbi annál, akkor a touch és more parancsokat kell végrehajtani. A touch frissíti .hushlogin módosítási dátumát a aktuális időpontra, majd a more megjeleníti a /etc/motd tartalmát.

Szolgáltatások tiltása és engedélyezése számítógépenként

Lehetőségünk van az inetd szolgáltatását egyenként tiltani vagy engedélyezni adott címekre. A tiltásokat a /etc/hosts.deny fájlban, az engedélyezéseket a /etc/hosts.allow fájlban kell megadni. Ha nem léteznek, akkor semmiféle korlátozás nincs beállítva.

Célszerű a /etc/hosts.deny fájl tartalmát a következőre beállítani:

ALL: ALL

Ezzel minden szolgáltatást tiltunk mindenkinek befelé. A /etc/hosts.allow fájlban pedig engedélyezhetjük a kívánt szolgáltatásokat megadott gépekre, vagy tartományokra. A szolgáltatások listáját a /etc/services fájlban találjuk. Az alábbi példa az ftp szolgáltatást engedélyezi a belső hálóra:

in.ftpd: 192.168.0.0/255.255.255.0

A két fájl használatával jól konfigurálható egy szerver, de nagyobb biztonságot érhetünk el egy igazi tűzfal használatával (például: iptables – erről majd egy későbbi bejegyzésben írok).