quinta-feira, 14 de outubro de 2010

Suporte Técnico (na idade média)

Usuário é uma merda mesmo.. e isso já vem embutido no DNA da pessoa, desde os primórdios da humanidade..

quinta-feira, 30 de setembro de 2010

Firewall do windows / ICS - Resolvendo problema com o serviço

Tive hoje um pequeno contratempo com os serviços de firewall e de compartilhamento de conexão com internet (ICS) de um dos nossos servidores de banco de dados.
A máquina roda o Windows XP SP 3.

A mensagem apresentada era:
Não Foi possivel iniciar o Serviço Firewall Do Windows/compartilhamento de conexão com internet. (ics) em computador local. erro5: acesso negado.
Não consegui subir o compartilhamento de arquivos e nem o firewall por nenhum lugar do sistema, nem pelo próprio processo.

Resolvi da seguinte forma:

1) Abra o prompt de comandos (iniciar -> execultar -> cmd)
2) Digite o comando: netsh winsock reset
3) Digite o comando: netsh int ip reset c:\resetlog.txt
4) Reinicie a máquina

Táá Dááá! Prontinho! ;)

terça-feira, 28 de setembro de 2010

Teste a eficácia do seu Firewall


Após um árduo trabalho em criar um sistema de firewall eficiente, é preciso testá-lo para garantir que não existam brechas.

Para isso, existem alguns sites que efetuam os ataques mais comuns a algum endereço indicado.

Recomendo dois sites grátis que fazem o trabalho sujo por você. Basta selecionar os tipos de ataques desejados, o ip da "vítima" e mandar executar o teste que, ao final, exibirá um relatório com as falhas na máquina em questão.

Seguem os links:
http://www.auditmypc.com/
https://www.grc.com/x/ne.dll?bh0bkyd2

Boa sorte e bom proveito!
;)

terça-feira, 14 de setembro de 2010

Firewall com Ubuntu Server 10.04 (pt 4) - IPTables

Se você está chegando agora a essa sequencia de posts, pode encontrar aqui o que procura:
Parte 01 - GUI, VNC e FTP
Parte 02 - Compartilhando a conexão
Parte 03 - Squid, proxy transparente

Dando continuidade, o Iptables é um firewall, instalado por padrão tanto no Ubuntu Server quanto em outras distribuições, como Debian, por exemplo.
Numa instalação normal do Ubuntu, o iptables é instalado mas todo tráfego é permitido por default.


INICIANDO SUAS REGRAS COM O SISTEMA

Existem diversas formas, descritas em vários sites, para inicializar suas configurações personalizadas com o sistema.
Algumas delas eu testei e deram certo, outras eu não consegui fazer funcionar.

Note que existem N formas de se trabalhar com o iptables.
Abaixo vou citar as mais comuns e, ao final, vou dizer qual foi a maneira que melhor funcionou para mim:

Opções:
1) Criar um script que invoca o seu arquivo de configurações do iptables
2) Utilizar algum arquivo do sistema que invoque seu arquivo de configurações do iptables

Forma escolhida:
3) Colocar suas configurações dentro de algum arquivo de sistema que já é automaticamente iniciado no boot.

Opção 01:
Criando um script que invoca o arquivo de configurações


Para se criar um script que seja inicializado com o sistema, basta criá-lo dentro do diretório /etc/init.d

Veja um exemplo para criação de um script simples:
sudo gedit /etc/init.d/meu_script

Insira o conteúdo abaixo no novo arquivo e clique em salvar:
#!/bin/bash
echo "Olá mundo" 

Agora é só dar a permissão de execução à esse arquivo:
sudo chmod 755 /etc/init.d/meu_script

Quase pronto, agora é só colocar para inicializar junto com o sistema:
sudo update-rc.d meu_script defaults


Para minimizar um pouco o trabalho, através do repositório, eu encontrei um pacote chamado: iptables-persistence
Fiz a instalação e ele criou automaticamente em init.d um script de mesmo nome (iptables-persistence) que invoca o arquivo: /etc/iptables/rules

O script criado tem essa cara:
#!/bin/sh
 ### BEGIN INIT INFO
 # Provides:          iptables
 # Required-Start:    mountkernfs $local_fs
 # Required-Stop:     $local_fs
 # Default-Start:     S
 # Default-Stop:      
 # Short-Description: Set up iptables rules
 ### END INIT INFO
 
 case "$1" in
 start)
     if [ -f /etc/iptables/rules ]; then
         iptables-restore </etc/iptables/rules
     fi
     ;;
 stop|force-stop|restart|force-reload|status)
     ;;
 *)
     echo "Usage: $0 {start|stop|force-stop|restart|force-reload|status}" >&2
     exit 1
     ;;
 esac
 
 exit 0

Portanto, o arquivo que você deverá trabalhar as regras do iptables é, nesse caso, o /etc/iptables/rules.


Opção 02:
Invocando o arquivo de configurações por um arquivo do sistema


