Claudio Borges

Technical blog about Linux, BSD, Mac OS X, Games and etc.

Archive for the ‘segurança’ tag

Palestra Nginx Linuxcon 2010

without comments

Participei do Linuxcon 2010, muito bom por sinal. Devido ao trabalho, fui somente no segundo dia (01/09), minha palestra estava marcada para as 15:00, cheguei lá por volta as 12:20, ainda tinha que almoçar e dar um tapa final nos slides.

Assim que entrei e peguei minha credencial, encontrei com o Maddog e enquanto todos estavam rodeando ele para tirar fotos, passou o Andrew Morton, tive o prazer de conversar um pouco com ele, muito atencioso, só que estava com um pouco de pressa, pois estava olhando para o relógio, pena que não pude tirar nenhuma foto, não passou uma viva alma naquele momento.

Depois disso, fui para a sala da Locaweb, deixei minha mochila e fui almoçar, praça de alimentação lotada e a única alternativa foi comer McDonald’s. Terminado o almoço, ou melhor, lanche, voltei para terminar os slides e fazer uma revisão geral para ver se não tinha nenhum erro. Infelizmente não tive muito tempo para elaborar esta palestra, foi meio que de última hora e por este motivo tudo foi meio improvisado. O pessoal estava com várias perguntas legais, muitas dúvidas inteligentes, no final fiquei batendo um papo com algumas pessoas.

Para aqueles que quizerem baixar o conteúdo que foi apresentado, clique aqui.

Written by but3k4

September 2nd, 2010 at 2:16 pm

Posted in Geral

Tagged with , , ,

Autenticação 802.1x em redes ethernet

without comments

Alguns amigos tiveram dificuldades para autenticar no servidor Radius, isto porque o servidor dhcp somente liberava ip via autenticação, por este motivo resolvi criar este post.

Basicamente você vai utilizar wireless over ethernet, pois o responsável pela autenticação no Radius será o wpa_supplicant. Os procedimentos abaixo são baseados em Debian, caso você utilize outro SO, adapte este documento conforme sua necessidade.

Comece instalando o wpa_supplicant:

apt-get clean
apt-get update
apt-get install -y wpasupplicant

Com o wpa_supplicant instalando, vamos a configuração. Crie o arquivo /etc/wpa_supplicant/wired.conf com o seguinte conteudo:

# /etc/wpa_supplicant/wired.conf
#
ctrl_interface=/var/run/wpa_supplicant
network={
	key_mgmt=WPA-EAP
	eap=PEAP
	pairwise=CCMP TKIP
	group=CCMP TKIP
	identity="claudio@claudioborges.org"
	password="lalalalaxxxxx"
	phase1="peaplabel=0"
	phase2="auth=MSCHAPV2"
}

Obs: Não esqueça de substituir os valores de identify e password por seu usuário e senha.

Para testar se a autenticação está funcionando, inicie o wpa_supplicant em modo debug:

wpa_supplicant -Dwired -ieth0 -d -c/etc/wpa_supplicant/wired.conf

Se tudo correr bem, você será autenticado, caso ocorra algum problema como senha expirada ou algo do gênero, o debug irá lhe mostrar.

Estando tudo certo no passo anterior, vamos deixar a configuração de modo que o serviço seja iniciado de forma automática. Edite o seu /etc/network/interfaces e ajuste os valores a serem utilizados na sua interface:

auto eth0
iface eth0 inet dhcp
   wpa-driver wired
   wpa-conf /etc/wpa_supplicant/wired.conf

E para finalizar, reinicie as interfaces de rede:

/etc/init.d/networking restart

Seguindo os passos acima, você terá sua autenticação over ethernet.

Written by but3k4

June 28th, 2010 at 4:53 pm

Posted in Links

Tagged with , , ,

VPN Ipsec entre OpenBSD e Juniper Netscreen

with 2 comments

Há alguns dias precisei configurar uma VPN Ipsec entre um Juniper Netscreen e um OpenBSD. Como o protocolo é Ipsec, o OpenBSD tem tudo nativo :). Nele você pode configurar uma VPN Ipsec utilizando 2 caminhos:

- ipsec: A configuração é definida em um único arquivo (/etc/ipsec.conf). Configuração bastante simples.
- isakmpd: Além do arquivo de configuração (/etc/isakmpd/isakmpd.conf), você precisa configurar o arquivo de policy (/etc/isakmpd/isakmpd.policy). Configuração um pouco complexa de entender no inicio.

Não vou entrar em detalhes sobre o ipsec e isakmpd, caso precise leia a documentação do mesmo, nada como um man arquivo não resolva, ou então clique nos respectivos links :).

Deixando a teoria de lado, vamos a pratica. As informações do Netscreen são praticamente iguais as utilizadas nas VPNs Cisco e no CheckPoint. Então esta documentação serve para os 3 produtos. O que pode mudar é o group, hash, encryption algorithm e é claro, a shared-key:

IP Netscreen: 201.56.120.125
Lan Netscreen: 192.168.1.0/24
Shared Key: fGrkApZlrNf@uR0@zlr#!4ka

Fase 1:

