<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luiz Oliveira &#187; Linux</title>
	<atom:link href="http://www.luizoliveira.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.luizoliveira.org</link>
	<description>Linux, Windows, Tutoriais, dicas e diversas notícias sobre TI</description>
	<lastBuildDate>Fri, 11 Jun 2010 12:39:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UltraSurf 9.6: Como bloquear</title>
		<link>http://www.luizoliveira.org/linux/ultrasurf-9-6-como-bloquear/</link>
		<comments>http://www.luizoliveira.org/linux/ultrasurf-9-6-como-bloquear/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 14:21:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=466</guid>
		<description><![CDATA[Vários usuários nos têm reportado que o script que criamos para combater o UltraSurf não tem sido eficiente no bloqueio da nova versão lançada no final do mês passado, o UltraSurf 9.6. Então, baixamos a nova versão e, como fizemos com a versão anterior, passamos a analisar o tráfego de uma estação que executava o [...]]]></description>
			<content:encoded><![CDATA[<p>Vários usuários nos têm reportado que o script que criamos para combater o UltraSurf não tem sido eficiente no bloqueio da nova versão lançada no final do mês passado, o UltraSurf 9.6. Então, baixamos a nova versão e, como fizemos com a versão anterior, passamos a analisar o tráfego de uma estação que executava o UltraSurf.</p>
<p>Uma das principais características que tínhamos observado na versão anterior era a grande quantidade de conexões HTTPS com servidores externos, na ocasião verificamos que o UltraSurf realizava em média 10 conexões simultâneas na porta 443. Utilizamos essa sua peculiaridade para criar o script stopUltraSurf.sh, que, até à versão anterior do UltraSurf, funcionava perfeitamente bloqueando as conexões.</p>
<p>Agora tudo mudou. Na versão 9.6, o UltraSurf tenta inicialmente se conectar a um servidor pertencente à rede 65.49.2.0/24, caso consiga, o acesso será estabelecido e a estação acessará livremente a Internet. Aliás, verificamos que conectado dessa maneira o acesso será bem mais rápido se comparado às versões anteriores do UltraSurf. Como os IPs dessa rede não respondem ao DNS reverso, não têm como serem verificados pelo script stopUltraSurfe.sh, logo a conexão não será bloqueada pelo script.</p>
<p>Uma forma elegante de quebrar essa conexão seria bloqueando o acesso HTTPS a endereços IP que não respondessem ao DNS reverso, fizemos até uma versão do script com essa característica, mas a quantidade de falsos positivos foi bastante grande, pois, infelizmente, vários sites não seguem a recomendação do Comitê Gestor Internet Brasil (CGI.br) que diz: &#8220;Todas as redes conectadas à Internet brasileira devem operar com registros direto e reverso de DNS corretamente configurados.&#8221;, se assim fizessem, teríamos como diferenciar IPs idôneos de IPs supostamente maliciosos. O pior é que sites como o do Banco do Brasil, do Banco Real, do Banco Itaú, do Hotmail etc., que deveriam ser exemplos, não têm o DNS Reverso configurado para os IPs que respondem às conexões HTTPS. Uma pena.</p>
<p>Qual a solução então? Bloquear esses endereços no firewall, o problema é que, se os mantenedores do UltraSurf mudarem a sua range de IPs, o bloqueio falhará. Para efetivar o bloqueio na solução OpçãoLinux PDC, acesse as regras do firewall (opl &gt; Firewall &gt; Editar Regras de Firewall) e altere a linha:</p>
<p>HTTPS/ACCEPT     loc     net<br />
para:</p>
<p>HTTPS/ACCEPT     loc     net:!65.49.2.0/24<br />
Problema resolvido? Ainda não, caso não consiga acesso aos IPs da rede 65.49.2.0/24, o UltraSurf 9.6 tentará acessar os servidores remotos da mesma maneira que fazia nas versões anteriores, só que dessa vez não abrirá diversas conexões HTTPS, fará apenas uma única conexão. Para fazer com que o script stopUltraSurf.sh consiga detectar essa conexão, edite o arquivo /usr/local/bin/stopUltraSurf e altere a variável limitServersHttps=8 para limitServersHttps=1, ou baixe a nova versão do script stopUltraSurf.sh (veja como mais adiante).</p>
<p>Pronto, com o bloqueio da rede 65.49.2.0/24 no firewall e com esse ajuste na variável limitServersHttps, o script stopUltraSurf.sh deverá voltar a funcionar. Bem, pelo menos em nossos testes voltou&#8230;</p>
<p>Prefira utilizar a nova versão do script stopUltraSurf.sh, pois, além de estar mais rápido devido a otimizações feitas no código, será informado também qual nome do servidor que provocou o bloqueio da estação e a data e hora do bloqueio em opl &gt; Firewall &gt; Configurações Avançadas&#8230; &gt; BlackList.</p>
<p>Caso esteja utilizando a versão mais recente da solução OpçãoLinux PDC, que já vem com o script stopUltraSurf.sh nativamente, atualize para a versão mais recente do script através dos comandos abaixo:</p>
<p># wget <a href="http://www.opcaolinux.com.br/download/scripts/stopUltraSurf.sh.gz">http://www.opcaolinux.com.br/download/scripts/stopUltraSurf.sh.gz</a><br />
# gunzip stopUltraSurf.sh.gz<br />
# cat stopUltraSurf.sh &gt; /usr/local/bin/stopUltraSurf<br />
# rm stopUltraSurf.sh</p>
<p>Fonte: <a href="http://www.opcaolinux.com.br/gnulinux/tutoriais/27-seguranca/126-ultrasurf-96-como-bloquear.html">http://www.opcaolinux.com.br/gnulinux/tutoriais/27-seguranca/126-ultrasurf-96-como-bloquear.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/ultrasurf-9-6-como-bloquear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adicionando rotas estáticas permanentes</title>
		<link>http://www.luizoliveira.org/linux/adicionando-rotas-estaticas-permanentes/</link>
		<comments>http://www.luizoliveira.org/linux/adicionando-rotas-estaticas-permanentes/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 13:53:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=463</guid>
		<description><![CDATA[Roteadores ou equipamentos que interligam duas ou mais redes são chamados de Gateways. A necessidade de configurarmos rotas estáticas surge à medida que possuímos mais de um gateway na rede, sendo assim, configuramos as máquinas da rede 1, por exemplo, de forma que: quando quiser acessar a rede 2 saia pelo gateway A e quando for acessar as redes 3,4,5... saia pelo gateway B.]]></description>
			<content:encoded><![CDATA[<p>Roteadores ou equipamentos que interligam duas ou mais redes são chamados de Gateways. A necessidade de configurarmos rotas estáticas surge à medida que possuímos mais de um gateway na rede, sendo assim, configuramos as máquinas da rede 1, por exemplo, de forma que: quando quiser acessar a rede 2 saia pelo gateway A e quando for acessar as redes 3,4,5&#8230; saia pelo gateway B.</p>
<p>Traduzindo isso para o TCP/IP ficaria:</p>
<p>Suponha que</p>
<p>  rede 1 = 192.168.1.0 / 255.255.255.0<br />
  rede 2 = 192.168.0.0 / 255.255.0.0<br />
  rede 3 = 10.100.1.0 / 255.255.255.0<br />
  rede 4 = 10.100.2.0 / 255.255.255.0<br />
  rede 5 = 10.100.3.0 / 255.255.255.0<br />
  &#8230;.<br />
  ubuntu#&gt; route add -net 192.168.0.0/16 gw 192.168.10.1<br />
  ubuntu#&gt; route add -net 10.100.0.0/16 gw 192.168.10.10</p>
<p>Com isso a tabela de roteamento da máquina que estamos configurando ficaria assim:</p>
<p>  ubuntu#&gt; route<br />
  Tabela de Roteamento IP do Kernel<br />
  Destino         Roteador        MáscaraGen.    Opções Métrica Ref   Uso Iface<br />
  192.168.1.0     *               255.255.255.0   U     0      0        0 eth0<br />
  192.168.0.0     192.168.10.1    255.255.0.0     UG    0      0        0 eth0<br />
  10.100.0.0      192.168.10.10   255.255.0.0     UG    0      0        0 eth0<br />
Note que a primeira linha foi adicionada automaticamente quando configuramos o endereço IP da própria máquina.</p>
<p>Uma maneira de melhorarmos isso é trabalhando com default gateway, ou seja, ao adicionarmos um gateway default, ele será adicionado na última linha da tabela de roteamento, de forma que todo IP com destino a uma rede que não se encaixa nas definições iniciais da tabela de roteamento serão mandadas para o default gateway (que por isso está na última linha).</p>
<p>Mas o escopo dessa dica é como transformar as rotas estáticas, que até aqui foram adicionadas manualmente, em configurações adicionadas automaticamente sempre que ligamos a máquina.</p>
<p>Já vi várias formas de adicionarmos estas rotas, desde comandos adicionados no script de inicialização do usuário, o /etc/init.d/rc.local até scripts executados ao iniciar o ambiente gráfico (arghhhh!!!), porém o mais adequado é utilizarmos os recursos que o sistema oferece para isso que são:</p>
<p>No Ubuntu (debian em geral): basta adicionarmos no arquivo /etc/network/interfaces as seguintes linhas:</p>
<p>  post-up route add -net 192.168.0.0/16 gw 192.168.10.1<br />
  post-up route add -net 10.100.0.0/16 gw 192.168.10.10</p>
<p>Já em sistemas como o RedHat devemos criar o arquivo /etc/sysconfig/network-scripts/route-eth0 contendo:</p>
<p>  GATEWAY0=192.168.10.1<br />
  NETMASK0=255.255.0.0<br />
  ADDRESS0=192.168.0.0<br />
 <br />
  GATEWAY1=10.100.0.0<br />
  NETMASK1=255.255.0.0<br />
  ADDRESS1=192.168.10.10</p>
<p>Sendo assim toda vez que o serviço de rede subir estas rotas estáticas serão adicionadas automaticamente na tabela de roteamento de sua máquina.</p>
<p>Fonte: <a href="http://www.dicas-l.com.br/dicas-l/20061010.php">http://www.dicas-l.com.br/dicas-l/20061010.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/adicionando-rotas-estaticas-permanentes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atualizando o sitema com o Apt-get pelo shell.</title>
		<link>http://www.luizoliveira.org/linux/atualizando-o-sitema-com-o-apt-get-pelo-shell/</link>
		<comments>http://www.luizoliveira.org/linux/atualizando-o-sitema-com-o-apt-get-pelo-shell/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 19:11:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Instalação]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=460</guid>
		<description><![CDATA[Os comandos para se atualizar um pacote ou o próprio sistema com esta revolucionária ferramenta criada pela distribuição Debian em seu terminal, que baixa e resolve as dependências são:
# apt-get [opções] comando
# apt-get [opções] install pacote [pacote ...]
A linha de comando pode ser uma variação dos tipos básicos, descritos a seguir:
apt-get update
Atualiza o banco de [...]]]></description>
			<content:encoded><![CDATA[<p>Os comandos para se atualizar um pacote ou o próprio sistema com esta revolucionária ferramenta criada pela distribuição Debian em seu terminal, que baixa e resolve as dependências são:</p>
<p># apt-get [opções] comando</p>
<p># apt-get [opções] install pacote [pacote ...]</p>
<p>A linha de comando pode ser uma variação dos tipos básicos, descritos a seguir:</p>
<p>apt-get update</p>
<p>Atualiza o banco de dados local do apt-get com os arquivos pkglist do servidor.</p>
<p>apt-get check</p>
<p>Verifica a integridade do seu sistema. Execute este comando quando tiver dúvidas quanto à integridade dos pacotes do seu sistema. É recomendável executá-lo antes de executar uma atualização de distribuição.</p>
<p>apt-get install algum-pacote</p>
<p>Instala algum pacote novo, solucionando e carregando automaticamente os pacotes dos quais o aplicativo a ser instalado depende. Caso o pacote algum-pacote já esteja instalado, o apt-get tentará atualizá-lo. Feito isto o próprio apt-get instala o pacote.</p>
<p>apt-get source algum-pacote</p>
<p>Faz o download dos fontes de um pacote (SRPM). Note que é necessário que haja uma linha com o TIPO rpm-src no arquivo sources.list para que este comando execute.</p>
<p>apt-get upgrade</p>
<p>Procura por pacotes desatualizados no sistema e os atualiza automaticamente. Atualizará todos os pacotes antigos no sistema. Para atualizar um pacote e suas dependências utilize o comando:</p>
<p>apt-get install pacote-a-ser-instalado<br />
Procura nos servidores ftp pelo pacote, caso ele encontre esse pacote ele baixara ele juntamente com suas dependências.</p>
<p>apt-get dist-upgrade</p>
<p>Semelhante ao apt-get upgrade, mas instala todos os pacotes básicos e tenta atualizar tudo, instalando novos pacotes caso seja necessário. É uma maneira mais fácil de fazer uma atualização de sua distribuição.</p>
<p>apt-get remove algum-pacote</p>
<p>Remove o pacote algum-pacote e todos os demais pacotes que dele dependam.</p>
<p>apt-get clean</p>
<p>Remove os arquivos encontrados no diretório cache, liberando um pouco de espaço no seu disco de sistema. É uma maneira automática de apagar os arquivos que já foram instalados e que não são mais necessários ao sistema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/atualizando-o-sitema-com-o-apt-get-pelo-shell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verificando logs do Squid em tempo real</title>
		<link>http://www.luizoliveira.org/linux/verificando-logs-do-squid-em-tempo-real/</link>
		<comments>http://www.luizoliveira.org/linux/verificando-logs-do-squid-em-tempo-real/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 18:56:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=456</guid>
		<description><![CDATA[Com o Squid instalado e funcionando é possível verificar o que as pessoas estão vendo na internet em tempo real. Você pode usar comandos mesclados por exemplo:
# tail -f /var/log/squid/access.log &#124; grep 10.0.0.230
* o comando tail lista o conteúdo de um arquivo;
* o parâmetro -f fica com o arquivo aberto mostrando tudo que for adicionado [...]]]></description>
			<content:encoded><![CDATA[<p>Com o Squid instalado e funcionando é possível verificar o que as pessoas estão vendo na internet em tempo real. Você pode usar comandos mesclados por exemplo:</p>
<p># tail -f /var/log/squid/access.log | grep 10.0.0.230</p>
<p>* o comando tail lista o conteúdo de um arquivo;<br />
* o parâmetro -f fica com o arquivo aberto mostrando tudo que for adicionado a ele, como o arquivo é de log, ele sempre terá novas informações adicionadas;<br />
* | grep é um filtro de pesquisa no resultado de um comando, ou seja, se você quiser ver quem está acessando o site www.luizoliveira.org, basta trocar o ip por luizoliveira, o comando ficaria assim:</p>
<p># tail -f /var/log/squid/access.log | grep luizoliveira</p>
<p>Obs.: Após o grep você pode colocar um IP, nome ou site que deseja monitorar, com isso no filtro aparecerá apenas o que deseja e não várias máquinas com todos os acessos a internet que tem no momento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/verificando-logs-do-squid-em-tempo-real/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como descompactar arquivos zip, rar, tar.gz, bz2, tar.bz2 pelo terminal</title>
		<link>http://www.luizoliveira.org/linux/como-descompactar-arquivos-zip-rar-tar-gz-bz2-tar-bz2-pelo-terminal/</link>
		<comments>http://www.luizoliveira.org/linux/como-descompactar-arquivos-zip-rar-tar-gz-bz2-tar-bz2-pelo-terminal/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 18:50:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=453</guid>
		<description><![CDATA[Para descompactar as extensões acima é muito fácil, basta entender o que cada letra representa na descompressão.]]></description>
			<content:encoded><![CDATA[<p>Para descompactar estes formatos de arquivos os comandos são simples:</p>
<p>zip:</p>
<p>gunzip nomedoarquivo.zip</p>
<p>rar:</p>
<p>unrar x nomedoarquivo.rar</p>
<p>tar:</p>
<p>tar -xvf nomedoarquivo.tar</p>
<p>tar.gz:</p>
<p>tar -vzxf nomedoarquivo.tar.gz</p>
<p>bz2:</p>
<p>bunzip nomedoarquivo.bz2</p>
<p>tar.bz2:</p>
<p>tar -jxvf nomedoarquivo.tar.bz2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/como-descompactar-arquivos-zip-rar-tar-gz-bz2-tar-bz2-pelo-terminal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando um repositório Debian na rede local</title>
		<link>http://www.luizoliveira.org/linux/criando-um-repositorio-debian-na-rede-local/</link>
		<comments>http://www.luizoliveira.org/linux/criando-um-repositorio-debian-na-rede-local/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 18:41:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=451</guid>
		<description><![CDATA[Imagine você precisando fazer uma nova instalação Debian ou atualizar a distribuição ou um pacote em questão. Você irá depender de seu link com a internet para poder utilizar um dos diversos mirrors públicos existentes para tal tarefa e isso poderá levar um certo tempinho para fazê-lo. Então por quê não criar um mirror local em sua rede? Veja aqui como fazer.]]></description>
			<content:encoded><![CDATA[<p>Instalação e configuração do servidor</p>
<p>Instale o pacote &#8220;debmirror&#8221; disponível em testing ou unstable:</p>
<p># apt-get install debmirror</p>
<p>Crie um usuário e um grupo que será dono do processo que iremos automatizar para o uso do debmirror:</p>
<p># groupadd mirror<br />
# useradd -g mirror -d /mirror -c &#8220;Debian Mirror&#8221; mirror</p>
<p>Crie os diretórios necessários para o repositório.</p>
<p># mkdir -p /mirror/debian # mkdir /mirror/non-US # chown -R mirror:mirror /mirror</p>
<p>Criando os scripts para a sincronização</p>
<p>Iremos criar agora os script para a sincronização dos repositórios:</p>
<p>Repositório US:</p>
<p># emacs /usr/local/bin/mirror1.sh</p>
<p>#!/bin/bash<br />
su mirror -c &#8220;debmirror /mirror/debian &#8211;method=http &#8211;progress &#8211;nosource &#8211;host=ftp.br.debian.org &#8211;root=/debian &#8211;dist=woody,sarge,sid &#8211;section=main,contrib,non-free &#8211;arch=i386 &#8211;cleanup &#8211;getcontents&#8221;</p>
<p>Repositório non-US:</p>
<p># emacs /usr/local/bin/mirror2.sh</p>
<p>#!/bin/bash<br />
su mirror -c &#8220;debmirror /mirror/non-US &#8211;method=http &#8211;progress &#8211;nosource &#8211;host=ftp.br.debian.org &#8211;root=/debian-non-US &#8211;dist=woody/non-US,sarge/non-US,sid/non-US &#8211;section=main,contrib,non-free &#8211;arch=i386 &#8211;cleanup ?getcontents&#8221;</p>
<p>Você pode alterar a opção &#8211;method por ftp, http ou rsync -e. Leia o manual do debmirror para maiores detalhes.</p>
<p># man debmirror</p>
<p>Permitindo a leitura escrita e execução somente para o usuário root:</p>
<p># chmod 700 /usr/local/bin/mirror*.sh</p>
<p>Repositório local, http e ftp na sua LAN<br />
Para uso local, em seu /etc/apt/sources.list coloque as linhas:</p>
<p>deb file:/mirror/debian sid main non-free contrib<br />
deb file:/mirror/non-US sid/non-US main contrib non-free</p>
<p>Você pode alterar a versão conforme a sua necessidade trocando onde esta sid por woody ou sarge. <img src='http://www.luizoliveira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Vamos agora configurar para que você possa ter o repositório disponível para outras máquinas.</p>
<p>Configurando o Apache:</p>
<p>Edite o arquivo de configuração /etc/apache/httpd.conf:</p>
<p># emacs /etc/apache/httpd.conf</p>
<p>Troque &#8220;&lt;Directory /var/www&gt;&#8221; por &#8220;&lt;Directory /mirror&gt;&#8221;.</p>
<p>Reinicie o Apache:</p>
<p># /etc/init.d/apache restart</p>
<p>Edite o arquivo /etc/apt/sources.list nos clientes para configurar o repositório no protocolo HTTP:</p>
<p># emacs /etc/apt/sources.list</p>
<p>deb http://(ip_ou_host_do_servidor)/debian/ sid main non-free contrib<br />
deb http://(ip_ou_host_do_servidor)/non_US/ sid/non-US main contrib non-free</p>
<p>Configurando o proftpd:</p>
<p>Para ter o repositório disponível por ftp, edite o arquivo de configuração do proftpd:</p>
<p># emacs /etc/proftpd.conf</p>
<p>Altere as TAGS da configuração compreendidas entre &lt;Anonymous &#8230;&gt; &lt;/Anonymous&gt; por:</p>
<p>&lt;Anonymous ~mirror&gt;<br />
User                     ftp<br />
Group                    nogroup<br />
UserAlias                anonymous ftp<br />
RequireValidSh           off<br />
# Limit the maximum number of anonymous logins<br />
MaxClients               20<br />
DisplayLogin             welcome.msg<br />
DisplayFirstChdir        .message<br />
# Limit WRITE everywhere in the anonymous chroot<br />
&lt;Directory *&gt;<br />
&lt;Limit WRITE&gt;<br />
DenyAll<br />
&lt;/Limit&gt;<br />
&lt;/Directory&gt;<br />
&lt;/Anonymous&gt;</p>
<p>Edite o arquivo /etc/apt/sources.list nos clientes para configurar o repositório no protocolo FTP:</p>
<p>deb ftp://(ip_ou_host_do_servidor)/debian/ sid main non-free contrib<br />
deb ftp://(ip_ou_host_do_servidor)/non_US/ sid/non-US main contrib non-free</p>
<p>Automatizando o processo<br />
Com o crontab podemos se aproveitar das horas de menor uso da rede para fazer a sincronização:</p>
<p># crontab -e</p>
<p>insira a linha:</p>
<p>0 22 * * * /usr/local/mirror1.sh 2&gt;&amp;1 &gt; /dev/null;/usr/local/mirror2.sh 2&gt;&amp;1 &gt; /dev/null</p>
<p>Salve e feche.</p>
<p># /etc/init.d/cron restart</p>
<p>No crontab configurei para que todos os dias a partir das 22:00hs o servidor atualize o repositório.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/criando-um-repositorio-debian-na-rede-local/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando e configurando um servidor proxy com o Ubuntu Server – Em menos de duas horas!</title>
		<link>http://www.luizoliveira.org/linux/instalando-e-configurando-um-servidor-proxy-com-o-ubuntu-server-%e2%80%93-em-menos-de-duas-horas/</link>
		<comments>http://www.luizoliveira.org/linux/instalando-e-configurando-um-servidor-proxy-com-o-ubuntu-server-%e2%80%93-em-menos-de-duas-horas/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 19:59:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/linux/instalando-e-configurando-um-servidor-proxy-com-o-ubuntu-server-%e2%80%93-em-menos-de-duas-horas/</guid>
		<description><![CDATA[Passo 1 – Preparando o Computador
Primeiramente, você deve começar pela parte que chuta: examine o hardware do seu novo servidor, e dimensione-o para suas necessidades. Ou seja, não configure um P100 com 16MB de RAM para servir uma empresa com 200 funcionários, nem compre um P4 de última geração e 1GB RAM para servir aquele [...]]]></description>
			<content:encoded><![CDATA[<p>Passo 1 – Preparando o Computador</p>
<p>Primeiramente, você deve começar pela parte que chuta: examine o hardware do seu novo servidor, e dimensione-o para suas necessidades. Ou seja, não configure um P100 com 16MB de RAM para servir uma empresa com 200 funcionários, nem compre um P4 de última geração e 1GB RAM para servir aquele escritório com 6 funcionários.</p>
<p>Leve em conta também que serão instalados vários serviços adicionais (e opcionais) além do squid que tomarão conta dos recursos da máquina. Memória é essencial aqui. No meu caso, peguei um Sempron 2600+ com 512MB num PCChips A31g que tinha acabado de chegar. Isso, para distribuir internet para 50 computadores, dá e sobra, mas a idéia é justamente essa, ter uma boa folga no uso. Lembre-se também que serão necessárias duas placas de rede. Pessoalmente, não recomendo o uso da placa onboard, mas fica ao critério de vocês.</p>
<p>Agora, antes de começar a instalar o sistema, entre no SETUP e desabilite TUDO aquilo que não será usado: som onboard, usb, modem, portas seriais e paralelas, e o que mais for possível. Com isso, conseguimos um pouco mais de segurança (através de qualquer porta usb ou equivalente), confiabilidade (com menos recursos habilitados, menor será a chance de uma falha de hardware, e menor será o seu trabalho para identificar uma possível falha futura) e velocidade (menos coisas para levantar no boot, menos serviços rodando desnecessariamente). Configure o boot pelo CD, coloque uma senha para o setup e saia, para começarmos a instalação de verdade.</p>
<p>Passo 2 – Instalando o sistema</p>
<p>Nenhum segredo aqui, se você já fez isso antes: configure o idioma, o teclado, crie um usuário, defina uma senha, formate as partições necessárias (ou deixe o Ubuntu cuidar disso), e aguarde a instalação. Dois pontos importantes:</p>
<p>1 – Será útil já ter uma conexão com a internet durante a instalação (diretamente ligada à máquina ou através de um outro proxy), pois o Ubuntu já fará uns ‘apt-get update’ durante a instalação.<br />
2 – Em dado momento, o instalador perguntará se você deseja instalar dois perfis pré-configurados: DNS Server e LAMP Server. A instalação fica a critério de vocês, já que boa parte dos pacotes desses perfis serão instalados mais pra frente. No meu caso, não instalei nada por enquanto.</p>
<p>Ao término, o sistema irá reiniciar o sistema.</p>
<p>Passo 3 – Configurações iniciais</p>
<p>Primeiramente, vamos configurar a rede. No meu caso, como eu já tenho um servidor DHCP em outro servidor, o Ubuntu já configurou automaticamente a primeira placa de rede. Mas o que queremos é um endereço estático, então vamos editar o arquivo /etc/network/interfaces</p>
<p>sudo vi /etc/network/interfaces</p>
<p>Seu arquivo deve estar qualquer coisa parecida com isso:</p>
<p># This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
#The primary network interface<br />
auto eth0<br />
iface eth0 inet dhcp</p>
<p>Altere as informações para algo parecido com:</p>
<p>auto lo eth0 eth1<br />
iface lo inet loopback<br />
#The primary network interface<br />
iface eth0 inet static<br />
address 192.168.1.254<br />
netmask 255.255.255.0<br />
network 192.168.1.0<br />
broadcast 192.168.1.255<br />
#segunda interface. Outras podem ser adicionadas segundo a mesma lógica<br />
iface eth1 inet static<br />
address xxx.xxx.xxx.xxx<br />
netmask xxx.xxx.xxx.xxx<br />
network xxx.xxx.xxx.xxx<br />
broadcast xxx.xxx.xxx.xxx<br />
gateway xxx.xxx.xxx.xxx</p>
<p>Nesse caso, considerei que a primeira placa de rede ficará ligada à rede local, e a segunda é que ficará ligada à internet. Nesse caso, tudo dependerá de como é a sua conexão. Para Speedy Businnes, é bem fácil, a Telefônica já te passa todas as informações logo no começo. Outros serviços não devem ser diferente.</p>
<p>Altere também o /etc/resolv.conf , inserindo os endereços DNS que o provedor utiliza:<br />
sudo vi /etc/resolv.conf</p>
<p>nameserver xxx.xxx.xxx.xxx<br />
nameserver xxx.xxx.xxx.xxx<br />
nameserver xxx.xxx.xxx.xxx</p>
<p>Novamente, os dados deverão ser obtidos com seu provedor. A partir daqui, o computador já deverá estar conectado à internet. Tente um ping <a href="http://www.ubuntu.org/">www.ubuntu.org</a> e veja se está tudo OK. Mas ainda não está pronto, precisamos instalar e configurar os pacotes necessários para que o proxy funcione e os outros usuários também acessem a internet.</p>
<p>É agora que a parte legal começa. Você com certeza já deve ter percebido isso, mas o CD do Ubuntu Server já traz vários pacotes de serviços prontos para o uso. Se você quiser, pode usar esse repositório, o que diminuiria e muito o tempo de download pelo APT-GET. No meu caso, como eu queria me livrar do drive de CD, copiei os pacotes para minha máquina, com os comandos abaixo:</p>
<p>sudo mount /media/cdrom/<br />
sudo cp -r /media/cdrom/dists /edgy<br />
sudo cp -r /media/cdrom/pool /edgy<br />
Logo depois, editem o arquivo de repositórios do apt, com um sudo vi /etc/sources.list</p>
<p>Comentem a linha</p>
<p>deb cdrom:(&#8230;)</p>
<p>Colocando um # na frente. Adicionem as linhas:</p>
<p>deb file:/edgy edgy main<br />
deb file:/edgy edgy restricted</p>
<p>Aproveitem e descomentem as linhas dos repositórios ‘Universe‘, retirando o # da frente delas. Salvem, e executem o apt:</p>
<p>sudo apt-get update<br />
sudo apt-get upgrade</p>
<p>Se tudo der certo, vocês terão o sistema pronto para a instalação dos pacotes. Percebam que esse passo é totalmente opcional. No meu caso, eu pude liberar o CD do Ubuntu (assim como o drive) e acelerar bastante as instalações. Se você quiser continuar com o CD, ou se todas as versões do mesmo já estiverem obsoletas, pule essa parte, apenas configurando para aceitar o repositório Universe.</p>
<p>Passo 4 – Instalando e Configurando o ‘Pacote básico do Administrador Feliz‘</p>
<p>Agora, vamos tratar de instalar e configurar alguns programas que irão nos ajudar a administrar o sistema: a trinca MC (Midnight Commander), OpenSSH e Webmin. Muitos experts que estejam lendo isso provavelmente irão querer me bater, mas considero o MC um ótimo navegador de arquivos/editor de textos, ainda mais quando estou com pressa. Se você prefere o VI, simplesmente não instale o MC.</p>
<p>sudo apt-get install mc openssh-server libmd5-perl libnet-ssleay-perl libauthen-pam-perl libio-pty-perl<br />
sudo wget <a href="http://prdownloads.sourceforge.net/webadmin/webmin_1.320_all.deb">http://prdownloads.sourceforge.net/webadmin/webmin_1.320_all.deb</a><br />
sudo dpkg -i webmin_1.320_all.deb<br />
Com isso, já podemos acessar o servidor via SSH e via Browser. Mas… já que queremos um mínimo de segurança, porque não alterarmos algumas coisinhas?</p>
<p>sudo mcedit /etc/ssh/sshd_config</p>
<p>Altere as seguintes opções:</p>
<p>Port 2756 #Altera a porta padrão do SSH, diminuindo a possibilidade de um port scan<br />
ListenAddress 192.168.1.254 # Somente poderá ser acessado por esse endereço de rede<br />
PermitRootLogin no # Precisa explicar?<br />
AllowUsers &lt;seu usuário padrão no Ubuntu&gt; #somente o usuário criado na instalação poderá se logar.</p>
<p>Assim já temos algo mais seguro. O mesmo pode ser feito com o Webmin, alterando o /etc/webmin/miniserv.conf. Nesse caso, alterar a opção “port” para 4044 ou qualquer outro número já é uma boa.</p>
<p>Agora, já podemos mexer no servidor pela rede, e sem muito medo de uma invasão. Que tal pararmos de enrolar e instalar logo o bendito do proxy, hein?</p>
<p>Passo 5 – Instalando o Squid, o Sarg e o Dansguardian</p>
<p>Apenas para entender: o Squid será o responsável por compartilhar o acesso à internet com todas as máquinas, o Dansguardian irá habilitar alguns filtros de acesso, e o Sarg será o ‘dedo-duro’ do sistema, gerando arquivos HTML com os ‘logs’ de navegação do Squid.</p>
<p>E aqui começa uma parte da configuração onde ‘cada caso é um caso’. O Squid permite um sem fim de combinações de restrições, permitindo que eu simplesmente compartilhe a internet, ou que eu compartilhe apenas para alguns IPs, ou que eu exija uma autenticação para o uso, ou que eu bloqueie algumas páginas de acordo com o horário.</p>
<p>A configuração das ACLs (regras que controlam o acesso) dependerá exclusivamente de como a empresa vê o acesso à internet pelos funcionários, e do quão odiado você quer ser pelos seus colegas de trabalho que não podem mais acessar o orkut.</p>
<p>Se a empresa para o qual você está instalando o proxy não se importa com restrições de acesso, a configuração padrão do squid já está perfeita. Caso contrário, sugiro que você leia a documentação do mesmo e encontre quais regras se adaptam melhor à sua situação. O exemplo aqui é bem restrito, mas já montei um servidor para um escritório de contabilidade onde TUDO era bloqueado, menos uma meia dúzia de páginas….</p>
<p>Vamos às configurações: Comece instalando os pacotes:</p>
<p>sudo apt-get install squid squid-common bind sarg dansguardian</p>
<p>E depois dê um</p>
<p>sudo mcedit /etc/squid/squid.conf</p>
<p>Comece alterando as primeiras linhas, antes das ACL’s:<br />
#Inicio<br />
http_port 192.168.1.254:3129 transparent<br />
visible_hostname proxyspeedy2<br />
hierarchy_stoplist cgi-bin ?<br />
acl QUERY urlpath_regex cgi-bin \?<br />
cache_mem 48 MB<br />
#Opções para otimização do sistema<br />
maximum_object_size 1024 MB<br />
minimum_object_size 0 KB<br />
cache_swap_low 50<br />
cache_swap_high 90<br />
cache_access_log /var/log/squid/access.log</p>
<p>Vamos às explicações, pra quem não conhece o squid:</p>
<p>http_port – qual porta o squid estará escutando. Ao colocar o endereço IP, eu impeço que alguém tente acessar pelas outras interfaces. O ‘transparent’ será explicado em breve.<br />
visible_hostname – Hostname do servidor<br />
cache_mem – Quantidade de memória RAM que o squid estará utilizando para guardar as páginas acessadas, aumentando a velocidade de acesso posterior.<br />
maximum_object_size e minimum_object_size – Qual o tamanho máximo e mínimo dos arquivos que ficarão armazenados no cache em disco.<br />
cache_swap_low e cache_swap_high – Com o cache_swap_high você define qual a porcentagem máxima que o cache deverá atingir para começar a apagar arquivos antigos. O cache_swap_low define qual a porcentagem deverá ser atingida durante a remoção desses arquivos.</p>
<p>Caso você queira que os usuários se autentiquem para usar a internet, insira esses dados no squid.conf:</p>
<p>auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd<br />
auth_param basic children 5<br />
auth_param basic realm</p>
<p>Agora, as ACL’s. Novamente, cada caso é um caso, e vou colocar as minhas aqui apenas para exemplo. Se você quiser entender mais sobre ACL’s do Squid e como usá-las, recomendo uma leitura desse texto .</p>
<p># ACLs normais<br />
acl all src 192.168.1.0/255.255.255.0<br />
delay_pools 1<br />
delay_class 1 2<br />
delay_parameters 1 114688/114688 32768/32768<br />
delay_access 1 allow all<br />
acl manager proto cache_object<br />
acl localhost src 127.0.0.1/255.255.255.255<br />
acl SSL_ports port 443 563<br />
acl SSL_ports port 873<br />
acl Safe_ports port 80<br />
acl Safe_ports port 21<br />
acl Safe_ports port 443 563<br />
acl Safe_ports port 70<br />
acl Safe_ports port 210<br />
acl Safe_ports port 1025-65535<br />
acl Safe_ports port 280<br />
acl Safe_ports port 488<br />
acl Safe_ports port 591<br />
acl Safe_ports port 777<br />
acl Safe_ports port 631<br />
acl Safe_ports port 873<br />
acl Safe_ports port 901<br />
acl purge method PURGE<br />
acl CONNECT method CONNECT<br />
no_cache deny QUERY<br />
# ACLs paulo<br />
acl Diretoria proxy_auth &#8220;/etc/squid/users/diretoria.acl&#8221;<br />
acl administracao proxy_auth &#8220;/etc/squid/users/administracao.acl&#8221;<br />
acl producao proxy_auth &#8220;/etc/squid/users/producao.acl&#8221;<br />
acl castigo proxy_auth &#8220;/etc/squid/users/castigo.acl&#8221;<br />
acl PornoURLs url_regex &#8220;/etc/squid/users/porno.acl&#8221;<br />
acl ProducaoURLs url_regex &#8220;/etc/squid/users/producaoURLs.acl&#8221;<br />
acl AdministracaoURLs url_regex &#8220;/etc/squid/users/administracaoURLs.acl&#8221;<br />
acl almoco time MTWHF 12:00-14:00<br />
acl executaveis url_regex -i &#8220;/etc/squid/users/executaveis.acl&#8221;<br />
acl castigo_ip src &#8220;/etc/squid/users/castigo_ip.acl&#8221;<br />
#Aplicação das ACL&#8217;s<br />
http_access allow manager localhost<br />
http_access deny manager<br />
http_access deny !Safe_ports<br />
http_access deny CONNECT !SSL_ports<br />
http_access allow purge localhost<br />
http_access deny purge<br />
http_access allow localhost<br />
http_access deny administracao PornoURLs<br />
http_access deny producao PornoURLs<br />
http_access deny castigo PornoURLs<br />
http_access deny Diretoria PornoURLs<br />
http_access deny administracao AdministracaoURLs !almoco<br />
http_access deny producao ProducaoURLs !almoco<br />
http_access deny castigo AdministracaoURLs<br />
http_access deny administracao executaveis<br />
http_access deny producao executaveis<br />
http_access allow Diretoria<br />
http_access allow producao<br />
http_access allow administracao<br />
http_access allow castigo<br />
http_access deny all<br />
http_reply_access allow all</p>
<p>Basicamente, existem três níveis de acesso diferentes, com várias restrições baseado em cada nível, mas com a possibilidade de liberar alguns sites no horário de almoço, a menos que você esteja na ACL ‘castigo’ (sacou? hein?). Pode parecer castrante, mas são normas da empresa, não me odeiem por configurar isso.</p>
<p>Salve o arquivo e saia. Agora que já temos o básico configurado, vamos configurar o firewall para compartilhar conexões. No terminal, digite os comandos abaixo:</p>
<p>sudo modprobe iptable_nat<br />
sudo modprobe ip_nat_ftp<br />
sudo echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE<br />
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-port 3128</p>
<p>Na verdade, apenas os quatro primeiros comandos são necessários. Nesse caso, substitua o ‘eth1′ pela interface que está conectada à internet. O último comando gera o que chamamos de ‘proxy transparente’. Com ela habilitada, qualquer um que queira acessar a internet deverá obrigatoriamente passar pelo Squid (vocês lembram daquele ‘transparent’ logo na primeira linha do squid.conf, né?).</p>
<p>Uma ótima idéia é inserir esses comandos de firewall no arquivo /etc/init.d/boomisc.sh. Assim, caso o computador seja reiniciado, as regras passarão a funcionar automaticamente….</p>
<p>Aqui, já podemos testar o Squid. Primeiro, dê o comando:</p>
<p>sudo /etc/init.d/squid restart</p>
<p>E verifique se não apareceu nenhum erro. Uma lida nos arquivos em /var/log pode ser útil, caso apareça algo estranho. Agora, numa máquina qualquer, abre o seu browser e configure o proxy. No Firefox2, vá em Ferramentas &gt; Opções &gt; Avançado &gt; Rede &gt; Configurações e insira o endereço IP do servidor e a porta do squid. Tente acessar alguma página. Se der tudo certo, parabéns. O grosso do trabalho já foi, agora é cuidar da segurança.</p>
<p>Nota: Percebam que até o momento não é possível usar o Squid com transparência E autenticação ao mesmo tempo. Ao usar os dois você no máximo não terá acesso se não configurar o proxy nas máquinas locais. O que já ajuda em alguma coisas….</p>
<p>Nota2: Para criar um usuário no Squid, você pode usar o comando</p>
<p>sudo htpasswd /etc/squid/passwd &lt;usuário&gt;</p>
<p>E depois cadastrá-lo em uma das regras do squid. OU você pode usar o Webmin, o que eu considero um pouco mais prático…</p>
<p>O Sarg não exige muita configuração, podendo ser executado via Webmin mesmo, ou através do crontab, caso você queira automatizar a tarefa. Uma lida no /etc/squid/sarg.conf pode dar boas dicas do tipo de configuração que o Sarg permite. Para acessar os relatórios, acesse <a href="http://192.168.1.254/squid-reports/">http://192.168.1.254/squid-reports/</a> que eles deverão estar lá.</p>
<p>Agora, vamos ao Danguardian. Antes, uma observação importante: o DanGuardian é um super-filtro de conteúdo, conseguindo barrar vários tipos de conteúdos diferentes, sejam sites, frase, ou até mesmo tipos de arquivos. A configuração padrão é bem restrita, e você pode penar um pouco até ter uma configuração que lhe permita acessar tudo o que você precisa, e bloqueie o resto. Sempre que possível, utilize os arquivos de exceção para liberar apenas o necessário (exemplo, incluir o endereço da Caixa Econômica Federal como exceção, ao invés de liberar o acesso a arquivos .zip).</p>
<p>Outro ponto é que você pode precisar configurar bastante o DG no quesito performance. Ele utiliza o Clamav para fazer uma varredura antí-virus no que passa pelo proxy, o que pode ser bem ruim se você está usando um Pentium 100 como proxy para 100 máquinas… O Dansguardian é recomendado para ambientes corporativos preocupados com a segurança, e PRINCIPALMENTE em escolas ou universidades.</p>
<p>Comece com um:</p>
<p>sudo mcedit /etc/dansguardian/dansguardian.conf</p>
<p>Para uma configuração simples, comente a linha ‘UNCONFIGURED’ e altere as linhas:</p>
<p>language = ‘portuguese’<br />
loglocation = ‘/var/log/dansguardian/access.log’<br />
filterport = 3128<br />
proxyip = 127.0.0.1<br />
proxyport = 3129</p>
<p>Nota: muitos devem estar achando estranho eu ter configurado o Dansguardian na porta padrão do Squid. O motivo é simples: preguiça. Assim eu não preciso reconfigurar todos os outros computadores… </p>
<p>No ‘/etc/dansguardian/dansguardianf1.conf‘ verifique a opção ‘naughtynesslimit. Ele é o ‘medidor de putaria’ do Dansguardian. Quanto menor esse valor, maior será a possibilidade da página ser bloqueada. Para adultos, um bom valor é 200. Para crianças, pense em valores por volta de 40…</p>
<p>Agora, precisamos baixar as definições em português. Execute os comandos:</p>
<p>sudo wget <a href="http://dansguardian.org/downloads/grosvenor/languages.tar.gz">http://dansguardian.org/downloads/grosvenor/languages.tar.gz</a><br />
sudo tar -zxvf languages.tar.gz<br />
sudo cp -r languages/* /etc/dansguardian/languages/portuguese/</p>
<p>Agora, insira no arquivo ‘/etc/dansguardian/weightedphraselist’ as linhas:</p>
<p>.Include&lt;/etc/dansguardian/languages/portuguese/weightedphraselist.pornsites.portuguese&gt;<br />
.Include&lt;/etc/dansguardian/languages/portuguese/weightedphraselist.pornwords.portuguese&gt;</p>
<p>E, no ‘/etc/dansguardian/bannedphraselist’</p>
<p>.Include&lt;/etc/dansguardian/languages/portuguese/bannedphraselist.portuguese&gt;</p>
<p>Salve tudo, e reinicie o Dans:</p>
<p>sudo /etc/init.d/dansguardian restart</p>
<p>Se tudo correu bem, você provavelmente é o cara mais odiado pelos funcionários que enrolam no serviço…..</p>
<p>Há um extra para acelerar um pouco a navegação, que é instalar um servidor DNS na máquina. Com isso, as resoluções de nome ficarão mais rápidas, pois haverá um cache de endereços na sua máquina. Até onde eu sei, não é necessário alterar algum arquivo, apenas instalar o bind</p>
<p>Passo 6 – Incrementando o Firewall e instalando o Snort e o Guardian</p>
<p>A parfir daqui, tudo o que será feito é instalar sistemas que bloqueiem ataques externos, ou evitem problemas que um vírus possa causar internamente. As regras de Firewall servem para fechar portas e evitar ataques. O Snort é uma ferramenta de detecção de intrusos, ótima para ficar vigiando a sua rede e verificando se há algo errado. O Guardian trabalha junto com o Snort, criando regras de firewall de acordo com os alertas do Snort.</p>
<p>Para o firewall, vamos utilizar o kurumin-firewall mesmo (disponível no GuiadoHardware), mas com algumas modificações. Novamente, as portas que você irá abrir ou fechar dependerão exclusivamente das necessidades da empresa ou local onde você instalando o servidor.</p>
<p>sudo mcedit /etc/init.d/kurumin-firewall</p>
<p>E edite o arquivo:</p>
<p>#!/bin/bash</p>
<p># Script de configuração do iptables gerado pelo configurador do Kurumin<br />
# Este script pode ser usado em outras distribuições Linux que utilizam o Kernel 2.4 em diante<br />
# Por Carlos E. Morimoto</p>
<p>firewall_start(){</p>
<p># Abre para uma faixa de endereços da rede local<br />
iptables -A INPUT -p tcp &#8211;syn -s 192.168.1.0/255.255.255.0 -j ACCEPT</p>
<p># Abre uma porta (inclusive para a Internet)<br />
iptables -A INPUT -p tcp &#8211;destination-port 21 -j ACCEPT<br />
iptables -A INPUT -p tcp &#8211;destination-port 110 -j ACCEPT<br />
iptables -A INPUT -p tcp &#8211;destination-port 2535 -j DROP<br />
iptables -A INPUT -p tcp &#8211;destination-port 139 -j DROP<br />
iptables -A OUTPUT -p tcp &#8211;destination-port 139 -j DROP</p>
<p># Fechando as portas do SSH pra fora<br />
iptables -A INPUT -p tcp &#8211;dport 2756 -m iprange &#8211;src-range 192.168.1.0-192.168.1.255 -j ACCEPT<br />
iptables -A INPUT -p tcp &#8211;dport 2756 -j DENY<br />
# Ignora pings<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all</p>
<p># Protege contra synflood<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/tcp_syncookies</p>
<p># Desabilita o suporte a source routed packets<br />
# Esta recurso funciona como um NAT ao contrário, que em certas circunstancias pode permitir que alguem de fora envie pacotes para micros dentro da rede local.<br />
echo &#8220;0&#8243; &gt; /proc/sys/net/ipv4/conf/eth0/accept_source_route<br />
echo &#8220;0&#8243; &gt; /proc/sys/net/ipv4/conf/eth1/accept_source_route<br />
# Proteção contra ICMP Broadcasting<br />
echo &#8220;1&#8243; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts</p>
<p># Proteções diversas contra portscanners, ping of death, ataques DoS, etc.<br />
iptables -A FORWARD -p icmp &#8211;icmp-type echo-request -m limit &#8211;limit 1/s -j ACCEPT<br />
iptables -A FORWARD -p tcp -m limit &#8211;limit 1/s -j ACCEPT<br />
iptables -A FORWARD -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A FORWARD -p tcp &#8211;tcp-flags SYN,ACK,FIN,RST RST -m limit &#8211;limit 1/s -j ACCEPT<br />
iptables -A FORWARD &#8211;protocol tcp &#8211;tcp-flags ALL SYN,ACK -j DROP<br />
iptables -A FORWARD -m unclean -j DROP<br />
iptables -A INPUT -m state &#8211;state INVALID -j DROP<br />
iptables -N VALID_CHECK<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags ALL FIN,URG,PSH -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags ALL ALL -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags ALL FIN -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags SYN,RST SYN,RST -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags SYN,FIN SYN,FIN -j DROP<br />
iptables -A VALID_CHECK -p tcp &#8211;tcp-flags ALL NONE -j DROP</p>
<p># Abre para a interface de loopback.<br />
# Esta regra é essencial para o KDE e outros programas gráficos funcionarem adequadamente.<br />
iptables -A INPUT -p tcp &#8211;syn -s 127.0.0.1/255.0.0.0 -j ACCEPT<br />
iptables -A INPUT -i lo -j ACCEPT</p>
<p># Esta regra é o coração do firewall do Kurumin,<br />
# ela bloqueia qualquer conexão que não tenha sido permitida acima, justamente por isso ela é a última da cadeia.<br />
iptables -A INPUT -p tcp &#8211;syn -j DROP</p>
<p>}<br />
firewall_stop(){<br />
iptables -F<br />
iptables -X<br />
iptables -P INPUT ACCEPT<br />
iptables -P FORWARD ACCEPT<br />
iptables -P OUTPUT ACCEPT<br />
}<br />
case &#8220;$1&#8243; in<br />
&#8220;start&#8221;)<br />
firewall_start<br />
;;<br />
&#8220;stop&#8221;)<br />
firewall_stop<br />
echo &#8220;O kurumin-firewall está sendo desativado&#8221;<br />
sleep 2<br />
echo &#8220;ok.&#8221;<br />
;;<br />
&#8220;restart&#8221;)<br />
echo &#8220;O kurumin-firewall está sendo desativado&#8221;<br />
sleep 1<br />
echo &#8220;ok.&#8221;<br />
firewall_stop; firewall_start<br />
;;<br />
*)<br />
iptables -L -n<br />
esac</p>
<p>Salve, e configure para rodar no boot. Você pode testar as configurações do iptables dando um</p>
<p>sudo iptables -L</p>
<p>e verificando se ele lista todas as regras criadas.</p>
<p>Para o Snort e o Guardian, o procedimento é exatamente o encontrado na página do Ubuntu Brasil portanto eu não pretendo me repetir. Como dica adicional, insiram as linhas abaixo no bootmisc.sh, para que os serviços sempre rodem ao reinicar o servidor:</p>
<p>snort -c /etc/snort/snort.conf &amp;<br />
guardian.pl /etc/guandian.conf</p>
<p>Faça alguns testes finais, reinicie a máquina, e pronto. Você terá um servidor proxy leve, seguro, e que permite adicionar novos serviços (DHCP, SAMBA, Cups, LDAP, Postfix) facilmente. E tudo em menos de duas horas!</p>
<p>Nota final:<br />
- Caso algum passo descrito aqui não funcione, sempre veja as mensagens de erro e os arquivos de log. Boa parte das soluções podem ser encontradas vendo qual é exatamente o problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/instalando-e-configurando-um-servidor-proxy-com-o-ubuntu-server-%e2%80%93-em-menos-de-duas-horas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reparando partições NTFS com Linux</title>
		<link>http://www.luizoliveira.org/linux/reparando-particoes-ntfs-com-linux/</link>
		<comments>http://www.luizoliveira.org/linux/reparando-particoes-ntfs-com-linux/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 12:39:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=445</guid>
		<description><![CDATA[Sua partição NTFS está corrompida? Pode tentar recurara-la através do Linux]]></description>
			<content:encoded><![CDATA[<p>Para recuperar partições NTFS através do Linux, dê boot com um LiveCD do Linux. O Ubuntu muito fácil de ser utilizado.</p>
<p>Após o boot acesse o terminal  e digite:</p>
<p><em>fdisk -l  para saber qual é a partição NTFS.</em></p>
<p><em>Após saber qual é a partição NTFS basta executar  o seguinte comando:</em></p>
<p><em>sudo ntfsfix /dev/sda1 </em></p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/reparando-particoes-ntfs-com-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clonando HDs com o DD</title>
		<link>http://www.luizoliveira.org/linux/clonando-hds-com-o-dd/</link>
		<comments>http://www.luizoliveira.org/linux/clonando-hds-com-o-dd/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:21:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/linux/clonando-hds-com-o-dd/</guid>
		<description><![CDATA[vamos a clonagem, com o linux startado, abra o shell e faça isso como root. No shell digite: 
dd if=/dev/hda of=/dev/hdb 
Em seguida de enter e aguarde&#8230;
O processo é demorado, só para se ter uma base, eu clonei um HD de 20GB/5400rpm pra um HD de 80GB/7200, o tempo da clonagem foi de 57 minutos. [...]]]></description>
			<content:encoded><![CDATA[<p>vamos a clonagem, com o linux startado, abra o shell e faça isso como root. No shell digite: </p>
<p>dd if=/dev/hda of=/dev/hdb </p>
<p>Em seguida de enter e aguarde&#8230;<br />
O processo é demorado, só para se ter uma base, eu clonei um HD de 20GB/5400rpm pra um HD de 80GB/7200, o tempo da clonagem foi de 57 minutos. </p>
<p>Ao termino do processo, o dd lhe informara os dados referentes a clonagem e pronto, agora você tem um clone de seu HD. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/clonando-hds-com-o-dd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPTABLES PARA QUEM NÃO CONHECE IPTABLES..</title>
		<link>http://www.luizoliveira.org/linux/iptables-para-quem-nao-conhece-iptables/</link>
		<comments>http://www.luizoliveira.org/linux/iptables-para-quem-nao-conhece-iptables/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 13:27:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.luizoliveira.org/?p=442</guid>
		<description><![CDATA[      A segurança da informação é, sem dúvida, um dos assuntos mais importantes dentre as pautas de reunião de tecnologia em qualquer entidade.]]></description>
			<content:encoded><![CDATA[<p><strong>1 Conceito de segurança</strong></p>
<p>      A segurança da informação é, sem dúvida, um dos assuntos mais importantes dentre as pautas de reunião de tecnologia em qualquer entidade.</p>
<p>      Autenticidade, confidencialidade em manter as informações a salvo de acesso e divulgação não autorizadas, confiabilidade, compartilhamento de dados, disponibilidade e integridade da informação estão diretamente ligados à segurança. Segurança da informação são mecanismos que promovem a integridade de uma estrutura de rede que se aplicam nos conceitos mais simples, que vão desde políticas de troca periódica de senhas até a trituração de documentos impressos.</p>
<p>      Mobilidade e facilidade já fazem parte do nosso dia-a-dia, comprar e configurar um roteador Wi-Fi tornou-se trivial, já com as mais diversas distribuições de Linux, instalar e configurar um servidor como proxy acaba sendo tarefa de 15 minutos. É exatamente neste tipo de facilidade que pessoas mal intencionadas aplicam as mais diversas formas comumente utilizadas para explorar estas “vulnerabilidades”, com o simples uso de ferramentas desenvolvidas especialmente para esta finalidade, a invasão.</p>
<p>     Ataques direcionados às redes além de comprometer os recursos e a disponibilidade comprometem o principal: as informações. Como os ataques podem ser originados de qualquer posição dentro ou fora da área da rede em questão, acaba dificultando a tarefa de localização precisa da origem do ataque e do atacante. O intruso que consiga entrar em uma rede ficará com um acesso privilegiado para lançar ataques aos elementos constituintes dessa rede havendo risco acrescido para ocorrência das situações exemplificadas a seguir:</p>
<p>• Furto ou violação da informação e dos serviços da rede;<br />
• Abuso da conexão com à Internet;<br />
• Utilização dessa conexão “ponte” para prática de atos ilícitos, o que, em caso de posterior investigação policial, envolverá o utilizador titular do link invadido;<br />
• Vandalismo – destruição de dados, interferência ao normal funcionamento da rede, etc.</p>
<p>A contra medida simples configurada em separado ou em conjunto não devem ser consideradas medidas de segurança suficientes para impedir um indivíduo motivado a entrar na rede.</p>
<p><strong>2 Mecanismos de segurança</strong></p>
<p>Contamos com os mecanismos de segurança físicos e lógicos:</p>
<p>• os métodos físicos são barreiras que limitam o contato ou acesso à informação ou a infra-estrutura de dados que contém as informações, podem ser exemplificados como: portas, trancas, acesso por identificação biométrica, blindagem, entre outros.<br />
• os métodos lógicos destacam-se por controles eletrônicos que impedem ou limitam o acesso à informação.</p>
<p>Adicionalmente, agregamos aos mecanismos lógicos:</p>
<p>- Criptografia: É a forma de cifrar dados, utilizando algoritmos altamente complexos, ou não, para tornar a informação ininteligível à terceiros. A decriptografia é utilizada pela parte autorizada a receber esta informação e devidamente com o algoritmo de decriptação é realizado o processo inverso.</p>
<p>- Assinatura digital: Código utilizado para verificar a integridade de um documento, porém, não garante sua confidencialidade.</p>
<p>- Garantia da integridade da informação: Conseguimos facilmente utilizando funções de “Hashing”, seria como tirar uma “foto” do documento antes de enviar, e então para o receptor verificar sua integridade ele tiraria outra “foto” do documento e realizava a comparação.</p>
<p>- Controle de acesso: destacam-se por senhas, sistemas biométricos, controle de acesso explícito, como por exemplo, um firewall&#8230;<br />
<strong>3 Conceitos de Firewall</strong></p>
<p>     Firewall, não é nada mais do que um porteiro ou um segurança com sua árdua função de verificar quem pode entrar e sair, além de manter a consonância das coisas, atualmente, já se tornou imprescindível sua utilização.<br />
     Existem firewalls comerciais, muitos; também existe um método de construção onde podemos definir as próprias regras, onde você define o que quer controlar; praticidade? Nem tanto para uma corporação com mais de 5 mil regras. De qualquer forma, com um pouco de organização, conseguimos trabalhar, e muito bem, com o iptables.<br />
     No Linux, o iptables é embutido no kernel, o que o torna, sem dúvida, superior em relação aos seus concorrentes. Obviamente nenhum firewall irá corrigir os erros de sua rede, mas ele poderá limitar o uso destes serviços à certos computadores. Não faz sentido disponibilizar um serviço de FTP a toda a internet sendo que apenas a filial necessita deste acesso, muito menos manter um serviço web ativo no seu servidor, se nem ao menos você necessita dele lá. Então, como definir políticas de acesso aos serviços em que eu realmente necessito mante-los?</p>
<p><strong>Iptables</strong><br />
Para entendermos o iptables, veremos como ele trabalha para então conhecermos o quê ele pode nos proporcionar. Teremos agora, um método bem didático de explicação. Preparado??</p>
<p>O iptables está organizado por 3 tabelas, a saber:</p>
<p><strong>Filter</strong>: Onde é controlado o de filtro de pacotes, basicamente, quem entra e quem sai da sua rede. É composta por três funções:</p>
<p>• INPUT: Controla o que <strong>entra</strong> no servidor.<br />
• FORWARD: Controla o que entra no servidor mas deve ser <strong>redirecionado</strong> a uma outra máquina.<br />
• OUTPUT: Controla o que <strong>sai</strong> do servidor.</p>
<p><strong>NAT</strong>: Ela trabalha com funções de NAT (Network Address Translation), seria uma troca do endereço de rede. As funções dela são:<br />
• PREROUTING: Utilizada quando necessitamos tomar ações <strong>ANTES</strong> do datagrama ser roteado.<br />
• POSTROUTING: Utilizada quando necessitamos tomar ações <strong>APÓS</strong> o roteamento do datagrama.<br />
• OUTPUT: Utilizada quando necessitamos realizar alterações nos datagramas após eles serem roteados.</p>
<p><strong>Mangle</strong>: Trabalha com alterações especiais nos pacotes, por exemplo alterar a prioridade de um datagrama IP, ou marcar um determinado datagrama para que ele seja trabalhado por um roteamento especial, como sair por outro gateway. As funções dela são:<br />
• PREROUTING: Utilizada quando necessitamos modificar os datagramas dando um tratamento especial antes que eles sejam roteados.<br />
• OUTPUT: Modifica especialmente os datagramas gerados pelo servidor antes que eles sejam roteados.<br />
Veja um exemplo didático:</p>
<p> <br />
Agora que já sabemos tudo sobre as situações das tabelas, vamos conhecer alguns comandos:</p>
<p><strong>Comandos do iptables</strong></p>
<p><strong>iptables</strong>: o binário<br />
<strong>iptables-save</strong>: binário que salva as regras em memória.<br />
<strong>ip6tables</strong>: iptables para IPv6.<br />
<strong>iptables-restore</strong>: binário responsável carregar em memória as regras que foram salvas pelo ‘iptables-save’.</p>
<p>Forma de utilização:<br />
# iptables –t nat<br />
diz ao iptables que será usado a tabela nat</p>
<p># iptables –t filter<br />
diz ao iptables que será usado a tabela filter</p>
<p># iptables –t mangle<br />
diz ao iptables que será usado a tabela mangle<br />
iptables -&lt;comando&gt; [cadeia]<br />
Ex: iptables -A INPUT</p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>-A <strong>chain</strong></td>
<td>Ex: iptables –A <strong>INPUT</strong></p>
<p>Iptables, insira as regras ao final da chain INPUT.</td>
</tr>
<tr>
<td>-D <strong>chain</strong></td>
<td>Ex: iptables –D <strong>INPUT</strong></p>
<p>Iptables, apague as regras da chain INPUT, não vou mais utilizá-las.</td>
</tr>
<tr>
<td>-D <strong>chain</strong> regra_num</td>
<td>Ex: iptables –D <strong>FORWARD</strong> 25</p>
<p>Iptables, apague da chain FORWARD a regra residente na posição 25.</td>
</tr>
<tr>
<td>-R <strong>chain</strong> regra_num</td>
<td>Ex: iptables –R <strong>FORWARD</strong> 20 –s 192.168.30.10 –d 192.168.40.0/24</p>
<p>Iptables, substitua a regra 20 da chain FORWARD pela regra dada ‘–s 192.168.20.10 –d 192.168.30.0/24 -j DROP.’</td>
</tr>
<tr>
<td>-I <strong>chain</strong></td>
<td>Ex: iptables –I <strong>INPUT</strong></p>
<p>Iptables, insira no inicio da lista a regra.</td>
</tr>
<tr>
<td>-L <strong>chain</strong></td>
<td>Ex: iptables –L <strong>INPUT</strong></p>
<p>Iptables, liste as regras da chain INPUT. Nota: Caso não haja nenhuma chain especificada, todas as regras em todas as chains são listadas.</td>
</tr>
<tr>
<td>-F <strong>chain</strong></td>
<td>Ex: iptables –F <strong>FORWARD</strong></p>
<p>Iptables, remova todas as regras da chain FORWARD. Nota: Se nenhuma chain for especificada, remove as regras de todas as chains existentes, inclusive as do usuário</td>
</tr>
<tr>
<td>-Z <strong>chain</strong></td>
<td>Ex: iptables –Z</p>
<p>Iptables, zere os contadores de datagramas e de bytes em todas as regras da chain especificada, ou para todas as chains se nenhuma for especificada.</td>
</tr>
<tr>
<td>-N <strong>chain</strong></td>
<td>Ex: iptables –N <strong>VIRUS</strong></p>
<p>Iptables, crie uma chain chamada VIRUS, utilizado para tratar diversos casos com o mesmo ALVO.</td>
</tr>
<tr>
<td>-e <strong>chain</strong></td>
<td>Ex: iptables –e <strong>WORMS</strong> worms</p>
<p>Iptables, renomeie a chain WORMS para worms</td>
</tr>
<tr>
<td>-X <strong>chain</strong></td>
<td>Ex: iptables –X <strong>WORMS</strong></p>
<p>Iptables, apague a chain WORMS, não vou mais utilizá-la. Nota: o iptables apagará todas se não for especificada uma.</td>
</tr>
<tr>
<td>-C <strong>chain</strong></td>
<td>Ex: iptables –C <strong>WORMS</strong></p>
<p>Iptables, verifique o datagrama descrito pela regra especificada contra a chain especificada. Este comando retorna uma mensagem descrevendo como a chain processou o datagrama. Isso é muito útil para testar a configuração do firewall, e para uma análise posterior.</td>
</tr>
<tr>
<td>-P <strong>chain</strong> política</td>
<td>Ex: iptables –P <strong>INPUT</strong> DROP<br />
Iptables, defina a política padrão para a chain INPUT dentro de uma política especificada a DROP. As políticas válidas são: <strong>ACCEPT</strong>, <strong>DROP</strong>, <strong>QUEUE</strong> e <strong>RETURN</strong>.</td>
</tr>
</tbody>
</table>
<p> <br />
<strong>Controles a serem tomados:</strong></p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>-p &lt;protocolo&gt;</td>
<td>Ex: -p tcp.</p>
<p>Iptables, é sobre o protocolo tcp! (você encontra uma tabela de protocolos em /etc/protocol)</td>
</tr>
<tr>
<td>-i &lt;interface&gt;</td>
<td>Ex: -i eth0, -i eth1, -i eth+ (todas eth)</p>
<p>Iptables, controle tudo o que <strong>ENTRA</strong> (-i de INPUT) pela interface ethX . Esta regra também se aplica a chain FORWARD.</td>
</tr>
<tr>
<td>-o &lt;interface&gt;</td>
<td>Ex: -o eth0, -o eth1, -o eth+ (todas eth)</p>
<p>Iptables, controle o que <strong>SAI</strong> (-o de OUTPUT). Esta regra também se aplica nas chains FORWARD e OUTPUT</td>
</tr>
<tr>
<td>-s &lt;ip&gt;</td>
<td>Ex: -s 192.168.0.1/24</p>
<p>Iptables, controle o que vier da <strong>ORIGEM</strong> (-s de SOURCE) 192.168.0.1/24</td>
</tr>
<tr>
<td>-d &lt;ip&gt;</td>
<td>Ex: -d 192.168.0.2/24</p>
<p>Iptables, controle o que vai com <strong>DESTINO</strong> (-d de DESTINATION)</td>
</tr>
<tr>
<td>! &lt;pacote|ip&gt;</td>
<td>Ex: -d ! 192.168.0.2/24, ou –p ! udp</p>
<p>Iptables, com qualquer <strong>DESTINO</strong> (-d de DESTINATION) <strong>EXCETO</strong> 192.168.0.2, o mesmo para protocolo, qualquer um exceto udp.</td>
</tr>
<tr>
<td>-j &lt;ação&gt;</td>
<td>Ex: -j ACCEPT, -j DROP, -j REJECT, -j LOG</p>
<p>Iptables, o que casar com as ações definidas voce vai <strong>ACEITAR</strong>, vai <strong>NEGAR</strong>, vai <strong>REJEITAR</strong> ou vai <strong>GRAVAR</strong>.</td>
</tr>
<tr>
<td>&#8211;sport &lt;porta&gt;</td>
<td>Ex: &#8211;sport 22</p>
<p>Iptables, o que for da <strong>PORTA</strong> de <strong>ORIGEM</strong> (&#8211;sport de SOURCE PORT) 22</td>
</tr>
<tr>
<td>&#8211;dport &lt;porta&gt;</td>
<td>Ex: &#8211;dport 80</p>
<p>Iptables, o que for para a <strong>PORTA</strong> de <strong>DESTINO</strong> 80 (&#8211;dport de DESTINATION PORT)</td>
</tr>
</tbody>
</table>
<p> <br />
DICA: Tanto para &#8211;sport quanto para &#8211;dport podemos utilizar range de portas:<br />
Ex: &#8211;dport 6881:6889<br />
Ou multiportas:<br />
Ex: -m multiport &#8211;dport 5190,4000,53</p>
<p><strong>Ações a serem tomadas quando alguma regra combina ou casa </strong>(para os íntimos)</p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>ACCEPT</td>
<td>Aceitar o datagrama IP</td>
</tr>
<tr>
<td>DROP</td>
<td>Bloquear o datagrama IP, descarta o datagrama sem informar ao emissor</td>
</tr>
<tr>
<td>REJECT</td>
<td>Rejeita o datagrama IP, informa o emissor, Ex: icmp destination host unreacheable</td>
</tr>
<tr>
<td>LOG</td>
<td>Cria Logs das ações solicitadas.</td>
</tr>
<tr>
<td>SNAT</td>
<td>Modifica o endereço de origem (SOURCE NAT) dos datagramas IP antes deles serem roteados. Ex: Dizer que um datagrama enviado do host X para o Y originou-se do host Z.</td>
</tr>
<tr>
<td>DNAT</td>
<td>Modifica o endereço de destino (DESTINATION NAT) dos datagramas IP das máquinas clientes. Ex: Encaminhar um datagrama com destino a porta 80 para a 3128 (do squid!)</td>
</tr>
<tr>
<td>REDIRECT</td>
<td>Redireciona a porta. Ex: o que vier para a porta 7153 redirecionar para a porta 3389 (a porta do Terminar Service)</td>
</tr>
<tr>
<td>TOS</td>
<td>Tratamento especial no datagrama, veremos mais adiante!</td>
</tr>
</tbody>
</table>
<p> </p>
<p>      Nossa! Quanta coisa hein? Se você conseguiu chegar até aqui, é sinal de que apenas passou os olhos pelas tabelas, não!? Tome notas, leia, imprima, releia e tenha as tabelas no bolso, se entendê-las dominará o iptables facilmente!<br />
Agora chega de “bla bla bla” e vamos as reais situações.</p>
<p>A maioria das situações abaixo foram retiradas da lista linux-board do YahooGroups, a qual sempre presto uma ajuda nas horas vagas.</p>
<p>Vamos tomar como exemplo a situação de rede, a quase padrão na maioria dos casos:</p>
<p>Rede: eth0 interna<br />
Rede: eth1 externa</p>
<p><strong>Trabalhando com NAT em sua rede</strong></p>
<p>Mascarar conexão</p>
<p>Devemos habilitar, antes, o nat em seu kernel:</p>
<p>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>E então:</p>
<p>iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE<br />
Iptables, adicione na tabela nat (-t nat), após ser roteado (-A POSTROUTING):<br />
• O que for de origem da minha rede (-s 192.168.0.0/24)<br />
Qual o alvo, o que fazer?<br />
• -j MASQUERADE (mascarar a conexão)<br />
<strong>SNAT</strong>: modificação do endereço de origem das máquinas para um único IP ou faixa de IP&#8217;s.<br />
Qualquer regra que utilize <strong>SNAT</strong> deve ser aplicada a chain <strong>POSTROUTING</strong>.</p>
<p><strong>DNAT</strong>: modificação do endereço de destino das máquinas para um único IP ou fixa de IP&#8217;s.<br />
Qualquer regra que utilize <strong>DNAT</strong> deve ser aplicada a chain <strong>PREROUTING</strong>.<br />
E então, fácil? Calma, veremos muitos exemplos, até você decorá-los. Vejamos uma regra:</p>
<p>iptables –t nat –A POSTROUTING –s 192.168.0.1 –o eth0 –j SNAT -–to 192.168.2.12<br />
Iptables, adicione na tabela POSTROUTING (-t nat –A POSTROUTING):<br />
• o que vier com origem do host (-s 192.168.0.1)<br />
• e especificamente o que sai pela rede eth0 (-o eth0)<br />
• deverá ter seu endereço alterado (-j SNAT) para 192.168.2.12</p>
<p>Tá ficando bom, vejamos uma com DNAT:</p>
<p>Redirecionar conexões que entrem na porta 7155 para a porta 3389 (Terminal Service) de uma máquina interna de sua rede.</p>
<p>iptables -t nat -A PREROUTING -p tcp -m tcp &#8211;dport 7152 -j DNAT &#8211;to 192.168.0.126:3389<br />
iptables como vai? Adicione na tabela PREROUTING (-t nat –A PREROUTING):<br />
• O que for TCP e que vier com destino à porta 7152 (&#8211;dport 7152)<br />
terá seu destino de rede alterado para 192.168.0.126 (-j DNAT –-to 192.168.0.126:3389)<br />
Quando não especificamos uma origem ou um destino (-s &lt;IP&gt;, -d &lt;IP&gt;) o iptables segue o padrão que é ANY, ou seja, qualquer (0/0). É redundante colocarmos algo como –s 0/0 ou –d 0/0. Note que na regra acima, deixamos explícito a porta destino do pacote, já que ele viria pela 7152 e além de alterarmos o IP de destino, alteramos também a porta para 3389.<br />
Redirecionar conexões da porta 80 para 3128</p>
<p>iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -i eth0 &#8211;dport 80 -j REDIRECT &#8211;to-port 3128<br />
iptables, adicione na tabela nat (-t nat), antes de ser roteado (-A PREROUTING) :<br />
• O que for de origem (-s, de source) 192.168.0.0./24<br />
• E que seja do protocolo tcp (-p tcp)<br />
• E que entre pela interface eth0 (-i de input, eth0)<br />
• Com destino a porta 80 (&#8211;dport 80)<br />
Qual o alvo, o que fazer? :<br />
• Redirecionar para a porta 3128 (-j REDIRECT –to-port 3128)</p>
<p> <br />
<strong>Trabalhando com filtros de pacote</strong></p>
<p>      Há pessoas que trabalham, de cara, bloqueando tudo e liberando apenas o necessário. Há outras que trabalham liberando tudo o que necessita e bloqueia o resto, veja, é diferente&#8230;</p>
<p>Note que quando se lista uma tabela do iptables (iptables –t filter –L), você vê que a política padrão é ACCEPT:</p>
<p># iptables -t filter -L<br />
Chain INPUT (policy ACCEPT)</p>
<p>Então, vamos montar a política de que, por padrão o pacote é bloqueado.</p>
<p>iptables –P INPUT DROP<br />
iptables –P OUTPUT DROP<br />
iptables –P FORWARD DROP</p>
<p>Bloquear tudo com destino ao site www.pornografia.com</p>
<p>iptables –A FORWARD –s 192.168.0.0/24 –d www.pornografia.com –j DROP</p>
<p>iptables, adicione na tabela de encaminhamento de pacotes (iptables –A FORWARD):<br />
• Tudo o que for de origem (-s, de source, origem ) 192.168.0.0/24<br />
• e com destino a (-d, de destination, destino) www.pornografia.com<br />
• seja bloqueado (-j alvo, “o que fazer?”) DROP (bloquear, negar)<br />
Liberar tudo o que vier do site www.empresa.com.br</p>
<p>iptables –A FORWARD –s www.empresa.com.br –d 192.168.0.0/24 –j ACCEPT<br />
iptables, adicione na tabela de encaminhamento (iptables –A FORWARD):<br />
• O que vier da origem (-s www.empresa.com.br)<br />
• Com destino a minha rede interna (-d 192.168.0.0/24)<br />
• Será liberado (-j ACCEPT)<br />
Bloquear totalmente aquele cara que esta consumindo sua banda:</p>
<p>iptables –A FORWARD –s 192.168.0.15 –d 192.168.0.1 –j DROP<br />
Adicionar na tabela de encaminhamento (-A FORWARD):<br />
• o que for de origem (-s) do IP 192.168.0.15 e com destino ao gateway de internet (-d) 192.168.0.1 será bloqueado (-j DROP).<br />
Já deu um susto? Então você pode excluir a regra:</p>
<p>iptabes –D FORWARD –s 192.168.0.15 –d 192.168.0.1 –j DROP</p>
<p>Há uma forma de excluir a regra pelo seu número, para listar as regras e sua ordem fazemos:</p>
<p># iptables -t filter -nL &#8211;line-numbers<br />
26 DROP 0 &#8212; 192.168.0.15 192.168.0.1</p>
<p>E então, excluímos:</p>
<p># iptables -D FORWARD 26</p>
<p><strong>Tratamentos especiais em pacotes, TOS</strong></p>
<p>      “O tipo de serviço é um campo existente no cabeçalho de pacotes do protocolo ipv4 que tem a função especificar qual é a prioridade daquele pacote. A prioridade é definida usando o algoritmo FIFO do próprio kernel, sendo uma das alternativas de controle/priorização de tráfego das mais simples e rápidas.<br />
Uma das vantagens da utilização do tipo de serviço é dar prioridade ao tráfego de pacotes interativos (como os do ICQ, IRC, servidores de chat), etc. Com o TOS especificado, mesmo que esteja fazendo um download consumindo toda a banda de sua interface de rede, o tráfego com prioridade interativa será enviado antes, aumentando a eficiência do uso de serviços em sua máquina.” &#8211; Guia Foca Linux.<br />
Antes de começar, algumas definições:</p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<p align="center"><strong>Tipo de TOS</strong></p>
</td>
<td>
<p align="center"><strong>AJUSTE</strong></p>
</td>
</tr>
<tr>
<td>Espera mínima (Minimize-delay)</td>
<td>
<p align="center">16</p>
</td>
</tr>
<tr>
<td>Máximo processamento (Maximize-throughput)</td>
<td>
<p align="center">8</p>
</td>
</tr>
<tr>
<td>Máxima confiança (Maximize-reability)</td>
<td>
<p align="center">4</p>
</td>
</tr>
<tr>
<td>Customínimo (Minimize-cost)</td>
<td>
<p align="center">2</p>
</td>
</tr>
<tr>
<td>Prioridade normal (Normal-service).</td>
<td>
<p align="center">0</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Prioridade máxima para conexões SSH:</p>
<p>iptables –t mangle –A PREROUTING –i eth1 –p tcp –-sport 22 –j TOS –-set-tos 16<br />
iptables, adicione na tabela mangle (-t mangle) antes de ser roteado (-A PREROUTING):<br />
• o que entrar pela interface eth1 (-i eth1) que for tcp (-p tcp)<br />
• com origem da porta 22 (&#8211;sport 22) dar o máximo de processamento (-j TOS –-set-tos 16)</p>
<p>Você deve ter notado, na regra de DNAT láaa em cima, há uma coisinha estranha (-p tcp -m tcp) –m tcp&#8230; o que seria isto? Módulos!</p>
<p><strong>Módulos</strong></p>
<p>Os módulos ampliam o poder do iptables, é uma forma de explandir ainda mais suas regras, afinal, já somos expert em iptables!</p>
<p>Veja alguns módulos:</p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<p align="center"><strong>TIPO</strong></p>
</td>
<td>
<p align="center"><strong>DESCRIÇÃO</strong></p>
</td>
</tr>
<tr>
<td>limit</td>
<td>Limita o número de vezes de uma regra</td>
</tr>
<tr>
<td>state</td>
<td>Estado da conexão, (NEW,ESTABLISHED, RELATED e INVALID “já obsoleto”)</td>
</tr>
<tr>
<td>mac</td>
<td>Isto mesmo, podemos trabalhar por endereços MAC, bacana, não?</td>
</tr>
<tr>
<td>multiport</td>
<td>Já pensou especificar 10 regras de tratamento de portas? O Multiport faz isto por você!</td>
</tr>
<tr>
<td>string</td>
<td>Dá uma espiada no conteúdo do pacote em busca de uma “string”</td>
</tr>
<tr>
<td>owner</td>
<td>Observa quem criou o pacote, trabalha apenas com a chain OUTPUT.</td>
</tr>
</tbody>
</table>
<p> <br />
<strong>A opção <em>limit</em> </strong>limita a quantidade de vezes que a regra deve ser executada em um intervalo de tempo, estremamente útil para trabalhar com tentativas de ataques. Ataque DoS (Denial of Service), entende?</p>
<p>iptables –A INPUT –p icmp &#8211;icmp-type echo-request –m limit &#8211;limit 1/s –j ACCEPT<br />
Definimos que aceitaremos pacotes de icmp (-p icmp) tipo do ping (&#8211;icmp-type echo-request) se eles forem recebidos apenas no limite de um segundo (-m limit &#8211;limit 1/s). Podemos ter s, m, h, d (segundo, minuto, hora e dia).</p>
<p>Certo, se eu desejar bloquear estes tipos de requisições, afinal, ninguém precisa saber se estamos vivos ou não, a regra seria &#8230; ?</p>
<p>iptables –A INPUT –p icmp –j DROP</p>
<p>Bloquear tudo o que entrar e que seja do tipo icmp. Esta ficou fácil, não?</p>
<p>Mas&#8230; Como ele controla isto, a quantidade de vezes&#8230; é memória, banco de dados?</p>
<p>Não, ele utiliza as flags de inicialização de um datagrama IP, elas são:</p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<p align="center"><strong>FLAG</strong></p>
</td>
<td>
<p align="center"><strong>Descrição</strong></p>
</td>
</tr>
<tr>
<td>ACK</td>
<td><em>Acknowledgement</em>. Informa ao receptor o próximo número da seqüência do pacote</td>
</tr>
<tr>
<td>SYN</td>
<td><em>Syncronize</em>. Utilizada para realizar o sincronismo dos números seqüênciais.</td>
</tr>
<tr>
<td>FIN</td>
<td><em>Finalização</em>. Flag utilizada para indicar a finalização de uma conexão</td>
</tr>
<tr>
<td>PSH</td>
<td><em>Push</em>. Informa ao tcp que se deve enviar todos os pacotes que estejam no buffer ao destinatário</td>
</tr>
<tr>
<td>URG</td>
<td><em>Urgent</em>. Prioridade no envio.</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Para um melhor entendimento, veja:</p>
<p> </p>
<p> </p>
<p>- O Cliente envia um datagrama com a flag SYN, para o firewall, é uma nova conexão;<br />
- O servidor recebe a requisição, e responde com a dupla SYN+ACK;<br />
- Para o firewall, há uma conversa, estabilizou!</p>
<p>Fechamento de uma conexão:</p>
<p> <br />
“<em>Imagine o que aconteceria se enviássemos vários pacotes SYN forjando a origem para um Host B, este host B enviaria um pacote SYN+ACK de volta para o Host A e ficaria aguardando o estabelecimento de conexão (ora se forjamos a origem, é óbvio que nunca o receberá), este é o tipo de conexão three-way e várias requisições neste estado de ‘half-connection’ geram o famoso Syn-flood, muitas conexões abertas aguardando um pacotinho ACK de confirmação que nunca chegará.</em>”<br />
<strong>A opção state</strong> trabalha com o estado da conexão:</p>
<p>NEW: nova conexão<br />
ESTABLISHED: conexão já pertencente e estabilizada entre as duas pontas.<br />
RELATED: conexão que se relaciona com um outro pacote, por exemplo mensagens de erro.<br />
INVALID: Conexões inválidas, pacotes com problemas ou não formados corretamente.<br />
iptables –A INPUT –m state &#8211;state INVALID –i eth1 –j DROP</p>
<p>Bloqueia o que entrar (-A INPUT) pela interface eth1 (-i eth1) e com estado inválido (&#8211;state INVALID).</p>
<p><strong>A opção mac</strong> permite-nos trabalhar por este tipo de endereçamento:</p>
<p>iptables –A INPUT –m mac &#8211;mac-source 00:50:04:EE:3D:FD –j DROP</p>
<p>Bloqueia o que for do endereço mac de origem (&#8211;mac-source)</p>
<p><strong>A opção multiport</strong> permite-nos trabalhar com várias portas, por exemplo:</p>
<p>iptables -A FORWARD -p udp -m multiport &#8211;dport 5190,4000 -j DROP</p>
<p>Bloqueia o encaminhamento de mensagens udp das portas 5190 e 4000</p>
<p>iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport &#8211;dports domain,ftp-data,ftp,https,pop3,smtp,21 -j ACCEPT</p>
<p>Libera o encaminhamento de mensagens das portas de destino domain,ftp-data,ftp,https,pop3,smtp,21. Uma relação de portas está disponível em /etc/services</p>
<p>Se você quer liberar um range de portas, pode fazer:</p>
<p>iptables -A INPUT -p udp -i eth+ &#8211;dport 33435:33525 -j DROP</p>
<p>Bloquear tudo o que for udp e que entrar por qualquer interface (-i eth+) para as portas de 33435 até 33525. Bloqueia o traceroute =)</p>
<p>A opção string permite-nos vasculhar o conteúdo do pacote, por exemplo, bloquear o que contém a string Kazaa.</p>
<p>iptables –A INPUT –m string &#8211;string “X-Kazaa” –j DROP</p>
<p>Hum… vamos ver o que está acontecendo? Log nele!</p>
<p>iptables –A INPUT –m string &#8211;string “sexo” –j LOG &#8211;log-prefix “IPTABLES: Log da string sexo, masculino ou feminino? =)”<br />
<strong>Dicas</strong></p>
<p>Não esqueça de sempre logar e depois bloquear, sempre liberar o chefe e depois bloquear o restante da empresa, e assim por diante, pois o iptables irá ler suas regras de cima para baixo, sempre.</p>
<p>O seu arquivo de firewall nada mais é que um “shell script”, permitindo, então você fazer:</p>
<p># Redireciona VPN e TS para o PDC<br />
PORTS=”1723 3306”<br />
PROTOCOLOS=”tcp udp”<br />
IFACEWEB=”eth1”<br />
      for PORTA in $PORTS;do<br />
            for PROTO in $PROTOCOLOS;do<br />
                  $IPTABLES -t nat -A PREROUTING -p $PROTO -m $PROTO &#8211;dport $PORTA -i $IFACEWEB -j DNAT &#8211;to 192.168.0.3<br />
      done<br />
done</p>
<p><strong>Resumão</strong></p>
<p><strong># Ativando o NAT e definindo variáveis.</strong></p>
<p>echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
IPTABLES=”/sbin/iptables”<br />
LAN=”192.168.0.0/24”<br />
IFACEWEB=”eth1”</p>
<p><strong># Apagando as regras anteriores</strong></p>
<p>$IPTABLES -t nat -F<br />
$IPTABLES -t nat -X<br />
$IPTABLES -t nat -Z<br />
$IPTABLES -t filter -F<br />
$IPTABLES -t filter -Z<br />
$IPTABLES -t filter –X<br />
<strong># Configurando NAT e redirecionamento para SQUID, NINGUEM SAI PELA</strong><strong><br />
</strong><strong># porta 80</strong><br />
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE<br />
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp &#8211;dport 80 -j REDIRECT &#8211;to-ports 3128<br />
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp &#8211;dport 80 -j DROP</p>
<p><strong># Liberando acesso remoto Terminal Service a uma máquina da rede. </strong><strong><br />
</strong><strong># Lembre-se, tudo o que entrar pela porta 7150 será redirecionado para </strong><strong><br />
</strong><strong># a máquina interna 192.168.0.117 na porta 3389.</strong></p>
<p>$IPTABLES -t nat -A PREROUTING -p tcp -m tcp &#8211;dport 7150 -j DNAT &#8211;to 192.168.0.117:3389</p>
<p><strong># Liberando acesso a uma determinada porta de um programa especifico </strong><strong><br />
</strong><strong># (ERP) vindas da Filial (200.200.200.200)</strong></p>
<p>$IPTABLES -A FORWARD -s 200.200.200.200 -p tcp -m tcp &#8211;dport 1494 -j ACCEPT</p>
<p><strong>#Bloqueando ping com resposta unreachable</strong></p>
<p>$IPTABLES -I INPUT -i $IFACEWEB -p icmp -j REJECT &#8211;reject-with icmp-host-unreachable</p>
<p><strong># Bloquear Bittorrent, ou outras portas, SQUID, Samba, DNS, etc&#8230;</strong></p>
<p>$IPTABLES -I INPUT -p tcp -m tcp &#8211;dport 6881:6889 -j DROP<br />
$IPTABLES -I OUTPUT -p tcp -m tcp &#8211;dport 6881:6889 -j DROP</p>
<p><strong># Bloquear conexões de algum programa que utilize algum destino ou </strong><strong><br />
</strong><strong># alguma porta de destino, KAZAA, Emule</strong></p>
<p>$IPTABLES -A FORWARD -d 216.35.208.0/24 -j DROP<br />
$IPTABLES -A FORWARD -p tcp &#8211;dport 6346 -j DROP<br />
$IPTABLES -A FORWARD -d 209.61.186.0/24 -j DROP</p>
<p> Fonte: <a href="http://www.flaviotorres.com.br/fnt/artigos/firewall_iptables.php">http://www.flaviotorres.com.br/fnt/artigos/firewall_iptables.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luizoliveira.org/linux/iptables-para-quem-nao-conhece-iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