Seu arquivo de configuração pode ser inicializado através do seguinte código no arquivo interfaces:
pre-up iptables-restore < /etc/iptables/iptables.up.rules 
[após as configurações do adaptador de internet (eth0 nesse caso)]
Note que o arquivo com as configurações é o iptables.up.rules


Opção 03:
Iniciando as configurações por um arquivo do sistema


Após várias tentativas de rodar meus comandos através de scripts e arquivos invocados por scripts, eu decidi ser mais prático e menos "profissional".
Essa solução atende perfeitamente minhas necessidades e funcionou de uma forma incrivelmente simples.

Todas as suas configurações de iptables podem ser colocadas dentro do arquivo /etc/rc.local antes do comando "exit 0".
sudo gedit /etc/rc.local


CONFIGURAÇÕES DO IPTABLES (Arquivo rc.local)

Abaixo segue meu arquivo rc.local, com todas as configurações do iptables. Incluindo algumas que ainda não testei e as regras já citadas anteriormente.

Considere que não sou nenhum expert em redes e segurança, portanto a maioria dessas regras que serão citadas foram "catadas" da internet, então são regras muito batidas.

Se você for utilizar esse método, seu arquivo deve ficar com a seguinte cara:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# -------------------------------------------------------------------
# IPTABLES - Configuracao personalizada || INICIO
# -------------------------------------------------------------------

# Configuracoes das variáveis
# -------------------------------------------------------
IF_EXTERNA=eth0
IF_INTERNA=eth2
IP_SERVER=10.10.16.242
IP_EXTERNO=X.X.X.119  # Esse é meu ip estático de internet

# Adicionar módulos no kernel
# -------------------------------------------------------

# Os modulos a seguir, de forma geral, compartilham a internet, 
# resolvem problemas de ftp e sao responsaveis pelos logs.
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE

# Flush - Limpar regras
# -------------------------------------------------------------------

# Zerar regras default
iptables -F
iptables -F -t nat
iptables -F -t mangle
# Zerar regras personalizadas
iptables -X
iptables -X -t nat
iptables -X -t mangle

# Compartilhamento da internet
# -------------------------------------------------------------------
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Politica padrão
# -------------------------------------------------------
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP 

# Tabela filter
#iptables -t filter -P INPUT DROP
#iptables -t filter -P OUTPUT ACCEPT
#iptables -t filter -P FORWARD DROP
# Tabela nat
#iptables -t nat -P PREROUTING ACCEPT
#iptables -t nat -P OUTPUT ACCEPT
#iptables -t nat -P POSTROUTING DROP
# Tabela mangle
#iptables -t mangle -P PREROUTING ACCEPT
#iptables -t mangle -P OUTPUT ACCEPT

# Accept - Regras de liberaçao
# -------------------------------------------------------

# Interface de loopback
iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# Abre para uma faixa de endereços da rede local
iptables -A INPUT -p tcp --syn -s $IP_SERVER -j ACCEPT

# Libera os pacotes de retorno da internet
iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

# Libera o acesso ao ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# Redirecionamentos
# -------------------------------------------------------------------

# SQUID (para um proxy transparente)
iptables -t nat -A PREROUTING -i $IF_EXTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 0/0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # testar
iptables -t nat -A PREROUTING -s 0/0 -p udp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -s 0/0 -o $IF_INTERNA -j MASQUERADE # testar

# VPN
iptables -A INPUT -p tcp -i $IF_EXTERNA --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -i $IF_EXTERNA -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $IF_EXTERNA --dport 1723 -j DNAT --to $IP_SERVER:1723
iptables -t nat -A PREROUTING -p 47 -i $IF_EXTERNA -j DNAT --to $IP_SERVER

# Remote Desktop Connection - Server
# Redirecionamento direto ao nosso servidor, no caso de uma chamada de RDC.
iptables -t nat -A PREROUTING -p tcp -i $IF_EXTERNA -d $IP_EXTERNO --dport 3389 -j DNAT --to-destination $IP_SERVER:3389


# Filtros
# -------------------------------------------------------

# Proteção contra alguns worms
iptables -A FORWARD -p tcp --dport 135 -i $IF_INTERNA -j REJECT

# Forçar checagem de pacotes fragmentados
iptables -A INPUT -f -j DROP

# Dropar pacotes nulos e malformados
iptables -A INPUT -i $IF_EXTERNA -m unclean -j LOG --log-level 6 --log-prefix "FIREWALL: pacote mal formado: "
iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Syn packets check (dropar o que nao for um pacote SYN)
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: Non SYN packet: "
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Proteção contra syn-flood
iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j LOG --log-level 6 --log-prefix "FIREWALL: SYN flood: "
iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT

# Protecao contra trace-routes
iptables -A FORWARD -p udp -s 0/0 -i eth0 --dport 33435:33525 -j LOG --log-level 6 --log-prefix "FIREWALL: Trace Route: "
iptables -A FORWARD -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP

# Proteção contra trojans
iptables -N TROJAN
iptables -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: Trojan: "
iptables -A TROJAN -j DROP
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6666 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN

# Proteção contra trinoo
# -------------------------------------------------------
#iptables -N TRINOO
#iptables -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
#iptables -A TRINOO -j DROP
#iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
#iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
#iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
#iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
#iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO

# Proteção contra port scanners
iptables -N SCANNER
iptables -A SCANNER -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: Port scanner: "
iptables -A SCANNER -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER 

# Proteção contra ping da morte
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Recusa de pings
# iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP

# Programas P2P
# -------------------------------------------------------

# Audiogalaxy
iptables -A FORWARD -d 64.245.58.0/23 -j DROP

# BearShare
iptables -A FORWARD -p TCP --dport 6346 -j DROP

# iMesh
iptables -A FORWARD -d 216.35.208.0/24 -j DROP

# KaZaa
iptables -A FORWARD -d 213.248.112.0/24 -j DROP
iptables -A FORWARD -p TCP --dport 1214 -j DROP 

# Limewire
iptables -A FORWARD -p TCP --dport 6346 -j DROP

# Morpheus
iptables -A FORWARD -d 206.142.53.0/24 -j DROP
iptables -A FORWARD -p TCP --dport 1214 -j DROP

# Napigator
iptables -A FORWARD -d 209.25.178.0/24 -j DROP

# Napster
iptables -A OUTPUT -p TCP --dport 6699 -j DROP
iptables -A FORWARD -p TCP --dport 6699 -j DROP
iptables -A OUTPUT -p UDP --dport 6699 -j DROP
iptables -A FORWARD -p UDP --dport 6699 -j DROP

# ToadNode
iptables -A FORWARD -p TCP --dport 6346 -j DROP

# WinMX
iptables -A FORWARD -d 209.61.186.0/24 -j DROP
iptables -A FORWARD -d 64.49.201.0/24-j DROP

# Ativa mascaramento de saída
# -------------------------------------------------------
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_EXTERNA -j MASQUERADE

# Logs - tentativas de acesso a determinadas portas
# -------------------------------------------------------
iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
iptables -A INPUT -p tcp --dport 23 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
iptables -A INPUT -p tcp --dport 25 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
iptables -A INPUT -p tcp --dport 110 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
iptables -A INPUT -p udp --dport 111 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
iptables -A INPUT -p tcp --dport 113 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
iptables -A INPUT -p tcp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
iptables -A INPUT -p udp --dport 137:139 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
iptables -A INPUT -p tcp --dport 161:162 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
iptables -A INPUT -p tcp --dport 6667:6668 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
iptables -A INPUT -p tcp --dport 3128 -i $IF_EXTERNA -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "

# Logs - outras recusas
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "FIREWALL: iptables denied: " --log-level 7

# -------------------------------------------------------------------
# IPTABLES - Configuracao personalizada || FIM
# -------------------------------------------------------------------

exit 0

* Note que não tive tempo útil para testar todas essas regras e, com o tempo, pretendo ir incrementando meu firewall. Vou manter esse post atualizado com o que realmente funciona.

Aqui seguem mais algumas regras de bloqueio, que não estou utilizando pelo fato de que estou deixando o Squid cuidando dos acessos à websites, mas que podem ser de alguma utilidade para quem está pensando em reforçar o iptables:

# Bloqueio de MSN - Fonte: www.vivaolinux.com.br/artigo/Bloqueando-MSN-orkut-trojans-e-mais/
# -------------------------------------------------------
iptables -A FORWARD -d gateway.messenger.hotmail.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d login.live.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d contacts.msn.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d storage.msn.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d c.msn.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d messenger.msn.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d g.msn.com -p tcp --dport 80 -j REJECT
iptables -A FORWARD -d messenger.hotmail.com -p tcp --dport 1863 -j REJECT
iptables -A FORWARD -d edge.messenger.live.com -p TCP --dport 80 -j REJECT
iptables -A FORWARD -p TCP --dport 443 -j REJECT
iptables -A FORWARD -p TCP --dport 1863 -j REJECT
iptables -A FORWARD -d 64.4.13.0./24 -j REJECT 


# Bloqueio do Orkut - Fonte: www.vivaolinux.com.br/artigo/Bloqueando-MSN-orkut-trojans-e-mais/
# -------------------------------------------------------
iptables -A FORWARD -d orkut.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.orkut.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP


# Bloqueio de alguns web-messengers
# -------------------------------------------------------
iptables -A FORWARD -d www7.messengerfx.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.iloveim.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.ebuddy.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.meebo.com.br -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.koolim.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.kkurok.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.imunitive.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.radiusim.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d imo.im -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.communicationtube.net -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d vcontent.e-messenger.net -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.myemessenger.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d messengerskinner.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.messengerskinner.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d rad.msn.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.messengertools.net -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d messenger.zango.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.zangomessenger.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP


# Bloqueio de alguns proxies
# -------------------------------------------------------
iptables -A FORWARD -d www.nproxy.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.snoopblocker.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.pproxy.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.nopath.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d anonymouse.ws/anonwww.html -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.megaproxy.com/freesurf/ -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www8.tok2.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.fireprox.com/ -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.vtunnel.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.spynot.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.fsurf.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.onlinemessenger.nl -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.3proxy.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.euproxy.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.torperkut.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.orkutando.net -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.theorkut.rg3.net -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -A FORWARD -d www.proxy3.com -s 192.168.0.0/24 -p tcp --dport 80 -j DROP

