terça-feira, agosto 22, 2006

VPN com FreeBSD e VTUN

Há tempos eu venho instalando alguns servidores com VPN, porém entre FreeBSD's é outro nível hehe, bem mais fácil do que com MPD e esses PPTP like hehe.
Bem o VTUN (Virtual Tunnel), provê um tunelamento sobre rede TCP/IP, com compressão e encriptação, extremamente útil quando se precisa trafegar dados pela Internet de um modo seguro quando se está atrás de um NAT (onde não funcionaria a VPN por UDP).
Lembrando que tenho nas "pontas" desta VPN dois servidores com FreeBSD's.


Parte da "mão na massa":

Em ambos os servidores:

# cd /usr/ports/net/vtun && make install clean
...(instalando vá tomar um café)
# rehash

Configurações:

No Servidor:

No servidor temos que liberar quais as redes que serão liberadas, as opções de conexão e as rotas para ir e vir nestas redes.

# vi /usr/local/etc/vtund.conf

Segue abaixo o arquivo:
# vtund.conf - servidor

options {
port 5000; # Espera conexões nesta porta
ifconfig /sbin/ifconfig;
route /sbin/route;
}

default {
type tun;
proto tcp;
compress lzo:9;
encrypt yes; # Encriptação SIM!!!
keepalive yes;
stat no;
speed 0;
multi killold;
}

filial1 {
passwd senha01;

up {

# IP matriz: 10.1.1.1
# IP filial: 10.1.1.2

# configura interface ponto-a-ponto
ifconfig "%% 10.1.1.1 10.1.1.2 mtu 1450 netmask 255.255.255.252";

# adiciona rota para a rede da filial
route "add -net 192.168.2.0 10.1.1.2 255.255.255.0";
};

# se houver desconexão derruba rota e a interface tunX
down {
ifconfig "%% delete down";
route "delete 192.168.2.0";
};

}
:wq

# echo "vtund_enable="YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/vtund.sh start


No Cliente:

No cliente vamos especificar onde o cliente vai se conectar (porta) e como levantará a rota após se autenticar.

# vi /usr/local/etc/vtund.conf

# vtund.conf - cliente

options {
port 5000;
timeout 20;
syslog daemon;

ifconfig /sbin/ifconfig;
route /sbin/route;
}

filial1 {
pass senha01;
persist yes;

up {
ifconfig "%% 10.1.1.2 10.1.1.1 mtu 1450 netmask 255.255.255.252";

route "add -net 192.168.1.0 10.1.1.1 255.255.255.0";
};

down {
ifconfig "%% delete down";
route "delete 192.168.1.0";
};
}
:wq

# echo "vtunclient_enable="YES" >> /etc/rc.conf
# echo "vtunclient_flags="filial1 200.x.x.x" >> /etc/rc.conf
# /usr/local/etc/rc.d/vtunclient.sh start

Onde 200.x.x.x é o enderço do servidor da VPN

Vejamos as saídas dos ifconfig's depois de "startarmos" os serviços.

No servidor:

# ifconfig
tun0: flags=8051 mtu 1450
inet 10.1.1.1 --> 10.1.1.2 netmask 0xfffffffc
Opened by PID 83209

No Cliente:

# ifconfig
tun0: flags=8051 mtu 1450
inet 10.1.1.2 --> 10.1.1.1 netmask 0xfffffffc
Opened by PID 91620

Pronto, temos duas redes interligadas por dois servidores FreeBSD por meio de uma VPN utilizando o VTUN.

Agora podemos trafegar nossos dados das redes clientes desses dois servidores, sem ter que instalar "discadores" de VPN's em todas as estações rWindows.

Read more!

quinta-feira, agosto 17, 2006

Dicas básicas de segurança no FreeBSD

Este artigo, foi desenvolvido por um amigo (Roberto Rodrigues) e outros amigos, são configurações básicas no FreeBSD para evitar problemas básicos, como login do toor e coisas do gênero.

Vamos lá:

--
Remover usuario toor:
pw userdel toor

--

Bloquear o boot -s:
no arquivo /etc/ttys altere a linha:
console none unknown off secure
para
console none unknown off insecure

--

Bloquear alguns sistemas de arquivos para que nao tenham arquivos SUID:
ex: altere o /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

para

# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw,nosuid 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw,nosuid 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

