64
Faculdade Eniac Graduação Tecnológica em Redes de Computadores Cléio de Jesus Sousa Cleiton de Jesus Sousa Segurança em Redes Linux Firewall Iptables

Tcc Firewall Iptables

Embed Size (px)

Citation preview

Page 1: Tcc Firewall Iptables

Faculdade Eniac

Graduação Tecnológica em Redes de Computadores

Cléio de Jesus Sousa

Cleiton de Jesus Sousa

Segurança em Redes Linux

Firewall Iptables

Guarulhos

2013

Page 2: Tcc Firewall Iptables

Segurança em Redes Linux

Firewall Iptables

Trabalho de Conclusão de Curso

apresentado à Faculdade Eniac, como

requisito parcial para a obtenção do

título de Graduação Tecnológica em

Tecnologia em Redes de

Computadores.

Orientador: Prof. MSc. Jacques

Miranda.

Guarulhos

2013

Page 3: Tcc Firewall Iptables

Dedicamos nosso Trabalho de

Conclusão de Curso a todos que

estiveram conosco durante essa

grande jornada de aprendizados

e luta. Nossa família e amigos

que nos apoiaram e

incentivaram a prosseguir até o

final mediante as dificuldades e

mantendo sempre a persistência

e perseverança.

Page 4: Tcc Firewall Iptables

Agradecemos

primeiramente a Deus por

ter nos capacitado e nos

dado força em todas as

horas, agradecemos a

todos os amigos e

familiares que estiveram

acompanhando e

acreditando em nós

durante todo o curso.

Page 5: Tcc Firewall Iptables

“Você nunca saberá quais resultados virão de suas ações, mas se não fizer nada, não existirão

resultados."

(Fernanda Del Ré)

Page 6: Tcc Firewall Iptables

Sumário

INTRODUÇÃO.................................................................................................1

1. DEFINIÇÃO DE SEGURANÇA.....................................................................3

2. SISTEMA OPERACIONAL ADOTADO.........................................................4

3. RAZÃO A QUAL UTILIZAR O FIREWALL DO LINUX..................................5

3.1 SEGURANÇA DO LINUX.................................................................5

4. RAZÕES PARA SE PREOCUPAR COM A SEGURANÇA...........................6

4.1 COMO O ATAQUE PODE SER FEITO............................................6

4.2 PRINCIPAIS TIPOS DE ATAQUE....................................................6

5. ENGENHARIA SOCIAL................................................................................8

6. CONCEITO E DEFINIÇÃO DE UM FIREWALL............................................10

7. FUNCIONAMENTO DE UM FIREWALL.......................................................11

8. FIREWALL IPTABLES.........................,........................................................12

9. FLUXO DO KERNEL VS NETFILTER..........................................................13

10. TABELAS DO IPTABLES...........................................................................14

11. NECESSIDADE DE UMA REDE SEGURA................................................15

12. COMANDOS BÁSICOS DE GERENCIAMENTO.......................................17

13. CRIANDO REGRAS BÁSICAS NO IPTABLES...........................................21

14. CONCLUSÃO..............................................................................................24

15. REFERÊNCIAS BIBLIOGRÁFICAS............................................................26

16. ANEXOS......................................................................................................27

17. REVISÃO BIBLIOGRÁFICA........................................................................31

18. APÊNDICE .................................................................................................33

19. TERMO DE COMPROMISSO ....................................................................41

Page 7: Tcc Firewall Iptables

Introdução

Trata-se de um trabalho de conclusão de curso sob a forma de

monografia como requisito parcial para obtenção de titulação em tecnólogo do

curso Tecnologia em Redes de Computadores.

O Tema escolhido para o desenvolvimento do Trabalho é apresentado

como forma de mostrar sobre a segurança de dados nos sistemas, e a

segurança como um todo no mundo da informática. Veremos também tipos de

situações que envolvem o dia a dia, precauções e soluções.

A segurança da informação é uma disciplina relativamente nova em

comparação com as outras áreas de conhecimento humano, umas disciplinas a

qual poucas pessoas se interessam em saber sobre ela e apenas se dão conta

da importância quando precisam ou há necessidade de uma mudança drástica.

Com o crescimento gradativo das redes de computadores e o grande

volume de dados das empresas cada vez mais conectadas às redes Internet, o

fator segurança é imprescindível tanto em pequenas como grandes

corporações.

Hoje todas as empresas veem a necessidade de terem ao menos um

Servidor e um computador (Cliente) dentro da empresa, seja para acesso ao

sistema, para uma edição de texto, imagens, planilhas, e-mail, internet, etc.

Nosso trabalho abordará a desde um pouco sobre a história das redes

de computadores, passando pela evolução gradativa que teve durante todos

estes ano até a segurança das redes, como implementar uma rede segura,

trabalhando com uma ferramenta do sistema operacional Linux, introduzida no

kernel do sistema, o iptables, evitando assim um problema maior no futuro.

A evolução da tecnologia periodicamente nos leva a grandes ideias e ao

mesmo tempo a grandes dificuldades de mudar, proteger e acompanhar a sua

evolução e desenvolvimento.

A Tecnologia tende a mudar a cada dia, hoje em dia ninguém mais vive

sem ela, empresas usuários, e todas as pessoas de todos os lugares.

1

Page 8: Tcc Firewall Iptables

Nesse trabalho também abordaremos assuntos como pequenas e

grandes ameaças, e outros assuntos interessantes para quem gosta e esta

envolvido no mundo da informática.

Nosso trabalho é voltado a um público diferenciado e um público

totalmente interativo com a tecnologia. Menos por seu um tema bastante

robusto e com muita abrangência, conseguimos focar diretamente nos

principais e mais interessantes tópicos, e poder trazer ao leitor o que parece

ser mais importante para a segurança da informação, e despertar a vontade de

aprender cada vez mais.

O principal tema abordado no trabalho é o Sistema operacional Linux e

sua segurança, um tema muito interessante e com muitas dicas de segurança.

Vamos ver bastante sobre o Firewall, IPTABLES e suas barreiras de

segurança, filtragem de pacotes e tráfico de dados.

Com base em livros, pesquisas, estudos e conteúdo visto e elaborado,

desenvolvemos este trabalho como forma de aprendizagem e desenvoltura,

desta forma apresentando em forma de trabalho de conclusão grande parte do

nosso aprendizado durante todo o período do curso.

2

Page 9: Tcc Firewall Iptables

1. DEFINIÇÃO DE SEGURANÇA

Segundo o Livro “Writing Information Security Policies” de Scott Barman,

publicado pela Editora New Riders nos Estados Unidos (sem tradução no

Brasil) a politica de Segurança é composta por um conjunto de regras e

padrões sobre o que deve ser feito para assegurar que as informações e

serviços importantes para a empresa recebam a proteção conveniente, de

modo a garantir a sua confidencialidade, integridade e disponibilidade.

A segurança da informação é um conjunto de normas seguidas e

utilizadas para manter sempre a segurança de coisas que são ativos de

informação.

Esta relacionada com a proteção de um conjunto de dados, no sentido

de preservar o valor que possuem para um individuo ou uma organização. Isto

se aplica a todos os aspectos de proteção de informações e dados, incluindo

não apenas a segurança dos dados, mas também as dos sistemas em si.

(FERREIRA, 2008, p.7).

A segurança da informação se refere à proteção existente sobre as informações de uma determinada empresa ou pessoa, isto é, aplica se tanto as informações corporativas quanto ás pessoais, entende-se por informação todo e qualquer conteúdo que tenha valor para alguma organização ou pessoa. Ela pode estar guardada para uso restrito ou exposta ao público para consulta ou aquisição.

(FERREIRA, Acesso em 08 jun.2013)

3

Page 10: Tcc Firewall Iptables

2. SISTEMA OPERACIONAL ADOTADO

O Software Livre já existe a muitos anos, muito tempo antes do que

muitos imaginam. Nos anos 80 os programadores trocavam softwares entre si,

podendo dividir entre si seus conhecimentos.

Quando haviam modificações ou algumas melhorias as mesmas eram

compartilhadas umas com os outros e todos ficavam bem satisfeitos com isso.

Com a modernização e popularização dos computadores muitas

empresas começaram a não divulgar mais seus códigos, ou seja elas apenas

vendiam uma licença para o uso, isso com diversas restrições e sem a

possibilidade do cliente fazer cópias, (com o tempo a hábito de fazer cópias

levou o nome de piratária).

Muitos Hackers sentiram-se prejudicados com essa mudança pois isso

era contra seus principios de liberdade.

GNU significa “GNU is not Unix”, ou seja GNU não é Unix. O projeto

obteve esse nove para mostrar ao publico que o novo sistema operaciona seria

parecido com o Unix, mas apenas parecido. Não continha nenhum código fonte

do mesmo, pelo motivo qual que Richard stallmam desenvolveu o aplicativo do

zero.

O termo Free significa “Grátis” e ao mesmo tempo “Livre”, mas na

realidade o termo Free não é pelo fato de preço mais sim pela liberdade de

utilizar o Software.

Existem 4 liberdades básicas no software que são:

- A liberdade de executar um programa para qualquer propósito;- A liberdade de estudar um programas como ele funciona e adaptá-lo para suas necessidades, acesso ao código fonte é um pré requisito liberdade;- A liberdade de redistribuir cópias de modo que possa ajudar o próximo;- A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos de modo que todos se beneficiem;

(THE FREE SOFTWARE DEFINITION, Acesso em 08 jun.2013)

4

Page 11: Tcc Firewall Iptables

3. RAZÃO A QUAL UTILIZAR O FIREWALL DO LINUX

O Iptables é um dos firewalls em software livres mais utilizados, e como

ele já vem instalado por padrão, na maioria das distribuições do Linux, e pelo

fato dele ter bom desempenho, ótima segurança, estabilidade, ótima

customização e certa facilidade de configuração, claro, após conhecer bem o

seu funcionamento, serão por estes motivos que será utilizado o Firewall do

Linux, Iptables.

3.1 A SEGURANÇA DO LINUX

Qualquer distribuição Linux, tem como o administrador do sistema o

super usuário (root), com este usuário é possível fazer o que quiser no sistema,

é o único usuário que é irrestrito ao sistema.

Para um melhor entendimento do usuário root, é necessário entender

que todos os processos, arquivos ou diretórios tem um usuário proprietário que

não tem restrições sob aquele arquivo, diretório, etc. Porém todo esse poder

por ser perigoso para alguém que não saiba utilizar o sistema.

Segundo Silva (2008, p. 147), é possível que outras contas de acesso ao sistema sejam criadas com mesmo privilégio do usuário root; é como se fosse outros administradores do sistema. Algumas organizações adotam esta alternativa para nomear cada usuário ao invés de usar aplicativos como o SU ou SUDO.

No entanto, o problema é quando existem contas com este privilégio sem serem contas autorizadas, ou seja: contas clandestinas. A primeira ação de um invasor qualquer que tenha conseguido acesso privilegiado ao servidor é providenciar a criação de dois usuários, um com privilégio de root, e outro não-root. Isso lhe garantirá acesso futuro, a não ser que o administrador do sistema identifique e remova estas contas rapidamente.

O meliante criará contas com nomes não sugestivos, como admin, PHP, OK, syst, NOP, e vários outros nomes que poderiam ser confundidos com algo próprio do sistema operacional.

Outra questão que deve ser constantemente avaliada é a existência de contas sem senha, que poderiam permitir algum tipo de acesso não autorizado. (SILVA, 2008, p. 147).

5

Page 12: Tcc Firewall Iptables

4. RAZÕES PARA SE PREOCUPAR COM A SEGURANÇA

Invasores de sistema, ou os chamados Crackers buscam sempre achar

as vulnerabilidades de sistemas, redes, para poder atacar empresas, ou até

mesmo usuários domésticos desprotegidos, ou que tenham sua rede mal

configurada.

A maior parte dos ataques tem como objetivo acesso a importantes

informações.

Exemplo: Documentos importantes, fotos, e-mails, senhas de banco,

cartões de crédito, etc.

4.1 COMO O ATAQUE PODE SER FEITO

O Invasor pode, por meio de uma rede mal configurada entrar em algum

computador da rede e a partir dai, realizar o roubo de informações, ou alterar

configurações na rede, como por exemplo, alterar informações do site, ou

intranet da empresa, documentos da rede, etc.

Sempre buscando preservar o anonimato (deixando o computador

invadido como se fosse o que efetuou o ataque na rede).

4.2 PRINCIPAIS TIPOS DE ATAQUES

Com a crescente ampliação da atividade dentro das organizações,

dificilmente será encontrada uma empresa sujeita apenas a um tipo de risco.

Cada risco envolverá características especificas, sendo necessário um

conhecimento amplo do segmento analisado, com o objetivo de realizar uma

melhor avaliação dos riscos.

6

Page 13: Tcc Firewall Iptables

A seguir serão definidos alguns conceitos relativos aos principais tipos

de riscos:

Risco estratégico e Empresarial (Negócio)

Geralmente as decisões estratégicas influenciavam toda uma

organização nos seus mais variados níveis (executivo, Gerencial, Operacional,

Técnicos etc.).

Além disso, as informações estratégicas são responsáveis por manter e

aumentar a competitividade de uma organização seja qual for o nicho de

negócio em que esteja inserida. Por isso, o risco estratégico deve ter uma

atenção toda especial.

Risco Humano

É proveniente de ações de pessoas com intenções ou não de atingir a

organização. Por exemplo, um funcionário interno de uma empresa poderá

causar danos, uma vez que podem possuir amplo conhecimento do

funcionamento da organização permitindo ações mais direcionadas.

Outro exemplo seria o de danos causados por pessoas internas da

organização que cometem involuntariamente.

Risco tecnológico

Em virtude de seu potencial ainda não totalmente explorado e com

poucos diretores de TI com entendimento da sua real necessidade, tem sido

uma porta de entrada para muitos Hackers que enxergam nas falhas dos

sistemas uma porta de entrada para obter acesso não autorizado aos sistemas.

É comum ouvir que a analise deste tipo de risco pode ser automatizada e realizada por qualquer analista. Ai está o maior perigo, poís uma analise mal feita, ou mesmo realizada superficialmente, poderá comprometer um sistema com informações valiosíssimas, causando prejuízos enormes para a organização. Recentemente as empresas têm alinhado estas análises com o seu negócio, direcionando os esforços sobre os ativos realmente relevantes. (Alberto, 2006, p. 64).

7

Page 14: Tcc Firewall Iptables

5. ENGENHARIA SOCIAL

A Engenharia social é um termo utilizado para a obtenção de

informações importantes de uma máquina ou servidor, através de seus

usuarios e colaboradores, na qual essas informações podem ser obtidas pela

ingenuidade ou confiança, e por via de telefone, Email e outros fins.

