segunda-feira, 22 de março de 2010

IPF e IPnat - Firewall Opensolaris

Configurando um FW/Router com Opensolaris

Com base no blog do Franklin Ronald, resolvi escrever este manualzinho para ajudar o pessoal, boa leitura.

Pré Configurações:

Desabilitando o nwam:
#svcadm disable svc:/network/physical:nwam

Habilitando modo manual:
#svcadm enable svc:/network/physical:default

Configurando o modo manual

Usando Gnome, vá em:
System->Administration->Network

Configure sua interface e reinicie o serviço:

# svcadm restart milestone/network
feito isso , basta dar um reboot e atribuir os seus IPS.

Configurando o Arquivo ipf.conf

###/etc/ipf/ipf.conf###
pass in quick on lo0 all
pass out quick on lo0 all

pass in quick proto tcp from 192.168.10.2/32 to any port = 25 keep state
pass in quick proto tcp from 192.168.10.2/32 to any port = 110 keep state
pass in quick proto tcp from 192.168.10.2/32 to any port = 143 keep state
pass in quick proto tcp from any to any port = 22 keep state
pass in quick proto tcp from any to any port = 80 keep state
pass in quick proto tcp from any to any port = 8080 keep state
pass in quick proto tcp from any to any port = 443 keep state
pass in quick proto icmp from any to any icmp-type 8 keep state
pass in quick proto icmp from any to any icmp-type 13 keep state
pass in quick proto tcp from any to any port = 222 keep state
pass in quick proto tcp from any to any port = 3389 keep state

pass out quick from any to any keep state
# Libera porta FTP-DATA
pass in quick on rge0 proto tcp/udp from any to any port = 20 keep state
# Libera porta do FTP
pass in quick on rge0 proto tcp/udp from any to any port = 21 keep state
# Libera portas passivas do FTP
pass in quick on rge0 proto tcp/udp from any to any port 32768 >< style="font-weight: bold;">Ativando o ipf:
# svcadm refresh ipfilter && ipf -E && ipf -Fa -f /etc/ipf/ipf.conf

Verifique suas regras com:
# ipfstat -nih

Configuração de Redirecionamento de portas -- ipnat

####/etc/ipf/ipnat.conf####
rdr rtls0 0/0 port 3389 -> 192.168.10.204 port 3389
rdr rtls0 0/0 port 53 -> 192.168.10.245 port 53 udp
#email
rdr rtls0 0/0 port 25 -> 192.168.10.2 port 25
rdr rtls0 0/0 port 110 -> 192.168.10.2 port 110
rdr rtls0 0/0 port 143 -> 192.168.10.2 port 143
rdr rtls0 0/0 port 80 -> 192.168.10.2 port 80

map rtls0 192.168.10.0/24 -> 0/32
#### EOF ####

Ativando ipnat:
# ipnat -CF -f /etc/ipf/ipnat.conf

Verifique suas regras com:
# ipnat -l

DICA: Sempre que houver NAT deve-se abrir a porta no firewall (sim,no BSD não precisa) mas no ipf há essa necessidade. Note também a necessidade de dizer que é "tcp" , "udp" ou "tcp/udp" , parece besta mas me quebrei com isso.


É bem gostoso trabalhar com o ipf, ele é durão mas é muito bom, boa sorte...


Manpages:
http://docs.sun.com/app/docs/doc/816-5166/6mbb1kq4r?a=view
http://docs.sun.com/app/docs/doc/816-5175/ipfilter-5?a=view

route
http://slashzeroconf.wordpress.com/2008/03/05/enabling-and-disabling-ip-forwarding-in-solaris-10/

ftp
http://tecnolovers.skhizos.com/?q=taxonomy/term/16

nwan
http://joaocep.blogspot.com/2009/07/opensolaris-desabilitando-nwam-e-usando.html

Alterar o hostname no Opensolaris

Segue a dica:

# su
# cd /etc/
# chmod 777 nodename
Adicione o novo nome do host
#
nano nodename
# chmod 444 nodename
# chmod 777 hosts
Adicione o novo nome do host aqui também
# nano hosts
# chmod 444 hosts
# vi /etc/hostname.
# reboot

Fiz isso baseado na referência, mas na prática não precisa tudo aquilo não.

