Conectando sua rede interna com Linux, ipchains e ADSL

por Carlos Fernando Scheidecker Antunes

Escrito em 20 de Janeiro de 2001.
�ltima revis�o : 22 de Mar�o de 2001.
copyright (c) 2001 Carlos Fernando Scheidecker Antunes


�ndice :

Licen�a de uso

P�blico Alvo

1.0  Introdu��o
    1.1  Porque resolvi escrever esse artigo
    1.2  Dificuldades
    1.3  Software, hardware, servi�os e provedor utilizados
    1.4  Vantagens
    1.5  Desvantagens

2.0  Conceitos
    2.1  Um pouco sobre telefonia tradicional
    2.2  O que � ADSL
    2.3  Conceitos de TCP/IP que voc� deve saber
    2.4  O que � Proxy
    2.5  O que � NAT
    2.6  O que � IP Masquerading
    2.7  O que � IP Forwarding ou Ipfwadm
    2.8  O que � IPChains
    2.9  Funcionamento do IPChains
    2.10  Esquema da rede
    2.11  Gateways

3.0  Instala��o do hardware
    3.1  Instala��o do Modem ADSL
    3.2  M�quina para Firewall Linux

4.0  Configura��o do Firewall Linux
    4.1  Redes, subnets, gateways e IPs
    4.2  Configurando eth0, eth1, eth2, default gateway e DNS.

5.0  Script de firewall
    5.1  Alterando os atributos do script
    5.2  Criando o script de inicializa��o do firewall
    5.3  Inserindo o script /etc/rc.d/init.d/firewall na inicializa��o
    5.4  Rodando o firewall
    5.5 Para usu�rios do Slackware

6.0  Medindo a velocidade do seu acesso
    6.1  Considera��es t�cnicas
    6.2  T�cnica sugerida

7.0  Configurando os Hosts da sua rede
    7.1  Configurando Hosts Linux
    7.2  Configurando Hosts Windows 95/98
    7.3  Configurando Hosts Windows NT

8.0  Sugest�es
    8.1  Cable Modem
    8.2  Modem comum sob linha telef�nica
    8.3  Outros tipos de aplica��es

9.0  Informa��es adicionais
    9.1  Leitura recomendada
    9.2  Como contatar o autor e obter os scripts gratuitamente

10.0 Sobre o autor

11.0 Sistema S.E.N.

12.0 Links

13.0 Como obter e apreender mais sobre Linux

14.0 O que � Linux

15.0 Agradecimentos


P�blico Alvo

Este artigo destina-se a :

- Integradores que precisam de recursos t�cnicos para melhor atender seus clientes;

- ISPs : Provedores de acesso internet;

- Estudantes da �rea que desejam aprender mais sobre redes e conceitos avan�ados de conectividade;

- Empresas, escolas, entidades governamentais que precisam disponibilizar acesso internet de qualidade e alta velocidade na sua rede a custos baixos;

- Indiv�duos que queiram conectar uma rede inteira � internet.

Licen�a de uso

Essa licen�a aplica-se ao uso do artigo intitulado "Conectando sua rede interna com Linux, IPchains e ADSL", de autoria de Carlos Fernando Scheidecker Antunes.

- Este artigo � fornecido gratuitamente.

- Nenhum tipo de garantia quanto � sua aplica��o � oferecida.

- O autor n�o se resposabiliza por nenhum dano causado pela implementa��o do firewall. Use-o sob sua total responsabilidade.

- Nenhuma obriga��o ou tipo de suporte s�o oferecidos por parte do autor.

- O artigo poder� ser copiado e divulgado desde que o autor seja notificado.

- Toda reprodu��o ou divulga��o do artigo, em qualquer tipo de m�dia,deve conter o nome do autor.

- O artigo n�o poder� ser modificado sem a expressa autoriza��o,por escrito, do autor.

- O artigo poder� ser traduzido para outra l�ngua desde que, autorizado pelo   autor,seja preservada sua autoria bem como a integridade do texto.

1.0 Introdu��o

Neste artigo, veremos como conectar a sua rede interna � internet atrav�s de um firewall baseado em Linux.Atualmente, conectividade � internet tornou-se algo fundamental nas empresas, institui��es educacionais, gabinetes p�blicos e escrit�rios em casa (SoHo). Quando a necessidade � maior, ou seja, conectar uma rede privativa inteira � internet, os custos tendem a crescer proporcionalmente. Bem,essa opini�o pode n�o ser totalmente correta. Este artigo apresenta uma solu��o para isso incluindo :

Al�m disso,por este artigo ser� poss�vel mostrar o Linux em a��o para conectar n�o apenas uma, mas duas redes � internet em alta velocidade atrav�s de uma linha ADSL, com muito poucos recursos, software livre e um equipamento obsoleto. Tudo isso � vi�vel gra�as � famosa conectividade, estabilidade e baixo (ou nenhum) custo do Linux.

Importante: Se na sua cidade n�o h� ADSL, n�o se preocupe.Uma das prpostas deste artigo � apontar o que se deve fazer para utilizar a solu��o com um cable modem e at� com um modem convencional em linha discada para compartilhar uma �nica conex�o internet com toda a sua rede. Claro que o desempenho ir� variar de acordo com o comprimento de banda da sua conex�o. Se voc� usa uma ADSL de 256k ou 512k,sua situa��o � bem diferente de quem pode apenas trabalhar com uma linha discada e um banda te�rica de 56k.

1.1 Porque resolvi escrever esse artigo.

Este artigo nasceu de uma solu��o que implementamos na empresa em que trabalho, um ASP chamado Sistema SEN. Na nossa empresa, quer�amos reduzir a carga sobre o roteador e link dedicado, colocando todo o tr�fego de internet dos nossos desktops em outra via que n�o a do nosso roteador. Uma outra grande vantagem que essa solu��o possibilitou foi uma nova rota para nossa rede interna no caso de o link principal ficar fora do ar e necessitarmos gerenciar ou obter alguma informa��o ou servi�o de nossa rede interna. Quando finalmente habilitamos o firewall sob uma linha ADSL, resolvemos escrever um paper e distribu�-lo gratuitamente a nossos clientes de forma a facilitar e reduzir os custos das empresas ligadas a n�s 24 horas por dia e aos nossos aplicativos via internet.Logo se percebeu que esse paper poderia beneficiar muitas empresas, n�o s� as de nossos clientes, mas tamb�m escolas, profissionais liberais e integradores que precisassem vender seus servi�os.O paper se transformou em artigo.

1.2 Dificuldades

Quando resolvemos implantar essa solu��o, deparamo-nos com v�rias dificuldades. A primeira era a falta de treinamento do pessoal da nossa operadora e do pr�prio provedor que n�o p�de fornecer-nos informa��es simples.Por exemplo: como devia ser o cabo par tran�ado ligado do modem ADSL � interface do computador, cross ou paralelo? essa pergunta era pertinente porque o manual do modem ADSL sequer � fornecido e, em geral, o uso de ADSL ainda � restrito pois o pr�prio provedor instala-o apenas em um equipamento que rode Windows. As equipes de instala��o dos provedores s�o terceirizadas e possuem um treinamento extremamente b�sico para conectar e configurar apenas 1 host Windows.Os provedores e as operadoras poderiam vender muito mais linhas ADSL se houvesse treinamento ou algo publicado a respeito.Deflagrada essa car�ncia,surgiu a id�ia deste artigo que procura preencher essa defici�ncia, n�o s� ajudando os provedores e as operadoras bem como fornecendo a solu��o para os integradores e empresas.

Espera-se que este artigo crie uma maior demanda para esses servi�os uma vez que busca como conectar uma rede inteira � internet. Al�m das dificuldades de suporte por falta de treinamento do nosso provedor, havia tamb�m o trabalho maior : estudar como fazer, juntar todos os componentes e finalmente implementar a solu��o. Com rela��o ao modem e �s perguntas que meu provedor e operadora deveriam estar capacitados a responder e n�o o fizeram, eu as resolvi fazendo uma liga��o internacional ao fabricante do modem ADSL, Efficient Networks Inc localizado em Dallas, Texas. Al�m disso baixou-se, imprimiu-se e encadernou-se o manual do modem e enviaram-se dois e-mails a Efficient Networks.O segundo e-mail perguntava qual OS rodava no Modem. A resposta oficial recebida era que o OS era baseado em UNIX e n�o foi poss�vel saber se era especificamente Linux, mesmo tendo ficado 37 minutos ao telefone e sendo transferido para 4 pessoas diferentes.

O resto da solu��o e das dificuldades foram resolvidas com pesquisas na internet, a leitura de um livro espec�fico sobre Firewall no Linux ,que indico a seguir, e minha experi�ncia e prazer de trabalhar com Linux.

1.3 Software, hardware, servi�os e provedor utilizados.

Como hardware, al�m da nossa rede interna, foi utilizado :

  1. Uma m�quina Pentium 133mhz, com 64mb de mem�ria, HD de 1.2Gb e tr�s placas de rede 10/100mbps baseadas no chip RTL8139c. Esse equipamento estava obsoleto e enconstado na empresa. Para aproveit�-lo foi canibalizada a mem�ria de outra unidade semelhante de forma a contabilizar 64mb; as placas de rede foram compradas ao custo de R$ 35 cada e s� foram necess�rias duas porque a unidade j� possuia uma;
  2. O modem ADSL "cedido" por nossa operadora, um SpeedStream 5660 da Efficient Netorks www.efficientnetworks.com que roda um kernel baseado em UNIX (qual ser�???).Nada foi pago por ele j� que o "leasing" ou aluguel est� incluso no servi�o.
  3. Um metro de cabo padr�o categoria 5, dois conectores RJ-45 climpados a ele no padr�o paralelo EIA/TIA 568A conforme mostrado abaixo.

Como software utilizamos :

  1. Sistema Operacional : Distribui��o Red Hat Linux 7.0. Inicialmente foi utilizado o Red Hat 6.2 para rodar o firewall e em seguida feito o upgrade. Note que qualquer distribui��o de qualidade serve. Se voc� usa Conectiva, Mandrake, Caldera, Timpanogas, Slackware, etc,pode implantar a solu��o deste artigo sem traumas. Iremos comentar as diferen�as mais para frente. O mais importante na distribui��o que ir� instalar � a vers�o do Kernel. O ideal � que seja vers�o 2.2.16 pelo menos, j� que vers�es menores que 2.2.11 t�m um bug de fragmenta��o de pacotes IPchains. � importante notar que esse Firewall ser� construido usando IPchains que est� apenas dispon�vel em Kernels a partir do 2.1.x. Kernels 2.0.x usavam IPForward conforme iremos explicar mais adiante. Linux � uma solu��o excelente n�o apenas pelo baixo custo. Quando se fala em conectividade, o senso comum � utilizar OSes baseados no padr�o POSIX ou UNIX com varia��es tanto propriet�rias quanto livres como Linux e FreeBSD. Lembramos que a op��o por Linux foi realizada primeiramente pela qualidade do OS e depois por seu  baixo ou nenhum custo, se voc� obtiver uma c�pia gratuitamente no servidor FTP da sua distribui��o preferida. Para verificar qual o kernel do seu Linux (caso j� tenha um em opera��o) digite o comando "uname -r" e ver� algo do tipo 2.2.16-22 (vers�o do kernel que est� no nosso Linux).
  2. Software de Firewall. Utilizaremos o IPchains. O ideal � usar a vers�o 1.3.9 ou superior (inexistente no momento em que foi escrito o artigo). Para saber qual a vers�o do seu IPchains digite "/sbin/ipchains --version" na linha de comando. Insistimos em que n�o use uma vers�o inferior a essa, uma vez que pode estar submetendo sua rede interna a riscos de seguran�a. Lembre que o IPchains � um software gratuito. Pode ser obtido atrav�s dos CDs da sua distribui��o favorita como Conectiva, Caldera, Timpanogas, Red Hat, Mandrake, etc, ou pode ser obtido no site www.rpmfind.com , no site da sua distribui��o ou em outros sites na internet como www.tucows.com.

Provedor e operadora :

Como essa solu��o foi implantada em S�o Paulo, a operadora � a Telefonica e como provedor foi escolhido o  Terra (Zaz), por conta das recomenda��es de pessoas que respeitamos quanto � qualidade do provedor. Verifique, na sua cidade,junto  a sua operadora local se  sua subesta��o est� equipada para fornecer ADSL sobre a sua linha telef�nica.Existe uma pequena taxa para converter o telefone para ADSL e uma taxa fixa por m�s pelo servi�o, que nos dias atuais, n�o passa de R$200 mensais. Nossos clientes de fora de S�o Paulo t�m informado pre�os abusivos de outras operadoras locais para o mesmo servi�o que a Telefonica presta em S�o Paulo. Nesse ponto, a Telefonica est� de parab�ns pela qualidade e pre�os justos.

Como se pode observar, nada nessa lista consiste em algo de custo elevado ou dif�cil de obter. Voc� pode e deve utilizar uma m�quina que n�o est� mais usando porque est� ultrapassada como um 486 ou um Pentium de primeira gera��o, por exemplo.Procure priorizar a quantidade de mem�ria no seu Linux firewall e nem tanto o processador ou HD. No nosso caso utilizou-se 64mb de mem�ria um processador Pentium 133MHz e um HD simples de 1.2Gb.

1.4 Vantagens

Considerando-se a necessidade citada pela maior parte das empresas, a solu��o apresentada nesse artigo resolve o problema,ou seja,a acessibilidade � internet a custos muito baixos.Muitas empresas acabam optando por servir seus sites e utilizar servidores de e-mails bem como hospedar seus dom�nimos em servidores de terceiros.Nesses casos, a necessidade � possuir apenas conectividade � internet.A solu��o que apresentamos a seguir � voltada para isso. Se  sua empresa j� possui um link dedicado a essa atividade, voc� pode utilizar uma conex�o extra  com uma ADSL para poupar seu link e o processamento do seu roteador, deixando-o exclusivamente para os servidores. Esse foi exatamente o principal motivo por termos instalado um ADSL.

1.5 Desvantagens

A solu��o apresentada n�o resolve o seu problema se a necessidade � servir web pages, FTP, DNS autoritativo, e-mail, etc, com seus pr�prios servidores. Claro que voc� sempre pode enviar e-mails configurando o seu sendmail para isso.Mas um servidor de e-mail com v�rias contas e v�rios dom�nios requer um link dedicado e no m�nimo 2 IPs fixos v�lidos. Esses 2 IPs s�o necess�rios para cadastrar dois DNS servers - Master e Slave-, para que voc� possa hospedar dom�nimos, servir seus websites, contas de e-mail em mais de um dom�nio, etc.

 

2.0 Conceitos

A seguir,ser�o expostos os conceitos necess�rios para que voc� possa entender a solu��o apresentada neste artigo e modific�-la de modo a atender �s suas necessidades.

2.1 Um pouco sobre telefonia tradicional

Voc� j� notou que quando est� falando ao telefone com outra pessoa que est� ouvindo m�sica ao mesmo tempo, a m�sica que chega at� voc� pelo telefone n�o possui boa qualidade? Isso ocorre porque a linha telef�nica convencional utiliza uma espectro de freq��ncia de 0 a 4KHz, enquanto o ouvido humano pode reconhecer um espectro mais amplo. Por isso, m�sica transmitida por telefone � diferente j� que as freq��ncias fora do espectro n�o chegam a outra pessoa do outro lado da linha.

2.2 O que � ADSL

