ssh-agent a „automatické“ zadání hesla (pam_ssh)

Předpokládám, že SSH znáte všichni, většina z vás asi bude vědět i o programu ssh-agent. Pokud používáte hesla na své SSH klíče, tak vás určitě nebaví při každém přihlášení ke vzdálené mašině znova a znova ťukat heslo. Spousta lidí to „vyřešila“ tak, že prostě u SSH klíče to heslo zrušili. Lepší řešení je použít program ssh-agent.

Tento program způsobí to, že heslo zadáte pouze jednou a potom to pro uživatele vypadá jako by se používal klíč bez hesla. Na notebooku, na kterém většinou pracuji, jsem se dřív přihlašoval do textu, přimountoval zašifrovaný disk a pak spustil Xka. V ~/.xinitrc jsem míval něco takovéhleho:

export SSH_ASKPASS=ssh-askpass
eval `ssh-agent -s`
ssh-add < /dev/null

Nedávno jsem notebook přeinstaloval a zrušil šifrovaný HDD, proto jsem začal bootovat do grafického režimu, konkrétně používám gdm. V novém systému mi tak nějak scházel program ssh-askpass, ale za to je součástí pam_ssh. Používám pro ssh klíč stejné heslo jako do systému, proto jsem se rozhodl ho využít.

Modul pam_ssh umí jednu prima věc, při jeho použití se automaticky nastartuje ssh-agent a načte klíč už během přihlašování do systému, takže nemusím heslo vypisovat znovu po náběhu windowmakera.

Následující postup je platný pro Fedoru 5, pro ostatní distribuce si ho zřemě budete muset trochu přiohnout.

Vytvořte soubor /etc/pam.d/system-auth-ssh:

auth        required      pam_env.so
auth        sufficient    pam_ssh.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     required      pam_limits.so
session     optional      pam_ssh.so
session     required      pam_unix.so

vytvořte soubor /etc/pam.d/gdm-ssh:

auth       required     pam_env.so
auth       include      system-auth-ssh
account    required     pam_nologin.so
account    include      system-auth-ssh
password   include      system-auth-ssh
session    include      system-auth-ssh
session    required     pam_loginuid.so
session    optional     pam_console.so

Dalším krokem je přejmenování souboru /etc/pam.d/gdm na něco jiného a vytvoření symlinku:

ln -s /etc/pam.d/gdm-ssh /etc/pam.d/gdm

Při použití pam_ssh se změní výzva na zadání hesla v dialogu gdm (nebo pokud upravíte soubor /etc/pam.d/login tak i v textové konzoli) na SSH passphrase:.

Pokud vám něco nefunguje, tak se kokněte do logů jestli to tam nezvrací nějaké chyby.

Využití LDAPu v praxi

Začal jsem tvořit jaké si howto s příkladama pro použití LDAPu převážně na linuxovém serveru. Kdybyste se někdo chtěl přidat tak napište.

Vím, že v angličtině je na toto téma strašně moc textu, ale česky je to pro spoustu lidí stravitelnější. Mým cílem je napsat „howto“ na téma LDAP, kde budou uvedeny příklady konfigurace pro různé nasazení tak aby to bylo co možná nejaktuálnější a použitelné. Aktuálně je vše psané na míru OpenLDAPu, ale časem bych chtěl přidat i některé vychytávky z Fedora Directory Serveru (bývalý iPlanet, dnes také SUN Directory Server).

Fedora Core 5 a Fedora Directory Server

Pro instalaci některých programů potřebuji Fedora Directory Server, ale ten není dostupý ke stažení z oficiálních stránek pro Fedora Core 5. U verze pro FC4 mi padá administrační server (využívá apache z distribuce, který je v FC5 asi moc nový). Proto jsem se rozhodl, že si pro FC5 přeložím DS ze zdrojových kódů sám. RPM balíček pro FC5 i src.rpm si můžete stáhnout z fedora.zdenda.com/fc5.

Po instalaci rpm balíčku je třeba spustit konfigurační skript /opt/fedora-ds/setup/setup, který vás provede základním nastavením. a na konci vám vypíše jak se máte k LDAPu připojit pomocí konzole.