REFERÊNCIAS
Depois desse enorme trabalho, nada mais justo do que citar e agradecer às minhas principais referências ;)

http://www.gdhpress.com.br/servidores/leia/index.php?p=cap2-3
http://www.vivaolinux.com.br/artigo/Firewall-rapido-e-seguro-com-iptables/
http://www.vivaolinux.com.br/artigo/Criando-um-firewall-simples-e-compartilhando-a-conexao-usando-o-IPtables/?pagina=2
http://www.guiaubuntupt.org/wiki/index.php?title=Iptables#Configurar_no_Startup
http://www.vivaolinux.com.br/etc/firewall-mitre
http://www.guiadohardware.net/artigos/firewall-iptables/
http://alexsandropedrollo.com/2010/08/11/compartilhar-rede-no-ubuntu/
http://softwarelivre.org/andre-ferraro/blog/linux-compartilhando-a-conexao-de-internet
http://174.123.53.162/artigo/Configurar-servidor-proxy-Squid-%28Ubuntu%29?pagina=2
http://graveheart.me/geek-life/instalando-e-configurando-um-servidor-proxy-com-o-ubuntu-server-em-menos-de-duas-horas/
http://www.vivaolinux.com.br/etc/squid.conf-alencar
http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap5-12
http://www.guiadohardware.net/tutoriais/servidor-rede-local-ubuntu/pagina6.html
http://www.zago.eti.br/squid/dicas-e-truques.html#toc2

Tenham um bom proveito!
;)

sexta-feira, 3 de setembro de 2010

Firewall com Ubuntu Server 10.04 (pt 3) - Squid, proxy transparente

Dando continuidade à configuração do meu firewall utilizando Ubuntu Server, agora é a parte de citar o SQUID, o nosso conhecido servidor de Proxy.
A última parte do tutorial será exclusiva ao iptables.

Veja aqui:
Parte 01 - GUI, VNC e FTP
Parte 02 - Compartilhando a conexão
Parte 04 - Firewall com IPTables


SQUID - Servidor Proxy

O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros.
Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições freqüentes de páginas web numa lan.

Um dos principais problemas de usar um proxy é que você precisa configurar manualmente cada micro da rede para utilizá-lo, o que é um trabalho cansativo e tedioso, sobretudo em grandes redes.

O Squid responde a este desafio com a possibilidade de criar um proxy transparente, onde o proxy se integra a uma rede já existente, acelerando a conexão, mas sem precisar de qualquer configuração nos clientes.

No meu caso, foi instalado apenas para cuidar da agilidade na conexão com a internet, já que terei poucas restrições na minha rede.

Para maiores detalhes, consulte o site da criança: www.squid-cache.org


Instalação

Vamos começar a instalação com os principais pacotes, digitando no terminal:

sudo apt-get install squid squidclient squid-cgi logcheck-database resolvconf

Agora vem o principal: a edição do arquivo de configuração.
Este arquivo é o /etc/squid/squid.conf. Entrando no terminal como root digite:

gedit /etc/squid/squid.conf 

Ao abrir o arquivo, você poderá se assustar com a quantidade de linhas. Calma, a maioria delas é comentário.
O arquivo é auto-explicativo e funciona como um manual.

Aqui é a parte em que você pode fazer uma cópia de segurança desse arquivo, para consultas futuras e tals, e utilizar minhas configurações.

Minhas configurações são mínimas e garantem um cache para otimização da navegação à internet e bloqueia alguns sites, tirando assim esse trabalho do iptables.

http_port 3128 transparent
visible_hostname fire
mail_from felipe@colmeiasis.com.br
cache_mem 64 MB
maximum_object_size 160 MB
maximum_object_size_in_memory 128 KB
cache_swap_low 85
cache_swap_high 95
cache_dir ufs /home/squid_files 2048 16 256
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 280 443 488 563 591 777 1000 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
acl server src 10.10.16.242
acl bloqueados url_regex -i "/etc/squid/proibidos/sites_proibidos"

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny bloqueados
http_access allow server
http_access deny all

Vamos às explicações pertinentes:

A primeira linha indica a porta utilizada pelo Squid (por padrão, 3128) e que ele deve operar em modo transparente (transparent).
A segunda linha indica o nome do servidor (fire) que você deve substituir pelo nome do seu.
A terceira linha indica o email que será mostrado no caso do bloqueio de uma página.

As próximas linhas cuidam das configurações do cache.
O "cache_mem 64 MB" indica o tamanho do cache na memória RAM (é recomendável que você utilize no máximo 1/3 da memória total instalada).

A linha "cache_dir ufs /home/squid_files 2048 16 256" merece uma atenção especial:
/home/squid_files - indica o local que será armazenado o cache,
2048 - indica o tamanho do cache que será feito no HD, em megabytes,
16 - quantos diretórios serão armazenados
256 - quantos arquivos serão aceitos por diretório

