Eu tenho uma variedade de usuários que precisam apenas fazer upload de arquivos para seus homedirs definidos. Acho que o sftp seria suficiente, mas não quero que eles façam login via shell. Então é possível? Minha plataforma é centos 7, as homedirs do usuário são armazenadas digamos / personal / $ user
Eu criei um usuário com essas configurações
useradd -m -d /personal/user1 -s /sbin/nologin
atribuiu ao usuário uma senha, quando uso o sftp para efetuar login na máquina, ele diz que não pode se conectar.
Respostas:
Edite seu
/etc/ssh/sshd_config
para conter:Reinicie
sshd
. Se você tiver vários usuários, coloque todos na linha de usuário correspondente, separados por vírgulas, como segue:A chave para configurar
sftp
para não permitir acesso ao shell é limitar os usuários por meio daForceCommand
opçãofonte
Match User [SFTP user]
ForceCommand internal-sftp
apenas, sem fazer chroot.chroot
os usuários para que eles não possam navegar para cima e para fora da sua "prisão" definidaGosto da seguinte configuração para gerenciar o acesso SSH, usado no trabalho para gerenciar um grupo de usuários em uma pequena frota de servidores. Segurança e facilidade de gerenciamento estão no topo da lista de minhas prioridades.
Seus principais recursos são o gerenciamento fácil dos direitos SSH por meio da associação ao grupo Unix, com permissões bem definidas e segurança por padrão.
Configurando
Instale o software (opcional, mas útil):
Adicione grupos:
Em
/etc/ssh/sshd_config
, verifique se as configurações a seguir sãoNo
:E no final de
/etc/ssh/sshd_config
, adicione estas duas estrofes:(não esqueça de reiniciar o SSH depois de editar o arquivo)
Explicação
Então, o que tudo isso faz?
allowssh
grupo.sftponly
grupo não podem obter um shell sobre SSH, apenas SFTP.O gerenciamento de quem tem acesso é feito simplesmente gerenciando a associação ao grupo (essas alterações entram em vigor imediatamente, não é necessário reiniciar o SSH):
Observe que os usuários do sftp precisam ser membros de ambos
sftponly
(para garantir que não recebam um shell) e deallowssh
(para permitir o login em primeiro lugar).Outras informações
Observe que essa configuração não permite logins de senhas ; todas as contas precisam usar autenticação de chave pública. Esta é provavelmente a maior vitória em segurança que você pode obter com o SSH, então eu argumento que vale a pena o esforço, mesmo que você tenha que começar agora.
Se você realmente não quer isso, adicione também
PasswordAuthentication yes
àMatch Group allowssh
estrofe. Isso permitirá autenticação de pubkey e senha para osallowssh
usuários.Essa configuração limita qualquer
sftponly
usuário ao diretório inicial. Se você não quiser isso, remova aChrootDirectory %h
diretiva.Se você não quer que o chrooting ao trabalho, é importante que o diretório home do usuário (e qualquer diretório acima dela) é de propriedade
root:root
e não gravável por grupo / outros. Não há problema em subdiretórios do diretório inicial serem de propriedade do usuário e / ou graváveis.Sim, o diretório inicial do usuário deve pertencer à raiz e ser gravável para o usuário. Infelizmente, existem boas razões para essa limitação. Dependendo da sua situação,
ChrootDirectory /home
pode ser uma boa alternativa.Definir o shell dos
sftponly
usuários como/sbin/nologin
não é necessário nem prejudicial para esta solução, porque o SSHForceCommand internal-sftp
substitui o shell do usuário.O uso
/sbin/nologin
pode ser útil para impedir o logon de outras maneiras (console físico, samba etc.).Essa configuração não permite
root
logins diretos pelo SSH; isso forma uma camada extra de segurança. Se você realmente não precisa logins raiz diretos, alterar aPermitRootLogin
directiva. Considere configurá-lo paraforced-commands-only
,prohibit-password
e (como último recurso)yes
.Para obter pontos de bônus, verifique quem pode
su
torcer; adicionar um grupo sistema chamadowheel
, e adicionar / ativarauth required pam_wheel.so
no/etc/pam.d/su
.fonte
chown root:root
echmod og-w
basta alterar o shell padrão para / sbin / nologin. Assumindo a maioria das variedades de Linux:
fonte
Subsystem sftp internal-sftp
) (ou talvezForceCommand internal-sftp
). Se houver algo comumSubsystem sftp /path/to/sftp-server
,nologin
impedirá até o SFTP.você pode usar o tftp. qualquer coisa sobre ssh exigirá alguma autenticação (chave | passe).
Embora o tftp possa ser protegido, pode valer a pena revisitar a decisão de fornecer acesso a qualquer coisa sem autenticação.
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html
fonte