Normalmente, em um ambiente de produção, as atualizações são feitas por um desenvolvedor ou web design, com isso há uma necessidade genérica de liberar o acesso para adicionar os arquivos. Usa-se normalmente o serviço ftp, protocolo de transferência de arquivos. Para implantar esse serviço usamos o software proftpd, conforme os passos descritos abaixo.
Instalando o proftpd:
# apt-get install proftpd-basic
Durante a instalação, temos a opção de escolher o modo de funcionamento do servidor: através do inetd ou em modo solitário. Apesar do modo solitário ser mais custoso, ele nos dá mais controle na segurança como controle de acesso simultâneo e atrasos propositais contra ataques de força bruta.
O próximo passo serNormalmente, em um ambiente de produção, as atualizações são feitas por um desenvolvedor ou web design, com isso há uma necessidade genérica de liberar o acesso para adicionar os arquivos. Usa-se normalmente o serviço ftp, protocolo de transferência de arquivos. Para implantar esse serviço usamos o software proftpd, conforme os passos descritos abaixo.
Instalando o proftpd:
# apt-get install proftpd-basic
Durante a instalação, temos a opção de escolher o modo de funcionamento do servidor: através do inetd ou em modo solitário. Apesar do modo solitário ser mais custoso, ele nos dá mais controle na segurança como controle de acesso simultâneo e atrasos propositais contra ataques de força bruta.
O próximo passo será editar o arquivo /etc/proftpd/proftpd.conf que contém as configurações básicas do servidor. Pode-se descomentar a linha abaixo para forçar os usuários a permanecerem restritos apenas ao seu diretório home.
# Use this to jail all users in their homes
DefaultRoot ~
Por padrão, o proftpd possui todas as configurações centralizadas em seu arquivo principal, portanto, não necessariamente precisamos seguir esse segmento padronizado de configuração.
Podemos criar um arquivo de configuração para cada sistema, site ou portal, sendo assim, o diretório que conterá os arquivos deve ser definido no arquivo proftpd.conf.
Dentro do diretório /etc/proftpd vamos criar o subdiretório conf, e criaremos arquivos no formato <nome_do_usuario>.conf. No arquivo /etc/proftpd/proftpd.conf vamos usar a diretiva include para acrescentar os arquivos de configuração:
# Inclui os diretórios configurados para cada site
Include /etc/proftpd/conf/*.conf
Agora, dentro do diretório /etc/proftpd/conf vamos incluir o arquivo global.conf. Este arquivo contém configurações globais aplicáveis a todos os diretórios.
<Global>
RequireValidShell off
<Limit SITE_CHMOD>
DenyAll
</Limit>
</Global>
A diretiva RequireValidShell diz ao servidor para aceitar conexões de usuários cujo shell seja, por exemplo, /bin/false (que é o caso dos usuários do servidor). A diretiva Limit SITE_CHMOD não deixa que os usuários mudem as permissões de pastas e arquivos.
Para cada site pode-se criar um usuário, cujo diretório home é o diretório do site e o shell é o /bin/false, e criar também um arquivo <nome_do_usuário>.conf dentro do subdiretório /etc/proftpd/conf.
# useradd -s /bin/false -d <caminho-para-site> <nome-do-usuário>
# passwd <nome-do-usuário>
É importante lembrar que no caso do servidor ser montado a partir de um backup deve-se copiar os usuários e grupos dos arquivos /etc/passwd, /etc/shadow e /etc/group.
Abaixo segue um modelo do arquivo <usuario>.conf:
<Directory "caminho/para/a/pasta/do/site">
<Limit ALL>
Order Allow, Deny
Allow from 192.168.0.2
Deny from All
</Limit>
</Directory>
<Directory "caminho/para/a/pasta/do/site/pasta/com/permissão/de/execução">
<Limit SITE_CHMOD>
Order Allow, Deny
AllowUser usuario
DenyAll
</Limit>
</Directory>
A primeira cláusula Directory tem como parâmetro o caminho do site. A cláusula Limit nega todo o acesso ao diretório com exceção dos ips listados em Allow from. A política usada permite que cada usuário só tenha acesso através de um ip que seja pertencente a determinada instituição. A segunda cláusula Directory é opcional e só é usada no caso de haver algum subdiretório que precise ter suas permissões de escrita, leitura ou execução alteradas. Por questão de segurança, nenhum arquivo transferido terá permissão de execução. Porém, temos alguns diretórios (por exemplo, cgi-bin) que precisam ter permissão de execução. Para tal, o usuário deverá enviar os arquivos e, em seguida, mudar a permissão dos arquivos.
Liberando acesso ssh
O acesso remoto é extremante importante para administradores de rede, pois podemos ter total controle do sistema sem que estejamos fisicamente presentes em frente ao equipamento que está sendo usado. Embora haja essa facilidade, é preciso que o acesso esteja bem configurado, junto com algumas restrições.
Usaremos ssh para fazer essas conexão remota, portanto, seguindo os passos abaixo, esse serviço poderá ser instalado e configurado.
# apt-get install ssh
Após a instalação, o serviço ssh estará trabalhando na porta 22. Por segurança, precisamos desabilitar o acesso por root, portanto, mude o valor PermitRootLogin no arquivo /etc/ssh/sshd_config:
PermitRootLogin no
Outra medida de segurança é bloquear o acesso pelo firewall e no arquivo /etc/hosts.allow. Abaixo um exemplo de uma configuração no arquivo /etc/hosts.allow:
sshd: 192.168.1.56 192.168.2.95 192.168.151.0/255.255.255.0 : allow
sshd: ALL : deny
Reinicie o serviço ssh para que as alterações sejam validadas:
# /etc/init.d/ssh restart