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.