ADSL, da sigla em ingl�s, Asymmetric Digital Subscriber Loop, � uma tecnologia de acesso de alta velocidade � internet que usa uma linha comum de cobre.ADSL pode providenciar velocidades entre 384kbps a 1.5mbps, sempre utilizando velocidades diferentes nos canais de sa�da e de entrada de dados, por isso o nome Asymmetric. Se voc� obtiver um ADSL de 256Kbps, note que a velocidade que ter� entre seu computador e seu provedor para sua recep��o de dados ser� de 256kbps, enquanto a sua velocidade de envio (upstream) n�o ser� t�o elevada. ADSL � �timo para acessar sites na internet, fazer download de ISOs de distribui��es de Linux, acessar seu e-mail, logar remotamente em servidores via SSH, TELNET, etc. Mas no momento em que a necessidade � a contr�ria, ou seja, de servir informa��es, o correto � obter um link dedicado cuja velocidade de envio e recep��o tem a mesma prioridade e a mesma rela��o. Portanto, ADSL � uma tecnologia que usa linhas telef�nicas de cobre, prov� transfer�ncia de dados em altas velocidades e permite usar a linha telef�nica para voz ao mesmo tempo. � uma linha digital dedicada ideal para uma conex�o IP e as taxas de dados funcionam em combina��o de recep��o/envio, sendo a taxa de recep��o sempre privilegiada. Em S�o Paulo, a Telefonica oferece ADSLs de 256 e 512Kbps de recep��o. At� o fechamento desta mat�ria, n�o conseguimos obter a informa��o da taxa de envio.

Caberia aqui,ent�o,perguntar como � poss�vel usar o telefone e conectar-se � internet ao mesmo tempo com apenas uma linha telef�nica? Isso acontece porque ADSL � uma tecnologia que trafega informa��es sobre a linha comum de cobre num espectro de freq��ncia superior ao que � usado para voz.  A voz utiliza de 0 a 4KHz, enquanto dados utilizam de 4KHz a 2MHz. � como se voc� tivesse duas linhas em uma s�. Note que nem todas as esta��es est�o equipadas para possibilitar tr�fico de dados sobre a sua linha telef�nica. Geralmente s�o esta��es mais novas que contam com novos equipamentos   que fornecem essa possibilidade. Al�m disso, sua operadora precisa estar conectada � internet que � o caso da Telefonica. Uma dica : Antes de perguntar a sua operadora se seu prefixo telefonico tem ou n�o a op��o de ADSL, sugiro fazer um levantamento de todos os prefixos que podem ser instalados no seu local e depois verificar com a operadora. Muitas pessoas ficam desesperadas porque ligam e recebem como resposta que o prefixo do telefone est� habilitado. Por isso, facilite a sua vida e procure se informar antes conhecendo a telefonia da sua regi�o.

Para ter-se uma id�ia da vantagem desse servi�o,nos Estados Unidos a tecnologia DSL � fornecida pelas operadoras nas seguintes modalidades :

Tipo Taxa de Recep��o (Downstream) Taxa de envio (UpStream)
ADSL de 1.5Mbps a 384Kbps de 128kbps a 384kbps
HDSL (2 linhas) 1.5mbps 1.5mbps
SDSL (1 linha) 1.5mbps 1.5mbps
VDSL de 13mbps a 52mbps de 1.5mbps a 2.3mbps
IDSL ou ISDN 128kbps 128kbps
RADSL 384kbps 128kbps
UDSL de 384kbps a 1mbps de 128kbps a 384kbps

Note que n�o � em todas as regi�es dos EUA que as modalidades acima est�o dispon�veis, porque isso tamb�m depende da esta��o local da sua linha telef�nica.L�, ao contr�rio do que muitos pensam, existem tamb�m dificuldades na parte de telecomunica��es e dizemos isso por experi�ncia pr�pria.

Segundo o instalador da operadora que visitou nossa empresa,est� ocorrendo uma m�dia de 400 instala��es de ADSL por dia, em S�o Paulo, taxa que poderia ser bem maior se a maioria n�o fosse utilizada para uso em casa por apenas um computador.

2.3 Conceitos de TCP/IP que voc� deve saber

Para muitos, essa parte pode parecer bastante repetitiva, mas foi inclu�da para facilitar o entendimento de inciantes ao TCP/IP, nota��o de subnet, etc. TCP/IP � um conjunto de protocolos usados para a troca de informa��es em redes locais ou remotas incluindo a internet. Em uma rede TCP/IP cada equipamento possui um endere�o �nico de 32 bits, muitas vezes, referido apenas como "IP". O endere�o � composto de 4 octetos,e cada octeto (ou byte) equivale a 8 bits. Ao contr�rio das pessoas, o computador n�o usa a base decimal e sim a bin�ria. Portanto a nota��o 10 significa 2 em decimal. Uma maneira simples de entender isso � pensar que cada bit est� sempre na base 2. Veja a nota��o bin�ria 101, ou seja, o n�mero 5. Sempre lendo (ao contr�rio) da direita para a esquerda : o primeiro bit seria o equivalente a 2 elevado a zero que � 1 se estiver setado ou 0 se n�o estiver setado. O segundo bit, 0, significa 2 elevado a 1 ou zero. Como n�o est� setado, equivale a 0. O terceito bit seria 2 elevado a 2 igual 4. Portanto 101 em bin�rio equivale a 4+0+1 = 5 em decimal.

Normalmente, a nota��o de endere�amento � internet se escreve em decimal, assim 191.1.0.23, por exemplo. O mesmo endere�o em bin�rio seria equivalente a 10111111.00000001.00000000.00010111. Vamos ver o primeiro octeto 191 ou 10111111 = 128+0+32+16+8+4+2+1 = 191.

Tabela de valores de bits

posi��o f�rmula valores poss�veis
primeiro 00000001 2 elevado a zero 0 ou 1
segundo  00000010 2 elevado a um 0 ou 2
terceiro 00000100 2 elevado a dois 0 ou 4
quarto   00001000 2 elevado a tr�s 0 ou 8
quinto   00010000 2 elevado a quatro 0 ou 16
sexto    00100000 2 elevado a cinco 0 ou 32
s�timo   01000000 2 elevado a seis 0 ou 64
oitavo   10000000 2 elevado a sete 0 ou 128

A f�rmula seria 2^x onde x vai de 0 a 7. O n�mero 5 , por exemplo, seria representado pela soma do primeiro e terceiro bit setados.

Uma subnet � uma cole��o de endere�os de rede que podem comunicar-se diretamente entre si sem precisar de um roteador. A comunica��o � direta entre todos os Hosts na mesma subnet. O que estamos demonstrando neste artigo � como construir um roteador Linux ou um gateway para conectar a sua rede � internet. A subnet mask � usada para dividir os 32 bits de um IP em duas partes : o endere�o da rede e os endere�os dos Hosts. A subnet mask simplesmente informa ao host qual a parte do IP referente � rede e qual � a parte do IP referente aos Hosts. Dessa forma o Host ir� ou n�o recorrer ao seu roteador ou gateway.

Voc� ver� que, quando estivermos usando ipchains para implementar o nosso firewall, haver� nota��es de rede do tipo 192.168.0.0/24 ou 192.168.1.0/26. Essa � a nota��o da rede mais a sua subnet mask escrita pela quantidade de bits setados.

Em TCP/IP, o �ltimo endere�o de uma rede ou de uma sub-rede � seu broadcast, enquanto o primeiro endere�o � o endere�o de rede.

Sub-rede (subnet) � a forma que se criou para dividir uma rede. Assim, se voc� possui 1 rede de 62 hosts, deve utilizar uma m�scara (subnet mask) de 26 bits.

Note que o endere�amento IP (IPV4)� constitu�do por 32 bits, portanto, quando se fala em subnet mask de 24 bits, seria o equivalente a indicar 11111111.11111111.11111111.00000000 ou 255.255.255.0 em decimal.J� uma subnet mask de 26 bits ou /26 seria equivalente a 11111111.11111111.11111111.1100000000, ou seja 255.255.255.192.Para tanto basta contar a quantidade de bits setados.

Vamos supor um rede 192.168.1.0 de masc�ra 26 bits. O primeiro endere�o v�lido seria 192.168.1.1 e o �ltimo seria 192.168.1.62. Essa rede possui 64 endere�os, mas o endere�o (rede) 0 � reservado por ser o primeiro endere�o, bem como o �ltimo endere�o (BCast) 63 � reservado por seu o endere�o de broadcast. Portanto, os endere�os v�lidos v�o de 192.168.1.1 a 192.168.1.62 e s�o esses os endere�os que voc� usaria em seus hosts.

Para discriminar qual  parte de um endere�o � relativa a uma rede, foi criado o conceito de classes. Existem cinco formas de endere�os ou classes.

A classe A tem  sua rede definida em seu primeiro octeto sendo os tr�s restantes direcionados aos hosts. Por exemplo: 25.0.0.0 seria um exemplo de rede da classe A.

A classe B tem  sua rede definida em seus dois primeiros octetos, por exemplo, 130.26.0.0.

A classe C tem  sua rede definida em seus tr�s primeiros octetos, por exemplo, 192.168.2.0. Essa � a classe de rede que voc� ir� utilizar e tamb�m � a classe utilizada em servi�os ADSL.

Existem ainda as classes D e E.

Na pr�tica o que ir� acontecer � que voc� ir� utilizar redes de classe C, seja internamente como j� deve estar usando ou atrav�s da sua operadora que lhe ir� conferir um(1) endere�o IP ao modem ADSL que ir� pertencer a uma rede classe C.

No caso, ao instalar nosso ADSL, a operadora nos forneceu o "IP" do modem, sua subnet mask e o endere�o do gateway (geralmente o primeiro IP de host v�lido de uma subnet).Ao instalar o seu firewall, voc� precisar� conhecer qual � o IP do modem, qual o IP do gateway e qual � a subnet mask.

Vamos simular o que um provedor de ADSL faria. Primeiro, ele pegaria uma rede classe C e a dividiria em algumas sub-redes sendo que cada sub-rede teria um gateway. Supondo que a rede classe C que o provedor ir� utilizar seja 192.168.0.0 e que ele ir� dividi-la em 7 sub-redes,seria semelhante a :

  Rede Broadcast Subnetmask
Rede 1 192.168.0.0 192.168.0.63 255.255.255.192
Rede 2 192.168.0.64 192.168.0.95 255.255.255.224
Rede 3 192.168.0.96 192.168.0.127 255.255.255.224
Rede 4 192.168.0.128 192.168.0.159 255.255.255.224
Rede 5 192.168.0.160 192.168.0.191 255.255.255.224
Rede 6 192.168.0.192 192.168.0.223 255.255.255.224
Rede 7 192.168.0.224 192.168.0.255 255.255.255.224

Supondo que o IP do seu modem ADSL seja 192.168.0.5,ent�o a rede e a subnet mask seriam 192.168.0.0/26, o gateway seria provavelmente 192.168.0.1 e o broadcast 192.168.0.63. Isso � que ser� necess�rio conhecer da rede da sua ADSL. Se o IP do seu modem ADSL fosse 192.168.0.67 nessa rede acima, provavelmente seu gateway seria 192.168.0.65, a rede e subnet seriam 192.168.0.64/27 e o broadcast seria 192.168.0.95.

O importante � conhecer os conceitos b�sicos de TCP/IP, subnet e classes de redes para que voc� possa implantar o seu firewall corretamente.

2.4 O que � Proxy

O termo servidor Proxy vem de uma palavra em ingl�s que significa procura��o. Em termos t�cnicos, servidor de Proxy � um software que tem a "procura��o" de um ou mais hosts para buscar na internet uma informa��o solicitada. No Linux o servidor Proxy mais conhecido,eficiente e gratuito � o Squid. Muitos integradores instalam um servidor Proxy e configuram os hosts clientes para acessar o Proxy. Esse artigo n�o pretende discutir apenas como instalar um servidor Proxy com ADSL para dar acesso de sua rede interna � internet, apesar de muitas empresas e integradores fazerem isso.O objetivo � ir al�m, proporcionando uma solu��o mais barata, bem mais completa e eficiente. O problema de se ter um servidor Proxy � ficar limitado aos protocolos que esse servidor suporta. Por exemplo: se um servidor Proxy s� suporta os protocolos de http, https e ftp e um usu�rio tenta logar num servidor remoto via SSH, ou tenta abrir uma sess�o de ICQ ou ainda ver um v�deo, pode n�o conseguir se o servidor Proxy n�o suportar esses protocolos. O Proxy tem a vantagem de atuar como um grande cache. Se voc� abre a home page do Linux, na segunda vez que acess�-la ou se outra pessoa na rede for acessa-l�, tudo que j� estiver armazenado no espa�o em disco do Proxy ser� enviado ao seu browser sem que o Proxy tenha feito um novo download na internet, economizando tempo e dinheiro.Se instalar apenas um servidor com Proxy conectado via ADSL, sua rede estar� limitada aos servi�os suportados pelo Proxy.Essa solu��o seria inferior, em termos de performance, � proposta neste artigo. Al�m disso, alguns servidores comerciais Proxy funcionam muito mal com p�ginas din�micas tipo ASP, PHP, etc. Portanto, cuidado! � claro que poder� unir as duas coisas : montar seu firewall no Linux e ainda disponibilizar um servidor Proxy Squid para "economizar" e agilizar o acesso para alguns servi�os que o squid suporta. Se voc� n�o possui um servi�o de ADSL na sua regi�o, pode montar esse nosso firewall com uma linha discada e tamb�m instalar o Squid para agilizar o processo, j� que a sua banda ser� bastante limitada com um modem convencional.

2.5 O que � NAT

NAT : Network Address Translation ou tradu��o de endere�o de rede � o processo de tradu��o de endere�os muito encontrado em roteadores. Existem implementa��es em Windows, Linux e Solaris de servidores NAT. O NAT � muito semelhamente, em termos operacionais ao IP Masquerading.Sua �nica limita��o do NAT � requerer um subnet. Com IP Masquerading pode-se utilizar apenas 1 IP v�lido seja ele din�mico ou fixo.

2.6 O que � IP Masquerading

IP Masquerading � uma forma de tradu��o de endere�os como o NAT. Isso significa que o IP Masquerading permite que uma rede ou um host com IP n�o v�lido se comunique com a internet atrav�s de um servidor Linux que "traduz" ou mascara o IP inv�lido com o IP v�lido do servidor.

2.7 O que � IP Forwarding ou Ipfwadm

Ipfwadm � o antecessor do ipchains implementado antes do kernel 2.2.x e basedo na implementa��o da BSD. A solu��o que estamos propondo utiliza o ipchains que � mais moderno, r�pido, seguro e eficiente.

2.8 O que � IPCHAINS

Como Ip forwarding, IPChains � uma ferramenta para filtragem de pacotes. Na internet ou TCP/IP, toda a comunica��o � baseada em troca de pacotes. Por exemplo: se voc� faz um download de um arquivo de 100Kbytes,ir� receber mais de 68 pacotes de 1460 bytes cada.O header (ou cabe�alho) de um pacote cont�m as informa��es que identificam para onde o pacote vai, o endere�o do remetente e o tipo do pacote.O corpo do pacote (body) � onde ficam os dados transportados.O protocolo TPC (que � usado para web, e-mail, logins remotos, etc.) usa o conceito de conex�o antes de enviar qualquer pacote.Os pacotes iniciais de uma comunica��o TCP enviam uma requisi��o de comunica��o e uma confirma��o caso a mesma seja estabelecida. O IPChains � um filtro de pacotes atuando como juiz. IPChains decide, baseado no header do pacote, se ele ser� negado (deny), aceito (accept) ou rejeitado (reject) nesse caso avisando o outro lado que ouve rejei��o.No Linux o processo de filtrar pacotes � incluso no Kernel. IPChains � um ferramenta que permite construir um firewall para decidir o que fazer com os pacotes que s�o transmitidos e recebidos trabalhando em conjunto com o Kernel. IPChains � um pacote que pode ser obtido gratuitamente, via internet, ou j� deve estar incluso na sua distribui��o Linux. Se o seu Linux � baseado em RPM, como o Red Hat, Conectiva, Timpanogas, Mandrake ,etc, digite o comando "rpm -ql ipchains" para verificar se o pacote IpChains foi instalado. Se o seu IPChains j� est� instalado, verifique a sua vers�o digitando o comando "/sbin/ipchains --version". O ideal � utilizar a vers�o 1.39 ou uma superior a ela.

2.9 Funcionamento do IPChains

A maneira mais f�cil de entender esse funcionamento � colocar alguns exemplos e explica-los. Al�m disso, providenciamos um guia de refer�ncia r�pida,por meio da tabela 2.1,exposta a seguir.

Exemplo :

/sbin/ipchains -A forward -j MASQ -i eth0 -s 192.168.0.0/24 -d 0.0.0.0

Explica��es :

-A forward = adiciona regra de encaminhamento;

-j MASQ = pol�tica de mascarar o IP com o IP do servidor;

-i eth0 = pela interface eth0;

-s 192.168.0.0/24 = que tenha origem na rede 192.168.0.0 de subnet 255.255.255.0;

-d 0.0.0.0 = destino a internet.

O que essa regra faz � mascarar todos os pacotes provenientes da rede 192.168.0.0 com o IP da eth0 encaminhando-os � internet.

Exemplo 2 :

/sbin/ipchains -A input -s 0.0.0.0/32 0:7000 -j DENY

Explica��es :

O que o exemplo 2 faz � negar toda a entrada de pacotes origin�rios da internet nas portas 0 a 7000.

-A input = adiciona regra de entrada

-s 0.0.0.0/32 origem (source) = determina a origem, nessa caso a internet com subnet 255.255.255.255 ou /32 (32 bits).

0:7000 = especifica todas as portas entre 0 e 7000

-j DENY = pol�tica de DENY, ou seja negar.

Exemplo 3 :

/sbin/ipchains -A input -s 0.0.0.0/32 80 -p TCP -i eth1 -j ACCEPT -l

Explica��es :

Esse exemplo � mais completo por especificar a interface eth1 e o protocolo TCP. Nesse caso conex�es provenientes da internet na porta 80 , protocolo TCP para interface eth1 s�o aceitos. Al�m disso ser�o logados atrav�s do parametro -l.

-A input = adiciona regra de entrada

-s 0.0.0.0/32 origem (source) = determina a origem, nessa caso a internet com subnet 255.255.255.255 ou /32 (32 bits).

80 = especifica porta 80, ou seja a porta que geralmente utiliza-se http.

-p TCP = apenas para o protocolo TCP.

-i eth1 = na interface especificada eth1.

-j ACCEPT = pol�tica de aceita��o.

-l = logar atividade.

Exemplo 4 :

/sbin/ipchains -A output -d 0.0.0.0/32 4444 -j DENY -l

Explica��es :

Esse exemplo bloqueia toda a sa�da da sua rede para a internet que esteja usando a porta 4444.

-A output = adiciona regra de sa�da.

-d 0.0.0.0/32 = destino internet.

4444 = porta 4444.

-j DENY = pol�tica de DENY (negar).

-l = logar atividade.

O exemplo 4 � util para quando n�o se quer que os funcion�rios utilizem servi�os como Napster, ICQ, jogos ou outros tipos de jogos. � importante conhecer a porta do servi�o e tamb�m conhecer seu protocolo.

Veja mais exemplos e seu coment�rios no script rc.firewall.

Tabela 2.1 IP Chains Referencia Rapida

Built-in Chains

ipchains fornece 3 built-in-chains.
Todos os pacotes come�am com uma dessas chains e,dependendo das regras, pode terminar passando por todas as 3.

input   Pacotes chegando atrav�s de um
        network device na sua m�quina de
        uma origem externa. Pacotes gerados
        localmente v�m sempre do loopback
        device ou "lo".

forward Pacotes que apenas est�o passando
        pela sua m�quina ou redirecionados.
        Se tanto o destino quanto a origem
        do pacote s�o remotos o pacote �
        enviado para o forwarding firewall.

output  Pacotes deixando a sua m�quina sob um
        network device para uma origem
        externa.Ou, se enviado para o
        loopback device, o pacote reaparece
        na chain de input.

Criando e destruindo chains

Chain (ou corrente em portugu�s) especifica o nome da chain.
Pode ter at� 8 letras de comprimento e, para previnir conflitos com poss�veis
buit-in target names futuros, deve conter pelo menos 1 letra min�scula.

-N Chain      Cria uma nova chain definida
              pelo usu�rio.

-X [chain]    Deleta uma chain vazia definida
              pelo usu�rio, ou todas as
              chains definidas pelo usu�rio.
              Todas as regras referentes a

              uma chain definida pelo usu�rio
              deve ser deletada antes
              da chain definida pelo usu�rio.

Adicionando ou removendo regras

-v (verbose): Quando usado com o seguinte grupo de comandos, ir� fazer
com que a regra seja ecoada para o stdout.

[Regra], como especificada na linha de comando, consiste em nenhum ou
mais predicados seguidos por nenhuma ou mais a��es. Predicados e a��es
estao listados a seguir.

[Indice] � usado para especificar uma regra de acordo com a sua posi��o na
chain. A primeira regra numa chain tem o �ndice 1.

-A [-v] [Regra]   Adiciona uma regra a chain

-D [-v] [Indice]  Deleta uma regra na chain pela posi��o [Indice].
-D [-v] [Regra]   Deleta primeira regra na chain que contenha a [Regra].

-F [chain]        Descarta todas as regras da chain (ou todas as chains).
                  Equivalente a deletar todas as regras uma a uma.

-I [-v] [Indice Regra]  Insere [Regra] na chain precedendo a regra de �ndice
                        [Indice]. Portanto, se o �ndice e 1, a regra inserida
                        fica sendo a primeira regra na chain.
                 
-R [-v] [Indice regra]  Substitui (replace) a regra no �ndice [Indice] na chain
                        com a regra [Regra].

Targets (Alvos)

Cada regra tem um alvo que determina o que fazer com um pacote quando enquadrado.
Se um pacote chega ao final de uma chain sem se enquadrar em nenhuma das regras,
a pol�tica de target padr�o (default) da chain � usada.
Essas s�o as pol�ticas.

ACCEPT      Permite que o pacote passe atraves do firewall

REJECT      Rejeita o pacote. Se n�o for um pacote ICMP, envia
            um reply ICMP Host Unreachable para o remetente.
           
DENY        n�o aceitar o pacote, n�o responder (reply).
            Simplesmente ignora o remetente.

MASQ        (para chain forward apenas).Deixa o pacote passar, por�m
            mascara ele. Substitui o remetente do pacote pelo endere�o
            local e substitui a porta de origem no cabecalho com o n�mero
            tempor�rio gerado localmente.
           
