Mudanças entre as edições de "Projeto Integrador - 2009.1 - Dicas de GER"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(23 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 53: Linha 53:
 
</graphviz>
 
</graphviz>
  
 +
= Segurança via Filtro de Pacotes =
 +
O reforço da segurança via filtro de pacotes é relativamente fácil e rápido de se implementar. Por isso, e pelo resultado aceitável em servidores expostos na rede, é recomendado o seu uso. Entretanto, nunca deve ser considerado como elemento único ou final da proteção. Combinações com IDS e outras aplicações proativas são quase uma obrigatoriedade hoje em dia :-)
 +
 +
Para o projeto, a configuração abaixo pode ser útil:
 +
#!/bin/bash
 +
 +
# Caso geral
 +
#
 +
# Bloqueia tudo
 +
iptables -P INPUT DROP
 +
#
 +
# Apaga as linhas antigas
 +
iptables -F
 +
#
 +
# Libera o mínimo: interface local (loopback) e conexões já estabelecidas
 +
iptables -A INPUT -i lo -j ACCEPT
 +
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 +
 +
# Libera aplicações TCP
 +
#
 +
# SSH
 +
iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT
 +
#
 +
# HTTP
 +
iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT
 +
 +
# Libera aplicações UDP
 +
#
 +
# DHCP
 +
iptables -A INPUT -p udp --dport 67 -j ACCEPT
 +
#
 +
# Autenticação RADIUS (via proxy proxy.sj.ifsc.edu.br)
 +
iptables -A INPUT -s proxy.sj.ifsc.edu.br -p udp --dport 1812 -j ACCEPT
  
 
= Preferência por Aplicações Compiladas =
 
= Preferência por Aplicações Compiladas =
 
==FreeRADIUS==
 
==FreeRADIUS==
===Limpeza do Sistema==
+
===Limpeza do Sistema===
 
* Remoção de antiga(s) instalação(ões):
 
* Remoção de antiga(s) instalação(ões):
 
  apt-get remove freeradius*
 
  apt-get remove freeradius*
 +
 +
* Uso do diretório <tt>/tmp</tt> como "lixeira":
 
  cd /etc
 
  cd /etc
 
  mv freeradius* /tmp
 
  mv freeradius* /tmp
  
=== Preparação para a Instalação==
+
=== Preparação para a Instalação===
* Pacotes para instalar:
+
* Pacotes para a compilação com suporte a SSL/TLS:
 
** <tt>gcc</tt>
 
** <tt>gcc</tt>
 
** <tt>g++</tt>
 
** <tt>g++</tt>
Linha 70: Linha 105:
  
 
===Instalação===
 
===Instalação===
* Download do código-fonte da aplicação:
+
* ''Download'' do código-fonte da aplicação:
 
  cd /usr/local/src
 
  cd /usr/local/src
  wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.6.tar.gz
+
  wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.7.tar.gz
 
   
 
   
 
* Descompactação do código:
 
* Descompactação do código:
  tar xzf freeradius-server-2.1.6.tar.gz
+
  tar xzf freeradius-server-2.1.7.tar.gz
 
   
 
   
* Compilação:
+
* Compilação (usando o diretório <tt>/usr/local/freeradius-server-2.1.7</tt> como destino):
  cd freeradius-server-2.1.6
+
  cd freeradius-server-2.1.7
  ./configure --prefix=/usr/local/freeradius-server-2.1.6 --exec-prefix=/usr/local/free
+
  ./configure --prefix=/usr/local/freeradius-server-2.1.7 --exec-prefix=/usr/local/freeradius-server-2.1.7
radius-server-2.1.6
 
 
  make
 
  make
 +
Obs.: em sistemas Debian, pode haver falha na compilação. Uma solução é adicionar o argumento <tt>--with-system-libtool</tt> ao comando <tt>./configure</tt> acima.
 +
 +
* Instalação dos arquivos e criação de ''links'' para uso via console:
 
  make install
 
  make install
 
* Criação de ''links'' para associar os comandos ao console:
 
 
  cd /usr/local
 
  cd /usr/local
  ln -s freeradius-server-2.1.6 freeradius
+
  ln -s freeradius-server-2.1.7 freeradius
 
  cd /usr/local/bin
 
  cd /usr/local/bin
 
  ln -s ../freeradius/bin/radtest radtest
 
  ln -s ../freeradius/bin/radtest radtest
 
  cd /usr/local/sbin
 
  cd /usr/local/sbin
 
  ln -s ../freeradius/sbin/radiusd radiusd
 
  ln -s ../freeradius/sbin/radiusd radiusd
 +
 +
===Configuração===
 +
{|
 +
| [[Imagem:PI_GER_20091_esquerda.jpg|thumb|150px|Esquerda]]
 +
| [[Imagem:PI_GER_20091_centro.jpg|thumb|150px|Centro]]
 +
| [[Imagem:PI_GER_20091_direita.jpg|thumb|150px|Direita]]
 +
|}
 +
 +
===Execução===
 +
Como <tt>root</tt>, inicie o serviço a partir de um console (modo depuração ativado):
 +
radiusd -X
 +
e em outro console (qualquer usuário):
 +
radtest
 +
com os demais parâmetros para testar o serviço.
 +
====Início do Sistema====
 +
