Linux/Saját linux live CD készítése/Az alaprendszer testreszabása

E fejezet a debian installálása után szokásos lépések egy részét mutatja be. A live CD akkor is működik már, ha egyik lépést sem hajtjuk végre, viszont rescue CD-nél fontos a kényelem, hogy a hiba kijavítására összpontosíthassunk.

Nem cél viszont grafikus felület telepítése. Nem alkalmazásokat akarunk futtatni a live CD-vel, hanem telepíteni vagy bootolási hibát kijavítani. Éppen ezért e szócikkben tűzfalat sem telepítünk. Természetesen az itt leírtak kiegészítésével a live CD akár grafikus munkaállomássá is válhatik.

Kiindulás szerkesztés

Chroot-ban vagyunk, frissen telepített minimális debian (linux) rendszerben. Az alaprendszer konfigurálását akarjuk folytatni.

Egy-egy fájl módosításához vagy bemásolásához nem kell belépni chroot-ba: kívülről is megtehető.

A paranccsoros felület testreszabása szerkesztés

Prompt szerkesztés

A debootstrap az őt futtató hoszt nevét tette meg a guest nevének, és ezt írja ki a promptban. Ez nagyon zavaró, ha virtuális gépben dolgozunk, még inkább, ha ssh-val lépünk a liveCD-re, mert könnyű összetéveszteni a host és a guest ablakát.

A javítás egyszerű: a /etc/hostname-ben kell kijavítani a kívánt hosztnevet. Lehet pl. ZFS-live.

Színes ls parancs szerkesztés

A /root/.bashrc-ben töröljük a #-jelet az alábbi sorok elől:

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'

Az utolsó sor ll néven színes ls -l parancsot csinál. További aliasokat tehetünk a fájlba.

bash parancstörténet szerkesztés

A PgUp/PgDn billentyűvel ki lehet keresni a leírt betűkkel kezdődő, korábban kiadott parancsokat, a Home én End gombbal pedig a paranccsor elejére ill. végére ugrani. Ehhez /root/.inputrc-t kell létrehozni az alábbi tartalommal:

set meta-flag on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line
"\e[2~": yank-last-arg
"\e[3~": delete-char
"\e[4~": end-of-line
"\e[5~": history-search-backward
"\e[6~": history-search-forward

Helyi idő szerkesztés

dpkg-reconfigure tzdata

A nyelvi beállítás általában jó, ha angolon marad. Ha meg akarjuk változtatni:

apt-get install locales kbd

Karakteres felületen a loadkeys hu vált magyar billentyűzetre.

Copy & paste karakteres felületen szerkesztés

apt-get install gpm

Néhány hasznos parancs szerkesztés

apt-get install less file psmisc net-tools lsof

A net-tools csomag felinstallálja pl. a netstat és ifconfig parancsot, a psmisc például pstree-t.

Más csomag is hasznos lehet, pl. mc, parted, dosfstools (mkfs.fat parancs UEFI-hez), gdisk, stb.

Szolgáltatások leállítása szerkesztés

A boot során elindítandó szolgáltatásokat így listázhatjuk ki (akár chroot-ból is):

systemctl list-unit-files --state=enabled
autovt@.service           enabled
cron.service              enabled
getty@.service            enabled
irqbalance.service        enabled
live-tools.service        enabled
networking.service        enabled
rsync.service             enabled
rsyslog.service           enabled
syslog.service            enabled
systemd-timesyncd.service enabled
uuidd.socket              enabled
remote-fs.target          enabled
apt-daily-upgrade.timer   enabled
apt-daily.timer           enabled

Biztosan nem kell a csomagfrissítést végző két timer egy live CD-re. Nem kell a cron sem, és célszerű leállítani rsync-et és remote-fs-t is, hiszen szükség esetén bármikor elindíthatók:

for f in  apt-daily-upgrade.timer apt-daily.timer cron rsync remote-fs.target
do      systemctl disable $f
done

Hálózat szerkesztés

A live CD-t bootoló gép induláskor DHCP-n kér IP-címet, és erről a live CD létrehozásakor nem is lehet lebeszélni, még a networking.service tiltásával sem. A /etc/network/interfaces fájlt nemes egyszerűséggel felülírja a bootolás során. Bootolás után kézzel átkonfigurálható statikus IP-címre.

A hálózat indulásával egyetlen port sincs nyitva, vagyis nincs biztonsági probléma. Látjuk az internetet: tudunk új csomagot telepíteni.

ssh szerkesztés

Érdemes az ssh-t felinstallálni, hogy ne csak konzolról, hanem távoli gépről is tudjuk használni a liveCD-t:

apt-get install openssh-server

Ezután még mindig nem lehet bejelentkezni ssh-val, két okból:

  • a root számára nem megengedett a jelszavas bejelentkezés
  • nem megengedett az üres jelszavas bejelentkezés.

A fenti dolgokat ne a live CD-n oldjuk meg: ez biztonsági problémákat vetne fel. A legjobbnak tűnő megoldás a live CD-n a /etc/ssh/sshd_config-ot kiegészíteni két sorral, hogy ne kelljen keresni a beállítást:

# PermitRootLogin yes
# PasswordAuthentication yes

A két sor kommentben van, nem befolyásolja az ssh működését.

A liveCD bootolása után

  1. állítsunk be root jelszót: passwd
  2. töröljük a komment-jelet a fenti két sor elől, és indítsuk újra az ssh-t: systemctl restart ssh

Most jelszóval be tudunk jelentkezni. Másoljuk át a publikus kulcsunkat arról a gépről, ahonnan a live CD-be be akarunk jelentkezni:

ssh-copyid -i ~/.ssh/id_rsa.pub root@liveCD_IP

Ezután írjuk vissza a komment-jeleket, és ismét indítsuk újra az ssh-t. Ennyi idő alatt csak akkor törik meg a jelszót, ha nagyon rosszat választottunk.

Ezzel a kulcsunk a liveCD-n van. A következő bootolásig jelszó nélkül be tudunk jelentkezni kulccsal, másképp nem. És amiért csináltuk: más sem.

Ha tovább akarjuk növelni a biztonságot, a root jelszó változtatása előtt húzzunk fel tűzfalat a live CD-n, ami csak arról a gépről engedi be az ssh-t, ahonnan be akarunk jelentkezni.

Ha a kényelem kedvéért hajlandóak vagyunk egy kicsit lazítani a biztonságon, tegyük fel a publikus kulcsunkat a live CD /root/.ssh/authorized_keys fájljába. Ez esetben a live CD bootolása után azonnal be tudunk jelentkezni ssh-val arról a gépről, aminek a kulcsát felmásoltuk. (Más gépről még mindig megvan a fenti bejutási lehetőség annak, aki a live CD-t bootoló gép konzoljánál ül.) A biztonsági kockázat az, hogy kikerül a gépünkről a titkos kulcs, és a bitorló megneszeli, hogy bebootoltuk valahol a live CD-t. Ha csak mi magunk használjuk a live CD-t, ez a kockázat esetleg vállalható; ha megosztjuk másokkal, akkor biztosan nem.

Hogyan tovább? szerkesztés