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
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
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.
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.
“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é)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
-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
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
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
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
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
# 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
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
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
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
16.ANEXOS
ANEXO A: Estrutura das tabelas Filter, Mangle, e NAT
Fonte: onlytutorials, 2008
ANEXO B: Fluxo da tabela Filter
Fonte: Eriberto.pro
27
ANEXO C: Fluxo tabela NAT
Fonte: Eriberto.pro
28
ANEXO D: Rede com Firewall
Fonte: howtoforge
29
ANEXO E: Esquema da rede praticada na apêndice
30
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
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
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
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
# 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
# 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
# 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
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
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
# 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
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