2024. április 19., péntek

Gyorskeresés

Nem admin felhasználó SSH belépés engedélyezése Synology NAS-on

Írta: |

[ ÚJ BEJEGYZÉS ]

A bejegyzés nem az én szellemi termékem, a dicsőség Laurenz-et illeti aki a blogjában írta le a menetét, én csak magyarra átültettem azt. Nem pontos fordítást készítettem ,de azért remélem a lényegét nem veszti el. Természetesen engedélyt is kértem arra, hogy lefordíthassam, ami meg is adatott.

Mielőtt belevágnál: semmilyen felelősséget nem vállalok azért, ha esetleg bármilyen hiba felmerülne a művelet közben, csak saját felelősségre vágj bele! Ha teheted próbáld ki előbb virtuális DSM-en, és ha működik csak akkor csináld meg az éles rendszeren is. Amennyiben úgy döntessz, hogy belevágsz arra érdemes felkészülni, hogy hírek szerint Synology-ék nem szeretik ha Entware-t telepítessz és akár a támogatást is megtagadhatják [link], ezért ezt is vedd figyelembe!

Elöljáróban még annyit tennék hozzá, hogy nem szakmám az informatika, és linuxban is max. lelkes amatőri címre pályáznék, így előfordulhatnak fogalmi zavarok a részemről, de igyekeztem mindent magyarul leírni. Amennyiben megjegyzésed lenne a szöveggel (vagy a helyesírással :) )kapcsolatban, kérlek jelezd privátban, én pedig igyekszem majd mihamarabb kijavítani azt. :R Mivel szerintem az a legcélszerűbb ha minden synology-val kapcsolatos információ a fórumban gyűlik, így a hozzászólásokat nem engedélyeztem a bejegyzés alatt.

-------------------------------------------------------------------------------------------------------------------------------------------------

A 6-os Synology DSM ugyan engedélyezi az SSH hozzáférést, de kizárólag az admin csoport tagjainak. Ezen szimplán GUI-ból, de még SSH alól sem lehet változtatni. Synology-ék egy teljesen átírt OpenSSH-t használnak a nasokon. Ezen pedig csak úgy segíthetünk ha mi magunk telepítünk egy OpenSSH szervert és ennek a szervernek a konfig fájljait módosítjuk, majd az így módosított OpenSSH szerverre már be tudunk lépni nem admin jogú felhasználóval is. Van több lehetséges módja is ennek (pl.), azonban a legegyszerűbbet fogom bemutatni, nevezetesen az openssh-server-pam csomag telepítését Optware / Entware csomagforrás használatával.

Ahhoz, hogy az Optware vagy Entware csomagkezelőt fel tudjuk telepíteni a NAS-ra, a Csomagkezelési központ beállításaiban fel kell vennünk csomagforrásként a https://cphub.net-et:

Csomagkezelési központ >> Beállítások fül >> Csomagforrások fül >> Hozzáadás
Név: CPHub (de bármi lehet)
Hely: https://cphub.net
Ok >> Ok

Amint mentettük a Csomagkezelési központ Közösség felületén egy frissítést nyomva meg kell keresnünk az Easy Bootstrap Installer csomagot amit telepítenünk kell. Amennyiben az Entware-t választjuk, akkor csak okézunk mindent és települ is.

Miután végeztünk a telepítéssel engedélyezzük a NAS-on az SSH és TELNET szolgáltatást:

Vezérlőpult >> Terminál és SNMP >> SSH és TELNET szolgáltatások engedélyezése: pipa

Lépjünk be az admin (nem kell az alapértelmezett adminnak lennie) felhasználónkkal SSH-n keresztül a NAS-unkra, majd frissítsük a frissen telepített csomagforrásunkat és telepítsük az openSSH server csomagot:

ssh adminfelhasználó@nasunk.ip.címe
>> pl. tomi@192.168.1.45, ahol tomi az admin jogú felhasználónk, a nasunk ip címe pedig 192.168.1.45).
adjuk meg a jelszavunkat.

Entware frissítése:

sudo /opt/bin/opkg update

OpenSSH szerver telepítése:

sudo /opt/bin/opkg install openssh-server-pam

Miután telepítettük a csomagot, szerkesztenünk kell a rendszer /etc/passwd, /etc/group és az /etc/ssh/sshd_config fájlokat.