Referência:
http://web.ics.purdue.edu/~acm/sigs/sigos/wiki/tiki-index.php?page=Changing+the+Hostname+in+OpenSolaris

quinta-feira, 18 de março de 2010

Modem 3G Nokia CS-10 no Debian e Derivados.

Esse foi trabalhoso, mas espero que este tutorialzinho ajude.

Existem duas maneiras de conseguir o "Feito":

É muito importamte ler uma das referências:
http://ubuntuforum-br.org/index.php?topic=59371.0

Iniciando

Modo Gráfico:
# apt-get install udev wvdial network-manager

Baixe o arquivo:
http://www.elitoral.com.br/dognew/downloads/nokia_cs10_3g.zip

Instale:
# unzip nokia_cs10_3g.zip
# cd Nokia_CS10_3g/linux
# sh install.sh

Clique no ícone do network-manager (gnome) e Editar Conexões / Banda Larga Móvel / Adicionar

Siga o menu intuitivo, coloque o 3G na Porta USB e Boa navegação.

Modo Texto:
# apt-get install udev wvdial

Aqui "fede" um pouco...

Crie o arquivo /etc/udev/rules.d/90-nokia-zerocd.rules

###/etc/udev/rules.d/90-nokia-zerocd.rules###
SUBSYSTEMS=="usb", SYSFS{idVendor}=="0421", SYSFS{idProduct}=="060c", ACTION=="add", PROGRAM=="nokia-testcd %M %s{serial}", RUN+="/usr/bin/eject -s %k", OPTIONS+="last_rule"
###EOF###

Crie o script /lib/udev/nokia-testcd

#!/bin/sh ###/lib/udev/nokia-testcd###
# Don't eject if flag in place
if [ -f /etc/udev/nokia-zerocd-noeject ]; then
exit 1
fi
# Extract USB serial into major and minor numbers
minor=`echo $2 | sed 's/.[0-9]*\.//'`
major=`echo $2 | sed 's/\.[0-9]*$//'`
# Compare with current software version
if [ "$major" -gt "0" ] || [ "$minor" -gt "10" ]; then
exit 1
fi
# Clean exit on match
exit 0
####EOF###



Dê permissões de execução ao mesmo

# chmod +x /lib/udev/nokia-testcd

reinicie o udev

# /etc/init.d/udev restart

Feito isso, basta editar o /etc/wvdial.conf

###/etc/wvdial.conf###
[Dialer vivo]
Init1 = ATZ
Init2 = AT+CFUN=1
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init4 = AT+CGDCONT=1,"IP","zap.vivo.com.br"
Password = vivo
Phone = *99#
Modem Type = Analog Modem
Stupid mode = yes
Baud = 460800
New PPPD = yes
Modem = /dev/ACM0
ISDN = 0
Username = vivo
Carrier Check = no
Auto Reconnect = yes
###EOF###

Testando a Conexão:

# wvdial vivo
--> Sending: AT+CGDCONT=1,"IP","zap.vivo.com.br"
AT+CGDCONT=1,"IP","zap.vivo.com.br"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
~[7f]}#@!}!}!} }<}!}$}&@}#}$@#}%}&}7[08](q}"}&} } } } }'}"}(}"[7f]`~~~ --> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Mar 18 16:55:22 2010
--> Pid of pppd: 2459
--> Using interface ppp0
--> pppd: �"[11][08]�"[11][08]
--> pppd: �"[11][08]�"[11][08]
--> pppd: �"[11][08]�"[11][08]
--> pppd: �"[11][08]�"[11][08]
--> pppd: �"[11][08]�"[11][08]
--> pppd: �"[11][08]�"[11][08]
--> local IP address 187.xx.xx.xx
--> pppd: �"[11][08]�"[11][08]
--> remote IP address 10.0.0.1
--> pppd: �"[11][08]�"[11][08]
--> primary DNS address 200.xx.xx.202
--> pppd: �"[11][08]�"[11][08]
--> secondary DNS address 200.xx.xx.41
--> pppd: �"[11][08]�"[11][08]

Boa navegação!

OBSERVAÇÃO: Há uma diferença entre o arquivo 90-nokia-zerocd.rules (editado) e o mesmo referente no script baixado, mas ambos funcionáram em modo gráfico, em modo texto só consegui fazer funcionar usando o modo editado.

Referências:
gráfica (primeira dica):
http://ubuntuforum-br.org/index.php?topic=59371.0

