Heronovo IT doupě

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.