Usuário é uma merda mesmo.. e isso já vem embutido no DNA da pessoa, desde os primórdios da humanidade..
quinta-feira, 14 de outubro de 2010
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:
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! ;)
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! ;)
Marcadores:
Windows
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!
;)
Marcadores:
Internet - Dicas,
Segurança
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:
Insira o conteúdo abaixo no novo arquivo e clique em salvar:
Agora é só dar a permissão de execução à esse arquivo:
Quase pronto, agora é só colocar para inicializar junto com o sistema:
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:
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:
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".
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:
* 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:
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!
;)
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!
;)
Marcadores:
Linux - Geral,
Linux - Ubuntu,
Segurança
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:
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:
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.
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:
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:
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:
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:
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:
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:
Para encerrar o servico do squid:
Para iniciar o servico:
Para carregar alterações no squid.conf:
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:
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
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_filesOnde "/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
Marcadores:
Linux - Geral,
Linux - Ubuntu,
Segurança
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:
No meu caso:
eth0 - interface externa (internet)
eth2 - interface interna (lan)
Agora abra o arquivo interfaces, digitando:
Segue abaixo mais ou menos como o seu arquivo deve estar aparecendo:
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:
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:
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:
Remova o comentário (símbolo: #) da linha:
net.ipv4.ip_forward = 1
Para mais informações sobre o arquivo sysctl.conf, basta digitar:
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 é:
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
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
Marcadores:
Linux - Geral,
Linux - Ubuntu,
Segurança
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:
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:
(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
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
Marcadores:
Linux - Geral,
Linux - Ubuntu,
Segurança
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:
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. ;]
Repentinamente meu programa começou a apresentar um erro dizendo:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.E o seguinte StackTrace foi apresentado:(I)V
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. ;]
Marcadores:
Java - Geral,
Java - Hibernate
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 ;]
Marcadores:
Java - Geral
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.
Marcadores:
Musica
Assinar:
Postagens (Atom)