Hashing Algorithm: MD5
Diffie-Hellman Group: Group-2
Transform (IPSec Protocol): ESP
Perfect Forward Secrecy: PFS
Encryption Algorithm: 3DES

Fase 2:

Diffie-Hellman Group: Group-0
Encryption Algorithm: 3DES
Hashing Algorithm: MD5
Perfect Forward Secrecy: noPfs

No meu servidor OpenBSD tenho os seguintes IPs:

IP OpenBSD: 187.10.223.67
Lan OpenBSD: 10.10.1.0/24

Consultando a documentação do ipsec.conf (man ipsec.conf), listei as opções que recebi do Netscreen e criei uma lista compatível que será usada no arquivo /etc/ipsec.conf:

Fase 1 = main mode
Hashing Algorithm: hmac-md5
Diffie-Hellman Group: modp1024
Transform (IPSec Protocol): esp
Encryption Algorithm: 3des

Fase 2 = quick mode
Diffie-Hellman Group: none
Encryption Algorithm: 3des
Hashing Algorithm: hmac-md5

Baseado nas informações anteriores, gerei o esqueleto da configuração para um melhor entendimento:

ike [Transform (IPSec Protocol)] from src to dst \
        main auth [Hashing Algorithm] enc [Encryption Algorithm] group [Diffie-Hellman Group] \
        quick auth [Hashing Algorithm] enc [Encryption Algorithm] group [Diffie-Hellman Group] \
        psk [shared-key]

Depois de entender a lógica da configuração, vamos criar o arquivo final. Renomeie o /etc/ipsec.conf para /etc/ipsec.conf.default:

mv /etc/ipsec.conf /etc/ipsec.conf.default

Crie o /etc/ipsec.conf com o seguinte conteúdo:

# /etc/ipsec.conf
#
ext_if = "fxp0"
openbsd_lan = "10.10.1.0/24"
netscreen_lan = "192.168.1.0/24"
netscreen_gw = "201.56.120.125"

ike esp from $openbsd_lan to $netscreen_lan peer $netscreen_gw \
        main auth hmac-md5 enc 3des group modp1024 \
        quick auth hmac-md5 enc 3des group none \
        psk "fGrkApZlrNf@uR0@zlr#!4ka"

Antes de iniciar a VPN, é preciso criar o arquivo de policy do isakmpd. Este procedimento torna-se necessário para o isakmpd não ficar gerando log dizendo que o arquivo de policy não foi encontrado:

touch /etc/isakmpd/isakmpd.policy

Repara que o arquivo acima foi criado sem nenhum conteúdo.

Adicione a variável netscreen_gw = “201.56.120.125” no seu /etc/pf.conf, depois adicione as linhas abaixo para permitir o tráfego entre o OpenBSD e o GW Netscreen:

pass in  on $ext_if proto udp from $netscreen_gw to $ext_if port { 500, 4500 }
pass out on $ext_if proto udp from $ext_if to $netscreen_gw port { 500, 4500 }
pass in  on $ext_if proto esp from $netscreen_gw to $ext_if
pass out on $ext_if proto esp from $ext_if to $netscreen_gw

Dê um reload nas suas regras e start a VPN:

pfctl -f /etc/pf.conf
isakmpd -K
ipsecctl -f /etc/ipsec.conf

Caso não tenha recebido nenhuma mensagem de erro, verifique se o túnel subiu:

netstat -nr

Nas últimas linhas você verá as seguintes informações:

Encap:
Source             Port  Destination        Port  Proto SA(Address/Proto/Type/Direction)
192.168.1.0/24     0     10.10.1.0/24       0     0     201.56.120.125/esp/use/in
10.10.1.0/24       0     192.168.1.0/24     0     0     201.56.120.125/esp/require/out

Utilizamos o ipsecctl para verificar as regras de policy do ipsec:

FLOWS:
flow esp in from 192.168.1.0/24 to 10.10.1.0/24 peer 201.56.120.125 srcid 187.10.223.67/32 dstid 201.56.120.125/32 type use
flow esp out from 10.10.1.0/24 to 192.168.1.0/24 peer 201.56.120.125 srcid 187.10.223.67/32 dstid 201.56.120.125/32 type require

SAD:
esp tunnel from 187.10.223.67 to 201.56.120.125 spi 0x097a93d3 auth hmac-md5 enc 3des-cbc
esp tunnel from 201.56.120.125 to 187.10.223.67 spi 0x6f5c0fef auth hmac-md5 enc 3des-cbc

Adicione as seguintes linhas no /etc/rc.conf.local para que a VPN suba se o servidor reiniciar:

isakmpd_flags="-K"              # enabled isamkpd
ipsec=YES                       # enabled ipsec

Para visualizar o tráfego utilize o tcpdump na interface externa filtrando tudo que entra e sai para o IP do Netscreen:

tcpdump -i fxp0 -netttvvv src or dst 201.56.120.125

Chegamos ao final, VPN pronta, tunel no ar e clientes felizes :).

Written by but3k4

April 17th, 2010 at 12:13 pm

Posted in OpenBSD

Tagged with , , ,