Notas:
Se você alterar o diretorio padrão do swapp, não esquecer de dar permissao de leitura e escrita com o comando:
sudo chmod 777 /home/squid_files
Onde "/home/squid_files" é o diretório à ser alterado.

Após a alteração das permissões, você precisa "ativar" a pasta de swapp com o comando:
sudo squid -z

As duas linhas subsequentes cuidam dos logs.

Todas as linhas que começam com ACL (Listas de Controle de Acesso) são regras de bloqueio/permissão.
Todas são regras padrões, menos:

acl server src 10.10.16.242
acl bloqueados url_regex -i "/etc/squid/proibidos/sites_proibidos"

Note que nessa primeira linha, eu criei uma regra chamada "SERVER" e estipulei o endereco 10.10.16.242 à ela.
Aqui você pode criar uma regra com os endereços de sua rede local para aplicá-los às suas regras.
Por exemplo, se você não estará ligado diretamente a uma máquina e sim à sua rede local, pode criar uma acl da seguinte forma:

acl redelocal src 192.168.1.0/24

Note que o /24 equivale à mascara 255.255.255.0.

Na segunda linha, foi criada uma regra chamada "BLOQUEADOS" e teve como parâmetro o arquivo "sites_proibidos".
Esse é o arquivo que indicaremos palavras e/ou endereços que não serão permitidos.

A estrutura desse arquivo é muito importante para que ele seja um arquivo válido para o Squid. Ele só pode conter um site ou nome por linha, jamais coloque mais de um site por linha ou nome.

Basta criar um arquivo vazio, com o conteudo que siga esse exeplo:
sexo
playboy
pornografia
www.youtube.com

Quando você coloca palavras, ele bloqueará toda url que a contenha, inclusive quando é passada como parâmetro a uma requisição (pesquisa no google por exemplo).

Esta regra pode ser vista, em sua aplicação, nas linhas:
http_access deny bloqueados
http_access allow server
http_access deny all

O Squid resolve as linhas ordenadamente. Portanto, nessa primeira linha ele aplica a regra "bloqueados" a todas as requisições que passarem por ele.
Logo após, ele permite o acesso à minha regra "server" (ou redelocal, no exemplo acima) e com a última linha, ele bloqueia tudo que não foi citado anteriormente.

Cuidado com essa última linha, ela precisa necessariamente ser a última.

Nesse ponto, seu Squid já deve estar configurado e operante! Simples assim!

Para maiores explicações sobre ACLS e HTTP_ACCESS consulte os links indicados nas minhas referências.
Existem muitas coisas legais que podem ser feitas com o Squid, incluindo balanceamento de carga e regras aplicadas em determinados horários.

Existem interfaces graficas para configuração do squid, que podem ajudar (ou atrapalhar) um pouco esse trabalho.
Uma delas, que já foi citada anteriormente, é o GADMIN.

Pode ser baixado aqui: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-squid/
Link direto: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-squid/gadmin-squid_0.1.3-1_i386.deb


Dicas:

Para verificar o log do squid, digite no terminal:
sudo tail -f /var/log/squid/cache.log

Para encerrar o servico do squid:
sudo squid -k shutdown

Para iniciar o servico:
sudo squid start

Para carregar alterações no squid.conf:
sudo squid -k reconfigure


PROXY TRANSPARENTE

Agora precisamos adicionar a seguinte regra no Iptables, isso irá redirecionar todo tráfego da porta 80 para a porta 3128 automaticamente, sem precisarmos setar manualmente em todas as máquinas clientes:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 

Para testar, você pode rodar essa linha de comando através do terminal, caso não aguente esperar a última parte do tutorial, que tratará do iptables. ;)
Apenas não se esqueça de rodar como root, com o comando "sudo" antes.

Pretendo postar a última parte depois do feriado.
Até lá!

Veja também:

Parte 01 - GUI, VNC e FTP
Parte 02 - Compartilhando a conexão
Parte 04 - Firewall com IPTables

Firewall com Ubuntu Server 10.04 (pt 2) - Compartilhando a conexão

Veja na primeira parte do tutorial: Configuração de GUI, VNC e FTP

Para dar continuidade à montagem do meu firewall, é preciso entender basicamente como está desenhada a topologia da nossa LAN:

Modem -> Firewall -> Servidor -> Switch -> Clients

Modem: Entrada de internet com ip estático
Firewall: Ubuntu server
Servidor: Windows Server, com Active Directory
Switch: Redireciona a conexão para as máquinas clientes
Clients: Máquinas que rodam "Ruindows"


CONFIGURANDO AS INTERFACES DE REDE

Vou levar em conta que suas placas de rede estão funcionando perfeitamente.
Caso elas não estejam sendo reconhecidas pelo sistema, você terá que cuidar dessa etapa por si só, pois se trata de uma particularidade. Boa sorte.

O primeiro passo para compartilhar sua conexão é configurar suas interfaces de rede.
Você consegue realizar a configuração, tradicionalmente, de 2 formas:

1) Através do gerenciador de conexões, no menu: Sistema > Preferencias > Conexões de rede

2) "Na unha", através do arquivo /etc/network/interfaces

OBS: Se você editar o arquivo interfaces, o gerenciador de conexoes não detectará as interfaces de rede para permitir a configuração através do próprio utilitário.

As nomenclaturas padrões são: eth0, eth1, eth2 e assim sucessivamente de acordo com a quantidade de placas de rede instaladas.
Você precisa saber qual será sua interface que ligará você à internet (externa) e a que ligará sua máquina à sua LAN (interna).

Para descobrir quais as interfaces de rede que você irá utilizar, digite no terminal:

sudo ifconfig

No meu caso:
eth0 - interface externa (internet)
eth2 - interface interna (lan)

Agora abra o arquivo interfaces, digitando:

sudo gedit /etc/network/interfaces

Segue abaixo mais ou menos como o seu arquivo deve estar aparecendo:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Se você optar por configurar suas interfaces de rede com o utilitário gráfico, pode seguir o mesmo padrão de configurações que será citado abaixo.

A verdade é que não existe muita diferença entre alterar o arquivo e utilizar o gui, já que ambos necessitam das mesmas informações. Eu recomendo alterar o arquivo, por oferecer maior flexibilidade sobre configurações que eu possa precisar.

Segue a configuração do arquivo interfaces, que deve ter mais ou menos essa cara:

# Configuracoes personalizadas
# -------------------------------------------------------------------

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface - REDE EXTERNA (Internet)
auto eth0
iface eth0 inet static
address X.X.X.119
netmask 255.255.0.0
gateway X.X.X.1

# The secondary network interface - REDE INTERNA (LAN)
auto eth2
iface eth2 inet static
address 10.10.16.241
netmask 255.255.255.192

Leve em conta os seguintes pontos:

- Eu possuo um ip fixo de internet, por isso da palavra "static" na eth2.
Se fosse um ip dinâmico, seria trocado por "dhcp".

- A linha address se refere ao ip. No caso, X.X.X.119 deve ser trocado pelo SEU IP EXTERNO (se for um ip fixo, claro).

- O gateway você consegue com sua provedora de internet.

- Minha interface interna (lan) também está setada com um ip fixo, pois conversará diretamente com outra máquina (Veja minha topologia acima).
O que normalmente acontece aqui é a passagem direta do fluxo para um roteador ou switch, mas não no meu caso.

Você pode encontrar diversas configurações desse arquivo nos links de referência, no final do artigo.

DICA:

Para forçar a atualização e reiniciar os serviços de rede, digite no terminal:
sudo /etc/init.d/networking restart


COMPARTILHAMENTO DA INTERNET

Com as interfaces de rede preparadas para receberem os fluxos de dados, está na hora de compartilhar a conexão.

A primeira configuração à ser feita é liberar o encaminhamento de pacotes IP.
Para isso temos duas alternativas.

1) A primeira é alterando o arquivo /etc/sysctl.conf:

sudo gedit /etc/sysctl.conf

Remova o comentário (símbolo: #) da linha:

net.ipv4.ip_forward = 1

Para mais informações sobre o arquivo sysctl.conf, basta digitar:

man sysctl.conf

2) A segunda forma é alterar o arquivo ip_forward.

Essa alteração pode ser feita através do seu iptables.
Eu prefiro, já que teremos que fazer várias modificações nele. Assim afunilamos todas as configurações no menor número possível de lugares.

A configuração que deve ser inserida no iptables é:

# Compartilhamento da internet
# -------------------------------------------------------------------
modprobe ip_tables
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Substitua o "eth0" pela placa da Internet. Este comando compartilha a conexão proveniente da placa da internet com todas as demais placas de rede espetadas no servidor, por isso não é necessário especificar a placa de rede local.

O comando modprobe ativa os módulos "ip_tables" e "iptable_nat", o módulo do Iptables responsável por oferecer suporte ao roteamento de pacotes via NAT.

A terceira linha ativa o "ip_forward", o módulo responsável pelo encaminhamento de pacotes, utilizado pelo módulo iptable_nat.

Finalmente, a quarta linha cria uma regra de roteamento, que orienta o servidor a direcionar para a internet todos os pacotes (recebidos dos clientes) que se destinarem a endereços que não façam parte da rede local, tornando-se o gateway da rede.

Não precisa se desesperar (ainda). No terceiro post eu darei melhores explicações sobre o iptables.

Por enquanto você pode digitar esses 4 comandos no terminal para fazer o teste sobre o compartilhamento da sua conexão. Só não se esqueça de utilizar o comando "sudo" antes de cada linha. ;)

Veja também:
Parte 01 - GUI, VNC e FTP
Parte 03 - Squid, proxy transparente
Parte 04 - Firewall com IPTables

quinta-feira, 2 de setembro de 2010

Firewall com Ubuntu Server 10.04 (pt 1) - GUI, VNC e FTP