Segundo a (NBSO, 2003) a Engenharia social é quando o atacante abusa da ingenuidade de um usuário para obter informações importantes, muitas vezes para ter acesso a computadores não autorizados.Ferreira (2008 p.119), afirma que a Engenharia Social ocorre quando os alvos são as pessoas ingênuas ou aquelas que simplesmente desconhecem as melhores práticas de segurança. Pouca ou nenhuma segurança deixa as organizações vulneraveis.Entretanto, em exagero atrapalha a condução e o crescimento das atividades do negócio. Não há como garantir a segurança da informação na organização somente envestindo em equipamentos e recursos de tecnologia da informação, como, por exemplo Firewalls, sistmas de detecção de intrusos, antivirus etc.

Os tipos de ataques mais frequentes são no local de trabalho, por

telefone e On line.

Existem algumas formas de prevenção para evitar de cair em alguma

cilada da engenharia social, tais como:

- Implementar formalmente a Politica de Segurança da informação.

Quando possivel, efetuar palestras para os colaboradores para conscientizar

sobre seu uso.

- Classificar as informações de forma a esclarecer a cada colaborador

sobre o que pode ser divulgado e o que não pode.

- Desconfiar de grandes promoções, preços baixos e das ofertas

veiculadas na internet.

- Desconfiar sempre que for surpreendido por um telefonema de alguém

que não conheça. Nunca divulgar nada e pedir um número de retorno para

verificar se a ligação é verdadeira.

Engenheiros sociais que utilizam o telefone para obter informações

8

Page 15: Tcc Firewall Iptables

possuem como objetivo ou passar se por algum funcionário e colega de

trabalho, ou algum tipo de autoridade externa, como um auditor por exemplo.

Os primeiros alvos são secretárias, recepcionistas e seguranças, pois

esses funcionários estão sempre em contato direto ou indireto com pessoas

que detém cargos de poder dentro da empresa, os verdadeiros alvos.

Assim através de pessoas mais acessiveis e com cargos menores é

possivel obter informações sobre aquelas mais bem posicionadas na

hierarquia.

(MARTINS, acesso em 09/06/13)

Por fim, a engenharia social é o ato de conseguir informações de uma

forma inusitada, a autoconfiança, facilidade de comunicação, aptidão

profissional e grande capacidade de persuasão são caracteristicas de um

engenheiro social.

Muitas vitimas do ataque, afirmam não saber que passaram informações

que não deveriam devido ao talento da pessoa com quem conversou, e esse

caso não é tão improvavel quanto pensamos.

9

Page 16: Tcc Firewall Iptables

6. CONCEITO E DEFINIÇÃO DE UM FIREWALL

Um Firewall pode ser definido como um sistema que controla os pacotes e conexões de rede que passam por ele;seja no sentido de entrada, seja no sentido de saida. Uma definição mais básica diz que o Firewall objetiva proteger uma ou mais redes internas de outras redes. Existem vários tipos de Firewalls, incluindo os packt filters, statefull inspection, aplication firewall e outros.Como o IPTABLES é um dos Firewalls em software livre mais utilizado, e como ele já vem instalado por padrão na maioria das distribuições Linux e pelo fato dele ser de bom desempenho e segurança, por ser de facil configuração ele será utilizado para proteger o sistema operacional. (SILVA, 2008 p.201).

O Linux de uma forma geral é relativamente imune a virus, worms e

trojans, que são a principal causa de invasões e dores de cabeça em geral no

windows. Isto não ocorre apenas porque o windows é usado em mais

maquinas e por isso um alvo maior, mas também por que o aplicativos

disponiveis no Linux são pela média bem mais seguros.

Veja o caso do Apache, por exemplo. Ele é usado em quase 70% dos

servidores web, contra os 11% do IIS. Mesmo assim, o número de falhas

criticas de segurança e invasões bem-sucedidas registradas contra servidores

web rodando o IIS é bem maior do que nos 7 vezes mais numerosos servidores

Apache.

Mesmo assim, brechas de segurança podem surgir onde menos se

espera. Por exemplo, em 2004 foi descobertoum buffer overlow no servidor

SSH, que poderia ser usado para desenvolver um exploit. Esta brecha não

chegou a ser explorada, pois assim que a possivel vulnerabilidade foi

descoberta, uma correção foi rapidamente disponibilizada e a noticia se

espalhou pela web. Antes que alguém tivesse tempo de escrever um exploit, a

maior parte dos servidores do mundo já estavam seguros.

Imagine o Firewall como a muralha que cercava muitas cidades na idade média. Mesmo que as casas não sejam muito seguras, uma muralha forte em torno da cidade garante a segurança. Se ninguém consegue passar pela muralha, não é possivel chegar até as casas vulneráveis. Se por acaso as casas já são seguras, então a muralha aumenta ainda mais a segurança.

(MORIMOTO, 2005, p.285)

10

Page 17: Tcc Firewall Iptables

7. FUNCIONAMENTO DE UM FIREWALL

A idéia mais comum de um firewall é como um dispositivo que fica entre

o switch ou Hub em que estão ligados os micros da rede e a internet. Nesta

posição é usado um PC com duas placas de rede (eth0 e eth1, por exemplo),

onde uma é ligada á internet e outra á rede local.

O Firewall aceita as conexões vindas dos micros da rede local e roteia

os acessos a internet. De dentro da rede você consegue acessar quase tudo,

mas todas as tentativas de conexão vindas de fora são bloqueadas antes de

chegarem aos clientes.

Imagine um micro com o windows XP, onde o sistema acabou de ser

instalado, sem nenhuma atualização de segurança e com o Firewall inativo.

Conectando este micro na internet diretamente, será questão de segundos até

que ele comece a ser infectado por Worms e se transforme num zumbi a atacar

outras máquinas ligadas a ele.

Mas, se houver um Firewall no caminho, os pacotes nocivos não

chegam até ele, de forma que ele seja mantido relativamente seguro. Ele ainda

pode ser infectado de forma indiretas, como ao acessar uma página que

explore uma vulnerabilidade do IE, ou receber um E-mail infectado através do

Outlook, mas não mais diretamente, simplesmente por estar conectado a

internet. Substituindo o IE e o Outlook por programas mais seguros como o

Firefox e o Thunderbird, está máquina pode manter-se a salvo por um bom

tempo, mesmo sem as atualizações.

Opcionalmente, o servidor rodando o Firewall pode ser equipado com

um servidor Squid configurado para remover arquivos executáveis das páginas

acessadas e um servidor Postfix, encarregado de bloquear mensagens

infectadas, o que adiciona mais um nivel de proteção.

No Linux, o firewall é incluido no proprio Kernel do sistema, na forma do IPtables, encontrado no Kernel 2.4 em diante.Embora seja sempre mais seguro ter um servidor dedicado, você pode ter um nivel de segurança muito simplesmente habilitando o firewall localmente. Todos os pacotes provenientes da internet passam primeiro pelo IPtables antes de serem encaminhados para os aplicativos. Por isso um Firewall local, bem configurado, garante uma segurança muito proxima á de um firewall dedicado.(MORIMOTO, 2005, p. 286)

11

Page 18: Tcc Firewall Iptables

8. FIREWALL IPTABLES

O firewall do Linux trata-se de uma ferramenta de Front-End que permite

gerenciar tabelas do Netfilter. O Netfilter é uma versão mais robusta que suas

versões anteriores, que são: IPFWADM e IPCHAINS implementados no kernel

2.0 e 2.2 respectivamente.

As principais características do Firewall Iptables, é a velocidade de

leitura de pacotes, sua segurança, eficácia, economia tanto no aspecto

financeiro quanto em hardware, o suporte a e desenvolvimento avançado em

controle de QOS sobre tráfego, suporte a SNAT, NAT, DNAT, redirecionamento

de tráfego, portas, mascaramento de conexões, detecção de fragmentos,

