Implementando servidor de aplicações PHP utilizando Zend Framework

Esse mega artigo aborda todos os conceitos técnicos e práticos para a implementação de um servidor de aplicações PHP utilizando framework Zend, incluindo detecção de intrusão e entre outros conceitos. Vale a pena conferir.

[ Hits: 144.472 ]

Por: José Cleydson Ferreira da Silva em 27/04/2010


Liberando acesso a ftp



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

Página anterior     Próxima página

Páginas do artigo
   1. Índice
   2. Introdução
   3. Sobre Zend Framework
   4. Particionamento
   5. Instalação do Servidor Web
   6. Habilitando o módulo mod_rewrite
   7. Habilitando o módulo mod_userdir
   8. Instalando Zend Framework
   9. Testando Zend Framework
   10. Padrões de diretórios para aplicações do Zend Framework
   11. Script para a criar a estrutura de diretório do MVC
   12. Configurando restrição de acesso
   13. Configurando Virtual Host
   14. Padronizando o formato dos registros em arquivos de log
   15. Suporte a conexões seguras com SSL
   16. Configurando exibição de erros
   17. Liberando acesso a ftp
   18. Rotinas de backup
   19. Ferramenta para detecção de intrusão (opcional)
   20. Acelerando o PHP (opcional)
   21. Considerações finais
Outros artigos deste autor

Economia e liberdade: o software livre une o útil ao agradável

Compiz - Janelas à 360 graus no Linux

Gerência de projetos com Redmine

Implementando servidor web Java com Tomcat no Linux

Bing: Medindo velocidade da conexão no Linux

Leitura recomendada

ownCloud - Em poder de suas mãos (Private Cloud)

Compilando facilmente com o apt-build

Software envelhece?

Efeito metálico no GIMP

Instalando Asterisk2Billing no SuSE 10.0

  
Comentários
[1] Comentário enviado por viniciusgnu em 27/04/2010 - 08:47h

Meu velho, como sempre está de parabéns! "Keep up with the good work"!
Abraço

[2] Comentário enviado por cleysinhonv em 27/04/2010 - 08:50h

Valeu Vinicius!

Como sempre "procurar" / "tentar" / "me esforçar" em publicar artigos completos que ajudem a comunidade como um todo!

[3] Comentário enviado por uberalles em 27/04/2010 - 11:00h

Que "putza" app server bacana!! Muito bem detalhado seu artigo e passo a passo.

[4] Comentário enviado por cleysinhonv em 27/04/2010 - 11:33h

Olá Andre Miguel,

Bacana né! Procurei Explicar de forma clara e detalhar o máximo possível! Acredito que este material irá ajudar muitas empresas e pessoas que queiram implemetar esse tipo de solução!

Um abraço!

[5] Comentário enviado por valterrezendeeng em 27/04/2010 - 13:04h

Muito Bom o Artigo
Bem Feito e completo

Parabéns !!!!


Abraço

[6] Comentário enviado por razgriz em 27/04/2010 - 13:10h

Belo artigo Kurumin, continue assim!

[7] Comentário enviado por cleysinhonv em 27/04/2010 - 13:16h

Olá valter! Olá Prof. RazGriz!

Obrigado! Fico grato e com sentimento de dever cumprido. Espero que esse artigo possa ajuda-los de alguma forma, utilize-o e indique-o a quem precisar!

Um abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts