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 :
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
13.0 Como obter e apreender mais sobre Linux
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.
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.
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.
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.
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.
Como hardware, al�m da nossa rede interna, foi utilizado :
Como software utilizamos :
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 Chain (ou corrente em portugu�s)
especifica o nome da chain.
uma chain definida pelo usu�rio |
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 |
|
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.
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 |
|
Figura 3.12 - Exemplo de conector RJ-45 climpado |
Figura 3.13 - Ferramentas para climpar |
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 |
|
Figura 3.15 - 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.
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 |
Figura 3.22 -Vista traseira |
Figura 3.23 - Em opera��o com o script de Firewall carregado |
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.
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.
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" arquivo /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" arquivo /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE="eth2" arquivo /etc/sysconfig/network NETWORKING=yes arquivo /etc/resolv.conf
|
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 |
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" |
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".
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 |
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".
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".
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.
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.
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.
Esta se��o descreve como configurar seus Hosts Windows 9X, Windows NT e 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.
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 |
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 |
Selecione a pasta Gateway (Figura 7.3) e entre com o IP da eth2 do Firewall.
Figura 7.3 |
Entre com os IPs dos DNS do seu provedor (figura 7.4) na pasta Configura��o DNS.
Figura 7.4 |
Clique em OK. Voc� ser� notificado pelo seu Host Windows que ser� necess�rio rebootar a m�quina.
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 |
Clique no tab DNS e digite os endere�os de DNS do seu provedor (figura 7.6).
Figura 7.6 |
Clique no bot�o Apply, clique em OK. O NT ir� avisar que precisa rebootar a m�quina.
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.
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.
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 |
|
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).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.
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. |
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].
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
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.
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.