controle e armazenamento de Logs (trafego da rede), TOS, bloqueio a ataques

Spoofing, Synflood, DOS, scanners ocultos, pings da morte entre muitos

outros.

Ainda existe a possibilidade de utilizar módulos externos na composição

de regras ainda mais avançadas.

Para a implementação de um servidor Firewall Iptables, não é preciso

muito gasto com hardware, com uma máquina com a seguinte configuração:

Arquitetura 386 com aproximadamente 7 MB, rodando com um kernel

acima da versão 2.4 já é possível implementar uma ferramenta de segurança

em sua rede.

Composição do Iptables

Iptables: Principal aplicativo do iptables para protocolos ipv4.

Ip6tables: Principal aplicativo do iptables para protocolos ipv6.

Iptables-save: Tem a função de salvar todas as regras criadas, em memória RAM e direciona-las a um arquivo especificado.

Iptables-restore: Tem a função de restaurar todas as regras salvas pelo software iptables-save.

É possível substituir o Iptables-save por qualquer outro arquivo, criando assim um script, com permissão de execução, colocando-o para iniciar junto ao sistema dentro do diretório /etc/rc.d/rc.local na última linha do arquivo. (NETO, 2004, p. 26.)

12

Page 19: Tcc Firewall Iptables

9. FLUXO KERNEL VS NETFILTER

O Linux utiliza um recurso independente em termos de kernel para

controlar e monitorar todo o tipo de fluxo de dados dentro de sua estrutura

operacional. Essa função trabalha ao lado de processos e tarefas tão somente.

Para que o kernel pudesse trabalhar ainda melhor o controle de trafego

foi agregada uma ferramenta batizada de Netfilter.

Esta ferramenta criada por Marc Boucher, James Morris, Harald Welte e

Rusty Russel, é um conjunto de situações de fluxo de dados agregadas

inicialmente ao Kernel do Linux e dividida em tabelas.

O Netfilter pode ser comparado a um grande banco de dados contendo

as três tabelas que são: Filter, Nat e Mangle. Cada uma dessas tabelas tratam

os pacote dentro de suas respectivas cadeias.

O netfilter em si é um conjunto de ganchos que ficam dentro do kernel

do Linux, dando permissão para os módulos do kernel registrar as funções de

retorno de chamada com a pilha de rede.

As vantagens do Netfilter são muitas e existem muitas coisas que podem

ser feitas com ele, como por exemplo:

- Construir firewalls de internet baseados em filtragem de pacotes

- Fazer manipulação de pacotes e alterar o TOS/DSCP/ECN bits do

cabeçalho IP.

(AYUSO, acesso em 09/06/2013)

O Netfilter / Iptables trabalha com 4 tabelas distintas, a FILTER / NAT /

MANGLE / RAW.

Existem também os Chains que são usadas para o controle de fluxo dos

pacotes dentro das tabelas como entrada de FILTER, e saída de NAT, e entre

eles existem 5 principais Chains que são: INPUT / OUTPUT / FORWARD /

PREROUTING / POSTROUTING.

13

Page 20: Tcc Firewall Iptables

10.TABELAS DO IPTABLES

O Iptables trabalha com três tabelas de inspeção filter, NAT, mangle,

conforme segue, a tabela indicada pelo parâmetro -t -table. A tabela padrão é a

filter.

Como funciona a tabela filter: É a tabela padrão. Quando nada for especificado

no comando, a tabela filter é utilizada. Refere-se às atividades normais de

trafego de dados, sem a ocorrência de NAT. Possui três correntes INPUTS,

OUTPUT E FORWARD.

Funcionamento da tabela NAT: Utilizada quando a tradução de

endereços. Exemplo: Passagem de dados de uma rede privada para a internet.

Admite as correntes PREROUTING E POSTROUTING.

Funcionamento da tabela mangle: utilizada para alterações especiais em

pacotes. Raramente utilizada. Admite as correntes PREROUTING e OUTPUT.

Funcionamento das cadeias da tabela filter

INPUT, a cadeia INPUT trata todos os pacotes que entram no servidor, isso quer dizer: Pacotes que tenham sido originados em qualquer outra máquina, em qualquer outra rede, e com destino final o próprio servidor onde o Firewall está instalado.

OUTPUT, a cadeia OUTPUT é o inverso do INPUT, trata todos os pacotes originados na máquina onde o Firewall está instalado e com destino a qualquer outra máquina.

FORWARD, já esta cadeia, trata todos os pacotes que atravessam o Firewall, seja no sentido da rede externa para a interna, como da rede interna para a externa, nenhum destes pacotes foi originado ou destinado ao Firewall, eles simplesmente atravessam o Firewall. (SILVA, 2008, p. 35).

14

Page 21: Tcc Firewall Iptables

11.NECESSIDADE DE UMA REDE SEGURA

O conceito segurança significa no dicionário Houaiss, "conjunto de

processos, de dispositivos, de medidas de precaução que asseguram o

sucesso de um empreendimento, do funcionamento preciso de um objeto, do

cumprimento de algum plano etc.”.

No mundo informatizado, segurança significa, segundo a Norma ISO/IEC 17799 (código de melhores práticas para implementação da segurança da informação) "a proteção da informação que, como qualquer outro ativo importante para ser adequadamente salvaguardada". (ALBERTO, 2006, p. 1.)

A segurança hoje não é só um complemento, como também uma

necessidade, se pensarmos bem, tudo hoje precisa de segurança, por

exemplo, quando adquirimos um veiculo, seja automóvel ou algo do tipo, à

necessidade de colocarmos no seguro, prevenindo de qualquer dano, roubo,

etc. Contudo a segurança aplicada nunca será 100% de segura, porém

podemos minimizar as vulnerabilidades de bens, e recursos.

Vulnerabilidades

Falha e/ou conjunto de falhas que podem ser exploradas por ameaças.

Exemplos:

Contas sem senha, ou senhas fracas;

Falhas em programas (buffer overflow em serviços DNS, FTP, SMTP,

etc.);

SQL Injection;

15

Page 22: Tcc Firewall Iptables

Principais Ataques

Ataque Dos: O ataque de DoS, é um tipo de ataque, que se é utilizado

de conexões múltiplas e simultâneas ao servidor, gerando uma sobrecarga na

rede de forma a tira-lo do ar, deixando-o indisponível.

Ataque DDoS: Este tipo de ataque é muito parecido com o ataque de

DoS, na verdade é um ataque de DoS, porém com maior ampliação, onde o

cracker utiliza vários computadores escravos para efetuar ataques a uma

determinada estação/máquina.

Hoje com a facilidade da banda larga, e abaixo de valor nos

computadores, a grande maioria dos usuários já tem seu computador pessoal,

o que permite que os usuários, caso queiram, possam facilmente derrubar

grandes servidores com este tipo de ataque.

Neste trabalho será ainda apresentada uma configuração de firewall que

bloqueia o servidor Firewall deste tipo de ataque.

Considerações importantes a serem adotadas:

Não existe sistema de segurança totalmente seguro e sem falhas;

Não existe sistema operacional totalmente seguro, e sem falhas;

Não existe ferramentas de segurança das quais um cracker ou hacker nunca conseguirá detectar uma brecha para quebrar;

Não existe segurança plena, 100 por cento ou definitiva;

(ALBERTO, 2006, p3.)

16

Page 23: Tcc Firewall Iptables

12.COMANDOS BÁSICOS DE GERENCIAMENTO

Neto, (2004, p. 33), afirma quea tabela filter é a tabela padrão do Iptables.

Se for adicionado uma regra sem ser adicionado a flag – t [tabela] a regra se aplicará a tabela filter.