(Megjegyzés: a nas-on alapból SSH alatt csak a vi szerkesztő érhető el. Amennyiben kényelmetlenül érezzük magunkat a használatával, akkor telepíthetjük a nano szerkesztőt is a https://packages.synocommunity.com csomagforrás hozzáadásával, ahonnan a SynoCli File Tools csomag telepítésével megkapjuk többek között a nano szövegszerkesztőt is.)

Először is mentsük a passwd fájlunkat:

sudo cp /etc/passwd /etc/passwd_orig

Majd az /etc/passwd fájlhoz felveszünk egy sshd nevű felhasználót:

echo 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
' | sudo tee -a /etc/passwd

>> ezt a két sort egy másolással illesszük be a terminálba

Megengedjük a nem admin felhasználónknak, hogy bejelentkezhessen, ehhez szerkesztjük az /etc/passwd fájlt:

sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin-t lecseréljük /bin/sh-ra

Létrehozzuk az sshd csoportot, persze előbb mentjük az eredeti fájlt:

sudo cp /etc/group /etc/group_orig >> ez menti

echo 'sshd:x:74:' | sudo tee -a /etc/group >> ez létrehozza

Annak a megengedése, hogy az új SSH szerver (sshd) használhassa az eredeti hoszt SSH kulcsait: (természetesen először mentjük az eredeti fájlt)

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig >> ment

sudo sed -i 's/#HostKey /HostKey /g' /etc/ssh/sshd_config >> engedélyez

Az újonnan létrehozott SSH szerver konfigfájl linkelése az eredeti konfigfájl helyére:

sudo mv /opt/etc/ssh/sshd_config /opt/etc/ssh/sshd_config.orig

sudo ln -s /etc/ssh/sshd_config /opt/etc/ssh/sshd_config

Nézzük meg, hogy működik-e. Válasszunk ki egy szabad portot, állítsuk be ,majd azon keresztül csatlakozzunk a nem admin felhasznmálónkkal.

sudo /opt/sbin/sshd -p 22000

ssh nemadminfelhasználó@nas.ip.címe -p 22000

Ha minden jól ment és sikerült a belépés, jöhet az izzasztóbb rész, azaz az sshd bináris cseréje a régiről az újra. Ehhez be kell majd TELNET-eznünk a NAS-unkba, leállítani minden olyan szolgáltatást ami az sshd-hez kapcsolódik, majd jöhet a bináris csere. Azaz:

TELNET-el belépünk:

telnet nas.ip.címe
>> admin felhasználóval lépünk be

Leállítjuk az sshd szervízt és minden hozzákapcsolódó szolgáltatást:

sudo /sbin/initctl stop sshd

sudo killall sshd

A binárisok cseréje:

sudo cp /bin/sshd /bin/sshd.orig

sudo cp /opt/sbin/sshd /bin/sshd

Az sshd szervíz ujraindítása:

sudo /sbin/initctl start sshd

Logok ellenőrzése, hogy minden rendben zajlott-e:

sudo tail /var/log/upstart/sshd.log

Amennyiben minden jól ment, nincs más teendőnk mint az engedélyeket rendbe tenni, hogy rendben használni tudjuk.

ssh admin@nas.ip.címe

.ssh mappa létrehozása a nem admin felhasználónk számára:

cd /var/services/homes/nemadminfelhasználónkmappája

mkdir .ssh

A jogok és tulajdonos kiosztása:

sudo chmod 0700 .ssh >> írási, olvasási, végrhajtható jog kiosztása a mappára

sudo chown -R nemadminfelhasználó:users .ssh >> a tulajdonos megváltoztatása a nem admin felhasználóra

Amennyiben szeretnénk SSH kulcsokat is tárolni a felhasználónknál, másoljuk át a kulcsunkat, majd még egy-két engedély kiosztása után működni is fog a dolog.

SSH kulcs másolása arról a gépről amiről be szeretnénk majd lépni:

ssh-copy-id nemadminfelhasználó@nas.ip.címe

Lépjünk be a nem admin felhasználónkkal, majd változtassunk a jogosultságokon:

ssh nemadminfelhasználó@nas.ip.címe
>> még kérni fogja a jelszavunkat

Jogosultságok változtatása:

chmod 700 ~

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

Amennyiben minden rendben zajlott, akkor újból belépve a nem admin felhasználónkkal most már nem fog jelszót kérni.

Ha esetleg valaki ki tudná próbálni DSM 7 alatt, hogy minden működik-e, megköszönném a visszajelzést. Illetve nem tudom, hogy ott is ugyanennyire korlátozva van-e az SSH, mint DSM 6 alatt, vagy esetleg ott már változtattak ezen...

Kiegészítés (1) >> Még annyival egészíteném ki, hogy mint ahogy a fórumban felmerült, kérdéses, hogy frissítés hatására mi is lesz a sorsa az itt részletezett változtatásnak, főleg annak tükrében, hogy már kapuban a 7-es DSM. Amint időm engedi ki fogom próbálni régebbi 6-os DSM-el (hogy legalább ezzel a kiadással legyen tapasztalat) is és egy következő kiegészítés keretében beszámolok a tapasztalataimról.

Kiegészítés (2) >> Kipróbáltam virtuális DSM alatt, hogy mi történik akkor, ha frissítjük a rendszert. Ezeket a DSM verziókat használtam:

6.1-15047 > erre a verzióra már nem tudtam feltenni az Entware féla openssh szervert, mert már oylan régi kiadás volt.

6.2-23739 > ez volt a kiinduló DSM verzió, minden beállítást el tudtam végezni, és a végén kaptam egy nem admin felhasználót aki be tudott jelentkezni ssh-n kersztül is akár ssh kulccsal.

6.2.2-24922 > egy dolgot leszámítva minden simán működött, első belépéskor a DSM-be nem kaptam hibaüzenetet semmiről. A probléma viszont az volt, hogy a nem admin felhasználó elvesztette az engedélyét arra, hogy ssh-n keresztül belépjen. Ezt az /etc/passwd fájl módosításával korrigálni lehet:

ssh admin@nas.ip.címe

sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin-t visszacseréljük /bin/sh-ra

6.2.4-2556 > a legfrissebb DSM. Itt azért már nem ment olyan simán, mint az előbbi verzióváltáskor, az a megérzésem (sajnos elfelejtettem ellenőrizni), hogy a DSM-el együtt a synology openssh szervere is frissülhetett. A megoldás a nem admin felhasználó újbóli ssh belépés engedélyezésére a következők voltak:

1. Belépés ssh-n keresztül admin jogú felhasználóval:

ssh admin@nas.ip.címe

2. Az /etc/passwd fájl korrigációja:

sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin-t visszacseréljük /bin/sh-ra

3. Kilépés az ssh-ból, majd belépés TELNET-en keresztül:

telnet nas.ip.címe
>> admin felhasználóval lépünk be

4. Leállítjuk az sshd szervízt és minden hozzákapcsolódó szolgáltatást:

sudo /sbin/initctl stop sshd

sudo killall sshd

5. A binárisok újbóli cseréje:

sudo cp /opt/sbin/sshd /bin/sshd

Az sshd szervíz ujraindítása:

sudo /sbin/initctl start sshd

Logok ellenőrzése, hogy minden rendben zajlott-e:

sudo tail /var/log/upstart/sshd.log

Amennyiben minden jónak tűnik kilépünk a TELNET-ből, majd megpróbálhatunk belépni a nem admin felhasználónkkal, remélhetőleg sikerrel.

A következő DSM 6-os frissítést követően érdemes lesz először szerintem az /etc/passwd fájlt ellenőrizni, ha megint az /sbin/nologin lett a nem admin felhasználó sorának vége azt megváltoztatni, és megpróbálni újból belépni vele. Amennyiben ez nem megoldás, akkor érdemes végrehajtanunk újból az sshd binárisok cseréjét.

DSM 7-es verzió: mivel még nem támogatottak a harmadik felektől származó csomagok, így nem tudtam kipróbálni, hogy működik-e. Amint lesz rá lehetőség, természetesen frissíteni fogom a bejegyzést.

Kiegészítés (3) >> Arra érdemes még figyelni, hogy ahogy észrevettem újraindításokkor is szívesen visszaállítja a DSM a nem admin felhasználó jogát /sbin/nologin-ra, így újraindítások után ha nem menne a belépés, ellenőrizzük a felhasználónk jogát a belépésre az /etc/passwd alatt.

Eredeti forrás: https://blog.laure.nz/2020/11/29/give-ssh-access-to-non-admin-synology-users/

  • Nem lehet hozzászólni
Copyright © 2000-2024 PROHARDVER Informatikai Kft.