Nové možnosti nastavení OpenSSH démona, SFTP a Chroot

OpenSSH je mocný nástroj umožňující primárně vzdálený bezpečný přístup na shell serveru, sekundárně také přenos dat (SCP, SFTP), TCP forward, X forward a mnoho dalších funkcí. Ve starších verzích byla konfigurace jednotná pro celý server, od verze 4.9p1 (je již v aktuálních distribucích RHEL 6, CentOS 6, Debian Squeeze) je nově možné nastavovat mnoho voleb pro jednotlivé uživatele, skupiny uživatelů a sítě. Této nové možnosti využijeme pro jeden z nejčastějších požadavků na OpenSSH na serveru, jako náhradu prastarého nebezpečného FTP (který loni oslavil 40 let).

Pomocí nové direktivy Match (Match User, Match Group, Match Host a Match Address) lze nastavovat tyto parametry specificky pro danou skupinu:

AllowAgentForwarding, AllowTcpForwarding, Banner,
ChrootDirectory, ForceCommand, GatewayPorts,
GSSAPIAuthentication, HostbasedAuthentication,
KbdInteractiveAuthentication, KerberosAuthentication,
KerberosUseKuserok, MaxAuthTries, MaxSessions,
PubkeyAuthentication, AuthorizedKeysCommand,
AuthorizedKeysCommandRunAs, PasswordAuthentication,
PermitEmptyPasswords, PermitOpen, PermitRootLogin,
RhostsRSAAuthentication, RSAAuthentication,
X11DisplayOffset, X11Forwarding and X11UseLocalHost

V tomto článku budeme chtít nahradit staré FTP, z čehož plynou požadavky:

  • Povolit uživateli přístup do adresáře s daty.
  • Uzamknout jej, aby nemohl brouzdat po celém fs.
  • Nebude mít povolen přístup na shell.
  • Přístup pomocí hesla.

 Nastavení SFTP pro vybrané uživatele

Nastavení konfiguračního souboru /etc/ssh/sshd_config:

Subsystem     sftp   internal-sftp

Match User user1, user2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    PasswordAuthentication yes

Uživatelé user1 a user2 se budou moci přihlásit heslem (PasswordAuthentication yes), nebudou si moci nastavit TCPForward (AllowTcpForwarding no), připojí se pouze protokolem SFTP (ForceCommand internal-sftp — místo shellu definovaného v /etc/passwd se po přihlašení spustí tento příkaz).

Pokud jsou uživatelé ve speciální skupině (třeba po předchozím ftp přístupu), lze s výhodou použít Match Group.

Poznámka k chrootu

Volba ChrootDirectory %h uzamyká uživatele v jeho home adresáři (%h). Chroot adresář musí mít (z bezpečnostních důvodů) vlastníka roota a uživatelé tam nesmějí mít zápis (chown root.root; chmod 755). V praxi to znamená, že je třeba (v chroot adresáři) vytvořit adresář (například pro web), kam již uživatelé práva zápisu mít mohout. Stejný postup se týká například také vsftpd.

Příspěvek byl publikován v rubrice Linux, SSH. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

5 komentářů: Nové možnosti nastavení OpenSSH démona, SFTP a Chroot

  1. michal grezl napsal:

    skoda ze sem na tohle neprisel uz davno, dik.

  2. mimi.vx napsal:

    mám pocit že na toto téma napsal Petr Krčmář kdysi celkem dobrý článek na root :
    http://www.root.cz/clanky/jak-nahradit-ftp-pomoci-sftp-a-zamknout-uzivatele/

  3. lzap napsal:

    K tomu jeste selinux a je to dokonale

  4. VS napsal:

    Omezení na vlastnictví chroot adresáře rootem může být v řadě případů problematické, případně můžeme potřebovat uživatelům zpřístupnit více různých adresářů, ale ne celý FS. Úspěšně používám řešení, kdy vytvořím např. /var/lib/sftp-chroot vlastněný rootem, a v něm přes ‚mount -o bind‘ vytvořím „stínovou strukturu“ přístupných adresářů – např. /home, /srv/data a další. Sshd se pak nastaví stejně jako v článku, jen:

    ChrootDirectory /var/lib/sftp-chroot

    Někdy by stačilo nastavit chroot např. na celý /home, ale tam se projevuje drobný problém s výchozím adresářem, kdy se sshd pokouší po přihlášení udělat cd např. do ‚/home/home/user‘.

Komentáře nejsou povoleny.