Já no caso das tabelas NAT e Mangle quando for adicionar as regras é preciso especificar adicionando a flag – t.

COMANDOS

A sintaxe genérica usada pelo comando iptables é:

Iptables comando regras extensões

-A cadeia – Anexa regras ao final de uma cadeia. Se um nome de host é

fornecido, como fonte ou como destino, uma regra é adicionada para cada IP

relacionado a este host.

-D cadeia – Apaga uma ou mais regras da cadeia especificada

-D cadeia regra_num – Apaga a regra residente na posição indicada por

regra_num da cadeia especificada. A primeira regra na cadeia é a de número

1.

-R cadeia regra_num – Substituí a regra regra_num da cadeia

especificada pela regra dada

-I cadeia regra_num – Insere uma ou mais regras no começo da cadeia.

Se um nome de host é fornecido, como fonte ou como destino, uma regra é

adicionada para cada IP relacionado a este host.

-L [cadeia] – Lista todas as regras em uma cadeia. Caso não haja

nenhuma cadeia especificada, todas as regras em todas as cadeias são

listadas.

-F [cadeia] – Remove todas as regras de uma cadeia. Se nenhuma

cadeia for especificada, remove as regras de todas as cadeias existentes,

inclusive as do usuário.

17

Page 24: Tcc Firewall Iptables

-Z [cadeia] – Restaura os contadores de datagramas e de bytes em

todas as regras das cadeias especificadas para zero, ou para todas as cadeias

se nenhuma for especificada.

-N cadeia – Cria uma cadeia definida pelo usuário com o nome

especificado.

-X [cadeia] – Apaga a cadeia definida pelo usuário ou todas se não for

especificada uma.

-C cadeia – Verifica o datagrama descrito pela regra especificada contra

a cadeia especificada. Este comando retorna uma mensagem descrevendo

como a cadeia processou o datagrama. Isto é muito útil para testar a

configuracão do firewall, e para uma análise posterior.

-P cadeia política – Define a política padrão para uma cadeia dentro de

uma política especificada. As políticas válidas: ACCEPT, DROP, QUEUE e

RETURN. ACCEPT permite a passagem do datagrama. DROP descarta o

datagrama. QUEUE passa o datagrama para área do usuário para posterior

processamento. RETURN força o código do firewall a retornar para a cadeia

anterior e continua o processamento na regra seguinte à que retornou.

Regras

As seguintes regras podem ser usadas:

-p Protocol – Define o protocolo ao qual a regra se aplica. O parâmetro

protocol pode ser qualquer valor numérico do arquivo /etc/protocol ou uma das

palavras chave: tcp,udp ou icmp

-s addres[/mask] – Define a origem do pacote ao qual a regra se aplica.

O parâmetro address pode ser um nome de host, um nome de rede ou um

endereço IP com uma máscara de rede opcional.

-d address[/mask] – Define o destino do pacote ao qual a regra se aplica.

O endereço e a porta são definidos usando-se as mesmas regras utilizadas

para definir esses valores para a origem do pacote.

-j alvo – Define um alvo para o pacote caso ele se encaixe nesta regra.

18

Page 25: Tcc Firewall Iptables

Os alvos possíveis são ACCEPT, DROP, QUEUE ou RETURN.

É possível especificar uma cadeia do usuário. Também é possível

especificar uma extensão.

-i interface_name – Define o nome da interface por onde o datagrama foi

recebido. Um nome de interface parcial pode ser usado encerrando-o com um

sinal de “+”; por exemplo, eth+ corresponderia a todas as interfaces Ethernet

iniciadas com eth.

-o interface_name – Define o nome da interface por onde o datagrama

será transmitido.

-f – Indica que a regra somente se refere ao segundo fragmento e aos

subseqüentes de pacotes fragamentados.

Observação: O símbolo “!” é usado na regras como uma negação da

expressão.

Exemplo: -s 192.168.0.10/32 equivale ao endereço de origem

192.168.0.10, -s !192.168.0.10/32 equivale a todos os endereços exceto o

192.168.0.10.

Opções que podem ser utilizadas

-v – Saída em modo verbose. Mais rico em termos de detalhes sobre o

que está acontecendo ou sendo feito.

-n – Saída em modo numérico e não por nome de host, rede ou porta.

-x – Exibe o valor exato do pacote e dos contadores de bytes em vez de

arrendondá-los para o milhar, milhão ou bilhão mais próximo.

–line-numbers – Quando lista as regras, adiciona um número de linha ao

começo de cada regra, correspondendo à posição da regra dentro da cadeia.

Extensões que podem ser utilizadas

Para fazer uso das extensões é preciso especificar o seu nome usando

o parâmetro -m [argumento] para o que o iptables carregue este módulo.

19

Page 26: Tcc Firewall Iptables

Extensão TCP: usada com -m tcp -p tcp

–sport [!] [port[:port]] – Especifica a porta que a origem do datagrama

usa. Portas podem ser especificadas com um conjunto especificando-se o seu

limite superior e inferior separados por dois pontos (:). Por exemplo, 20:25

descreve todas as portas numeradas de 20 até 25 inclusive. Também é

possível usar o caracter “!” para inverter a expressão.

–dport [!] [port[:port]] – Especifica a porta que o destino do datagrama

usa.

–tcp-flags [!] mask comp – Especifica que esta regra somente será

validada quando os flags do datagrama TCP coincidirem com o especificado

em mask e comp. Mask é uma lista separada por vírgulas dos flags que devem

ser examinados quando for feito o teste. Comp é uma lista separada por

vírgulas dos flas que devem ser configurados. Os flags válidos são: SYN, ACK,

FIN, RST, URG, PSH, ALL ou NONE.

–syn – Especifica que a regra deve encontrar somente datagramas com

o bit SYN ligado e os bits ACK e FIN desligados. Datagramas com essas

opções são usados para requisitar início de conexão TCP.

Extensão UDP: usada com -m udp -p udp

–sport[!][port[:port]] – Este parâmetro tem funcionamento idêntico ao da

extensão TCP.

–dport[!][port[:port]] – Este parâmetro tem funcionamento idêntico ao da

extensão TCP.

Extensão ICMP: usada com -m icmp -p icmp

–icmp-type [!] typername – Especifica o tipo de mensagem ICMP que a

regra deve satisfazer. O tipo pode ser determinado por um número ou nome.

Alguns nomes válidos são: echo-request, echo-reply, source-quench, time-

exceeded, destionation-unreachable, network-unreachable, host-unreanchable,

protocol-unreachable e port-unreachable.

(SILVA, 2008, p. 204)

20

Page 27: Tcc Firewall Iptables

13.CRIANDO REGRAS BÁSICAS NO IPTABLES

Morimoto (2002 P. 541) diz que, existem vários programas gráficos para configuração de Firewalls, como o GuarDog e Shorewall, para distribuições Debian, Red Hat, Mandrake, etc. Estes softwares trabalham em cima do Iptables, e servem para facilitar a configuração. O Iptables é muito versátil, e pode ser usado para práticamente tudo relacionado a inspeção, encaminhamento e até alteração de pacotes. Caso ele não faça algo prontamente, é possível criar um módulo que faça.

A partir deste ponto, seram criadas algumas regras básicas a serem

adicionadas no Host, visando resolver os problemas mais simples, trabalharei

em cima de regras adicionadas diretamente no terminal, sem interface gráfica.

Para garantir que o Iptables está carregado é preciso rodar o comando a

seguir:

# Modprobe iptables

Para adicionar as regras dentro do Firewall Iptables é simples, dentro do