cd /opt/fedora-ds
./startconsole -u admin -a http://vodik.locnet:41391/

Pokud na danou adresu namíříte web browser, tak uvidíte základní informace o serveru.

Oracle 10g XE pidi-howto (v Xenu a Fedora Core 5)

Již delší dobu se mi na notebooku nedostávalo místo, proto jsem se dokopal k tomu, abych si pořádně uklidil disk (promazal staré UML a VMWare image). Do toho vyšla Fedora 5 a tak jsem se v rámci úklidu rozhodl nainstalovat tento nový zázrak. Součástí Fedory 5 je nástroj pro virtualizaci Xen, který využiju místo UML pro testovací prostředí, do kterého budu instalovat software který potřebuju k práci.

Do virtuální mašinky jsem nainstaloval Fedoru 5, akorát teď přemýšlím jestli to náhodou nebyla chyba 🙁 Asi jsem si tam měl strčit poslední CentOS. Na fc5 se mi totiž nepodařilo nainstalovat Fedora Directory Server z rpm pro fc4. Teda ten DS se nainstaloval, ale administrační server se nespustí. SUNovský Directory server jsem taky nenainstaloval, takže jsem bez LDAPu 🙁 (OpenLDAP mi nevyhovuje).

Další SW, který jsem instaloval SUNovský Web Server, v kterém budu prohánět Identity Manager. Directory Server jako úložiště dat pro IdM padnul, tak jsem se rozhodl pro instalaci databáze Oracle 10g XE. O Oracle 10g Express Edition si můžete něco přečíst přímo na webu Oracle (anglicky) nebo na dbsvet.cz (česky).

Oracle 10g XE

Instalace databáze je relativně jednoduchá, stačí nainstalovat stažené soubory oracle-xe-univ-10.2.0.1-1.0.i386.rpm a oracle-xe-client-10.2.0.1-1.0.i386.rpm. Instaluje se to do /usr/lib/oracle, kde se také vytvoří adresářová struktura pro data (netušíte proč máme všichni v systému adresář /var ?). Po instalaci oracle-xe-univ-10.2.0.1-1.0.i386.rpm budete vyzváni k tomu abyste spustili /etc/init.d/oracle-xe configure jako uživatel root. Tento skriptík vás provede základním nastavením databáze a vyrobí nejnutnější datové soubory. Počítejte s 1.5 GiB volného místa na disku (ať žije LVM a možnost jednoduše nafukovat filesystem :-))!

Instalační skript se vás zeptá na heslo pro uživatele system, toto heslo je velmi důležité a neměli byste ho zapomenout. Také se vás zeptá na port pro administrační server, zkusil jsem místo výchozího 8080 zvolit 8081 (na 8080 mi poslouchá tomcat) a administrační server nenaběhl 🙁 Na portu 8080 naběhl v pohodě. Do administračního serveru se přihlásite s loginem system a heslem, které jste si před chvilkou zadali.

Vše pěkně funguje do doby, než se pokusíte použít oracle z příkazového řádku. Před prvním použitím proveďte jako root:

[root@vserv1 bin]# cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin
[root@vserv1 bin]# chmod 6751 oracle
[root@vserv1 bin]# ls -la oracle
-rwsr-s--x 1 oracle dba 74016852 Feb 20 06:39 oracle

Instalátor totiž nenastavil správně práva (suid bit) pro tento soubor.

Dálší krok je nadefinování proměných prostředí abyste mohli používat konzolové nástroje. Do ~/.bashrc si přidejte řádek

. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

K databázi se připojuji z javy s použitím JDBC (z webu oracle si stáhněte ojdbc14.jar nebo ojdbc12.jar v závislosti na tom jakou verzi javy používáte). Databáze, kterou používám má tak 20MiB, webserver si sežere tak 150MiB RAM a Oracle něco kolem 120MiB. To celé mi běží ve virtuálním stroji s 300MiB RAM a má odswápnuto asi 130MiB. V práci (šťourání se v Identity Manageru) mě to nijak nebrzdí. Procesor na mém notebooku je Pentium M 1.4GHz, ale myslím že i na mnohem pomalejším procesoru byste neměli mít problém s provozem Oracle v Xenu.