<?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>Hack Network &#187; firewall</title>
	<atom:link href="http://www.hack.net.br/blog/tag/firewall/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hack.net.br/blog</link>
	<description></description>
	<lastBuildDate>Tue, 08 Nov 2011 10:39:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Configurando Firewall iptables em servidor dedicado</title>
		<link>http://www.hack.net.br/blog/linux/configurando-firewall-iptables-em-servidor-dedicado/</link>
		<comments>http://www.hack.net.br/blog/linux/configurando-firewall-iptables-em-servidor-dedicado/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 00:57:54 +0000</pubDate>
		<dc:creator>Allan Denot</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Português-Brasil]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://www.hack.net.br/?p=133</guid>
		<description><![CDATA[Hoje com os VPS chegando a custar 9 dolares por mês, muitos estão alugando esses servidores virtuais e deixam o firewall aberto, confiando no provedor. Nesse artigo iremos ensinar como configurar um firewall iptables básico, garantindo a segurança do servidor remoto. Vamos configurar um firewall no modo padrão DROP, ou seja, ele irá bloquear todos [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje com os VPS chegando a custar 9 dolares por mês, muitos estão alugando esses servidores virtuais e deixam o firewall aberto, confiando no provedor. Nesse artigo iremos ensinar como configurar um firewall iptables básico, garantindo a segurança do servidor remoto.<span id="more-133"></span></p>
<p>Vamos configurar um firewall no modo padrão DROP, ou seja, ele irá <span style="text-decoration: underline;">bloquear todos os pacotes, e liberar apenas o que definirmos nas regras de ACCEPT abaixo</span>.</p>
<p>Para tipo de firewall é <span style="color: #ff0000;">necessário cuidado na hora de configurá-lo, pois podemos sem querer bloquear nossa própria conexão</span>, se não configurarmos na ordem correta. Porém também é o modo mais seguro, por isso iremos utilizá-lo.</p>
<h2>Regras Básicas</h2>
<p>As regras básicas que precisamos ter em um firewall são as abaixo.</p>
<p>Permitir pings:</p>
<pre>iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT</pre>
<p>Permitir acesso a porta 22 (SSH):</p>
<pre>iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT</pre>
<p>Caso você possua um Apache rodando, também precisa permitir acesso a porta 80 (HTTP):</p>
<pre>iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT</pre>
<p>Permitir conexões que já foram estabelecidas:</p>
<pre>iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT</pre>
<p>Permitir acesso loopback:</p>
<pre>iptables -A INPUT -s 127.0.0.1 -j ACCEPT</pre>
<p>Mas só temos liberações&#8230; como iremos impedir acessos indesejados?</p>
<pre>iptables -P FORWARD DROP
iptables -P INPUT DROP</pre>
<p>Mudando a política padrão das tabelas para DROP.</p>
<p><span style="color: #ff0000;">Atenção! Cuidado ao mudar a política com as regras acima. Se você não estiver criado as regras de liberação, o firewall irá bloquear <strong>qualquer conexão</strong></span><span style="color: #ff0000;"> e você perderá acesso ao servidor.</span></p>
<p>Se isso acontecer&#8230;</p>
<ul>
<li>Reinicie o servidor; ou</li>
<li>Peça para alguém ir na console, logar como root e digitar:
<ul>
<li>
<pre>iptables -P INPUT ACCEPT</pre>
</li>
</ul>
</li>
</ul>
<h2>Qual a diferença entre a política DROP e REJECT?</h2>
<ul>
<li>REJECT o trafego é rejeitado, ou seja, um pacote ICMP é enviado de volta avisando que aquela porta não está aberta.</li>
<li>DROP o tráfego é descartado, sem que host de origem seja avisado.</li>
</ul>
<p>Por que utilizar DROP então?</p>
<p>Eu prefiro utilizar DROP pois dessa maneira, quando um host tentar abrir uma conexão para meu servidor, os pacotes serão descartados até que ocorra um timeout no host de origem. Então um portscan por exemplo demorará muito mais para mapear todas as portas do meu servidor.</p>
<h2>Juntando tudo</h2>
<pre>echo 1 &gt; /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -P FORWARD DROP
iptables -P INPUT DROP</pre>
<p>Você pode salvar os comandos acima em um arquivo firewall.sh e colocá-lo para executar no seu /etc/rc.local</p>
<h2>Abrir outras portas?</h2>
<p>Para abrir outras portas, basta colocar outras regras como essa, no final do script:</p>
<pre>iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT</pre>
<p>Porém alterando de 22 para a porta que você deseja abrir.</p>
<h2>Qual o motivo de existir essa regra de estado (&#8211;state ESTABLISHED,RELATED) ?</h2>
<p>Essa regra garante que os pacotes das conexões abertas a partir do servidor, conseguirão voltar para ele.</p>
<p>Por exemplo, quando o servidor faz uma consulta DNS, o pedido vai sair pelo OUTPUT do iptables (que deixamos liberado) e quando voltar, vai bater no INPUT. Se não tiver essa regra, o firewall iria descartar o pacote com as informações de DNS retornando.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hack.net.br/blog/linux/configurando-firewall-iptables-em-servidor-dedicado/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