terminal, só é preciso estar logado como super usuário (root) e digitar o

comando utilizando a sintaxe correta:

Iptables comando regras extensões

# iptables –filter –A INPUT –s 0/0 –p tcp ––syn –j DROP

A regra acima vai ignorar qualquer conexão com destino a qualquer

porta TCP, sem enviar qualquer confirmação de recebimento de pacote. Essa

regra não bloqueia o acesso do usuário a internet, porém ele não irá aceitar

qualquer conexão, em qualquer porta, agora somente conexões inicadas deste

computadores são aceitas.

Para aceitar conexões originadas de uma mesma rede (Local) a está

máqiuna que esta sendo configurada, é preciso criar uma regra que aceite

21

Page 28: Tcc Firewall Iptables

pacotes destinados a máquina. Na regra será liberado a rede de classe C IP:

192.168.0.0/24.

# iptables –filter –A INPUT –s 192.168.0.0/24 –p tcp –j ACCEPT

# iptables –filter –A INPUT –p tcp ––syn –j DROP

A regra está aceitando conexões originadas pela rede 192.168.0.0/24 e

a segunda regra bloqueia, rejeita qualquer outra tentativa de conexão.

O Iptables processa os comandos em sequência. Então todos os pacotes passam pela primeira instrução antes de ir para a segunda. Quando um pacote vem de um dos endereços da rede local é imediatamente aceito, os demais vão para as duas últimas linhas e acabam recusados.

É uma simples questão de sim ou não. A primeira linha diz sim para os pacotes da rede local enquanto a segunda linha diz não para todos os demais.

(MORIMOTO. 2002 p. 542).

Agora será adicionada uma regra que vai permitir conexões externas

com destino a porta 22 (SSH) somente, e deixando o restante das portas

dropadas, mantendo as regras anteriores.

# iptables –t filter –A INPUT – –syn –s 192.168.0.0/24 –p tcp –j

ACCEPT

# iptables –t filter –A INPUT –p tcp – –dport 22 –s 0/0 –j ACCEPT

# iptables –t filter –A INPUT –p tcp – –syn –j DROP

# iptables –t filter –A INPUT –p udp –j DROP

A leitura das regras e resultado destas regras, será uma aceitação de

pacotes originados pela rede 192.168.0.0/24, aceitando conexão de qualquer

origem na porta 22, dropando todo o restante de pacotes com protocolo tcp, e

udp.

A próxima regra vai aceitar pacotes de IMCP (ping) originados pela rede

local.

22

Page 29: Tcc Firewall Iptables

# iptables –t filter –A INPUT –s 192.168.0.0/24 –p icmp –j ACCEPT.

Morimoto (2002 P. 543) ensina em seu livro “Entendendo e dominando o Linux“, que para compartilhar a conexão com a internet, é preciso primeiramente configurar as placas de rede da máquina, a máquina precisa ter duas placas de rede, onde uma será conectada diretamente com o Modem ADSL, ou roteador da operadora de internet, e a outra placa precisa estar se comunicando com a rede interna que terá acesso a internet a partir do compartilhamento.

Para compartilhar a conexão internet ADSL instalada na placa eth0:

# modprobe iptable_nat

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# echo 1 > /proc/sys/net/ipv4/ip_forward

As três linhas respectivamente ativam o módulo NAT do iptables,

responsável pela tradução de endereços, avisam para o iptables que ele deve

direcionar todas as conexões recebidas para a interface eth0 (a primeira placa

de rede configurada) e devolver as respostas para os clientes, e confirmam a

ativação no arquivo de configuração do TCP/IP.

23

Page 30: Tcc Firewall Iptables

14.CONCLUSÃO

Com todo o avanço e crescimento na área tecnológica, houve a

necessidade de se abordar nesse trabalho algumas das ferramentas de maior

importância na informática, que se foi originada e criada, com visão de acabar

com problemas e falhas na tecnologia.

Esse trabalho teve como alvo mostra para os leitores um pouco sobre

cada coisa na tecnologia, desde o início das redes ao seu alge e seus avanços

e suas falhas.

Como foco esse trabalho teve a necessidade de falar mais

especificamente sobre a segurança em redes Linux, onde há muitas dúvidas

em cada usuário sobre a suposta tão falada segurança no Sistema Operacional

Linux.

É de fato conclusivo que de acordo com o estudo realizado e do trabalho

concluído que o Firewall iptables, pode se comportar de maneira muito eficiente

e estável, porém mesmo com todos os recursos de segurança vinculados a

essa ferramenta não é de segura forma ser utilizado como única forma de

proteção contra intrusões, pois não é possivel obter um controle completo com

apenas essa ferramenta agindo.

O iptables por sua vez é uma ferramenta poderosa porém há sua

limitação, pois não possui como padrão a propriedade de verificar o conteúdo

de pacotes, verificar por completo se há códigos maliciosos.

O trabalho em si por sua vez representa um pouco da essência da

tecnologia e sua segurança, como foco a proteção a dados e segurança na

rede.

O trabalho como um todo teve como ensinamento durante o seu

processo de conclusão, um estudo que propiciou a reflexão de grandes fatores

que devem ser considerados de fato na questão da segurança.

24

Page 31: Tcc Firewall Iptables

O Sistema operacional Linux é hoje em dia considerado o Sistema mais

seguro entre os seus concorrentes, porém nesse trabalho mostramos um

pouco sobre suas falhas, ameaças e precaução.

Conseguimos com o desenvolvimento de esse trabalho transmitir um

pouco do nosso conhecimento e aprender mais, passar nossas ideias de

segurança e ainda ter uma ampla visão com um foco diferenciado sobre o tema

abordado.

A tecnologia é algo que com o piscar de olhos podemos ver que seu

crescimento é algo muito rápido, e que estamos vivendo em uma era na qual

ninguém pode viver sem, por mais que a pessoa tente viver sem é algo hoje

indispensável, não tem como viver fora da tecnologia.

E com isso a Segurança se faz cada vez mais necessária, e com isso foi

elaborado esse trabalho com foco nessa situação.

25

Page 32: Tcc Firewall Iptables

15.REFERÊNCIAS BIBLIOGRÁFICAS

Referências Impressas:

ALVES, Gustavo Alberto. Segurança da informação - Uma visão inovadora da gestão. Rio de janeiro, Editora Ciência Moderna LTDA, 2006.

FERREIRA, Fernando Nicolau. ARAUJO, Márcio. Lítica de segurança da informação - guia prático para elaboração e implementação, 2º edição revisada. Rio de janeiro. Editora Ciência moderna LTDA. 2008.

MORIMOTO, Carlos Eduardo. Redes e servidores Linux: Guia prático. Porto Alegre: Sul Editores. 2005.

MORIMOTO, Carlos Eduardo. Entendendo e dominando o Linux. 7º Edição. São Paulo, GDH Press. 2002.

NETO, Urubatan. Dominado  o Linux firewall Iptables. RJ, Editora Ciência Moderna LTDA, 2004.

SILVA, Gilson. Segurança em sistemas Linux. Rio de janeiro. Editora moderna LTDA. 2008.

Referências Eletrônicas:

APINFO, artigo. Definição de segurança. São Paulo. Disponível em:

<http://www.apinfo.com/artigo81.html/> Acesso em 08 jun.2013.

A definição de Software livre. Disponível em:

<http://www.gnu.org/philosophy/freesw.html>e<http://www.fsf.org/licensing/essays/free-sw.html> Acesso em 08 jun.2013.

Linux, under. Disponível em:

< https://under-linux.org/entry.php?b=9/> Acesso em 09 jun.2013

