Evitar que usuários rssh deixem seus diretórios de cadeia

4

Estou tentando usar o rssh para prender os usuários estritamente em seus diretórios / home / user / public_html. Eu tenho que trabalhar onde uma conta pode SFTP no sistema com sucesso em um servidor de teste, mas uma vez que eu faça o login como essa conta, notei que posso mudar diretórios para qualquer lugar que eu desejar e ver o conteúdo dos arquivos. Eu posso não ser capaz de editar ou transferir para esses diretórios, mas eu pensei que todo o propósito de ser capaz de prendê-los era impedir tal coisa?

O SSHD é configurado com o subsistema sftp internal-sftp RSSH tem o usuário designado como apenas capaz de usar scp e sftp A conta do usuário está usando / usr / bin / rssh para o shell e / home / user / public_html O diretório inicial do usuário é root: user owner: group

Eu tenho notado que os únicos arquivos que eles podem ver no conteúdo e nos diretórios que eles podem gravar são todos legíveis, o que faz sentido, mas por que eles podem deixar o diretório? E por favor não diga que acabei de responder minha própria pergunta. O objetivo é encontrar a solução de melhores práticas para evitar isso.

O resultado desejado é que eles têm qualquer capacidade de acessar qualquer diretório que não seja de sua propriedade.

Estou faltando alguma coisa aqui?

Aqui está o conteúdo do arquivo rssh.conf;

logfacility = LOG_USER

allowscp
allowsftp
#allowcvs
#allowrdist
#allowrsync
#allowsvnserve

# set the default umask
umask = 022

user=wwwtest1:077:110000:/home/wwwtest1/public_html

E aqui está o conteúdo do arquivo sshd_config;

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
por Skittles 16.12.2011 / 19:18

4 respostas

6

Não se preocupe com rssh e criando cadeias se tudo que você precisa é de sftp. Versões recentes do openssh-server podem chroot usuários do sftp para você se você estiver usando o servidor internft sftp. Se, por exemplo, você quiser chroot todos os usuários de um determinado grupo para seus diretórios home, você pode adicionar isso ao sshd_config:

Match Group sftp-only
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    
por 16.12.2011 / 20:42
0

Configurar o rssh não é trivial. Você basicamente tem que construir um chroot / jail com os binários / libraries / config de qualquer coisa que você vai executar dentro da cadeia.

Em um sistema Debian, existem algumas ferramentas para fazer isso, como makejail , ou o script incluído nos documentos rssh diretório /usr/share/doc/rssh/examples/mkchroot.sh .

Se ainda não o fez, deve rever toda a documentação relacionada com rssh em /usr/share/doc/rssh/ e as páginas man de rssh e rssh.conf Um documento que você deve examinar especificamente é o arquivo CHROOT para veja-o rodando zless /usr/share/doc/rssh/CHROOT.gz .

Se você está tentando restringir seus usuários, eles realmente precisam de acesso ao shell? Ou é completamente limitando-os a aceitar uma escolha válida? Se eles precisarem apenas transferir arquivos, consulte os resultados dessa pesquisa de falha do servidor. ( sftp interno do ForceCommand )

    
por 16.12.2011 / 20:25
0

Parece que você configurou corretamente, exceto pela definição do usuário no arquivo rssh.conf . Deve ser definido como:

user=wwwtest1:077:000110:/home/wwwtest1/public_html

para dar acesso a SCP ou SFTP em vez de:

user=wwwtest1:077:110000:/home/wwwtest1/public_html

que apenas dá acesso ao CVS, Rsync e Rdist.

    
por 16.12.2011 / 22:18
0

Tente scponly . É um shell especial que só habilita scp não ssh, e também tem uma versão chroot scponlyc .

    
por 16.12.2011 / 23:19