Há certo tempo eu comecei a configurar uma máquina com Ubuntu Server 8.10 para trabalhar como firewall.
Acabei postando, aqui mesmo no blog, parte da configuração e acabei encostando o trabalho pela metade.

Agora a água bateu na bunda. Perdemos nosso antigo firewall e fui obrigado a dar continuidade ao projeto.

Porém, já estamos na distribuição 10 do Ubuntu, então não vi sentido em manter o novo firewall rodando uma distro antiga.

Vou postar, em 4 partes, um passo-a-passo "for dummies" da configuração do meu novo firewall, utilizando Ubuntu Server 10.04.1 x86.

O servidor está operante com:
- Serviço de acesso remoto, utilizando VNC;
- Firewall baseado em iptables;
- FTP, utilizando ProFtpd;
- Proxy configurado com Squid, para agilizar e restringir acesso à internet

A instalação foi bastante simples, muitos sites descrevem um passo-a-passo, portanto não vou citar nada a respeito.

Vamos direto à primeira parte das configurações (note que algum texto foi roubado do meu post anterior):


INTERFACE GRÁFICA

O primeiro passo era fazer a instalação de uma interface gráfica, pois fazer tudo em modo texto é muito cansativo, dificil e trabalhoso.

Fiz a instalação do ambiente Gnome, pois estou mais acostumado.
Recomendo executar o próximo passo antes de ir dormir, ou antes de sair do escritório... vai demorar.. zzZZzzZzzZZzZz
Digitando no terminal:

sudo apt-get update
sudo apt-get install ubuntu-desktop


SERVIÇO DE ACESSO REMOTO

O segundo passo foi configurar um serviço para acesso remoto (VNC), afinal não dá pra ficar levantando toda hora para mexer em alguma coisinha.

Descobri que ja veio instalado. Basta ir no menu "Sistema > Preferencia > Área de Trabalho Remota" , e configurar algumas coisinhas como a senha de acesso por exemplo.
Nos terminais rodando Windows XP estou utilizando o "UltraVNC" ou o "VNC Viewer 4". Tudo gratuito.


SERVIDOR FTP

O terceiro passo foi a instalação de um servidor FTP. Ai ja complicou um pouco mais, pois eu nunca havia feito isso antes, nem em ambiente Microsoft.

Após algumas horas de pesquisa e algumas tentativas furadas de servidores, acabei optando pelo "proftpd", que é o mais comum servidor de ftp utilizado hoje em linux.

Para fazer a instalação, vc pode utilizar a linha de comando, digitando:

apt-get install proftpd-basic

(Até meu antigo post, o pacote se chamava 'proftpd')

Ou você pode utilizar o Synaptics para tal tarefa. Basta selecionar o mesmo pacote citado acima e suas dependencias (amplie a imagem para melhor visualização).


NOTA: Em algum momento da instalação será perguntado se você deseja instalar o servidor de ftp como parte do inetd. Não faça isso.
Selecione a outra opção, para ele rodar como um serviço a parte, ou você terá diversas dificuldades futuras. Eu apanhei muito com essa opção, portanto siga meu conselho (a menos que você saiba exatamente o que está fazendo - o que eu duvido, senão você não estaria lendo esse post.. rsrs).

Instalado, agora toda a configuração deve ser feita por linha de comando. Sim.. chato mesmo..
Depois de alguma pesquisa, encontrei um GUI que resolve esse problema.

Lhes apresento (para quem é novo nesse mundo) o "GAdmin".

Essa suite nos trás muitas interfaces gráficas para configuração de serviços como Squid, Samba, Dhcpd ou PROFTPD.

Até o presente momento, a versão dele que existe no repositório é uma versão antiga.
Recomendo baixar a versão atual do site: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-proftpd/

Nesse caso, utilizei a versão: gadmin-proftpd_0.4.0-1_i386.deb
Link direto: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-proftpd/gadmin-proftpd_0.4.0-1_i386.deb

Após o rápido download, dê um duplo clique nele e a mágica será feita.

Agora você consegue acessar e configurar seu servidor FTP pelo menu "Aplicações > Sistema" sem depender de configurações avançadas feitas no prompt de comando.
Para configurá-lo, basta ter um conhecimento mínimo de redes. Não entrarei nesses méritos.


Veja também:
Parte 02 - Compartilhando a conexão
Parte 03 - Squid, proxy transparente
Parte 04 - Firewall com IPTables

terça-feira, 29 de junho de 2010

Resolvido: Incompatibilidade entre bibliotecas ASM e Hibernate

No Netbeans 6.5.1 acabo de enfrentar um problema maluco de incompatibilidade entre a biblioteca nativa "Hibernate JPA" e um arquivo jar que se encontra imediatamente embutido nela: asm.jar.


Repentinamente meu programa começou a apresentar um erro dizendo:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V
E o seguinte StackTrace foi apresentado:

Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
        at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
        at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
        at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
        at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
        at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
        at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
        at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
        at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
        at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
        at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
        at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
        at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:753)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:691)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1390)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1359)
        ... 33 more

Solução:

