Pergunta de segurança da pilha LAMP - fazendo upload de arquivos para o servidor

3

Estou executando o desktop do Ubuntu 9.10 na minha máquina doméstica. Eu preciso fazer o upload de arquivos da minha máquina local para o meu servidor da web periodicamente. Meu servidor está executando o Ubuntu Server LTS.

Eu quero que meu servidor seja seguro e só execute a pilha LAMP e, possivelmente, um servidor de e-mail. Eu não (idealmente) quero ter FTP ou qualquer coisa que possa permitir que (mais) hackers experientes consigam hackear meu servidor.

Alguém pode recomendar como posso enviar arquivos da minha máquina local para o servidor?

Isto pode parecer uma questão fácil / trivial, mas eu sou relativamente novo no Linux - e eu tive minha máquina do servidor Windows anterior, hackeada no passado, daí a mudança para o Linux, e é por isso que eu sou tão consciente da segurança. / p>

[Editar]

Parece haver muitas maneiras de fazer isso (a julgar pelas respostas que recebi até agora) - mas parece não haver um vencedor claro. portanto, estou adicionando mais algumas informações, na esperança de que um vencedor claro (em termos de melhores práticas) surja.

  1. Gostaria de automatizar isso, ou seja, executar a partir de um script de shell como uma tarefa cron.
  2. Estou preocupado com a segurança e, por isso, não quero ter senhas em texto sem formatação nos scripts ou enviar senhas não criptografadas, etc.
  3. O cliente e o servidor (remoto) são baseados no Debian, portanto, esperamos que as permissões de arquivo sejam preservadas na cópia.

    i. Se isso não for possível, quem será o proprietário padrão dos arquivos copiados? Os arquivos enviados serão lidos por outro script (no servidor). Qual deve ser o relacionamento (em termos de permissões de arquivo) entre o script de upload e o script de processamento?

por user35402 11.05.2010 / 14:21

4 respostas

1

O rsync é uma maneira prática de transferir arquivos entre servidores. Funciona via SSH fora da caixa (e suporta conexões SSH sem senha baseadas em chave).

Você pode copiar de local para remoto ou buscar de remoto para local, etc. Por exemplo:

# copy files to another server
rsync -avz /mnt/myfiles/ [email protected]:/srv/myfiles

No servidor remoto, é bom usar uma conta não-root e configurar uma entrada authorized_keys para que você não precise inserir sua senha. O SSHing diretamente para o root em outro servidor não é uma boa idéia - se você precisar de root privs no servidor remoto, faça o rsync a partir desse fim. Se você acha que precisa privs root em ambos os servidores, você não pode: veja a opção --fake-super do rsync.

Eu olhei em vários HOWTOs online e muitos deles recomendam práticas francamente ruins ou estão desatualizados (recomendando authorized_keys2, rsa, etc). Esse eu recomendo, é bom em termos de segurança: link

    
por 12.05.2010 / 03:32
3

Outro método muito conveniente é montar seu diretório remoto como local usando sshfs e copiar arquivos como qualquer outro.

sshfs user@remotemachine:/remote/dir /local/dir  
cp /one/file /local/dir/.
    
por 11.05.2010 / 14:37
3

provavelmente você já se conectou ao servidor usando ssh .. então use scp ou sftp que usa o ssh como protocolo

scp localfile [email protected]:/path/to/place/localfile

Ele solicitará sua senha

Se você quiser que ele fique mais fácil e mais seguro ... procure fazer login com chaves ssh

EDITAR

Aqui está o sftp .. funciona como o FTP normal quando você está em

  sftp [email protected]
  > cd /dir/dir2/dir3
  > put localfile 

Eu usaria o scp se você quiser automatizá-lo ... então crie um sshkey

ssh-keygen -t dsa

Se você quiser automatizá-lo .. Eu recomendo não usar passpharse

Agora você quer copiar a chave

ssh-copy-id [email protected]

Em seguida, você pode ssh sem senha como esse usuário enquanto estiver usando essa chave. você também pode usar a mesma conta scp sem senha ... mas ela só funcionará com essa chave para o usuário com o qual você a criou.

    
por 11.05.2010 / 14:27
0

Se você precisar de uma interface gráfica ao invés de uma opção de linha de comando, apenas use o SFTP. O FileZilla é um cliente fácil de usar e arrastar e soltar e, é claro, o SFTP faz tudo através de uma conexão SSH.

Novamente, conecte-se a uma conta não raiz no servidor remoto - e você pode configurar o login sem senha adicionando uma entrada authorized_keys à máquina remota. Você precisará do Pageant (vem com o PuTTY) para gerenciar as chaves no Windows.

    
por 12.05.2010 / 03:42