CANALTECH, artigo. Engenharia Social. Disponível em:

http://www.canaltech.com.br/o-que-e/seguranca/O-que-e-Engenharia-Social/

Acesso em 09 jun.2013.

AYUSO, Filter. NETFILTER/IPTABLES. Disponível em:

http://www.netfilter.org/ Acesso em 09 jun.2013.

26

Page 33: Tcc Firewall Iptables

16.ANEXOS

ANEXO A: Estrutura das tabelas Filter, Mangle, e NAT

Fonte: onlytutorials, 2008

ANEXO B: Fluxo da tabela Filter

Fonte: Eriberto.pro

27

Page 34: Tcc Firewall Iptables

ANEXO C: Fluxo tabela NAT

Fonte: Eriberto.pro

28

Page 35: Tcc Firewall Iptables

ANEXO D: Rede com Firewall

Fonte: howtoforge

29

Page 36: Tcc Firewall Iptables

ANEXO E: Esquema da rede praticada na apêndice

30

Page 37: Tcc Firewall Iptables

17.REVISÃO BIBLIOGRÁFICA

FERREIRA (2008, p.119, p. 7), em sua obra Politica da segurança da

informação, referenciado nos capítulos 1 e 5, que define a definição de

segurança e engenharia social. Resolvemos referenciar esse escritor, pois, em

seus livros conseguimos enxergar grandes coisas, na qual vimos que seria de

extrema importância também em nosso trabalho.

SILVA (2008, p.147, p. 201, 35) Segurança em sistemas Linux,

referenciados nos capítulos 3.1, 6, 10, fala um pouco sobre a segurança das

contas do sistema operacional Linux, no capitulo 6, fala sobre a definição de

um Firewall.

Já o capitulo 10, aborda o funcionamento das cadeias INPUT, OUTPUT

e FORWARD da tabela filter.

Referenciamos esse grande escritor e mestre nos tópicos listados, pois

trabalho não poderia ficar sem algo desse grande mestre da informática que

aborda em seu livro com grande clareza o funcionamento das principais tabelas

e suas cadeias.

ALVES (2006, p. 3) Segurança da informação : uma visão inovadora da

gestão, referenciado no capítulo 11, aborda um pouco sobre a governança de

TI.

Bom o autor do livro no qual pegamos grande parte do conteúdo dos

tópicos mostra com bastante clareza como manter uma rede segura e se livrar

de ataques, e também qual a necessidade de se manter a rede segura, por

isso nos identificamos com o seu trabalho e referenciamos aqui, conseguimos

absorver uma quantidade enorme de conteúdo com suas obras e não

poderíamos deixar de referencia-lo aqui.

31

Page 38: Tcc Firewall Iptables

MORIMOTTO (2005, p 285, 286, 541) Redes e servidores Linux (Guia

prático) e Entendendo e dominando o Linux, referenciado nos capítulos 6, 7,

13, aborda o conceito de firewall que é incluído no kernel do sistema

operacional Linux.

O grande escritor, autor, profissional, criador de sites, brasileiro, e

grande motivador do uso do de software livre, Carlos E. Morimotto, não poderia

deixar de fazer parte do nosso trabalho assim como outros grandes

profissionais e autores, porém o conteúdo referenciado desse autor foi muito

importante para o desenvolvimento do projeto, e desde o inicio sabíamos que

iriamos utilizar grandes tópicos de suas grandes obras.

32

Page 39: Tcc Firewall Iptables

18.APÊNDICE

ESTUDO PRÁTICO

Este capitulo tem a proposta de criar algumas regra de segurança e

liberação de alguns serviços que seram restritos a rede local, bloqueando todo

o restante, visando a implementação de uma rede segura, as regras criadas

podem ser utilizadas em um script de firewall em qualquer emresa, claro

alterando as configurações de ip, interface etc.

A seguir, será mostrado alguns importantes conceitos para aplicação e

que servirão como parâmetro para um bom entendimento.

Caracteristicas

Para simularmos uma rede corporativa, onde é preciso um servidor

firewall, e que contem alguns computadores em rede, foi considerada uma

rede, hipotética, com os seguintes aspectos:

7 estações de trabalho com 1 placa de rede ethernet;

1 servidor rodando os serviçõs de (FTP, SSH, WEB);

1 SWITCH;

1 Computador com sistema operacional Linux Debian, versão do

kernel 2.6, com duas interfaces de rede, uma para LAN, e outra

para WAN, que será o gateway da rede;

E um link de internet ligado a interface eth0 do

computador/servidor com linux;

Apartir deste esquema, será apresentado as configurações necessárias

para se garantir uma rede segura, permitindo a conexão com a internet das

estações e permitindo o acessos somente aos serviços aprentados acima.

Na anexo contido na página 49 (Mapa da rede, Anexos) é apresentado

modelo de rede proposta.

33

Page 40: Tcc Firewall Iptables

Requisitos para o funcionamento

A rede como consta no anexo 3, página 49, possui 8 terminais, sendo

um servidor de serviços e sete estações de trabalho comuns. O servidor

Firewall será o gateway da rede, onde estará ligado diretamente no roteador

ADSL, a interface de rede que será interligada tem a nomenclatura Eth0, e a

Eth1 será a segunda interface de rede do servidor, que estará ligada no switch

onde será compartilhado o acesso a internet e os serviços apresentados, com

a rede Local.

Configurações e requisitos necessários

A rede precisa estar protegida contra os principais tipos de ataques;

Deve-se liberar o procedimento de troca de endereço IP privado do firewall para o IP válido, no momento em que ele se conecta com a internet;

Tentivas de checagem de host utilizando ping deverá ser limitado tanto para a rede interna como externa para que o servidor não venha a sobrecarregar;

Permitir acesso a rede Local aos serviços disponiveis na internet;

No servidor com os serviços de SSH E FTP configurados, é preciso liberar o acesso as estações locais;

Gerar um registro das conexões não autorizadaas;

Descartar todas as outras tentativas de conexões com destino ao Firewall.

Solução apresentada

Nesta próxima fase, será apresentada a solução de firewall traduzidos

para a linguagem entendida pelo compuador, utilizando o Iptables no Linux,

S.O Debian 6. Todas as regras pertinentes aos parâmetros e requisitos citados

anteriormente, foram formuladas para que se garantisse a funcionalidade da

rede considerada como modelo experimental.

Por padrão os módulos do iptables nesta versão de Kernel utilizada 2.6

já vem ativas, mas mesmo assim por desencargo, irei ativalos.

Ativando o principal módulo do iptables:

# modprobe iptables

Ativando os módulos das tabelas filter e NAT:

34

Page 41: Tcc Firewall Iptables

# modprobe iptables_filter

# modprobe iptables_nat

Ativando o módulo reject:

modprobe iptables_REJECT

Ativando o módulo multport:

# modprobe ipt_multport

Ativando o módulo responsável pelo mascaramento da conexão;

# modprobe ipt_MASQUERADE

Ativando o módulo gerador de LOG do iptables:

# modprobe ipt_LOG

Os módulos do iptables necessários para configuração do firewall já

estão ativos. Agora é preciso preparar as chains para receber as regras de

configuração.

10.5 Preparando as chains e tabelas

Os próximos comandos são de grande importância por que limpam as

tabelas do iptables, visto que o mesmo possa ter alguma regra já adicionada

anteriormente.

Limpando as regras residuais das tabelas filter e nat:

# iptables -t filter -F

# iptables -t nat -F

O próximo comando zeram os contadores das tabelas:

35

Page 42: Tcc Firewall Iptables

# iptables -t filter -Z

# iptables -t nat -Z