Como o serviço RADIUS é bastante crítico, é interessante monitorar o serviço para que o mesmo sempre esteja rodando. Isso pode ser feito via <tt>init</tt> ou via [http://www.daemon-tools.cc/ daemontools].

Edição atual tal como às 17h00min de 9 de outubro de 2009

Organização

<graphviz> digraph Serviços { splines = true

subgraph clusterEnlace { label = "Enlace" RADIUS }

subgraph clusterRede { label = "Rede" DHCP }

subgraph clusterAplicacao { label = "Aplicação" DNS HTTP MySQL SMTP IMAP }

RADIUS -> DHCP -> DNS -> HTTP MySQL -> HTTP -> MySQL DNS -> SMTP -> HTTP DNS -> IMAP -> HTTP } </graphviz>

Integração entre Aplicações

  • Integrem as aplicações Web com programas ligados ao S.O. Por exemplo, uma página em PHP pode ser agendada para realizar operações de manipulação de arquivos. Exemplo: arquivo /etc/crontab:
...
00  */12  *  *  *  root  php -q /var/www/hotel/manipula_arquivo_de_usuarios.php
  • Sugestão de integração:
    • A aplicação Web controla todas as operações sobre os outros serviços em rede. No banco de dados, ficam armazenadas informações estáticas (nome, endereço) e dinâmicas (entradas, saídas). Já na aplicação do RADIUS, ficam replicados estes usuários, a fim desta aplicação poder autenticá-los conforme o padrão IEEE 802.1x. A integração pode ser feita de forma automatizada, agendando as manipulações de usuários em horários predeterminados. A título de exemplo: todas as entradas e saídas de hospedagem ocorrem às 12h; portanto, é nesse horário específico que usuários ficam (des|h)abilitados a usar a rede com e sem fio.
    • A aplicação RADIUS pode utilizar bases remotas de usuários, como por exemplo LDAP ou bancos de dados (MySQL, por exemplo). Entretanto, pela dificuldade de implementação a curto prazo, é aconselhável o uso de arquivos em formato texto próprios do RADIUS (clientes e usuários).

<graphviz> digraph Integração { HTTP -> Cron [label="Agendamento"] Cron -> RADIUS [label="Manipulação de usuários"] HTTP -> MySQL [label="Cadastro de Usuários"] MySQL -> HTTP HTTP -> RADIUS } </graphviz>

Segurança via Filtro de Pacotes

O reforço da segurança via filtro de pacotes é relativamente fácil e rápido de se implementar. Por isso, e pelo resultado aceitável em servidores expostos na rede, é recomendado o seu uso. Entretanto, nunca deve ser considerado como elemento único ou final da proteção. Combinações com IDS e outras aplicações proativas são quase uma obrigatoriedade hoje em dia :-)

Para o projeto, a configuração abaixo pode ser útil:

#!/bin/bash

# Caso geral
#
# Bloqueia tudo
iptables -P INPUT DROP
#
# Apaga as linhas antigas
iptables -F
#
# Libera o mínimo: interface local (loopback) e conexões já estabelecidas
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Libera aplicações TCP
#
# SSH
iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT
#
# HTTP
iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT

# Libera aplicações UDP
#
# DHCP
iptables -A INPUT -p udp --dport 67 -j ACCEPT
#
# Autenticação RADIUS (via proxy proxy.sj.ifsc.edu.br)
iptables -A INPUT -s proxy.sj.ifsc.edu.br -p udp --dport 1812 -j ACCEPT

Preferência por Aplicações Compiladas

FreeRADIUS

Limpeza do Sistema

  • Remoção de antiga(s) instalação(ões):
apt-get remove freeradius*
  • Uso do diretório /tmp como "lixeira":
cd /etc
mv freeradius* /tmp

Preparação para a Instalação

  • Pacotes para a compilação com suporte a SSL/TLS:
    • gcc
    • g++
    • make
    • libssl-dev

Instalação

  • Download do código-fonte da aplicação:
cd /usr/local/src
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.7.tar.gz

  • Descompactação do código:
tar xzf freeradius-server-2.1.7.tar.gz

  • Compilação (usando o diretório /usr/local/freeradius-server-2.1.7 como destino):
cd freeradius-server-2.1.7
./configure --prefix=/usr/local/freeradius-server-2.1.7 --exec-prefix=/usr/local/freeradius-server-2.1.7
make

Obs.: em sistemas Debian, pode haver falha na compilação. Uma solução é adicionar o argumento --with-system-libtool ao comando ./configure acima.

  • Instalação dos arquivos e criação de links para uso via console:
make install
cd /usr/local
ln -s freeradius-server-2.1.7 freeradius
cd /usr/local/bin
ln -s ../freeradius/bin/radtest radtest
cd /usr/local/sbin
ln -s ../freeradius/sbin/radiusd radiusd

Configuração

Esquerda
Centro
Direita

Execução

Como root, inicie o serviço a partir de um console (modo depuração ativado):

radiusd -X

e em outro console (qualquer usuário):

radtest

com os demais parâmetros para testar o serviço.

Início do Sistema

Como o serviço RADIUS é bastante crítico, é interessante monitorar o serviço para que o mesmo sempre esteja rodando. Isso pode ser feito via init ou via daemontools.