REDIRECT    (para chain input apenas. Envia o pacote a um soquete local ou
            processa. Pode ser usado com pacotes TCP e UDP em chains de input
            ou chains definidas pelo usu�rio.
           
RETURN      Equivalente a ignorar as demais chains, podendo chamar uma
            pol�tica de target built-in ou retornar a uma chain do usu�rio.
            Seria o equivalente ao return dentro de uma fun��o em C.        
           
(no target
especified) O byte da regra e o contador do pacote ser�o incrementados, por�m
            o pacote ser� passado para a proxima regra na chain mesmo se for
            enquadrado nessa regra. Normalmente utilizado para contabilidade.

Se um target for usado incorretamente (MASQ de uma input chain por exemplo),
o pacote ser� descartado e uma mensagem ser� enviada ao log do sistema, syslog.

Comandos de Masquerading

-M L [-v]   Lista as coneccoes de masquerading correntes.
            -v ira fazer com que as informa��es relecionadas
            aos n�meros da sequencia delta sejam descartadas
            tambem.
           
-M -S tcp   Configura os valores de timeout de masquerading.
tcpfin udp  Os parametros especificam o timeout em segundos
            para sessoes TCP (tcp), sessoes apos recepcao do
            pacote FIN (tcpfin), e pacotes UDP respectivamente.
            Um timeout de 0 ira manter os timeouts anteriores.
            Os Defaults sao 15,2 e 5 minutos.
           
Informa��o

-h          Imprime um sum�rio dos comandos

-h icmp     Lista nomes ICMP conhecidos a ipchains
           
--version   Informa a vers�o do ipchains.

Utilit�rios Chain

-P chain    Troca a pol�tica de uma chain built-in para [target].
   target   [target] precisa ser ACCEPT, DENY, REJECT ou MASQ para
           
chains forward. Nenhum outro tipo de target pode ser
            usado como pol�tica built-in de uma chain.
           
-Z [-L]     Zerar o byte do pacote e os contadores na chain (ou
            todas as chains).-Z pode ser usado em combina��o
            com -L para leitura de contadores e depois apaga-los
            , assegurando que nenhum pacote n�o prosseguir� como
            n�o contabilizado. No entanto, ao fazer isso, voc�
            deve zerar todas as suas chains. voc� n�o pode
            zerar automaticamente e listar uma unica chain.
           
-L [-vxn]   Lista as regras numa chain (ou todas as chains).
[chain]     -v especifica modo verbose, -x expande os n�meros
            (mostra valores sem as abrevia��es K, M, e G),
            -n faz o ipchains imprimir IPs numericos ao inves
            de fazer lookups de nomes. Pode ser usado com -Z
            acima.
           
-C [-v]     Testa um pacote numa chain. pkt e formado como se fosse
chain pkt   uma regra exceto pelo fato de conter pelo menos -s, -d, -p
            (precisa ter um protocolo especificado, n�o pode ser
            generico), e a flag -i (ao menos que -f seja usado para
            criar um fragmento). -v faz com que um trace do caminho
            do pacote seja impresso no stdout.
           
A��es

-j target   Pula para (jump-to), especifica o target a ser chamado
[port]      quando a regra combinar.Target pode ser uma das listas
            acima, ou o nome de uma chain definida pelo usu�rio.
            voc� n�o pode pular para uma chain built-in.
            para facilitar pense assim -j [pol�tica] ou
            -j [target].
           
-l          Faz com que os pacotes que combinarem com a regra
            sejam logados no syslog.Muito cuidado com isso porque
            pode fazer seu arquivo de log crescer alem da capacidade
            do seu disco.
           
-m [valor]  n�mero a marcar no pacote. Usado em conjunto com a
            implementacao do Servico de Qualidade nos kernels 2.1.
            Se [valor] comecar com + ou -, entao o valor ser� somado
            ou subtraido to valor marcado no pacote, e n�o substituindo-o.
           
-o [tam maximo]   Copia o pacote para o device do espaco do usu�rio.
            [tm maximo] limita o n�meros de bytes a serem copiados.
           
-t and xor  Muda o bit do tipo de servico do pacote
           
(TOS - Type Of Service). O TOS do pacote ser� ANDed com and e
            depois XORed com xor. Os dois parametros sao valores de 8-bits
            hexadecimais.A RFC1349 especifica que o LSB do campo TOS n�o
            pode ser alterado, portanto ipchains ira recusar qualquer
            regras que violem isso.a RFC1349 tambem especifica que apenas
            1 bit no campo TOS pode ser alterado por vez.Regras que
            alterarem mais de 1 bit por vez ser�o aceitas mas um aviso ser�
            enviado para o stdout.
           
Predicados

-p [!]      Especifica um protocolo. Pode ser um nome do protocolo como
protocolo   TCP, UDP, ICMP ou ALL (para todos) (n�o importa letras
            maiusculas ou minusculas), ou o n�mero IP do protocolo sendo
            0 para todos. Exemplo, 22 ou ssh podem ser usados para ssh.
            A lista dos protocolos podem ser encontradas no arquivo
            /etc/services.O simbolo [!] significa NOT. Ou seja ! ssh.
            Para, n�o a SSH.
           
-s [!] end  O endere�o de origem a ser combinado ou [!] para NOT esse
            endere�o. -s significa SOURCE (origem). Onde [end] e o
           
endere�o ip (address). Por exemplo 192.168.0.10.
           
-d [!] end  O endere�o de destino a ser combinado ou [!] para NOT esse
            endere�o. -d significa DESTINATION (destino). Onde [end] e o
           
endere�o ip (address). Por exemplo 192.168.0.10.
           
            Obs. Tanto o endere�o -s quanto -d podem ser especificados
            pelo nome (por exemplo, localhost, www.conectiva.com.br) ou
            o IP, por exemplo 192.168.0.10. Para um endere�o IP, voc�
            pode significar o quanto da rede ou endere�o e significativa
            especificando a netmask.
            Por exemplo :
            As duas nota��es sao validas :
            192.168.0.10/255.255.255.0 ou
            192.168.0.10/24 (sendo 24 equivale a uma subnet de 24 bits,
            ou seja 255.255.255.0). Nessa caso estamos falando de
            todos os endere�os entre 192.168.0.0 ate 192.168.0.255.
            Ou seja, a subnet inteira.
           
[[!] porta] Quando usado com protocolos TCP ou UDP, por exemplo :
            -p tcp ou -p udp, uma porta ou intervalo de portas
            podem ser especificados.Simplesmente especifique o n�mero
            da porta ou o nome. Por exemplo 80 ou www. Um intervalo
            pode ser determinado usando um : entre a porta menor
            e a porta maior. Exemplo 0:65535.
           
[!] -y      Quando utilizado com o protocolo TCP, especifica pacotes SYN
            do TCP apanes.Ira combinar com pacotes TCP requisitando uma
            coneccao TCP.

[!] -f      Combina o segundo ate o ultimo fragmento de um pacote
            fragmentado. Nenhuma porta pode ser especificada quando
            o flag -f e utilizado.
           
-i [!] nome Especifica a interface de rede pelo nome (de acordo com o
            nome listado no comando ifconfig).A interface de input
            e' a interface por onde entram os pacotes, a interface
            de forward e output sao as interfaces por onde os pacotes
            saem.Um nome de interface terminado com + ira combinar
            com todas as interfaces daquele tipo. Por exemplo eth+
            para : eth0, eth1, eth2 etc. ppp+ para ppp0, ppp1, etc.
            Pode-se especificar um interface que n�o existe no seu sistema
            ou n�o esta ativa, por exemplo ppp1. Nenhum pacote ira
            combinar com a regra ate que a interface ppp1 esteja ativa.
           
-b          Bidirecional, is vai fazer com que a regra funcione n�o importa
            qual seja a direcao do pacote.E equivalente a repetir a regra
            invertendo o endere�o de origem (-s) e destino (-d). Na
            verdade, seria como inserir duas regras em 1 so.
            Talvez, para n�o confundir seja melhor declarar as duas regras
            a declarar apenas 1.
           
            obs. A exclamacao ! significa NOT. Por exemplo
            "! -s 162.168.0.11" ira combinar com qualquer pacote menos
            1 originado em 162.168.0.11. A mesma regra pode ser usada para
            portas, protocolo, interface e demais predicados acima com essa
            opcao descriminada.

2.10 Esquema da rede

A figura 2.1 ilustra um modelo da rede de acordo com a solu��o deste artigo. O firewall Linux possui 3 interfaces : a eth0 est� ligada diretamente ao modem ADSL, a eth1 est� conectada ao switch da rede 1 que possui os servidores e est� conectada ao link dedicado; na rede 2 est�o os desktops e workstations.

Figura 2.1 - Topologia da rede

Modelo da rede

2.11 Gateways

O Firewall Linux est� conectado � internet via modem ADSL.Para a rede 2, o IP da eth2 do Linux � o gateway dessa rede. No caso da rede 1, h� dois gateways : o default � o roteador e o segundo � o Firewall Linux. Para o Firewall Linux, o gateway � o primeiro endere�o v�lido da subnet do ADSL fornecido pela operadora.

3.0 Instala��o do hardware

3.1 Instala��o do Modem ADSL

Nesta sec��o iremos explicar como foi efetuada a instala��o da m�quina Linux e do ADSL.

O modem ADSL, um SpeedStream 5600 da Efficient Networks, vem acompanhado de 2 cabos par tran�ado e uma fonte de energia externa. O manual n�o nos foi fornecido, mas o obtivemos na internet. O cabo que liga o SpeedStream 5660 direto na interface eth0 do Firewall Linux deve ser paralelo, ou seja, os dois conectores RJ-45 devem ser climpados na mesma seq��ncia. Se voc� pretende ligar o seu ADSL direto num Hub ou switch, ter� de usar um cabo cross. O esquema de climpagem do cabo par tran�ado est� ilustrado na figura 3.11. O ideal � utilizar cabo categoria 5.No nosso caso foi utilizado o da Lucent Technologies (uma divis�o da AT&T) e confecionados mais dois cabos adicionais para conecta-los ao Hub da rede 2 e ao switch da rede 1.

Figura 3.11 - Esquema de climpagem padr�o EIATIA-568A

EIATIA-568A

Figura 3.12 - Exemplo de conector RJ-45 climpado

RJ45

Figura 3.13 - Ferramentas para climpar

Ferramentas

A operadora (Telefonica) instalou uma pequena caixa DSL (Figura 3.14) com 3 sa�das RJ-11, 2 para voz (Voice 1 e Voice 2) e outra para dados (data) que ser� ligada direto na entrada RJ-11 do modem ADSL. H� tamb�m uma entrada para a linha (line). A linha telef�nica convertida para ADSL deve ser conectada nessa caixa DSL no conector de entrada line.

Figura 3.14 - Caixa DSL

Caixa DSL

Figura 3.15 - Modem ADSL

Modem ADSL

No modem, ligados o cabo telefonico (RJ-11) conectado na entrada da linha cuja ponta est� conectada na sa�da (data) da caixa DSL.  Conectamos o par tran�ado RJ-45 na entrada e-net e a outra ponta na eth0 do Firewall Linux.

3.2 M�quina para Firewall Linux

O hardware necess�rio para se montar um Linux Firewall n�o � muito dif�cil de conseguir e nem � necess�rio adquirir algo caro para isso.

A m�quina que utilizamos foi um Pentium 133MHz com 64mb de RAM, 1.2Gb de disco, um interface de v�deo Diammond 4Mb e 3 NICs com chipset RTL8139C de 10/100Mbps custando estes �ltimos R$ 35,00 cada.

� poss�vel fazer o mesmo com um 486, 16Mb de RAM (aconselhamos 32mb) e um HD de pouca capacidade. A distribui��o do Linux utilizada � a Red Hat, mas pode-se utilizar Conectiva, Mandrake, Timpanogas, SuSe, Slackware, etc.

Figura 3.21 - Pentium 133MHz com 3NICs, 1.2Gb de disco e 64MB RAM

Roteador1.JPG (71529 bytes)

Figura 3.22 -Vista traseira

Roteador2.JPG (58289 bytes)

Figura 3.23 - Em opera��o com o script de Firewall carregado

Roteador3.JPG (81877 bytes)

 

4.0 Configura��o do Firewall Linux

Esta se��o descreve como configurar a parte de rede, montar o script e criar os scripts de inicializa��o do Firewall. Por uma quest�o de ilustra��o, iremos adotar IPs reservados para descrever os endere�os referentes ao ADSL que naturalmente n�o s�o esses.

4.1 redes, subnets, gateways e IPs

A rede e subnet ADSL ser� 192.168.0/26;o IP na eth0 � 192.168.0.13 e o default gateway 192.168.0.1. A rede interna 1 e subnet ser� 192.168.1.0/24 onde 192.168.1.1 � o IP na eth1. A rede interna 2 e a subnet ser�o 192.168.2.0/24 onde 192.168.2.20 � o IP na eth2. Para os hosts da rede interna 1 o IP da eth1 ser� o gateway; para os hosts da rede interna 2 o IP da eth2 ser� um dos gateways.

4.2 Configurando eth0, eth1, eth2, default gateway e DNS.

Pode-se utilizar o Linuxconf para configurar suas NICs ou faz�-lo manualmente editando os arquivos ifcfg-eth* no diret�rio /etc/sysconfig/network-scripts/ e o arquivo /etc/sysconfig/network.

� necess�rio informar os endere�os dos servidores DNS de seu provedor para poder resolver o endere�o de sites como www.pecas-on-line.com.br. Para configurar os servidores DNS, edite o arquivo /etc/resolv.conf e informe o IP do master e secondary DNS servers fornecidos pelo seu provedor.

tabela 4.1 - configura��o das NICs, gateway e endere�os dos servidores DNS

arquivo /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
IPADDR="192.168.0.13"
NETMASK="255.255.255.192"
ONBOOT="yes"
BOOTPROTO="none"
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
IPXACTIVE_802_2="no"
IPXNETNUM_802_3=""
IPXPRIMARY_802_3="no"
IPXACTIVE_802_3="no"
IPXNETNUM_ETHERII=""
IPXPRIMARY_ETHERII="no"
IPXACTIVE_ETHERII="no"
IPXNETNUM_SNAP=""
IPXPRIMARY_SNAP="no"
IPXACTIVE_SNAP="no"

arquivo /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE="eth1"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="none"
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
IPXACTIVE_802_2="no"
IPXNETNUM_802_3=""
IPXPRIMARY_802_3="no"
IPXACTIVE_802_3="no"
IPXNETNUM_ETHERII=""
IPXPRIMARY_ETHERII="no"
IPXACTIVE_ETHERII="no"
IPXNETNUM_SNAP=""
IPXPRIMARY_SNAP="no"
IPXACTIVE_SNAP="no"

arquivo /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE="eth2"
IPADDR="192.168.2.20"
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="none"
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
IPXACTIVE_802_2="no"
IPXNETNUM_802_3=""
IPXPRIMARY_802_3="no"
IPXACTIVE_802_3="no"
IPXNETNUM_ETHERII=""
IPXPRIMARY_ETHERII="no"
IPXACTIVE_ETHERII="no"
IPXNETNUM_SNAP=""
IPXPRIMARY_SNAP="no"
IPXACTIVE_SNAP="no"

arquivo /etc/sysconfig/network

NETWORKING=yes
HOSTNAME="speedy"
GATEWAY="192.168.0.1"
GATEWAYDEV="eth0"
FORWARD_IPV4="yes"

arquivo /etc/resolv.conf


nameserver 200.246.248.1
nameserver 200.246.248.10

Ap�s editar os arquivos, reinicialize a rede com o comando "/etc/rc.d/init.d/network restart".

Teste a sua rede "pingando"os outros endere�os pelo firewall. Por exemplo,"ping" o endere�o do gateway do ADSL para verificar que a rede do ADSL est� OK. Ping um endere�o ativo da rede interna 1 para ver se a eth1 est� funcionando devidamente e fa�a o mesmo para a rede 2.

ping -c 15 192.168.0.1 (testa a rede ADSL)
ping -c 15 192.168.1.2 (testa a rede interna 1)
ping -c 15 192.168.2.11 (testa a rede interna 2)

Rode o ifconfig (tabela 4.2) para verificar se a sua rede est� ok.

tabela 4.2 - resultado do ifconfig

eth0 Link encap:Ethernet HWaddr 00:E0:7D:92:72:AF
inet addr:192.168.0.13 Bcast:192.168.0.63 Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:38678 errors:0 dropped:0 overruns:0 frame:0
TX packets:32489 errors:0 dropped:0 overruns:0 carrier:0
collisions:1 txqueuelen:100
Interrupt:11 Base address:0x6200

eth1 Link encap:Ethernet HWaddr 00:E0:7D:92:72:EE
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:48198 errors:0 dropped:0 overruns:0 frame:0
TX packets:46249 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6300

eth2 Link encap:Ethernet HWaddr 00:C0:DF:07:DD:7B
inet addr:192.168.2.20 Bcast:192.168.2.63 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:96398 errors:0 dropped:0 overruns:0 frame:0
TX packets:64799 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:9 Base address:0x6400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

5.0 Script de firewall

Este � o script de firewall (tabela 5.1). Observe os coment�rios para adequ�-los a sua rede e estude as regras de firewall para aprender mais sobre ipchains.

tabela 5.1 - script de firewall /etc/rc.d/rc.firewall

 
#!/bin/sh

# ------------------------------------------------------------------------------
VERSAO="1.02"
ULTALT="Janeiro 2001"
# IPCHAINS FIREWALL por Carlos Fernando Scheidecker Antunes
#                 e-mail [email protected]
#
# Esse firewall possibilita conectividade das suas redes internas 1 e 2 para
# a internet e vice versa com varias medidas de seguranca.
# Alem disso, permite a conectividade entre as duas redes internas.
# Esse script de Firewall e derivado do firewall que construi para rodar
# na empresa usando um ip fixo via ADSL de 256kbps. Esse firewall foi
# montado num servidor Linux usando IPCHAINS com 3 NICs, eth0 conectado
# ao modem ADSL, eth1 conectado a rede interna 1 e eth2 conectado a rede
# interna 2.
#
# Pode ser usado com IP variaveis (fornecidos por DHCP) no caso de
# cable modem ou ip discado normal ao seu provedor.Tudo esta devidamente
# documentado para facilitar de acordo com o seu tipo de acesso.
#
# Esse script e o resultado de pesquisas na internet e estudo de publicacoes
# sobre o assunto.
#
# Condicoes de uso :
#                    Nao me responsabilizo ou dou qualquer garantia com
#                    relacao ao uso desse script.A responsabilidade de
#                    uso do script e TOTAL do usuario sendo que nao irei
#                    me responsabilizar por nenhum dano direto ou
#                    indireto. Use-o sob sua responsabilidade.
#                    Esse script e fornecido gratuitamente e nao me
#                    obriga a fornecer qualquer tipo de assistencia ou
#                    suporte.Fique a vontade para enviar seus comentarios
#                    ou agradecimentos por e-mail.
#
# A configuracao abaixo e voltada para uso com DSL com caracteristicas :
#
#  a) A interface externa, conectada ao DSL e a " eth0"
#  b) O endereco IP externo e fixo, IP da eth0
#  c) A rede interna 1 e acessivel via "eth1"
#  d) A rede interna 2 e acessivel via "eth2"
#  e) Os enderecos das redes internas estao dentro dos limites
#     de rede privada segundo a RFC1918.
#     Rede interna 1 : 192.168.1.0/24
#     Rede interna 2 : 192.168.2.0/24
#  f) Por uma questao de protecao, estaremos usando
#     endereco da rede externa como sendo 192.168.0.0/26 (reservado)
#     Altere o endereco de acordo com os IPs validos fornecidos pelo
#     seu provedor.
#  Recomendacoes :
#    - Utilizar Kernel maior ou igual a 2.2.16. Versoes anterioes
#      possuem bugs de seguranca que podem comprometer seu sistema.
#      Para saber qual e a sua versao utilize o comando "uname -r".
#-----------------------------------------------------------------------
# Para utilizar ou modificar o script para adequar ao seu uso voce
# precisa, basicamente, alterar as seguintes variaveis :
#    EXTIF    = Interface externa, eth0 no meu caso mas pode ser ppp0 no seu.
#    EXTIP    = IP da interface externa, caso seja fixo. Para ip variavel veja
#                comentarios abaixo.
#    EXTBROAD = Endereco de BroadCast da rede externa, pode ser obtido rodando
#                ifconfig. O endereco de BroadCast e o ultimo endereco IP de
#               uma subnet.Especificar esse endereco apenas se seu ip for
#                fixo.
#    EXTGW    = Endereco do gateway da rede externa. Deve ser obtido com
#               seu provedor ou via script abaixo.
# Rede Interna 1
#    INTIF    = Interface interna 1, eth1 no meu caso
#    INTIP    = IP da interface interna 1
#    INTLAN   = Endereco da rede interna 1 com subnet mask
# Rede Interna 2
#    INTIF2   = Interface interna 2, eth2 no meu caso
#    INTIP2   = IP da interface interna 2
#    INTLAN2  = Endereco da rede interna 2 com subnet mask
#--------------------------------------------------------------------

#********************************************************************
# Inicializando
#********************************************************************
echo -e "\n\nCarregando IPCHAINS Firewall $VERSAO de $ULTALT"
echo "----------------------------------------------------------------------"

#--------------------------------------------------------------------
# Declaracao de variaveis
#--------------------------------------------------------------------

# Interface e enderco de loopback
#
LOOPBACKIF="lo"
LOOPBACKIP="127.0.0.1"

# Interface Externa. 
#
# Para usuarios de PPP a interface externa deve ser algo como ppp0.
# Para usuarios com mais de um modem, ou interface ppp veja codigo
# abaixo. O firewall deve ser executado depois do script
# /etc/ppp/ip-up.
#
#if [ "x$1" != "x" ]; then
#   EXTIF=$1
#else
#   EXTIF="ippp0"
#fi
#
# Interface Externa
EXTIF="eth0"

# Verificar se a interface externa esta habilitada :
if ! /sbin/ifconfig | grep $EXTIF > /dev/null; then
  echo -e "\n\nInterface Externa nao esta habilitada.Abortando."
  exit 1;
fi
echo Interface Externa: $EXTIF

# IP da interface externa :
#    A maioria dos acessos discados ppp atribui enderecos dinamicos
#    ao modem.
# Para usuarios de cable modem :
#    No caso de cable modems, alguns provedores utilizam DHCP e
#    alteram seu endereco de IP pelo menos uma vez ao dia. Nesse
#    caso, crie um script para parar e reinicializar o seu firewall
#    e programe-o atraves do crond.
# No caso de IPs dinamicos e necessario colocar uma regra no firewall
# para entender/obter o novo endereco IP toda vez que um novo IP for
# fornecido pelo provedor. Especialmente util para usuarios de cable modem.
# Utilize o DHCPd editando o arquivo ifup em /sbin. Veja man pages.
#
# Script para obter o endereco da interface externa em caso de ip dinamico :
#
# EXTIP=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`
#
#if [ "$EXTIP" = '' ]; then
#   echo "Abortando.Nao foi possivel determinar o IP da $EXTIF .Problema de DHCP ou PPP?"
#   exit 1
#fi
# Rede Externa
EXTIP="192.168.0.13"
echo IP Externo: $EXTIP

# Funcao para obter o Endereco do broadcast da rede externa
#            "apenas para IPs dinamicos"
#
#EXTBROAD=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $3) ; print $3 }'`
#
# Rede Externa
EXTBROAD="192.168.0.63"
echo BroadCast Externo: $EXTBROAD

# Funcao para obter Gateway da rede Externa
#
#EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'`
# Rede Externa
EXTGW="192.168.0.1"
echo Default GW: $EXTGW

echo " --- "

# Interface Interna 1.
INTIF="eth1"
echo Interface Interna 1: $INTIF

# IP da interface interna 1
INTIP="192.168.1.1"
echo IP Interno 1: $INTIP

# IP e subnet mask da rede interna 1
INTLAN="192.168.1.0/24"
echo Rede Interna 1: $INTLAN

echo " --- "

# Interface Interna 2.
INTIF2="eth2"
echo Interface Interna 2: $INTIF2

# IP da interface interna 2
INTIP2="192.168.2.20"
echo IP Interno 2: $INTIP2

# IP e subnet mask da rede interna 2
INTLAN2="192.168.2.0/24"
echo Rede Interna 2: $INTLAN2

echo " --- "

# IP e mascara para todos os enderecos internet
UNIVERSE="0.0.0.0/0"

# Mascara de IP para todas as transmissoes de broadcast
BROADCAST="255.255.255.255"

# Portas IP altas nao privilegiadas.
UNPRIVPORTS="1024:65535"

# Portas do sistema X Windows (TCP).
XWINDOWS_PORTS="6000:6010"        


# Caso voce precise especificar uma lista de hosts externos
# permitidos ou uma lista de subnets permitidas.
#
# Caso voce deseje permitir uma rede inteira, basta colocar
# o ultimo octeto com .0 e a subnet mask. Por exemplo :
#
#                        HOSTSEG="200.204.0.0/26"
#
#HOSTSEG="200.204.0.40"
#echo Host Seguro 1 IP: $HOSTSEG
#HOSTSEG2="200.204.0.41"
#echo Host Seguro 2 IP: $HOSTSEG2
#HOSTSEG3="200.204.0.42"
#echo Host Seguro 3 IP: $HOSTSEG3
#HOSTSEG2="200.204.0.43"
#echo Host Seguro 4 IP: $HOSTSEG4

# Enderecos IP para Port Forwarding
#
# Port forwarding, habilita trafico externo a conectar diretamente a sua
# maquina mascarada interna, acessivel apenas na rede interna.
# Uma aplicacao seria o acesso a um servidor FTP protegido atras de uma
# mascara. Variaveis PORTFW, descomentar se for necessario.
#
#PORTFWIP1="192.168.1.20"
#echo IP PortForward 1 : $PORTFWIP1
#PORTFWIP2="192.168.2.12"
#echo IP PortForward 2 : $PORTFWIP2
#PORTFWIP3="192.168.1.21"
#echo IP PortForward 3 : $PORTFWIP3


# TCP/IP addresses of INTENRAL hosts network allowed to directly
#       connect to the Linux server.  All internal hosts are allowed
#       per default.
# Enderecos da rede interna que terao acesso a esse firewall. O padrao e
# todos os hosts da rede interna estao habilitados.
#
# Coloque o IP e crie variaveis com nomenclatura HOST<rede><numero>IP
#
#HOST11IP="192.168.1.10"
#echo IP do Host Interno 1 da rede 1 : $HOST11IP
#HOST21IP="192.168.2.10"
#echo IP do Host Interno 1 da rede 2 : $HOST21IP

# Log do sistema firewall.
#
# Descomenta a linha " " e comente a -"l" para desabilitar o log.
#
# O arquivo de log pode ser encontrado no arquivo /var/log/messages.
# Caso voce so queria o log em algumas regras, simplesmente apague
# "$LOGGING" nas regras que nao deseja logar.
#
# LOGGING=" "
LOGGING="-l"

echo " --- "

echo "----------------------------------------------------------------------"

#--------------------------------------------------------------------
# Seccao de Debug do Firewall
#--------------------------------------------------------------------
# Se voce esta tendo problemas com seu firewall, descomente as linhas
# abaixo e reinicialize seu script.
#
# O arquivo de debug encontra-se em /tmp/rc.firewall.dump
#--------------------------------------------------------------------
#
#echo "  - Debugging."
#echo IP de Loopback : $LOOPBACKIP > /tmp/rc.firewall.dump
#echo Nome da interface de Loopback : $LOOPBACKIF >> /tmp/rc.firewall.dump
#echo Nome da interface interna 1 : $INTIF >> /tmp/rc.firewall.dump
#echo IP da interface interna 1 : $INTIP >> /tmp/rc.firewall.dump
#echo Endereco da rede interna 1 : $INTLAN >> /tmp/rc.firewall.dump
#echo Nome da interface interna 2 : $INTIF2 >> /tmp/rc.firewall.dump
#echo IP da interface interna 2 : $INTIP2 >> /tmp/rc.firewall.dump
#echo Endereco da rede interna 2 : $INTLAN2 >> /tmp/rc.firewall.dump
#echo ----------------------------------------------------- >> /tmp/rc.firewall.dump
#echo Nome da interface Externa : $EXTIF >> /tmp/rc.firewall.dump
#echo IP da interface Externa : $EXTIP >> /tmp/rc.firewall.dump
#echo IP de broadcast da interface Externa : $EXTBROAD >> /tmp/rc.firewall.dump
#echo IP do default gateway da Interface Externa : $EXTGW >> /tmp/rc.firewall.dump
#echo ----------------------------------------------------- >> /tmp/rc.firewall.dump
# Liste os HOSTSEG, Hosts seguros
#echo Host Externo segruo : $HOSTSEG >> /tmp/rc.firewall.dump

#--------------------------------------------------------------------
# Geral
#--------------------------------------------------------------------
# Efetua processamentos gerais como configurar a rota de multicast
# e hackeamento de endereco DHCP.
#
# Multicast serve para transmitir dados para aplicacoes multimidia.
# Opcao de Multicast e opcional.
#
#echo "  - Adicionando rota de multicast."
#/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev $EXTIF


# Desabilitando ataques de IP Spoofing.
#
#
echo "  - Desabilitando ataques de IP Spoofing."
for file in /proc/sys/net/ipv4/conf/*/rp_filter
do
 echo "2" > $file
done

# Descomente se estiver usando um endereco dinamico
#*
#echo "  - Habilitando hackeamento de endereco TCP/IP dinamico."
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# Habilitando protecao a Cookie TCP SYN
#
echo "  - Habilitando protecao a Cookie TCP SYN."
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Certifique que as configuracoes de diversos ICMP sanity estao presentes.
#
echo "  - Habilitando configuracoes de ICMP."
 
# Desabilitando protecao a echo de broadcast ICMP.
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 
# Habilitando protecao a mensagem de "bad error"
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
 
# Desabilitando redirecionamentos de ICMP
for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do 
  echo "0" > $file
done
#

# Certifique que pacotes roteados na origem foram descartados
# Se estiver rodando IPROUTE2, sera necessario desabilitar isso.
#
echo "  - Certifique que pacotes roteados na origem foram descartados "
for file in /proc/sys/net/ipv4/conf/*/accept_source_route; do 
   echo "0" > $file
done

# Logar pacotes spoofed, roteados na origem ou redirecionados.
#
echo "  - Logar pacotes spoofed, roteados na origem ou redirecionados "
for file in /proc/sys/net/ipv4/conf/*/log_martians; do 
  echo "1" > $file
done

#--------------------------------------------------------------------
# Configuracoes de Tipo de Servico (TOS - Type of Service)
#--------------------------------------------------------------------
# Voce pode dizer a internet como lidar com o seu trafico.
#
#       -t 0x01 0x10 = Delay Minimo
#       -t 0x01 0x08 = Throughput Maximo
#       -t 0x01 0x04 = Confiabilidade Maxima
#       -t 0x01 0x02 = Custo Minimo
#
# Por exemplo :
#
# Configuracao para FTP, SSH e TELNET
# /sbin/ipchains -A output -p tcp -d 0/0 21:23  -t 0x01 0x10
#
# Configuracao para Web WWW
# /sbin/ipchains -A output -p tcp -d 0/0 80 -t 0x01 0x10


#--------------------------------------------------------------------
# Timeouts de Masquerading
#--------------------------------------------------------------------
# Determinar valores de timeout para a sessao de masquerading.
#
# Explicacao : 7200 = 7200 segundos (2 hrs) para sessoes TCP
#              10    = 10 segundos para trafico TCP/IP apos recebimento
#                      do pacote "FIN"
#              60    = 60 segundos para timeout do trafico UDP
# Para usuarios de ICQ aumente o valor para trafico UDP para 180 segundos
#   
echo "  - Alterando timeouts de IP masquerading."
/sbin/ipchains -M -S 7200 10 60

#--------------------------------------------------------------------
# Modulos de Masquerading
#--------------------------------------------------------------------
# A maioria de aplicativos TCP/IP funcionam bem atras de um servidor
# IP masquerading Linux. Alguns aplicativos precisam de modulos
# especiais para gerenciar o trafico de entrada e saida devidamente.
# Apenas descomente os modulos que ira efetivamente utilizar.
# O modulo FTP sera carregado.
#
# Verifique os modulos presentes no seu sistema no diretorio
# /lib/modules/<versao do seu kernel>/ipv4/
#--------------------------------------------------------------------
echo "  - Carregando modulos de masquerading."

#/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
#/sbin/modprobe ip_masq_irc
#/sbin/modprobe ip_masq_quake
#/sbin/modprobe ip_masq_raudio
#/sbin/modprobe ip_masq_vdolive
#/sbin/modprobe ip_masq_icq


#--------------------------------------------------------------------
# Politicas default
#--------------------------------------------------------------------
# Configure todas as politicas default (padrao) para REJEITAR (REJECT)
# e descarte todas as regras antigas.
#--------------------------------------------------------------------

# Alterar politicas padrao para rejeitar REJECT
#
# Fazemos isso para, posteriormente, permitir qual o trafico que iremos
# permitir para OUT (saida) e In (entrada). Qualquer outro tipo de trafico,
# a nao ser que seja especificamente determinado, sera bloqueado.
#
echo "  - Configurar politicas padrao para REJECT"
/sbin/ipchains -P input REJECT
/sbin/ipchains -P output REJECT
/sbin/ipchains -P forward REJECT

echo "  - Descartar todas as regras antigas e configurar todas as "
echo "    politicas default para REJECT."
#
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward


#********************************************************************
# Regras de entrada (input)
#********************************************************************
echo "----------------------------------------------------------------------"
echo "Regras de Entrada (Input) : "

#--------------------------------------------------------------------
# Trafico de entrada na rede Interna
#--------------------------------------------------------------------
# Essa parte controla o fluxo do trafico de entrada (input) dentro
# da rede interna.
# Todo o trafico da rede local e valido.
# Se voce precisar controlar qual trafico e permitido tera que configurar
# linhas individuais com ACCEPT para cada endereco IP.
#
# Voce pode desejar permitir apenas trafico numa direcao mas nao na contraria.
# Uma aplicacao seria permitir acesso a um servidor Web externo mas nao o
# acesso proveniente desse servidor. O correto e usar a flag -y.
#--------------------------------------------------------------------
echo "  - Determinar filtros de trafico de entrada (INPUT) na rede interna."

# Servidor DHCP
#
# Se voce configurou um servidor DHCP na sua maquina Linux para servir
# enderecos IP a rede interna, voce tera que habilitar essa seccao.
#
# Esse e um exemplo de como permitir o fluxo do trafico de entrada na
# rede interna.
#
# echo "       Parametro Opcional : Servidor DHCPd"
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p udp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p udp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps


#--------------------------------------------------------------------
# Acesso explicito a partir dos hosts da rede interna.
#--------------------------------------------------------------------
# Esse e um exemplo de como permitir apenas que hosts especificos
# na rede interna possam acessar os servicos de firewall.
#
# Exemplos de permissao para acesso de FTP, dados de FTP, SSH e TELNET.
#--------------------------------------------------------------------
#echo "  - Configurando flitros de input para hosts especificos na rede interna."

# Host1 : Permita que o ip do host interno $HOST11IP conecte ao servidor linux
#
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP telnet
# mesma coisa para rede 2 dentro da rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP telnet

# Host2 : Permita que o ip do host interno $HOST12IP conecte ao servidor linux
#
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP telnet
# mesma coisa para rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP telnet

#--------------------------------------------------------------------
# Trafico proveniente da interface externa
#--------------------------------------------------------------------
# Essa regra ira controlar o trafico especifico cuja entrada e permitida
# proveniente da interface externa.
#
#--------------------------------------------------------------------
#
echo "  - Configurando filtro de entrada para trafico proveniente da interface externa."

# Clientes de DHCP.
#
# Se seu provedor nao lhe designou um IP fixo, seu IP e dinamico.
# Portanto, voce tera que habilitar as linhas abaixo. Geralmente para
# usuarios de cable modem ou modems convencionais essa e a situacao.
#*
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootps -d $BROADCAST/0   bootpc
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootps -d $BROADCAST/0   bootpc

# FTP : Pemite usuarios externos (da internet) conectar ao seu servidor linux
#       para servicos FTP.
#
# echo "       Parametro opcional : Servidor FTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp-data

# IRC : Permite usuarios externos (na internet) conectar ao seu servidor Linux
#       para servicos IRC.
#       Verifique se o seu IRCd esta definido na tabela de servicos no arquivo
#       /etc/services
#
# echo "       Parametro Opcional : servidor IRC"
# /sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ircd

# HTTP : Permite usuarios externos (na internet) conectar ao seu servidor Linux.
#
# echo "       Parametro Opcional : servidor HTTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP http

# HTTPS : Permite usuarios externos (na internet) conectar ao seu servidor Linux.
#
# echo "       Parametro Opcional : servidor HTTPS"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP https


# Advanced ICMP:  Some users prefer that their UNIX box NOT ping, etc.
#                  This is easy enough to do but be sure you know what you
#                  are doing.
# ICMP avancado : Alguns administradores preferem que seu servidor Linux
#                  nao permita ping, etc.
#
#    Consulte o paper sobre filtragem de ICMP para saber mais :    
#    http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf
#
#    Quando um firewall e configurado para rejeitar trafico de ICMP,
#    o trafico resultante de reply e automaticamente rejeitado.
#    Rode "/sbin/ipchains -h icmp" para verificar codigos de icmp suportados.
#
# Nao responda (reply) a ECHO REPLYs (tipo 0) vindos pela internet.
#
# echo "       Parametro Opcional : Filtro de entrada de ICMP ECHO-REPLY"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type echo-reply $LOGGING
#
# Nao responder a requisicoes TCP/UDP TRACEROUTE da internet.
#
# echo "       Parametro Opcional : Filtro de entrada TCP/UDP TRACEROUTE"
#
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 33434 $LOGGING
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 33434 $LOGGING
#
# Nao responder a requisicoes TCP/UDP TRACEROUTE da Internet para clientes
# MS que utilizam ICMP ECHO e nao TCP/UDP.
#
# echo "       Parametro Opcional : Filtro de entrada ICMP TRACEROUTE (MS)"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type destination-unreachable $LOGGING
#
# Nao responder a DESTINATION-UNREACHABLE (tipo 3) da internet.
#
# echo "       Parametro Opcional : filtro de entrada ICMP DESTINATION-UNREACHABLE"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type destination-unreachable $LOGGING
#
# Nao responder a SOURCEQUENCH (tipo 4) da internet.
#
# echo "       Parametro Opcional : filtro de entrada ICMP SOURCEQUENCH"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type source-quench $LOGGING
#
# Nao responder a nenhuma forma de refirecionamento de pacotes (tipo 5)
#
echo "       Parametro Opcional : filtro de entrada ICMP REDIRECT"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type redirect $LOGGING
#
# Nao permitir requisicoes de PING (tipo 8) da internet.
#
# echo "       Parematro Opcional : filtro de entrada ICMP ECHO"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type echo-request $LOGGING
#
# Nao responder a pacotes do tipo (Time to Live expirado) TTL-Expired.
#
# echo "       Parametro Opcional : filtro de entrada ICMP TTL-EXPIRED"
#/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type time-exceeded $LOGGING
#
# Nao responder a pacotes do tipo ICMP PARAMETER-PROBLEM.
#
# echo "       Parametro Opcional : filtro de entrada ICMP PARAMETER-PROBLEM"
# /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type parameter-problem $LOGGING
#
# Nao responder a pacotes ICMP TIMESTAMP (tipos 13 e 14)
#
echo "       Parametro Opcional : filtro de entrada ICMP TIMESTAMP"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type timestamp-request $LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type timestamp-reply $LOGGING
#
# Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18).
#
echo "       Parametro Opcional : filtro de entrada ICMP ADDRESS-MASK"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type address-mask-request $LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type address-mask-reply $LOGGING


# ICMP Geral : Permite pacotes ICMP a partir de todos enderecos externos.
#
# Desabilitar pacotes ICMP por regras de firewall pode fazer muito mais
# que apenas barrar usuarios pingando a sua maquina. Muitos aspectos
# do TCP/IP e seus aplicativos relacionados baseiam-se em varias mensagens
# ICMP. Sem ICMP, tanto seu servidor Linux quanto os hosts internos da sua
# rede podem nao funcionar.
#
# Se desejar filtrar pacotes ICMP, faca-o descomentando o tipo de trafico
# que deseja barrar nas linhas acima e nao na linha a seguir.
#
# Essa linha aceita pacotes ICMP originarios da Internet para o IP da
# sua interface externa.
#
/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP


# NNTP : Permite hosts externos conectarem o seu servidor Linux para
#        servicos de news NNTP.
#
# echo "       Parametro Opcional : servidor NNTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP nntp

# NTP : Permite hosts externos conectarem o seu servidor Linux para
#       servicos NTP.Alguns clientes de NTP utilizam trafico TCP
#       enquanto outros utilizam UDP.
#
# echo "       Parametro Opcional : servidor NTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ntp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP ntp

# TELNET : Permite hosts externos conectarem seu servidor Linux para
#          acesso TELNET.
#
# echo "       Parametro Opcional : servidor TELNET"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP telnet

# Servidor SSH: Permite hosts externos conectarem seu servidor Linux para
#          acesso seguro secure shell SSH.
#
# echo "       Parametro Opcional : servidor SSH"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ssh


#--------------------------------------------------------------------
# Rejeicoes especificas de entrada pela interface externa
#--------------------------------------------------------------------
# Essas regras rejeitam trafico especifico que voce nao deseja dentro
# do seu sistema.
#--------------------------------------------------------------------
echo "  - Rejeitar entradas (inputs) especificos."

# Recusar pacotes via interface externa com endereco de loopback
#*
/sbin/ipchains -A input -j DENY -i $EXTIF -s $LOOPBACKIP

# Interface remota alegando ser maquina local.Caso de IP spoofing.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING


# De acordo com RFC1918 e IANA
# Filtro de enderecos reservados
#
# Filtrar todo o trafico externo originario do espaco reservado de enderecos.
# Rode "whois IANA*@arin.net" e "whois RESERVED*@arin.net" para obter
# maiores informacoes.
#

# Reservado-1
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 0.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-9
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 1.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-10
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 10.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-23
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 23.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-31
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 31.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-7 (65.0.0.0 - 95.255.255.255)
#
# 65.0.0.0 - 65.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 65.0.0.0/8 -d $UNIVERSE $LOGGING
# 66.0.0.0 - 67.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 66.0.0.0/7 -d $UNIVERSE $LOGGING
# 68.0.0.0 - 71.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 68.0.0.0/6 -d $UNIVERSE $LOGGING
# 72.0.0.0 - 79.55.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 72.0.0/5 -d $UNIVERSE $LOGGING
# 80.0.0.0 - 95.255.255.255
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 80.0.0.0/4 -d $UNIVERSE $LOGGING


# Reservado-8 (96.0.0.0 - 126.255.255.255)
# A mascara a seguir inclui tambem a rede 127.0.0.0.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 96.0.0.0/3 -d $UNIVERSE $LOGGING

# Loopback
# Incluso acima no Reservado-8

# Reservado-3
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.0.0.0/16 -d $UNIVERSE $LOGGING

# BuracoNegro3 = BLACKHOLE3
#
# Desabilitado pelo fato que todas as funcoes de reverso de DNS , exceto
# a funcao de endereco, nao irao funcionar corretamente.
#
#/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.9.64.26/32 -d $UNIVERSE $LOGGING

# Inclui NET-TEST-B
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.66.0.0/16 -d $UNIVERSE $LOGGING

# IANA-RESERVED e RFC1918 (172.19-31.0.0)
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 172.16.0.0/12 -d $UNIVERSE $LOGGING

# Reservado-4
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 191.255.0.0/16 -d $UNIVERSE $LOGGING

# ROOT-NS-LAB - 192.0.0.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.0.0/24 -d $UNIVERSE $LOGGING

# NET-ROOTS-NS-LIVE - 192.0.1.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.1.0/24 -d $UNIVERSE $LOGGING

# NET-TEST - 192.0.2.0/24
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.2.0/24 -d $UNIVERSE $LOGGING

# RFC1918
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.168.0.0/16 -d $UNIVERSE $LOGGING

# Reservado-13
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 197.0.0.0/16 -d $UNIVERSE $LOGGING

# Reservado-14
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 201.0.0.0/8 -d $UNIVERSE $LOGGING

# Reservado-5
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 223.255.255.0/24 -d $UNIVERSE $LOGGING

# Para uso futuro com classes E e F.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 240.0.0.0/5 -d $UNIVERSE $LOGGING
/sbin/ipchains -A input -j REJECT -i $EXTIF -s 248.0.0.0/5 -d $UNIVERSE $LOGGING


# Multicast : Desabilitar trafico Multicast.
#
# echo "       Parametro Opcional : Ignorar MULTICAST"
# /sbin/ipchains -A input -j REJECT -i $EXTIF -s $UNIVERSE -d 224.0.0.0/4


# NFS: Rejeita trafico NFS de e para maquinas externas.
#
# Procure nao habilitar trafico externo de NFS para evitar problemas de
# seguranca.
#
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 2049
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 2049 -d $EXTIP

# SMB e CIFS: Rejeita trafico SMB e CIFS de e para maquinas externas.
#
# Procure nao habilitar trafico externo de Samba (Windows 3.x, 9x e NT) ou
# CIFS (Windows 2000) para evitar problemas de seguranca.
#
# Portas:  137 TCP/UDP (NetBIOS name service)
#          138 UDP      (NetBIOS datagram service) - filtra TCP
#          139 TCP      (NetBIOS session service)  - filtra UDP
#          445 TCP/UDP (MS CIFS em Windows 2000)

echo "     - Rejeitar silenciosamente trafico TCP/UDP de SMB e CIFS pela interface externa."
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 445
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 137 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 137 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 138 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 138 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 139 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 139 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 445 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 445 -d $EXTIP


 
#--------------------------------------------------------------------
# Trafico de entrada para todas as Interfaces
#--------------------------------------------------------------------
# Isso ira controlar o trafico de entrada em todas as interfaces.
#--------------------------------------------------------------------
echo "  - Configurando filtros de entrada para servicos publicos em todas as interfaces."

# AUTH: Permite o protocolo de autenticacao em todas as interfaces
#       mas desabilita no arquivo /etc/inetd.conf. A razao disso
#       e que algumas pilhas TCP/IP nao lidam corretamente com
#       requisicoes de autorizacao rejeitadas.
#
# Trafico para e apartir da sua maquina
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE

# DHCP/BOOTP : Rejeita todo trafico.
#
#/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE bootpc

# DNS: Se voce e um provedor de acesso e esta rodando um DNS
#      de IPs validos, e necessario abrir as portas do DNS em
#      todas as interfaces e permitir lookups.
#
# echo "       Parametro Opcional : servidor DNS"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE domain
#/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $UNIVERSE domain

# RIP: Rejeita todo o trafico RIP.Muitas redes mal configuradas
#      propagam protocolos de roteamento de rede ate o limite da rede.
#      A linha a seguir permite que voce filtre RPI.
#
#/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE -d $UNIVERSE route

# SMTP: Se voce esta rodando um servidor SMTP valido, deve permitir
#       o trafico de SMTP em todas as interfaces.
#
# echo "       Parametro Opcional : servidor SMTP"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE smtp

# Proxy SQUID com filtro de lixo
#
# Se voce esta usando o Squid com filtro de Banners, voce tera que
# habilitar as linhas a seguir para fazer o redirecionamento IPCHAINS
# para a porta 3128 do Squid.
#
#echo "       Parametro Opcional : Proxy transparente SQUID"
#/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -p tcp -d $LOOPBACKIP/32 www
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $INTLAN -d $INTIP/32 www
#/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF -p tcp -s $INTLAN -d $INTLAN/0 www $LOGGING
# Rede 2
#/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $INTLAN2 -d $INTIP2/32 www
#/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF2 -p tcp -s $INTLAN2 -d $INTLAN2/0 www $LOGGING


#--------------------------------------------------------------------
# Rejeicoes de entrada especifica em qualquer interface.
#--------------------------------------------------------------------
# AS regras abaixo rejeitam trafico especifico que voce nao quer fora
# do seu sistema.
#--------------------------------------------------------------------
#echo "  - Rejeitar trafico para dominios especificos."

# Nao permitir que qualquer host interno tenha acesso aos seguintes sites :
#
#
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 63.160.54.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 128.11.92.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.206.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.207.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.208.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.210.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.178.112.160/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.253.104.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.10.202.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.203.243.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.211.225.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.228.86.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 209.67.38.0/24


# Suponha que voce nao quer receber nenhum e-mail de um servidor.
# Use o codigo abaixo, colocando o endereco valido apos o flag -d
#
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d 152.163.159.0/24
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d 205.188.157.0/24


#--------------------------------------------------------------------
# Permite INPUT de hosts externos
#--------------------------------------------------------------------
# Isso controla acesso externo de hosts especificos. O exemplo permite
# FTP, Secure Shell, POP3 e TELNET de um servidor especificado dentro do
# firewall. Alem das regras de input voce precisa permitir o trafico desse
# servidor para fora. Veja as regras de output mais abaixo.
#
#--------------------------------------------------------------------
echo "  - Configurando filtros de entrada para hosts externos."

#
#echo "     Permite INPUT de $HOSTSEG para ftp, ssh, POP3 e TELNET."
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP pop-3
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP telnet

#echo "     Permite INPUT de $HOSTSEG2 para ftp, ssh, POP3 e TELNET."
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ftp-data
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ssh
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP pop-3
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP telnet
#
# copie o bloco para mais hosts apos $HOSTSEG2

# Permite que todas as interfaces internas acessem a internet
# -----------------------------------------------------------
# Inteface local e maquinas locais podem ir a qualquer lugar.
#
# A razao principal dessa regra estar no final da seccao de INPUT
# e certificar que todas as linhas DENY/REJECT do firewall sejam
# testadas antes de permitir todo o trafico interno.
# Se voce desejar pode voltar ao topo dessa seccao e especificar
# quais os hosts que podem sair, depois comente a linha abaixo
# de modo que so os hosts permitidos podem sair para a internet.
#
# Rede Interna 1
/sbin/ipchains -A input -j ACCEPT -i $INTIF -s $INTLAN -d $UNIVERSE
#*
# Rede Interna 2
/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -s $INTLAN2 -d $UNIVERSE


# Interface de Loopback e valida.
#
/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE


# Portas altas :
#
# Habilita todas as portas altas nao privilegiadas para todo o trafico
# TCP/UDP de reply.
#
# O uso da flag "! -y" (not -y) filtra todo trafico TCP que nao possui
# o bit SYN configurado. Isso significa que qualquer trafico que tentar
# negociar com seu servidor numa porta alta sera rejeitado. Apenas
# trafico de retorno ou trafico baseado em UDP sera aceito em portas
# altas. Nao utilizar filtro SYN na porta 20 para secoes ativas de FTP.
# Por isso, deve-se especificar isso.
#
echo "  - Habilitando toda a entrada de trafico de REPLY (TCP/UDP) em portas altas."
/sbin/ipchains -A input -j ACCEPT ! -y -p tcp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE ftp-data -d $EXTIP $UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS


#--------------------------------------------------------------------
# Capturar todas as regras de INPUT
#--------------------------------------------------------------------
#
echo "  - Capturar todas as regras de input finais."

# Todos os outros tipos de entradas sao negadas e logadas.
/sbin/ipchains -A input -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING


#********************************************************************
# Regras de Output (saida)
#********************************************************************
echo "----------------------------------------------------------------------"
echo "Regras de Output:"

#--------------------------------------------------------------------
# Trafico de saida (Outgoing) da rede interna
#--------------------------------------------------------------------
# Essas regras contem politicas para todo trafico de saida da rede
# interna. Todo trafico para fora e permitido.
#
#--------------------------------------------------------------------
echo "  - Configurando filtros de output para todo o trafico da rede interna."

# Filtrar pacotes via interface externa com endereco de loopback
#*
/sbin/ipchains -A output -j DENY -i $EXTIF -s $LOOPBACK $LOGGING

# Interface local, qualquer origem para a rede local 1 e valida.
/sbin/ipchains -A output -j ACCEPT -i $INTIF -s $UNIVERSE -d $INTLAN

# Interface local, qualquer origem para a rede local 2 e valida.
#*
/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -s $UNIVERSE -d $INTLAN2

# Interface de Loopback e valida.
/sbin/ipchains -A output -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE

# DHCP: Se voce configurou um servidor DHCP nessa maquina Linux, voce tera
#       que habilitar as seguintes regras :
#
# echo "       Parametro Opcional : servidor DHCPd"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc
#*
# Rede 2
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32 bootps -d $BROADCAST/0 bootpc
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $INTIP2/32 bootps -d $BROADCAST/0 bootpc

# HTTP: Como permitir trafico interno HTTP a um servidor intranet de Web
#       sem permitir o acesso externo.
#
# echo "       Parametro Opcional : servidor WWW"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 http -d $INTLAN


# APC PowerChute para Linux. Esse e o software de gerenciamento de nobreaks
# da marca APC que uso internamente. Serve para desligar e verificar o nobreak.
# Esse software manda um broadcast para a rede interna procurando pelo daemon
# upsd.
#
# echo "       Parametro Opcional : servidor UPSd"
# /sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 -d $BROADCAST 5456
#*
# Rede 2
# /sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32 -d $BROADCAST 5456



#--------------------------------------------------------------------
# Output da rede interna.Acesso de hosts internos ao firewall.
#--------------------------------------------------------------------
# As regras abaixo permitem a apenas hosts especificados o acesso
# aos servicos desse firewall.
#
# Abaixo, esta demonstrado como permitir acesso FTP, SSH e TELNET.
#
#--------------------------------------------------------------------
#echo "  - Estabelecendo filtros para output de hosts da rede interna."

# Host1 da rede 1 HOST11IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP telnet

# Host2 da rede 1 HOST12IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP telnet

# Host1 da rede 2 HOST21IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 telnet

# Host2 da rede 2 HOST22IP
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ftp
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ftp-data
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ssh
#/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 telnet

#--------------------------------------------------------------------
# Trafico de saida na interface externa
#--------------------------------------------------------------------
# Essa regra controla o trafico que pode sair pela interface externa.
#--------------------------------------------------------------------
echo "  - Configurando filtros de input para trafico com a interface externa."

# Cliente DHCP : Se o seu servidor Linux esta conectado via Cablemodem, ou seja,
#                 acesso dedicado por cabo e seu provedor nao lhe forneceu um IP
#                 fixo e sim um endereco dinamico que muda de acordo com
#                 intervalos determinados, sera necessario descomentar as
#                 regras abaixo.
#
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootpc -d $UNIVERSE bootps
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootpc -d $UNIVERSE bootps

# FTP : Permite trafico FTP se o seu servidor Linux for um servidor FTP tambem.
#
# echo "       Parametro Opcional : servidor FTP"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $UNIVERSE

# IRCd : Permite trafico se o seu servidor Linux servir IRC.
#        Obs : ircd deve estar especificado no arquivo de servicos
#              localizado em etc/services
#
# echo "       Parametro Opcional : servidor IRC"
# /sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ircd -d $UNIVERSE

# HTTP : Permite trafico HTTP. Seu Linux e um servidor de documentos WWW 
#
# echo "       Parametro Opcional : servidor WWW"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP http -d $UNIVERSE

# HTTPS : Permite trafico HTTP. Seu Linux e um servidor de documentos seguros WWW 
#
# echo "       Parametro Opcional : servidor WWW seguro HTTPS"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP https -d $UNIVERSE

# NTP : Permite atualizacoes NTP. Seu Linux e um servidor NTP.
#       Alguns clientes NTP usam TCP e outros usam UDP.
#
# echo "       Parametro Opcional : servidor NTP"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ntp -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $EXTIP ntp -d $UNIVERSE

# TELNET: Permite trafico TELNET.
#
# echo "       Parametro Opcional : servidor TELNET"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $UNIVERSE

# SSH : Permite trafico de saida de SSH, se o seu Linux estiver rodando o SSHd.
#       Nesse caso, voce pode acessar o seu Linux pela internet (interface externa)
#       via SSH. No meu caso, eu faco isso.
#*
# echo "       Parametro Opcional : servidor SSH"
/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $UNIVERSE


#--------------------------------------------------------------------
# Trafico de saida em todas as interfaces
#--------------------------------------------------------------------
# As regras abaixo controlam o trafico de saida para todas as interfaces.
# As regras sao apenas para especificar o que pode ser usado, uma vez que
# a regra geral esta acima como REJECT.
#--------------------------------------------------------------------
echo "  - Configurando filtros de output para todas as interfaces."

# AUTH : Permite que o protocolo de autenticacao AUTH e ident funcionem com
#        todas as interfaces.
# Trafico PARA a sua maquina DA sua maquina.
/sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE
/sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth

# DNS : Caso esteja rodando um servidor Linux DNS autoritativo, voce precisa
#       habilitar as regras a seguir.
#
# echo "       Parametro Opcional : Servidor DNS"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP domain -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP domain -d $UNIVERSE


# ICMP avancado :  Alguns administradores preferem que seu servidor Linux
#                   nao seja pingado com PING.
# Consulte http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf
# sobre como filtrar trafico ICMP.
#
# Rode "/sbin/ipchains -h icmp" para saber sobre codigos ICMP.
#
# Nao responder a ICMP ECHO REPLYs (tipo 0) da Internet.
#
# echo "       Paramentro Opcional : Saida de ICMP ECHO REPLY filtrada"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-reply
#
# Nao responder a requisicoes de TRACEROUTE via TCP/UDP da Internet
#
# echo "       Parametro Opcional : Trafico de saida TRACEROUTE TCP/UDP filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 33434 $LOGGING
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 33434 $LOGGING
#
# Nao responder a requisicoes de TRACEROUTE via ICMP ECHO para clientes MS
#
# echo "       Parametro Opcional : Trafico de saida TRACEROUTE ICMP ECHO (MS) filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-request $LOGGING
#
# Nao responder a DESTINATION-UNREACHABLE (tipo 3) da Internet
#
# echo "       Parametro Opcional : Trafico de saida ICMP DESTINATION-UNREACHABLE filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type destination-unreachable $LOGGING
#
# Nao responder a SOURCEQUENCH (tipo 4) da Internet
#
# echo "       Parametro Opcional : Trafico de saida ICMP SOURCEQUENCH filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type source-quench $LOGGING
#
# Nao responder a qualquer tipo de pacote ICMP REDIRECT (tipo 5) 
#
echo "       Parametro Opcional : trafico de saida ICMP REDIRECT filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type redirect $LOGGING
#
# Nao permitir PING (tipo 8) da Internet
#
# echo "       Parametro Opcional : trafico de saida ICMP ECHO filtrado"
#/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-request $LOGGING
#
# Nao responder a pacotes Time To Live Expired (tipo 11) da Internet
#
echo "       Parametro Opcional : trafico de saida ICMP TTL-EXPIRED filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type ttl-zero-during-reassembly $LOGGING
#
# Nao responder a pacotes PARAMETER-PROBLEM (tipo 12) da internet
#
echo "       Parametro Opcional : Trafico de saida ICMP PARAMETER-PROBLEM filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type parameter-problem $LOGGING
#
# nao responder a pacotes ICMP TIMESTAMP (tipo 13 e 14) 
#
echo "       Parametro Opcional : trafico de saida ICMP TIMESTAMP filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type timestamp-request $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type timestamp-reply $LOGGING
#
# Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18)
#
echo "       Parametro Opcional : Trafico de saida ICMP ADDRESS-MASK filtrado"
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type address-mask-request $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type address-mask-reply $LOGGING


# ICMP Geral : Permite trafico de ICMP para fora
#
# Cuidado ao desabilitar pacotes ICMP com regras de firewall. Muitos
# aspectos do protocolo TCP/IP e aplicativos derivados dependem de
# mensagens ICMP. Portanto, ao fazer isso tenha certeza do que esta
# realmente filtrando. Sem ICMP, tanto o seu servidor Linux quanto
# as maquinas conectadas a ele podem nao funcionar.
#
# Aceita trafico ICMP da Internet
/sbin/ipchains -A output -j ACCEPT -p icmp -s $UNIVERSE -d $UNIVERSE


# NNTP : Permite trafico de News baseado em NNTP.
#
# echo "       Parametro Opcional : servidor NNTP"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP nntp -d $UNIVERSE

# SMTP : Se seu servidor Linux e um servidor SMTP ou funciona como um relay
#        voce precisa descomentar a linha abaixo.
#
# echo "       Parametro Opcional : servidor SMTP"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP smtp -d $UNIVERSE


#--------------------------------------------------------------------
# Saida para Hosts externos especificos
#--------------------------------------------------------------------
# Essas regras permitem saida para hosts especificos que denominamos
# $HOSTSEG. Abaixo, POP3 e SSH sao permitidos para Hosts especificados.
# Alem das regras de saida (OutPut) tambem sao necessarias as regras de 
# Input. Veja acima.
#
#--------------------------------------------------------------------
echo "  - Configurando filtros de saida para hosts externos especificos."

# Host 1 = HOSTSEG
#
#echo "  Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG $UNPRIVPORT

#echo "  Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG2"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG2 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG2 $UNPRIVPORT

#echo "  Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG3"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG3 $UNPRIVPORTS
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG3 $UNPRIVPORT


#--------------------------------------------------------------------
# Rejeicoes especificas de output (saida)
#--------------------------------------------------------------------
# Essas regras rejeitam trafico especifico que voce nao quer saindo
# da sua rede. 
#--------------------------------------------------------------------
echo "  - Rejeita trafico de saida especificados."

# Rejeita trafico de saida para a rede interna atarves da interface
# de saida.
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN $LOGGING
# Rede 2
#*
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN2 $LOGGING

# Rejeita trafico de saida originado da rede interna atraves da interface
# externa
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING
# Rede 2
#*
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN2 -d $UNIVERSE $LOGGING

# Filtragem dos enderecos reservados RFC1918 e IANA
#
# Filtra todo o trafico vindo da interface externa cujo enderecamento
# seja baseado em enderecos reservados.
# Para saber mais rode "whois IANA*@arin.net" e
# "whois RESERVED*@arin.net".
#

# Reservado-1
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 0.0.0.0/8 $LOGGING

# Reservado-9
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 1.0.0.0/8 $LOGGING

# Reservado-10
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 10.0.0.0/8 $LOGGING

# Reservado-23
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 23.0.0.0/8 $LOGGING

# Reservado-31
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 31.0.0.0/8 $LOGGING

# Reservado-7 (65.0.0.0 - 95.255.255.255)
#
# 65.0.0.0 - 65.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 65.0.0.0/8 $LOGGING
# 66.0.0.0 - 67.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 66.0.0.0/7 $LOGGING
# 68.0.0.0 - 71.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 68.0.0.0/6 $LOGGING
# 72.0.0.0 - 79.55.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 72.0.0/5 $LOGGING
# 80.0.0.0 - 95.255.255.255
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 80.0.0.0/4 $LOGGING

# Reservado-3
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.0.0.0/16 $LOGGING

# BLACKHOLE3
#/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.9.64.26/32 $LOGGING

# Inclui NET-TEST-B
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.66.0.0/12 $LOGGING

# IANA-BBLK-RESERVED e RFC1918 (172.19-31.0.0)
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 172.16.0.0/12 $LOGGING

# Reservado-4
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 191.255.0.0/16 $LOGGING

# ROOT-NS-LAB - 192.0.0.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.0.0/24 $LOGGING

# NET-ROOTS-NS-LIVE - 192.0.1.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.1.0/24 $LOGGING

# NET-TEST - 192.0.2.0/24
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.2.0/24 $LOGGING

# RFC1918
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.168.0.0/16 $LOGGING

# Reservado-13
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 197.0.0.0/8 $LOGGING

# Reservado-14
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 201.0.0.0/8 $LOGGING

# Reservado-5
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 223.255.255.0/24 $LOGGING

# Para uso futuro das classes E e F :
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 240.0.0.0/5 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 248.0.0.0/5 $LOGGING


# Samba e CIFS. Rejeita trafico Samba e CIFS de maquinas externas.
#
# NUNCA habilite trafico SMB/CIFS pela internet a nao ser que tenha 
#       absoluta certeza do que esta fazendo. Se voce realmente precisa
#       dessa funcionalidade use um IP seguro ou sistema VPN.
#
# Portas:  137 TCP/UDP (NetBIOS name service)
#          138 UDP      (NetBIOS datagram service) - TCP filtrado por seguranca
#          139 TCP      (NetBIOS session service)  - UDP filtrado por seguranca
#          445 TCP/UDP (MS CIFS no Windows 2000)

echo "     - Rejeitando trafico TCP/UDP para Samba na interface externa."
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 137
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 137
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 138
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 138
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 139
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 139
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 445
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 445
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 137 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 137 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 138 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 138 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 139 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 139 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 445 -d $UNIVERSE
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 445 -d $UNIVERSE
 

# Filtrando todo o trafico de saida que e declarado inseguro ou de alguma
# maquina interna que possa estar infectada com algum cavalo de troia (Trojan).
#

# RPC. Usado para NFS ou outro mecanismo inseguro
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE sunrpc $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP sunrpc -d $UNIVERSE $LOGGING

# Mountd - Usado para NFS
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 635 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 635 -d $UNIVERSE $LOGGING

# PPTP - Bloco nao autorizado de saida a VPNs
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1723 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1723 $LOGGING

# Winsock remoto - Bloqueia maquinas Windows internas de realizar operacoes estranhas.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1745 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1745 $LOGGING

# NFS - Bloqueia NFS devido a falta de seguranca
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 2049 -d $UNIVERSE $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 2049 -d $UNIVERSE $LOGGING

# Software PcAnywhere - Bloqueia sessoes de saida remota nao autorizadas
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5632 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5632 $LOGGING

# Xwindows - Bloqueia sessoes Xwindows nao autorizadas ou inseguras
#
# Veja a parte de variaveis acima para intervalo de portas (6000:6007 padrao)
# O X pode usar mais portas que apenas o intervalo de 6000 a 6007.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING

# VPNs de IPs seguros - Bloqueia VPNs nao autorizadas
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 500 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 500 $LOGGING

# MySQL - Bloqueia sessoes nao autorizadas de SQL
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3306 -d $UNIVERSE/0 $LOGGING

# EggDrop IRC - Bloqueia bots nao autorizados
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3456 -d $UNIVERSE/0 $LOGGING


# Bloqueia as portas de rede conhecidas para Torjans.
#
# O protocolo TCP/IP pode usar portas altas aleatoriamente.Por isso, o filtro
# abaixo nao garante que voce nao tenha uma maquina interna infectada. Essa lista nao e
# completa mas possui as portas mais comuns.
#
# Consulte http://www.simovits.com/sve/nyhetsarkiv/1999/nyheter9902.html
# para uma lista completa.

# NetBus.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12345 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12346 $LOGGING

# NetBus Pro.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 20034 $LOGGING

# BackOrofice
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0 31337 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0 31338 $LOGGING

# Win Crash Trojan.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 5742 $LOGGING

# Socket De Troye.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 30303 $LOGGING

# Cavalo de Troia desconhecido (Master's Paradise [CHR])
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 40421 $LOGGING

# Trinoo UDP flooder - Essa porta pode mudar com o tempo
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 27665 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 27444 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 31335 -d $UNIVERSE/0 $LOGGING

# Shaft distributed flooder - Essa porta pode mudar com o tempo
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 20432 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 18753 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 20433 -d $UNIVERSE/0 $LOGGING


#--------------------------------------------------------------------
# Permite todas as portas altas de retornar trafico.
#
echo "  - Habilitando todo o trafico de saida REPLY (TCP/UDP) nas portas altas."
/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE
/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE


#--------------------------------------------------------------------
# Capturar todas as regras
#--------------------------------------------------------------------
echo "  - Output final, capturar todas as regras."

# Qualquer outro tipo de saida sera negada e logada. Essa regra
# deve capturar tudo inclusive Samba que ainda nao foi bloqueado.
#
/sbin/ipchains -A output -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING


#********************************************************************
# Regras de encaminhamento (Forwarding)
#********************************************************************
#
echo "----------------------------------------------------------------------"
echo "Regras de Forwarding :"

#------------------------------------------------------------------------
# Habilita forwarding e masquerading de TCP/IP originario da rede interna
#------------------------------------------------------------------------

# Usuarios de Diald :
#
#  Essa regra sera necessaria para permitir que a interface SLIP s10 
#  receba trafico quando estiver subindo a s10.
#
#/sbin/ipchains -A forward -j MASQ -i sl0 -s $INTLAN -d $UNIVERSE/0


#----------------------------------------------------------------------
# Port Forwarding
#----------------------------------------------------------------------
# Port forwarding permite o direcionamento de trafico externo para uma
# maquina interna mascarada. Um uso disso seria usuarios externos
# acessando um servidor web atras de uma mascara.
#
# Para usar PORTFW voce precisa descomentar e editar a seccao $HOSTSEG
# acima.
#
# Consulte o howto de IP-MASQUERADING para detalhes sobre Port Forwarding.
#
# Nao utilizar portas maiores que 1023 para redirecionamento.
#
#--------------------------------------------------------------------
#echo "  Habilitando Port Forwarding nos hosts internos."
#/usr/sbin/ipmasqadm portfw -f
#echo "  Redirecionando trafico SSH na porta 26 para $PORTFWIP1"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP1 22
#
#echo "  Redirecionando trafico SSH na porta 26 para $PORTFWIP2"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP2 22
#
#echo "  Redirecionando trafico SSH na porta 26 para $PORTFWIP3"
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP3 22


#--------------------------------------------------------------------
# Habilita forwarding e masquerading TCP/IP a partir da rede interna
#--------------------------------------------------------------------

# Habilita IP Forwarding no kernel do Linux
#
# Existem dois metodos para habilitar essa opcao. O primeiro e editar
# o arquivo /etc/sysconfig/network e alterar a linha FORWARD_IPV4 para
# FORWARD_IPV4=true
#
# O segundo pode ser executado a qualquer momento.
# Basta alterar o arquivo /proc/sys/net/ipv4/ip_forward atraves
# do comando abaixo
#
echo "  - Habilitando IP forwarding."
echo "1" > /proc/sys/net/ipv4/ip_forward


# Masquerade da rede interna 1 na interface local para internet.
#
echo "  - Habilitando IP Masquerading na rede interna 1 para internet."
/sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN -d $UNIVERSE

# Masquerade da rede interna 2 na interface local para internet.
#
echo "  - Habilitando IP Masquerading na rede interna 2 para internet."
/sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN2 -d $UNIVERSE


# Masquerading da Rede interna 1 para a Rede interna 2
#
echo " Habilitando IP Masquerading da Rede Interna 1 para a Rede Interna 2"
/sbin/ipchains -A forward -j MASQ -i $INTLAN2 -s $INTLAN -d $INTLAN2

# Masquerading da Rede interna 2 para a Rede interna 1
#
echo " Habilitando IP Masquerading da Rede Interna 2 para a Rede Interna 1"
/sbin/ipchains -A forward -j MASQ -i $INTLAN -s $INTLAN2 -d $INTLAN

# Habilitando "Always Defrag" para sistemas Masqueraded
#
echo "  - Habilitando IP Always Defrag para a rede interna."
echo "1" > /proc/sys/net/ipv4/ip_always_defrag


# Desabilitando o patch LooseUDP que alguns jogos via internet usam.
#
#
echo "  - Desabilitando o patch LooseUDP por seguranca."
echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose


# Capturar todas as regras, qualquer outro tipo de forwarding e negado.
#
/sbin/ipchains -A forward -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING

# Final
#
echo "----------------------------------------------------------------------"
echo -e "IPCHAINS Firewall $VERSAO $ULTALT implementado.\n\n"
 

5.1 Alterando os atributos do script

O script rc.firewall acima deve ser copiado para /etc/rc.d/. Torne o script execut�vel apenas pelo root com o comando "chmod 700 /etc/rc.d/rc.firewall".

5.2 Criando o script de inicializa��o do firewall.

Criaremos agora o script /etc/rc.d/init.d/firewall (tabela 5.2) para inicializar o /etc/rc.d/rc.firewall.

tabela 5.1 - script de inicializa��o /etc/rc.d/init.d/firewall

#!/bin/sh
#
# chkconfig: 2345 11 89
#
# description: Carrega o rc.firewall.
#
# processname: firewall
# pidfile: /var/run/firewall.pid
# config: /etc/rc.d/rc.firewall
# probe: true

# ----------------------------------------------------------------------------
# # IpChains  Firewall
# versao 1.02
#
# carrega o script /etc/rc.d/rc.firewall
#
# Esse script "firewall" deve ser colocado no diretorio /etc/rc.d/init.d
# - Alterar seus atributos comando "chmod 700 firewall"
# - Criar os scripts S11Firewall e K89Firewall nos run levels 345
#   Comandos :
#              chkconfig --add firewall
#              chkconfig --level 345 firewall on
#
# obs : o script rc.firewall deve ter seus atributos alterados pelo comando  
#       "chmod 700 rc.firewall" dentro do diretorio /etc/rc.d/
#
# ----------------------------------------------------------------------------


# biblioteca Source function.
. /etc/rc.d/init.d/functions

# Verificar se a rede esta rodando.

# Essa linha nao funciona mais com o bash2
#[ ${NETWORKING} = "no" ] && exit 0

[ "XXXX${NETWORKING}" = "XXXXno" ] && exit 0

[ -x /sbin/ifconfig ] || exit 0

# Menu de opcoes :
case "$1" in
  start)
    /etc/rc.d/rc.firewall
    ;;
  stop)
    echo -e "\nDescartando firewall e configurando politicas padrao para ACCEPT\n"
    /sbin/ipchains -P input REJECT
    /sbin/ipchains -P output REJECT
    /sbin/ipchains -P forward REJECT

    /sbin/ipchains -F input
    /sbin/ipchains -F output
    /sbin/ipchains -F forward
    ;;
  restart)
      $0 stop
      $0 start
      ;;
  status)
      /sbin/ipchains -L
      ;;
  *)
        echo "Sintaxe : firewall {start|stop|status}"
        exit 1
esac

exit 0
 

5.3 Inserindo o script /etc/rc.d/init.d/firewall na inicializa��o

Primeiramente, torne o script execut�vel com o comando "chmod 700 /etc/rc.d/init.d/firewall". Agora, vamos criar os links de inicializa��o S11firewall e K89firewall nos run levels 345 com o chkconfig.

Para criar os links entre com os comandos :

"chkconfig --add firewall"

"chkconfig --level 345 on"

Obs : Caso precise desabilitar o firewall no boot, utilize o ntsysv.Para remover os links use o comando "chkconfig --del firewall".

5.4 Rodando o firewall

Rode o firewall com o comando "/etc/rc.d/init.d/firewall start". Diversas mensagens ser�o echoadas pelo script rc.firewall (veja linhas que come�am com echo). Na incializa��o do sistema, no entanto, voc� n�o ver� essas mensagens.

Obs : Para parar o seu firewall use "/etc/rc.d/init.d/firewall stop".

5.5 Para usu�rios do Slackware

Fa�a o procedimento de 5.1 deixando o script rc.firewall execut�vel. Depois insira a seguinte linha ao final do script /etc/rc.d/rc.local :

/etc/rc.d/rc.firewall

Dessa forma, o script ir� rodar toda a vez que o seu Slack for inicializado. Note que a forma de incializar um m�quina Slackware difere de sistemas como Red Hat, Mandrake, Conectiva, etc.

6.0 Medindo a velocidade do seu acesso

6.1 Considera��es t�cnicas

Lembre-se: ao obter um ADSL de 256Kbps,  sua velocidade de recep��o n�o ser� necessariamente de 256Kbps. Ser� 256 com a sua operadora mas o que vale mesmo � a velocidade do seu provedor com a internet e a quantidade de usu�rios plugados naquele momento.Al�m disso, � necess�rio levar em conta o fator de networking overhead que pode acarretar  uma perda de 20%, dependendo da qualidade e arquitetura de rede do seu provedor. Considerando uma velocidade de 256Kbps, a m�dia seria algo em torno de 205Kbps.Sua velocidade m�xima, portanto, passa a ser medida a partir do gateway do seu provedor e n�o a partir do seu Firewall Linux.

Voc� notar� que ,em muitos casos, a velocidade com um determinado site fora do Brasil � bem menor do que com outro. Deve-se considerar tamb�m a rela��o (quantidade de tr�fego / capacidade do link) do site acessado. Um exemplo, seria tentar fazer o download de uma ISO do Red Hat pelo ftp server da pr�pria Red Hat e pelo ftp server da FreeSoftware. A �ltima op��o sempre tem sido mais veloz na nossa experi�ncia pr�tica. A quantidade de hoops de roteamento at� determinado host na internet � ainda outro fator a ser considerado. Lembre-se: quanto menos hoops de roteamento, maior a velocidade no tr�fego de pacotes entre dois hosts.

Para medir a velocidade entre o seu Firewall e seu provedor, verifique se o seu provedor possui um servidor FTP e tente fazer o download de algo cujo tamanho seja consider�vel,em torno de 10 megas,por exemplo. Existem v�rios sites na internet que medem a sua velocidade, mas na pr�tica o ideal � faz�-lo voc� mesmo porque essas medi��es s�o muito relativas e dependem de diversas vari�veis.

6.2 T�cnica sugerida

Para medir  sua velocidade, fa�a um download via FTP pela linha de comando do seu Firewall Linux. Ap�s a conclus�o do download, divida a quantidade de bytes do arquivo baixado pelo tempo da opera��o em mili-segundos.

 

7.0 Configurando os Hosts da sua rede

Esta se��o descreve como configurar seus Hosts Windows 9X, Windows NT e Linux.

7.1 Configurando Hosts Linux.

Seguindo o nosso exemplo,configure um desktop Linux na rede 2 (192.168.2.0/24) cujo IP � 192.168.2.11. Para esse host, o gateway ser� o IP da eth2 do Firewall Linux, ou seja, 192.168.2.20. Siga os mesmos procedimentos descritos em 4.2 editando o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/sysconfig/network e /etc/resolv.conf, cujos endere�os dos DNS servers ser�o os mesmos.

7.2 Configurando Hosts Windows 95/98.

Um hosts Windows 98 na rede 2 de IP 192.168.2.12 ter� como gateway o IP da eth2 do Firewall Linux que � 192.168.2.20. Os endere�os dos DNS servers ser�o os do seu provedor conforme o arquivo /etc/resolv.conf.

Clique com o bot�o direito do Mouse no �cone Ambiente de Rede e selecione propriedades. (figura 7.1)

Figura 7.1

Figura 7.1

Selecione o protocolo TCP/IP da lista de componentes e entre o IP do host e sua subnet conforme figura 7.2

Figura 7.2

Figura 7.2

Selecione a pasta Gateway (Figura 7.3) e entre com o IP da eth2 do Firewall.

Figura 7.3

Figura 7.3

Entre com os IPs dos DNS do seu provedor (figura 7.4) na pasta Configura��o DNS.

Figura 7.4

Figura 7.4

Clique em OK. Voc� ser� notificado pelo seu Host Windows que ser� necess�rio rebootar a m�quina.

7.3 Configurando Hosts Windows NT

Clique sobre o �cone Network Neighborhood com o bot�o direito e selecione properties.Selecione a tab Protocols.Selecione o protocolo TCP/IP e clique no bot�o Properties. Selecione o adaptador desejado, digite o endere�o IP, a Subnet e o Default Gateway (figura 7.5).

Figura 7.5

Figura 7.5

Clique no tab DNS e digite os endere�os de DNS do seu provedor (figura 7.6).

Figura 7.6

Figura 7.6

Clique no bot�o Apply, clique em OK. O NT ir� avisar que precisa rebootar a m�quina.

8.0 Sugest�es

8.1 Cable Modem

Para configurar a mesma solu��o, mas utilizando um cable modem, verifique os coment�rios inclusos no script rc.firewall.Note que os provedores de cable modem costumam alterar o IP do seu modem pelo menos 1 vez ao dia.

8.2 Modem comum sob linha telef�nica

Para modems comuns, observe os coment�rios no rc.firewall. A interface externa passa a ser a ppp0 e n�o mais eth0. Cada vez que conectar, seu provedor lhe fornecer� um IP diferente, veja os dados no script. Voc� poder� tamb�m utilizar o Dial on Demand ou Diald. Verifique o manual desse software para saber mais.

8.3 Outros tipos de aplica��es

Independentemente de conectar a sua rede na internet, voc� pode utilizar os conceitos de firewall, gateway e routing que propomos neste artigo para apenas conectar a rede de dois escrit�rios separados via modem. Para isso, seria necess�rio possuir um Firewall Linux, nos dois lados, equipado com modem e que a sua rede interna, nos dois lados rode, TCP/IP. Estude com crit�rio os coment�rios e a refer�ncia r�pida sobre IPChains. Essa situa��o est� ilustrada na figura 8.1 a seguir:

Figura 8.1 - Conectando duas rede via modem

Rede 2

9.0 Informa��es adicionais

9.1 Leitura Recomendada

Para saber mais sobre IPChains e Firewall recomendo :

Linux Firewalls, Robert L. Ziegler
New Riders,  ISBN 0-7357-0900-9
Pode ser adquirido nas seguintes empresas :

www.livrariacultura.com.br (que possui coment�rios de minha autoria).
www.temporeal.com.br
www.amazon.com.

9.2 Como contatar o autor e obter os scripts gratuitamente.

O autor pode ser contatado atrav�s do endere�o [email protected] e fica � disposi��o para enviar os arquivos dos scripts apresentados neste artigo por e-mail. Ao requisitar os scripts, pede-se a gentileza de enviar seu nome completo, empresa em que atua, ramo de neg�cios e cargo que ocupa.Sugest�es e coment�rios ser�o apreciados.

10.0 Sobre o autor

o autor - Carlos Fernando Scheidecker Antunes

Sobre o Autor

Carlos Fernando Scheidecker Antunes teve sua educa��o e forma��o profissional no Brasil e nos EUA.

Trabalha com computadores desde 1984 e conheceu o Linux em 1995 quando estava em Utah.

Fundou em 1991, com seu pai Carlos Jorge Freire Antunes, a empresa Sistema SEN que � um ASP especilizado em solu��es internet para empresas.

Atualmente, trabalha tamb�m como consultor t�cnico do Pe�as on Line (www.pecas-on-line.com.br) e est� de mudan�a para Salt Lake City, UT onde estender� seus estudos em The University of Utah.

Entre as atividades preferidas, est� sua corrida di�ria de 8 Km, indispens�vel para quem trabalha num ritmo que chega a 18 horas di�rias.

11.0 Sistema S.E.N.

O Sistema S.E.N. � um ASP (Aplication Service Provider) especializado em solu��es internet. ASP � uma empresa que oferece acesso ou customiza aplicativos e servi�os internet espec�ficos, que de outra forma,teriam que ser desenvolvidos pelo pr�prio cliente. O Sistema S.E.N. traz a vantagem de que seus clientes n�o precisam investir em desenvolvimento, m�quinas, infra-estrutura, m�o- de- obra especializada e manuten��o para que seus projetos rodem na internet. Basta possuir acesso � internet!

Se sua empresa � pequena, m�dia ou um conglomerado multinacional, existem diversos pontos a considerar. O primeiro � o tempo para poder colocar um projeto em pr�tica, o segundo � o custo e o terceiro � a funcionalidade. No Sistema S.E.N., as empresas podem implantar seus projetos rapidamente, sem precisar alterar sua estrutura ou adquirir softwares caros para migrar seus sistemas internos a fim de estarem compat�veis com a solu��o e-business desejada. Al�m disso, todo o gerenciamento e acompanhamento � fornecido pelo Sistema S.E.N.. Esse modelo de n�gocio est� obtendo enorme sucesso nos EUA e tem sido muito proveitoso para os clientes da empresa nos �ltimos 11 anos em que atua no  mercado. Por tudo isso os propriet�rios de empresas ou altos executivos t�m-se perguntado : "Com o advento da Internet, n�o seria mais interessante e efetivo empregar  nossos esfor�os no nosso pr�prio neg�cio, em vez de contratar pessoal especializado, comprar tecnologia e desenvolver uma solu��o pr�pria?". O Sistema S.E.N. ir� ajud�-lo a fazer tudo o que voc� precisa mais rapidamente, a um custo menor e com mais seguran�a do que se fosse feito "in house". Os clientes do Sistema S.E.N. gastam suas energias melhorando  seu pr�prio neg�cio, enquanto o e-business de suas empresas fica por nossa conta. Com nossa ajuda,sua empresa ficar� totalmente concentrada no que faz melhor : o seu neg�cio. Enxuge sua empresa e consulte-nos sobre como podemos ajud�-lo.

O Sistema S.E.N. foi fundado em 1991,tendo sido pioneiro no Brasil ao implementar solu��es e-business especialmente nas �reas comerciais, suporte a clientes, assist�ncia t�cnica e p�s-vendas de diversas empresas.O endere�o de e-mail para contato � [email protected].

 

12.0 Links

 

13.0 Como obter e apreender mais sobre Linux

Linux � distribu�do em CDs por diversas empresas (Red Hat, Conectiva, Timpanogas, Caldera, SuSe, Slackware, etc) que al�m do kernel incluem v�rios aplicativos como servidores de e-mail, http, servidores gr�ficos, etc.

Geralmente, as distribuidoras p�em � disposi��o as imagens de seus CDs em arquivos ISO atrav�s de seus pr�prios servidores FTP ou espalhados em v�rios outros servidores na internet. As empresas distribuidoras, al�m de fornecer gratuitamente a imagem dos CDs para download, vendem pacotes prontos com CDs, manuais e contrato de suporte. Al�m disso, revistas distribuem CDs, e sites vendem CDs j� gravados por valores muito pequenos.

Existem diversos manuais sobre Linux na internet,assim como revistas impressas e via internet, diversos livros publicados al�m das distribuidoras que fornecem suporte. H� tamb�m escolas homologadas pelas empresas distribuidoras que ministram cursos variados sobre Linux.

Existem dois livros em portugu�s que pude avaliar para poder indicar. Os dois s�o b�sicos, de baixo custo e muito interessantes para quem precisa apreender Linux.

- Linux Administra��o e suporte, editora Novatec, autor Chuck V. Tibet e ISBN 85-85184-95-7

- Dominando 110% Intranet em Ambiente Linux, editora Brasport, autor Antonio Marcelo e ISBN 85-74520-47-0

Ambos podem ser adquiridos online na www.temporeal.com.br

14.0 O que � Linux

Linux � um sistema operacional que foi criado inicialmente como hobby por um estudante finland�s chamado Linus Torvalds enquanto estava na Universidade de Helsinki, na Finl�nda. Linux � um sistema no padr�o POSIX/UNIX de alta qualidade que � desenvolvido e mantido constantemente por milhares de programadores em todo o mundo. Empresas e organiza��es como a Shell, Boeing, Toyota, NASA, governo americano, NSA, governos espalhados no mundo, etc. utilizam largamente Linux pela sua alta qualidade e estabilidade. A NASA possui um grande interesse no Linux e tem a maioria de seus t�cnicos em inform�tica linuxers de carteirinha. Um curiosidade � a uso do Linux nos computadores de bordo do onibus espacial, projeto conhecido como Flying Linux.O Sr Torvalds come�ou a trabalhar no Linux em 1991 e hoje o kernel do sistema encontra-se na vers�o 2.4.x sendo constatemente revisto e ampliado. Linux foi desenvolvido sob a licen�a GNU-GPL (veja www.gnu.org ) cujo c�digo fonte � livremente acess�vel para qualquer pessoa. Por�m, isso n�o significa que as distribui��es Linux sejam gratuitas. As empresas que distribuem Linux agregam valor incluindo softwares, manuais e suporte ao produto. Linux roda em diversos equipamentos e plataformas, desde servidores SUN, Intel, Alpha, PowerPC (Mac) ,etc. at� pequenos players MP3, como o RIO da Diammond (que utilizo em minhas corridas di�rias). A utiliza��o do Linux em pequenos devices, gadgets e computadores � denominada embedded system e existem v�rias empresas especializadas apenas nisso. Atualmente com a crise de energia americana, muitas empresas est�o adotando Linux pela vantagem de ser um sistema operacional que gasta menos energia. Como se n�o bastassem as demais vantagens que j� conhecemos.

15.0 Agradecimentos

Gostaria de agradecer a prof. Maria Helena Bruna e minha m�e Nat�lia Maria Scheidecker Antunes pela revis�o desse texto. Gostaria tamb�m de agradecer os diversos e-mails que temos recebido dos leitores satisfeitos. Acreditem, isso � que realmente impulsiona uma trabalho como esse.

documento em formato acrobat reader pdf.

Hosted by www.Geocities.ws

1