texto:
http://www.islascruz.org/html/index.php/blog/show/Nokia-Internet-Stick-CS-10-on-Linux.html

segunda-feira, 15 de março de 2010

OpenVPN em OpenSolaris

OpenVPN em OpenSolaris 2009.06

Mais uma vez escrevo um tutorial por não achar nada em pt_br para OpenSolaris.

Instalando pacotes necessários.
# pkg refresh --full
# pkg install SUNWgcc

Interface TUN/TAP
# mkdir -p /usr/local/src
# cd /usr/local/src
# wget http://www.whiteboard.ne.jp/~admin2/tuntap/source/tuntap/tuntap.tar.gz
# tar xvfz tuntap.tar.gz
# chown -R root:root tuntap
# cd tuntap
# ./configure
# make
# make install

Lib de Compressão LZO
# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
# gzcat lzo-2.03.tar.gz | tar xvf lzo-2.03.tar.gz
# gzcat lzo-2.03.tar.gz | tar xvf -
# cd lzo-2.03
# ./configure
# make
# make install

Instalação do OpenVPN
# cd /usr/local/src
# wget http://www.openvpn.net/release/openvpn-2.1_rc15.tar.gz
# tar xvfz openvpn-2.1_rc15.tar.gz
# chown -R root:root openvpn-2.1_rc15
# cd openvpn-2.1_rc15
# wget -O tun.c http://www.whiteboard.ne.jp/~admin2/tuntap/source/openvpn/2.1/tun.c

Configurando com LZO
# ./configure --with-lzo-lib=/usr/local/lib

Configurando sem LZO
# ./configure --disable-lzo

# make
# make install

Arquivo de Configuração:

###/etc/openvpn/openvpn.conf retirado do vivaolinux###
# Interface da VPN
dev tun
port 5000
proto udp
server 192.168.0.0 255.255.0.0
ifconfig-pool-persist ipp.txt
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/kenji.crt
key /etc/openvpn/easy-rsa/keys/kenji.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
push "route 192.168.0.0 255.255.0.0"
comp-lzo
ping-timer-rem
persist-tun
persist-key
group nobody
daemon
mute 20
####Fim####

Copie a pasta openvpn-2.1_rc15/easy-rsa/ para /etc/openvpn/

# cp -r /usr/local/src/openvpn-2.1_rc15/easy-rsa/ /etc/openvpn/

agora vamos gerar as chaves de criptografia usando sh "shell" NÃO BASH!!!

Configurações para Server
# sh
# ./vars
# ./clean-all
# ./build-ca
# ./build-key-server kenji

Configuração de Clientes
# ./build-key dr-gori
# ./build-key karas

Voltando a Conf do Server
# ./build-dh

# cp -r $KEYS /etc/openvpn/

OBS: KEYS são as suas chaves, não vai me digitar $KEYS

Copie as $KEYS correspondentes aos Clientes e coloque nas pastas específicas.


Inicializando o Serviço no OpenSolaris:

# /usr/local/sbin/openvpn --daemon --writepid /tmp/openvpn.pid.pid --cd /etc/openvpn/ --config /etc/openvpn/openvpn.conf

Para Matar o processo:

# kill 'cat /tmp/openvpn.pid'


Verificando a tun0:
# ifconfig tun0
tun0: flags=10010008d1 mtu 1500 index 3
inet 192.168.0.1 --> 192.168.0.2 netmask ffffffff
ether b8:be:60:db:0:0

Feito isso, é só configurar os Clientes.


um Abraço!

Configuração em Cliente Windows:
http://www.guiadohardware.net/tutoriais/openvpn/pagina7.html


OBS 1 : Fiz testes com Clientes: Windows , Linux e FreeBSD.

OBS 2 : O arquivo de Configuração pode ser de QUALQUER outro tutorial visto, com ou sem lzo.

OBS 3 : É importante haver os arquivos *.cert e *.key para funcionamento da VPN.

OBS 4 : Em ZONES ele não reconhece a REDE.

OBS 5 : Kenji, Karas e Dr-Gori, sim -- são do Spectreman.

Bibliografia
http://web.vathorstweb.nl/index.php?option=com_content&task=view&id=68&Itemid=48

Licença CC conforme site:
http://creativecommons.org/licenses/by-sa/2.5/br/