Agora adotarei a politica de filtragem padrão para as tabelas nat e filter.

# iptables -filter -P INPUT DROP

# iptables -filter -P FORWARD DROP

# iptables -filter -P OUTPUT DROP

# iptables -nat -P POSTROUTING DROP

# iptables -nat -P PREROUTING DROP

# iptables -nat -PN OUTPUT DROP

A partir da aplicação destas regras o iptables já está preparado para ser

utilizado. Feito isso já é possível iniciar a criação das regras de acordo com o

esquema proposto anteriormente.

Construção das regras necessárias

As regras a seguir correspondem às regras da tabela filter com as chains

(cadeias), INPUT, FORWARD e OUTPUT.

A regra a seguir aceita conexão loopback de entrada do firewall à ele

mesmo:

# iptables -filter -A INPUT -i lo -j ACCEPT

A regra a seguir permite pacotes TCP e UDP com destino ao Firewall

que já estão estabelecidos ou relacionado à uma outra conexão, feito a partir

dele anteriormente:

# iptables -t filter -A INPUT -p tcp -m state --state

ESTABLISHED,RELATED -j ACCEPT

36

Page 43: Tcc Firewall Iptables

# iptables -t filter -A INPUT -p udp -m state --state

ESTABLISHED,RELATED -j ACCEPT

A próxima regra limita a tolerância de resposta do servidor a um pacote

por segundo, esta regra protege o servidor contra ping da morte:

# iptables -t filter -A INPUT -p icmp -m limit --limit 1/s -j ACCEPT

A regra a seguir habilita a função de roteamento de pacotes no kernel:

# echo "1" > /proc/sys/net/ipv4/ip_forward

Agora a próxima regra faz o repasse de pacote entre as interfaces eth0

(WAN) eth1 (LAN) já registrando os dados do tráfego referente elas.

As portas que serão liberadas são 443, 80 (HTTP, HTTPS) e 20, 21, 22

(FTP, SSH) que deveram estar disponiveis para a rede local:

# iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --

dports 20,21,22,443,80 -j ACCEPT

# iptables -t filter -A FORWARD -d 192.168.0.0/24 -i eth0 -o eth1 -m

state --state ESTABLISHED,RELATED -j ACCCEPT

# iptables -t filter -A FORWARD -j LOG --log-prefix "FIREWALL:

FORWARD "

Liberando acessos ao servidor FTP e SSH à todas as estações da rede:

# iptables -t filter -A FORWARD -p tcp -s 192.168.0.0/24 -d

192.168.0.10 --dport 20 -j ACCEPT

# iptables -t filter -A FORWARD -p tcp -s 192.168.0.0/24 -d

192.168.0.10 --dport 21 -j ACCEPT

# iptables -t filter -A FORWARD -p tcp -s 192.168.0.0/24 -d

192.168.0.10 --dport 22 -j ACCEPT

Regras de Output na tabela filter

37

Page 44: Tcc Firewall Iptables

Liberando conexões TCP e UDP originadas pelo próprio Firewall são

aceitas:

# iptables -t filter -A OUTPUT -p tcp -m state --state

NEW,ESTABLISHED,RELATED -j ACCEPT

# iptables -t filter -A OUTPUT -p udp -m state --state

NEW,ESTABLISHED,RELATED -j ACCEPT

A regra a seguir aceita conexão loopback de saída do Firewall à ele

mesmo:

# iptables -t filter -A OUTPUT -o lo -j ACCEPT

A próxima regra estabelece um limite de tempo de 1 pacote ping por

segundo de resposta de conexões origindas pela internet:

# iptables -t filter -A INPUT -p icmp -m limit --limit 1/s j ACCEPT

A próxima regra registra nos LOGS do sistema as tentativas de conexão

não autorizadas ao servidor Firewall vindos da internet:

# iptables -t filter -A INPUT -p udp --dport 53 -j LOG --log-prefix

"FIREWALL: dns "

# iptables -t filter -A INPUT -p tcp --dport 113 -j LOG --log-prefix

"FIREWALL: identd "

# iptables -t filter -A INPUT -p udp --dport 111 -j LOG --log-prefix

"FIREWALL: rpc "

# iptables -t filter -A INPUT -p tcp --dport 111 -j LOG --log-prefix

"FIREWALL: rpc "

# iptables -t filter -A INPUT -p tcp --dport 137:139 -j LOG --log-prefix

"FIREWALL: samba "

# iptables -t filter -A INPUT -p udp --dport 137:139 -j LOG --log-prefix

"FIREWALL: samba "

38

Page 45: Tcc Firewall Iptables

As próximas regras tratam da tabela NAT com as cadeias

(POSTROUTING, PREROUTING, OUTPUT).

Cadeias postrouting e masquerade

# iptables -t nat -A POSTROUTING -p tcp -m multiport --dports

80,443 -s 192.168.0.0/24 -o eth0 -j MASQUERADE

A regra acima mascara o IP da rede local liberando acesso a internet,

porém restringindo somente aos serviços HTTP, HTTPS.

Agora é preciso liberar conexão da rede local à internet, porém limitando

aos serviços HTTP, HTTPS, mas trabalhando na cadeia PREROUTING da

tabela NAT:

# iptables -t nat -A PREROUTING -i eth0 -p tcp -s 200.140.2.45 --

dport 80 -j SNAT --to 192.168.0.10:80

# iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.10 --

dport 80 -j ACCEPT

# iptables -t nat -A PREROUTING -i eth0 -p tcp -s 200.140.2.45 --

dport 443 -j SNAT --to 192.168.0.10:80

# iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.10 --

dport 443 -j ACCEPT

A regra a seguir irá registrar todas as tentativas externas de conexão às

estações locais:

# iptables -t nat -A POSTROUTING -o eth1 -d 192.168.0.10/24 -j LOG

--log-prefix "FIREWALL: SNAT unknown "

Agora para que o firewall seja o gateway da rede, é necessário

configurar nas estações o IP: 192.168.0.1 como gateway da rede.

Para verificar as regras aplicadas no servidor, é preciso rodar o

comando "iptables -L".

Para salvar as regras aplicadas em um arquivo, para utilizar como script,

pode ser utilizado o comando do iptables, "iptables-save" da seguinte forma.

39

Page 46: Tcc Firewall Iptables

# iptables-save > /etc/init.d/script_firewall.sh

Com este comando será salvo todas as regras aplicadas até o momento

dentro do arquivo "script_firewall.sh" que será criado, dentro do diretório

/etc/init.d .

Após salvar estas regras é necessário dar permissão de execução no

arquivo, caso queira utiliza-lo como script.

# chmod +x /etc/init.d/script_firewall.sh

Considerações finais

O sucesso da implementação de uma rede segura por meio deste

recurso, depende tão somente de uma boa previsão de incidentes e uma

cuidadosa interpretação dos fatores que devem ser considerados para que se

garanta a disponibilização de acesso, recursos e serviços dos quais uma

organização pode necessitar.

Todas as regras foram testadas, simulando um senário de uma pequena

rede.

19. TERMO DE COMPROMISSO

40

Page 47: Tcc Firewall Iptables

Autenticidade e exclusividade sob as penas da Lei 9610/98

Pelo presente, o abaixo assinado declara, sob as penas da lei, que o

presente trabalho é inédito e original, desenvolvido especialmente para os fins

educacionais a que se destina e que, sob nenhuma hipótese, fere o direito de

autoria de outrem.

Para maior clareza, firmamos o presente termo de originalidade.

Guarulhos, 09 de junho de 2013

Nome e assinatura

Cléio de Jesus Sousa.

Cleiton de Jesus Sousa

41