O que deve ser feito é excluir manualmente os arquivos asm.jar e asm-atts.jar do classpath da biblioteca em questão e acrescentar as versões atualizadas dos mesmos. Podem ser baixadas aqui. O site do desenvolvedor pode ser acessado diretamente em: http://asm.ow2.org/download/index.html.

Esse problema começou a ocorrer sem mais nem menos, sendo que em uma bela manhã ensolarada eu executei o programa normalmente e 2 minutos depois, sem a alteração de uma linha de código, o erro começou a acontecer e me deixou maluco.
Espero que sirva para alguma pobre alma que passe por isso.  ;]

quarta-feira, 2 de junho de 2010

Netbeans 6.5 no Windows 7

 
Por algumas particularidades em um projeto, ainda preciso ficar preso na versão 6.5.1 do Netbeans.

Hoje ao tentar realizar a instalação dessa versão em uma máquina com o Windows 7, era apresentado o erro: "No JVM found", mesmo ao apontar o correto diretório do meu JDK.

Após algumas pesquisas, encontrei neste fórum o mesmo problema:
http://forums.sun.com/thread.jspa?threadID=5392644

Para funcionar, é necessário efetuar a descompactação "manualmente".

Copie o executável para, por exemplo, a raiz da unidade do sistema (c:) e execute os comandos pelo prompt:

netbeans-6.5.1-windows.exe --extract
java -jar bundle.jar

Um detalhe importante: Se o prompt não for executado como "Administrador" (clique direito > executar como..) você não terá acesso às pastas do sistema para concluir a instalação, e deverá instalá-lo em outro lugar.

Enjoy  ;]

domingo, 16 de maio de 2010

Luto: Perdemos Ronnie James "Dio"



Esse tópico foge do intuito deste blog, mas mereceu ser feito em homenagem às memórias de uma grande personalidade do Hard Rock/Heavy Metal: Dio.

O texto abaixo foi retirado integralmente do Whiplash, e pode ser acessado por aqui.

Wendy Dio, esposa e manager de Ronnie James Dio (DIO, HEAVEN & HELL, Black Sabbath, RAINBOW), enviou o seguinte comunicado ao BLABBERMOUTH.NET:
Hoje meu coração se despedaçou, Ronnie faleceu às 7:45 da manhã de hoje, domingo, 16 de maio de 2010. Muitos, muitos amigos e familiares puderam estar presente para se despedir antes que ele partisse. Ronnie sabia o quanto todos o amavam. Agradecemos o amor e apoio que vocês nos deram. Por favor, nos dêem alguns dias de privacidade para lidarmos com esta terrível perda. Por favor, saibam que ele amava a todos e sua música viverá para sempre".
Há apenas um mês atrás Dio, 67, falou sobre sua batalha contra o câncer com a Artisan News Service no tapete "negro" do Revolver Golden Gods Awards, em 08 de abril no Club Nokia, no centro de Los Angeles. Quando perguntado sobre como ele estava se sentindo desde que ele foi diagnosticado com a doença no ano passado, Dio disse: "Bem, eu me sinto bem e mal às vezes. É um processo longo. Quimioterapia é .. eu nem imaginava o quão difícil é essa coisa. É um verdadeiro efeito cumulativo - quanto mais você tem, mais ele se acumula e você leva mais tempo e mais tempo para superar isso. É muito difícil me alimentar. Eu não gosto de comer de qualquer jeito, então eu acho que está OK. Mas eu sei que tenho que fazer. Mas isso é muito, muito difícil. Mas se você está determinado a vencer, então você tem que ir com o que você acredita que vai dar certo para você, e neste caso é isso. Vou para um grande hospital em Houston chamado Anderson MD, que eu acho que é o melhor hospital do mundo. Eu tenho o melhor médico do mundo, Dr. Ajani, em quem eu confio muito e realmente acredito, por isso acho que fiz as coisas certas. Faz-me sentir positivo sobre a minha vida e na certeza que há muito mais do que viver ".

No início deste mês, o HEAVEN & HELL cancelou seus planos de turnê de verão na Europa, devido ao tratamento de Dio para câncer de estômago. A banda afirmou em comunicado que Dio não estava "suficientemente bem para turnê neste verão. Esperamos que todos compreendam e queremos agradecer os fãs e colegas da indústria pelo seu contínuo apoio neste momento."

Ronnie James Dio fez parte do ELF, RAINBOW, Black Sabbath, e DIO, sua própria banda. Outros projetos musicais incluíram o "Hear 'n Aid", um projeto coletivo beneficente. Ele era amplamente reconhecido como um dos cantores mais poderosos do heavy metal, conhecido por sua voz poderosa e consistente e por popularizar o gesto de "chifres do diabo" com a mão na cultura metal.


Mais recentemente, esteve envolvido com o HEAVEN & HELL, um projeto que incluiu também o ex-companheiros do Black Sabbath, Tony Iommi, Geezer Butler e Vinny Appice. O primeiro e único album do grupo, "The Devil You Know", foi lançado em 28 de abril de 2009.
BuscaPé, líder em comparação de preços na América Latina
 
BlogBlogs.Com.Br