Configurez SFTP pentru un grup de utilizatori pe care doresc să aibă doar acces SFTP, în scopul încărcării fișierelor pe server. Le am deja închiși în propriile directoare de acasă și am blocat conectările shell. Fiecare director principal are un subdosar pentru primirea încărcărilor. Aș dori ca conexiunile SFTP să se schimbe automat în acest folder de încărcare la autentificare. Destul de standard.
Eu folosesc ForceCommand
directivă pentru a realiza acest lucru cu succes pe un server vechi.Totuși, pe noul server pe care îl pregătesc în prezent, acest lucru nu funcționează. De ce?
/etc/ssh/sshd_config.d/sftpgroup.conf
Grupul de potriviri ftpgroup
# Următoarele două directive obligă ftpgroup să devină chrootat
# și au doar SFTP disponibil. Nu este necesară nicio altă configurare chroot.
ChrootDirectory /home/ftp_users/%u
ForceCommand intern-sftp -u 0002
# Pentru paranoia suplimentară, nu permiteți toate tipurile de redirecționări de porturi.
AllowTcpForwarding nr
GatewayPorts nr
X11Redirecționare nr
# Forțați înregistrarea locală
ForceCommand /usr/lib/openssh/sftp-server -l VERBOSE
# Schimbați directorul implicit în ~/upload
ForceCommand cd /încărcare
/var/log/auth.log cu LogLevel DEBUG3
9 mar 15:18:03 MyServer sshd[393644]: debug1: userauth-request for user myuser service ssh-connection method none [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: încercare 0 eșecuri 0 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow se introduce [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 8 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow: se așteaptă MONITOR_ANS_PWNAM [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: type 9 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 8
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow
9 martie 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config reprocess config len 383
Mar 9 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftpgroup.conf len 228
Mar 9 15:18:03 MyServer sshd[393644]: debug3: se verifică potrivirea pentru „Group ftpgroup,!sftpgroup” utilizator myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
Mar 9 15:18:03 MyServer sshd[393644]: debug1: utilizatorul myuser nu se potrivește cu lista de grup ftpgroup,!sftpgroup la linia 4
9 mar 15:18:03 MyServer sshd[393644]: debug3: potrivire nu a fost găsită
Mar 9 15:18:03 MyServer sshd[393644]: debug3: se verifică potrivirea pentru utilizatorul „Group ftpgroup” myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
9 martie 15:18:03 MyServer sshd[393644]: debug1: user myuser liste de grupuri potrivite ftpgroup la linia 9
Mar 9 15:18:03 MyServer sshd[393644]: debug3: meci găsit
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:12 setarea ChrootDirectory /home/ftp_users/%u
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:13 setarea ForceCommand internal-sftp -u 0002
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:15 setarea AllowTcpForwarding nu
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:16 setarea GatewayPorts nu
Mar 9 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:17 setarea X11Forwarding nu
9 martie 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:21 setarea ForceCommand cd /upload
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow: se trimite MONITOR_ANS_PWNAM: 1
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 9
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 8 folosit o dată, dezactivând acum
9 mar 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: se configurează authctxt pentru myuser [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_start_pam introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 100 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_inform_authserv introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 4 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: încercați metoda none [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: întârziere specifică utilizatorului 0.000ms [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: ensure_minimum_time_since: a trecut 2.862ms, întârziere 4.136ms (solicitat 6.998ms) [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 100
9 martie 15:18:03 MyServer sshd[393644]: debug1: PAM: inițializare pentru „myuser”
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: setarea PAM_RHOST la „1.2.3.4”
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: setarea PAM_TTY la „ssh”
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 100 folosit o dată, dezactivând acum
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 4
Mar 9 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authserv: service=ssh-connection, style=, role=
9 martie 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 4 folosit o dată, dezactivând acum
Mar 9 15:18:03 MyServer sshd[393644]: debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: trimite pachet: tip 51 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: primire pachet: tip 2 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: SSH2_MSG_IGNORE primit [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: primire pachet: tip 50 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: userauth-request for user myuser service ssh-connection method parola [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug1: eșecuri încercare 1 0 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: încercați parola metoda [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 12 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: se așteaptă MONITOR_ANS_AUTHPASSWORD [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 13 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 12
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_passwd_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: debug1: PAM: autentificare prin parolă acceptată pentru utilizatorul meu
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authpassword: se trimite rezultatul 1
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 13
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 102
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug1: do_pam_account: numit
9 mar 15:18:03 MyServer sshd[393644]: debug2: do_pam_account: informații de autentificare în SSH_AUTH_INFO_0
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: do_pam_account pam_acct_mgmt = 0 (Succes)
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 103
9 mar 15:18:03 MyServer sshd[393644]: Parola acceptată pentru myuser de la portul 1.2.3.4 55095 ssh2
9 mar 15:18:03 MyServer sshd[393644]: debug1: monitor_child_preauth: myuser a fost autentificat de un proces privilegiat
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: Se așteaptă chei noi
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 26
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: GOT noi chei
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: utilizator autentificat [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: întârziere specifică utilizatorului 0.000ms [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: assure_minimum_time_since: a trecut 7,172 ms, întârziere 6,825 ms (solicitat 6,998 ms) [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account se introduce [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 102 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect introducerea: tip 103 [preauth]
9 martie 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive introducerea [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account returnează 1 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: trimite pachet: tip 52 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_request_send introducând: tip 26 [preauth]
9 mar 15:18:03 MyServer sshd[393644]: debug3: mm_send_keystate: Starea de trimitere terminată [preauth]
Mar 9 15:18:03 MyServer sshd[393644]: debug1: monitor_read_log: child log fd închis
9 martie 15:18:03 MyServer sshd[393644]: debug3: ssh_sandbox_parent_finish: terminat
9 martie 15:18:03 MyServer sshd[393644]: debug1: PAM: stabilirea acreditărilor
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sesiune de deschidere
9 mar 15:18:03 MyServer sshd[393644]: debug2: do_pam_session: informații de autentificare în SSH_AUTH_INFO_0
9 mar 15:18:03 MyServer sshd[393644]: pam_unix(sshd:session): sesiune deschisă pentru utilizatorul myuser(uid=1001) de (uid=0)
Mar 9 15:18:03 MyServer systemd-logind[607]: Noua sesiune 530 a utilizatorului myuser.
9 mar 15:18:03 MyServer systemd: pam_unix(systemd-user:session): sesiune deschisă pentru utilizatorul myuser(uid=1001) de (uid=0)
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv apelat cu 1 mesaj
9 mar 15:18:03 MyServer sshd[393644]: copilul utilizator este pe pid 393672
9 martie 15:18:03 MyServer sshd[393672]: debug1: suportul SELinux dezactivat
9 martie 15:18:03 MyServer sshd[393672]: debug1: PAM: stabilirea acreditărilor
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: verificarea „/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: se verifică „/home/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: se verifică „/home/ftp_users/”
9 martie 15:18:03 MyServer sshd[393672]: debug3: safely_chroot: verificarea „/home/ftp_users/myuser”
9 martie 15:18:04 MyServer sshd[393644]: debug3: mm_request_receive se introduce
9 martie 15:18:04 MyServer sshd[393644]: debug3: monitor_read: verificarea cererii 113
9 mar 15:18:04 MyServer sshd[393644]: debug3: se introduce mm_answer_audit_command
ssh -V
Server vechi:
- OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 septembrie 2019
Server nou:
- OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k 25 martie 2021
Actualizați
S-a dovedit că pe vechiul sistem, acest lucru funcționa de fapt din cauza folderelor de acasă și a link-urilor simbolice manipulate, mai degrabă decât din cauza ForceCommand
directivă privind acel sistem (chiar dacă această directivă există).
ln -s /home/ftp_users/myuser /home/myuser
usermod -d /home/myuser myuser
ln -s ../upload /home/ftp_users/myuser/home/myuser
Deci, atunci când un utilizator se conectează și se schimbă la ~
se duce la /home/myuser
care este o legătură simbolică pentru /încărcare
. Atunci când se potrivește configurarea folderului de acasă cu sistemul vechi, noul sistem acum rutează corect la conectare. Puțin hackish și cu siguranță suboptim (încercam să-l evit tbh), dar „funcționează”.
Atunci întrebarea devine, de ce nu ForceCommand
trece peste asta? Se execută deloc? Cum pot spune?