--

Sempre limpar o /tmp:
adicione a linha abaixo em /etc/rc.conf
clear_tmp_enable="YES"

--

Desativar o Sendmail
adicione a linha abaixo em /etc/rc.conf
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

--

Colocar o syslogd para trabalhar apenas localmente:
adicione a linha abaixo em /etc/rc.conf
syslogd_flags="-ss"

--

Desabilitando o portmap:
adicione a linha abaixo em /etc/rc.conf
portmap_enable="NO"

--

Desabilitando o inetd caso não seja necessário:
adicione a linha abaixo em /etc/rc.conf
inetd_enable="NO"

--

Dar permissao 640 para /etc/crontab
# chmod 640 /etc/crontab

--

Dar permissao 700 para /root
# chmod 700 /root

--

Evitar que usuarios vejam os processos dos outros:
adicione a linha abaixo em /etc/sysctl.conf
security.bsd.see_other_uids=0

--

Fazer log de conexoes em portas fechadas:
adicione as linhas abaixo em /etc/sysctl.conf
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
as tentativas de conexao serao gravadas em /var/log/messages

--

Alterar o secure level para 1:
adicione as linhas abaixo em /etc/rc.conf
kern_securelevel_enable="YES"
kern_securelevel=1

--

Desabilitar ctrl+alt+del:
recompile o kernel com a seguinte opcao:
options SC_DISABLE_REBOOT

--

Opcoes ICMP:
evita ataques do tipo smurf
icmp_bmcastecho="NO"
icmp_bandlim="YES"

--

'Dropa' pacotes destinados a portas nao abertas:
padrao eh RST
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

--

Opcao TCP:
evita estouro de buffer por pacotes SYN
net.inet.tcp.syncookies=1

--

Aumentando a seguranca do arquivo de senhas:
edite o arquivo /etc/login.conf e adicione as seguintes linhas
:passwd_format=blf: (essa linha deve substituir a primeira, que eh MD5)
:idletime=60:
:passwordtime=30d:
:mixpasswordcase=true:
:minpasswordlen=8:
depois execute o comando
# cap_mkdb /etc/login.conf
agora defina novamente as senhas dos usuarios
# passwd root
para finalizar, no arquivo /etc/auth.conf, devera constar a linha
crypt_default=blf

--

Mudando permissoes de diretorios
# cd /var && mv ./tmp/* /tmp/ && rm –rf tmp && ln –s /tmp tmp
# cd /var/log
# chmod 600 *
# chmod 640 wtmp
# chmod 600 /etc/crontab
# chmod 700 /root
# chmod 700 /home/*
# chmod 650 /etc/rc.*
# chmod 600 /etc/master.passwd
# touch /etc/pf.conf
# chmod 600 /etc/pf.conf

--

Desativando CORE DUMPs:
adicione dentro de /etc/sysctls.conf
kern.coredump=0

--

Não permitir que o super-usuario root efetue login:
( Será necessário entrar com outro )

# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secure
#
ttyv0 "/usr/libexec/getty Pc" cons25 on insecure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on insecure
ttyv2 "/usr/libexec/getty Pc" cons25 on insecure
ttyv3 "/usr/libexec/getty Pc" cons25 on insecure
ttyv4 "/usr/libexec/getty Pc" cons25 on insecure
ttyv5 "/usr/libexec/getty Pc" cons25 on insecure
ttyv6 "/usr/libexec/getty Pc" cons25 on insecure
ttyv7 "/usr/libexec/getty Pc" cons25 on insecure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

--


Lembrando que nem tudo que tem aqui é necessário depende do que você guarda no seu servidor, acho interessante aplicar algumas coisas deste artigo.
Isso não é nem de longe uma solução de segurança mas ajuda.

Até mais.



Read more!

segunda-feira, agosto 14, 2006

Primeiro post!!! =D

Bom agora nessa vida de administrador de redes achei interessante
poder compartilhar minhas experiências com outras pessoas assim como ví vários amigos como o Tirloni, e o Daniel.

Como graças a Deus estou tendo várias experiências (algumas positivas outras negativas) e venho ganhando conhecimento com elas, vou compartilhá-las aqui para que outros que passem pelo mesmo problema, com um mínimo de vontade de Googlear irá ter uma
produtiva.

well get start!!!

Read more!