Meu projeto precisa que eu desative o sftp para alguns usuários, mas esses usuários ainda precisam se conectar pelo ssh. Alguém sabe como implementar isso?
Vi sugestões para alterar o arquivo em /etc/ssh/sshd_config
, mas não sei ao certo o que alterar.
owner
para acesso de saída. Isso pressupõe que você será testado com caneta por um time vermelho. Se todos os que acessam seu sistema sempre obedecem às regras e nunca têm más intenções, minha abordagem seria pesada e excessivamente complexa.Respostas:
Em geral, isso é uma má prática de segurança por motivos listados por outras pessoas. No entanto, acho que o objetivo da sua tarefa é ensinar que você pode ter seções de configuração condicional com base em vários critérios.
A maneira de fazer isso é usando um
Match
bloco condicional *.Consulte
sshd_config(5)
aMatch
seção para obter mais informações e correspondênciaGroup
.* Há mais de uma maneira de fazer isso.
fonte
Isso não faz sentido, é segurança através da obscuridade inútil. Qualquer usuário que possa SSH poderá transferir qualquer arquivo que possa ler por meio da sessão SSH. Você também poderá escrever, se tiver permissões para fazê-lo.
Como exemplo, você pode fazer o download de / etc / passwd via ssh usando o seguinte método (nenhuma sessão scp / sftp é necessária): ssh [email protected] "cat / etc / passwd"> passwdcopy
Se você puder vê-lo na tela via SSH, poderá copiá-lo facilmente como um arquivo.
A única maneira de fazer sentido é se você tiver um shell restrito personalizado que imponha uma política de segurança.
No entanto, o inverso disso faz sentido (desabilitar o ssh shell, mas desabilitar o scp / sftp ativado) porque você não é capaz de executar comandos arbitrários via sftp / scp, como é possível através de um shell ssh.
PS: Estou assumindo que o shell SSH que você está concedendo é um shell padrão que permite execução arbitrária. Se esse não for o caso, consulte o seguinte: Como desativar o subsistema sftp para um usuário ou grupo específico? e dê uma olhada na opção de configuração Subsystem do sshd_config.
fonte
Eu prefiro usar um grupo para isso.
É útil em combinação com usuários que possuem shells restritos. Às vezes, concedo acesso ssh a um cliente para que ele possa acessar um sql-dump de seu banco de dados, definindo seu shell como um script que despeja seus dados. Cortá-los do scp também parece ser uma idéia inteligente. Eles não têm acesso à execução
cat
para transferir um arquivo pelo ssh.fonte
Directive 'Subsystem' is not allowed within a Match block
É possível ativar o SFTP globalmente e desativá-lo apenas para alguns usuários.
Isso não funciona se você deseja que seu usuário receba um prompt de shell regular. Também não faz sentido, pois você pode contornar a maioria das coisas se tiver acesso ao shell. Só funcionará se você quiser dar acesso a um programa específico.
Pessoalmente, preciso disso porque quero dar acesso a alguns repositórios git sobre SSH e gosto de desativar sistemas que não são necessários. Nesse caso, o SFTP não é necessário.
Coincidindo
Para corresponder a um conjunto de usuários, você pode configurar o SSH com a
Match
palavra - chave Dosshd_config(5)
manual:Alguns exemplos:
Match User eva
corresponde ao usuário "eva"Match User stephen,maria
corresponde aos usuários "stephen" e "maria"Match Group wheel,adams,simpsons
corresponde aos grupos "roda", "adams", "simpsons"Se você quiser obter mais informações, há muitas cargas no
sshd_config(5)
manual.Comando forçado
Normalmente, você obtém o shell de login do usuário quando se conecta via SSH, mas o SSH pode ser configurado para forçar um determinado comando. O comando é forçado para qualquer conexão SSH, incluindo SFTP, e, portanto, você pode ter a opção de forçar o comando desejado.
O comando forçar pode ser configurado com a
ForceCommand
palavra - chave. Dosshd_config(5)
manual:Assim, você pode forçar o comando restrito que deseja usar
ForceCommand <your command>
. Por exemplo:Exemplo
No meu caso em que desejo conceder acesso ao git, só preciso que o usuário tenha acesso
git-shell
. Esta é a seção que desativa o SFTP para meus usuários git, juntamente com algumas opções de segurança:fonte
Testado e trabalhando no CentOS 6.6. Observe que o subsistema não é permitido com o Match pelo menos nas versões mais recentes do CentOS. A página de manual para sshd_config lista as palavras-chave limitadas permitidas com a condição de Correspondência.
fonte
Você pode olhar o scponly para fazer o inverso, permitir apenas o scp / sftp, mas nenhum acesso ao shell.
Concordo com o Nathan acima, isso não faz muito sentido. Se você estiver definido, tente editar o arquivo / etc / ssh / sshd_config e remover / comentar a seguinte linha:
Subsistema sftp / usr / libexec / openssh / sftp-server
fonte
não dê nenhum diretório inicial para o usuário
Altere o subsistema sftp / usr / libexec / openssh / sftp-server no arquivo / etc / ssh / sshd_config para Subsistema sftp / dev / null / usr / libexec / openssh / sftp-server
Em seguida, reinicie o ssh
funciona para mim, debian.
fonte
No
~/authorized_key
configure a chave do usuário da seguinte maneira:fonte