Claudio Borges

Blog técnico sobre Linux, BSD, Mac OS X, Games e 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

setembro 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

junho 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

abril 17th, 2010 at 12:13 pm

Posted in OpenBSD

Tagged with , , ,