Servidor Firewall-Proxy utilizando CentOS, IPtables, Squid, DHCP, DNS e outros

Neste artigo vou explicar detalhadamente todo o processo de instalação e configuração para deixar o sistema rodando por completo.

[ Hits: 84.013 ]

Por: wmarino em 26/02/2015


Descrição completa



Servidor de internet (firewall e proxy/cache)

Um proxy é uma maneira de controlar o que os usuários acessam na internet e propiciar economia na utilização do link, principalmente quanto utilizado em conjunto com um HTTP caching proxy.

Um HTTP caching proxy permite que o cliente requisite um documento na World Wide Web e o proxy procura pelo documento em seu cache, se encontrado, o documento é retornado imediatamente para o solicitante, caso contrário, o proxy acessa o documento no servidor remoto, entrega ao cliente solicitante e armazena uma cópia no seu cache para futuros acessos ao mesmo documento. Isso permite uma diminuição na latência e uma redução do uso de banda, uma vez que os arquivos já estão armazenados no cache.

Benefícios:
  • Compartilhamento do mesmo link para todos os computadores da rede, até mesmo locais externos interligados.
  • Interface web para fácil gerenciamento do sistema.
  • Alto nível de proteção contra invasões por hackers, vírus e worms.
  • Estabilidade (poucos problemas com paradas de sistemas).
  • Confiabilidade (seguro e correto funcionamento).
  • Possibilidade de hospedar um servidor web, e-mail e outros serviços.
  • Controlar o que os usuários acessam na internet.
  • Significativa economia de banda do seu link, evitando upgrades desnecessários.
  • Permite interligar filiais e usuários remotos através da VPN.

Sistema operacional firewall e suas principais características

O sistema operacional de nosso firewall é uma distribuição de GNU/Linux com IPtables, sinônimo de estabilidade e segurança.

Algumas características principais:
  • Não há limites de regras impostas pelo sistema. Seu limite é a capacidade de memória e processamento do hardware deste servidor.
  • Não há limite de conexões simultâneas impostas artificialmente. Sua empresa poderá utilizar todo o potencial de uma rede TCP/IP.
  • Filtro de pacotes "stateful" (IPv4) - netfilter/iptables.
  • NAT - Network Address Translation (NAT/NAPT), permite o compartilhamento de toda a rede interna bem como acesso remoto aos serviços internos (escritório virtual).
  • Servidor próprio de DNS.
  • Possibilidade de criação de DMZ, uma rede separada para acolher os servidores web, e-mail e outros serviços expostos à internet.
  • Interface web para administração.
  • Interface SSH para administração.
  • Criação de VPNs baseadas em SSL - útil para acesso seguro entre funcionários e filiais.
  • O proxy pode ser configurado para trabalhar de modo transparente com autenticação, sem limite de regras ou palavras chaves.
  • Filtro de URL - filtro de site impróprios através de base de dados com mais de 30 milhões de sites, divididos por categorias, ex.: pornográfico, entretenimento, chat, relacionamento, etc.
  • Balanceamento de carga.
  • Priorização de pacotes (QoS).

Interface web para administração do acesso a internet (FwAdMiN)

Desenvolvida para facilitar o uso do firewall, utilizando tecnologia PHP, é uma ferramenta que se integra com os serviços IPtables, Squid, SquidGuard, DHCP, VPN, checklist com alertas e outros, podendo:
  • Controlar todo o cadastro de endereços e usuários de uma ou várias redes.
  • Definir o tipo de acesso individual para cada usuário, realizando bloqueio/liberação de endereços e portas. Existem cinco formas de acesso:
    • 1. Bloqueado
    • 2. Restrito
    • 3. Internet com log
    • 4. Internet com log transparente
    • 5. Internet total sem log
  • Realizar a liberação/bloqueio de forma geral para todos os usuários.
  • Integrado com o SquidGuard, é capaz de realizar o bloqueio de sites através do conteúdo de sua informação, podendo configurar regras para bloquear por: conteúdo adulto, pornográfico, racista, jogos online, web-proxies, blogs, hospedagem de arquivos, rádios online, spywares, arquivos com vírus, bate-papo, entre outros.
  • Realizar um checklist de sua rede, através de simples testes de comunicação com equipamentos (servidores, impressores TCP/IP, switches, roteadores, equipamentos wireless) e serviços como, por exemplo, um serviço web, e-mail, SSH de um determinado servidor. É possível definir um horário para execução automática do checklist e também enviar, em caso de falhas, e-mail de alerta para determinadas pessoas/grupos e também celulares através de SMS utilizando um modem GSM ou gateway SMS.

Possui suporte ao gerenciamento das:
  • Configurações do sistema VPN;
  • Configurações do firewall iptables;
  • Configurações do Squid e SquidGuard;
  • Configuração do checklist podendo gerenciar os itens que o sistema irá controlar e os números de telefones celulares que receberão o alerta via SMS;
  • Gerenciamento de solicitações de liberação de endereços bloqueados (tráfego web).

Interface web para relatórios de consumo e acesso

Saiba o que seus usuários estão acessando na internet:
  • Relatório de acesso detalhado por usuário ou IP, por período (dia, mês, ano), tamanho e tempo consumido;
  • Utilização em tempo real.

Interface web para monitoramento de equipamentos e servidores da rede através do protocolo SNMP.

Ferramenta para gerenciamento de equipamentos e servidores de rede, podendo gerenciar não somente o servidor firewall, mas também qualquer equipamento da rede com suporte a SNMP.

Suas funções básicas são:
  • Monitoramento da utilização de interfaces de rede/utilização real do link de internet;
  • Monitoramento da utilização de espaço em disco;
  • Monitoramento da utilização de memória;
  • Monitoramento do tráfego de rede de equipamentos como por exemplo switches, rádios bases, access points, roteadores, impressoras, nobreaks etc.

Página anterior     Próxima página

Páginas do artigo
   1. Sobre o sistema
   2. Descrição completa
   3. Instalação e configuração - Parte 1
   4. Instalação e configuração - Parte 2
   5. Instalação e configuração - Parte 3
   6. Instalação e configuração - Parte 4
   7. Instalação e configuração - Parte 5
   8. Instalação e configuração - Parte 6
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Balanceamento de carga entre 2 placas de rede

Dominando o Iptables (parte 2)

Squid + iptables (método ninja)

Firewall funcional de fácil manipulação

Firewall admin: administração do iptables

  
Comentários
[1] Comentário enviado por fabio em 26/02/2015 - 14:22h

Meus parabéns pela solução, parece muito boa!

[2] Comentário enviado por valter.vieira em 26/02/2015 - 16:22h

Excelente artigo, irei testar.

[3] Comentário enviado por wagnerfs em 27/02/2015 - 03:00h

Muito bom o artigo. Parabéns e obrigado por compartilhar o conhecimento.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782

[4] Comentário enviado por jwolff em 27/02/2015 - 17:09h

Parabéns! Cara, estou quase fechando a compra de um Appliance para gerenciar a rede da empresa na qual estou trabalhando, mas antes vou testar a sua compilação de soluções, na esperança de economizar muitos reais...

[5] Comentário enviado por wmarino em 27/02/2015 - 17:19h

Obrigado pessoal!

Jwolff, quantos computadores sua rede possui? Atualmente existem dois servidores nesses moldes rodando em ambiente de produção que atende certa de 400 clientes cada um, rodando perfeitamente. Caso precise de um apoio na implantação conte comigo. Com certeza o sistema irá atender suas necessidades.

Abraços


[6] Comentário enviado por willian.firmino em 28/02/2015 - 09:36h


Vi que você utiliza um release antigo da versão 5 do Centos, "5.6", atualmente a versão esta no no 5.10 que corrige vários bugs e possui varias atualizações de segurança, utilizando esta versão 5.6 seu sistema não fica vulnerável ? qual a vantagem em utilizar seu sistema no lugar do pfsense por exemplo?

[7] Comentário enviado por wmarino em 28/02/2015 - 14:23h

Olá amigo. A versao de instalação é a 5.6. Depois da instalação é executa a atualização de todo o sistema através do yum update. O kernel nesse momento também é atualizado, entretanto posteriormente compilo o kernel com a versão 2.6.28, um pouco mais antiga da versão da atualização executada.

O motivo de utilizar esta versão do kernel é que ela é totalmente compativel com o protocolo Netfilter L7 (é possível filtrar pacotes na camada 7) e também é possivel incluir o iptables diretamente ao kernel, garantindo mais segurança ao sistema em geral, pois o iptables nao será simplesmente um modulo que pode ser removido do kernel, mas sim ele fará parte do kernel.

Outro motivo de customizar o kernel é que consigo, atraves dos modulos incluídos na customização, realizar controle de banda para os clientes, função importantissima na rede.

Utilizo o CentOS pois acredito que ele é um S.O. robusto e estável, por ser baseado em RedHat, além de ser o mais compatível com todas as funcoes que o FWadmin necessita.

Abraços


[8] Comentário enviado por wmarino em 28/02/2015 - 17:45h


Sobre as vantagens, a maior delas é a administração simples e fácil dos clientes de sua rede.

[9] Comentário enviado por jwolff em 02/03/2015 - 08:48h


[5] Comentário enviado por wesleymarino em 27/02/2015 - 17:19h

Obrigado pessoal!

Jwolff, quantos computadores sua rede possui? Atualmente existem dois servidores nesses moldes rodando em ambiente de produção que atende certa de 400 clientes cada um, rodando perfeitamente. Caso precise de um apoio na implantação conte comigo. Com certeza o sistema irá atender suas necessidades.

Abraços


Rede pequena, menos de 50 usuários. Vou fazer os testes, qualquer coisa te do um toque. Valeu!

[10] Comentário enviado por willian.firmino em 02/03/2015 - 09:39h

Por acaso, você tem algum manual ou material dos erros mais comuns e possíveis soluções do sistema adquirido ao longo de sua utilização ? desculpe perguntar pois trabalho em uma prefeitura e nosso firewall BRMA caiu, estamos em busca de outra solução de preferencia free para substituição, estamos testando o pfsense mas ele é um pouco complexo, estou considerando testar a sua solução, porém com o pfsense conseguimos ajuda na comunidade, a quantidade de clientes gira em torno de 500.

[11] Comentário enviado por wmarino em 02/03/2015 - 10:58h

Willian, bom dia

Infelizmente não possuo documentação das atualizações realizadas.

Sobre os erros ou falhas que apresentavam, sempre que era possível eu corrigia, ou melhor dizendo, aprimorava o sistema de acordo com as necessidades. Na verdade, o sistema apenas gera os arquivos de configurações que serão utilizados pelo iptables, squid, SquidGuard e outros.

Vários outros sistemas no mercado tem a mesma função do FWadmin: ser uma interface amigável para configuração dos serviços providos pelo servidor de firewall, porém as empresas mascaram isso e dizem ser uma solução completa desenvolvida por elas, mas na verdade são apenas uma interface.

Conheci o pfsense na faculdade, não posso dizer se ele é melhor ou pior que o iptables. Levo sempre em consideração o que mais me agrada para a ocasião, que no meu caso sempre foi o iptables.

O FWadmin está rodando em ambiente de produção em dois servidores do meu antigo local de trabalho, também uma prefeitura, na qual eu era gestor de TI. Creio que nós já passamos por problemas similares e tenho certeza que esta ferramenta irá suprir todas as suas necessidades com tranquilidade.

Entre em contato comigo através do canal Contato, no meu site: www.wmarino.com.br. Vamos manter contato por lá, pode ser? Vamos colocar esse sistema pra rodar em seu ambiente.

Abraços

[12] Comentário enviado por wmarino em 02/03/2015 - 11:01h

Jwolff, bom dia
Sem dúvidas o FWadmin irá atender suas necessidades tranquilamente.

Abraços

[13] Comentário enviado por willian.firmino em 02/03/2015 - 15:44h

Ok, estou baixando o CentOS 5.6, pelo link que você passou, para começar os testes, porém DVD é apenas por torrent, e como esta versão é bem especifica a quantidade de seeds é ridícula, se alguém tiver um outro mirror, com o ISO direto para download dos DVD,s, posta ai por favor.

[14] Comentário enviado por wmarino em 02/03/2015 - 16:05h

Willian, sua observação foi importante. Na verdade nao lembro se testei com a iso da versão 5.10. Vou realizar em breve este teste e se fucionar vou solicitar a atualização do artigo

Mas por enquanto, por favor, faça testes com a versao 5.6 mesmo, para que não haja problemas.

Abraços

[15] Comentário enviado por LeaoNarrdo em 04/03/2015 - 16:31h


Cara parabéns pelo Artigo, bem detalhado.
De 09 Empresas que tenho contrato em apenas uma tenho firewall, quero melhorar essa parte de segurança. Uso o PFSense porém ele vem apresentando alguns problemas, vou testar esta solução.

[16] Comentário enviado por wmarino em 04/03/2015 - 19:21h

Olá Leonardo, legal,

o FWadmin será bastante útil pra você

Caso precise de ajuda me avise.

Abraços

[17] Comentário enviado por LeaoNarrdo em 08/03/2015 - 19:20h


Você teve algum problema com banco ou sites do governo, por exemplo, NFE,Conectividade Social, SEFAZ, SEFIP, e etc?

[18] Comentário enviado por wmarino em 09/03/2015 - 09:17h

Leonardo,

sim. Conectividade Social, por exemplo, já tive problemas passando pelo proxy. No FWadmin, menu sistema, Iptables, já existem algumas regras pré-definidas para acesso aos endereços da Conectividade Social.
SEFIP, SEFAZ, NFE e outros, geralmente utilizam portas que não são 80 e 443, portanto, o perfil de acesso deve atender estas portas.

Você também pode mapear os endereços e portas que são utilizados nessas aplicações e criar regras no Iptables. Assim você consegue manter um perfil de acesso mais baixo para o usuário e garantir que as conexões sejam estabelecidas sem causar transtornos para o usuário.

Abraços


[19] Comentário enviado por renatogf em 10/03/2015 - 11:59h


Cara, simplesmente fantástico! Parabéns pelo ótimo trabalho e principalmente por compartilhar isso com a comunidade. Já vou instalar uma VM pra testar.

Não tive o problema do amigo acima pra baixar o torrent, no momento estou com 1666 seeds e quase 50% concluído em pouco mais de 20 minutos.

Uma pequena dúvida, posso desabilitar alguns serviços como por exemplo DNS e DHCP? Posso usar um squid usando autenticação do AD? Caso não seja possível a autenticação, posso usa-lo somente como router/firewall e monitoramento?


[20] Comentário enviado por wmarino em 10/03/2015 - 18:44h

Olá Renato,

Desabilitando esses serviços você poderá ter problemas sim. O principal seria o DHCP.
Na ferramenta, nas configurações do DHCP, você define qual a range que será utilizada. No controle de usuários, os ips que estão configurados no range DHCP terão um perfil padrão, com algumas restrições de acesso.
Você utilizando outro servidor de DHCP, o controle não seria eficaz, pois, por exemplo, o cliente A está configurado no FWadmin com o IP 192.168.0.10 e com o perfil de acesso específico para esse cliente. Caso o cliente A obtenha através de outro servidor DHCP um outro IP, consequentemente o perfil de acesso não funcionará.

Lembre-se que, mesmo tendo o serviço DHCP ativo no FWadmin, você consegue amarrar o cliente a um determinado IP. Sempre ele irá possuir aquele mesmo IP.

A função DHCP é extremamente importante neste servidor. Já ví outros sistemas de firewall rodando em empresas cujo o servidor DHCP e firewall era separado. O controle realmente não funcionada de forma satisfatória.

Sobre o servidor DNS, embora não seja de extrema importância, também recomendo que esteja ativo. Nem que seja como um servidor SLAVE de seu domínio AD, por exemplo.
Também é possível, porém ainda não testei, configurar o DHCP para "trabalhar" em conjunto com o DNS. Uma vez que uma maquina entra na rede, ela é cadastrada no DNS também.
Portanto, recomendo que possua, ao menos, o serviço DNS interno de sua rede no firewal também.

Sobre o Squid, ele trabalha de modo transparente, o que não permite autenticação, porém, incluí uma função que é possível realizar a autenticação através de um simples "captive portal", porém, utiliza usuários locais do FWadmin para se autenticar. No momento não tenho criado um módulo que utilize o AD para autenticação, ou algum outro servidor RADIUS. Também não sei se é possível, teria que testar mesmo.

Sobre o checklist, é possível utilizar somente esta função, mas teria que customizar toda a instalação pra que somente ela ficasse ativa.

Renato, obrigado pelos comentários.

Caso prefira, entre em contato comigo por e-mail e me passe as suas necessidades detalhadamente.

Abraços

[21] Comentário enviado por renatogf em 11/03/2015 - 00:11h


Boa noite, Wesley.

Primeiramente queria te dar os parabéns novamente, o artigo ficou tão bom e tão completo que fiz a instalação toda muito rápido e sem NENHUM erro, realmente impressionante.
Sobre as ferramentas, dispensam qualquer comentário, não tenho nem palavras pra descrever o quão completo e eficiente é. Recomento a todos testarem. Passei duas horas dando uma olhada em tudo e nem vi o tempo passar, rodei num laboratório de 10 máquinas. Infelizmente não poderei implantar aqui na matriz da empresa por agora pela quantidade de usuários e topologia da rede (600 usuários, squid integrado ao ad e outras coisas que me impedem no momento, seria uma mudança muito grande, que precisa de mais estudos e demandaria um tempo que não temos no momento), mas já enviei uma pequena demonstração pra direção de TI da empresa pra tentar colocar a ferramenta nas filiais. Estarei te enviando um e-mail amanhã pra gente bater um papo sobre o desenvolvimento, custos e etc. Muito obrigado, muito obrigado mesmo, genial o seu trabalho.


Renato Ferreira

[22] Comentário enviado por mauriciosouza74 em 12/05/2015 - 10:49h


essa ferramenta só funciona com a versao 5.6 do centos ou posso usar mais atualizada!?

[23] Comentário enviado por adailtonlp em 10/07/2015 - 23:53h

Wesley, boa noite.
parabéns pelo excelente artigo. Seu trabalho no desenvolvimento desta ferramenta é sensacional e uma iniciativa impar.
testarei a sua ferramenta. Obrigado por compartilhar seu conhecimento.
Att., Adailton Lima Pereira - Goiania - GO


[24] Comentário enviado por ronivonjunio em 21/08/2015 - 17:59h


Boa Tarde!

Gostaria de saber se a versao do Centos tem que ser especificamente 5.6 ou pode ser com uma versao superior..para a instalaçao..

Aguardo retorno.

Obs : Estou começando na área......

[25] Comentário enviado por wmarino em 21/08/2015 - 21:11h

Olá Ronivon,

Sua resposta já foi discutida nos comentários anteriores.

Abraços

[26] Comentário enviado por helton1234 em 23/08/2015 - 21:35h

Boa noite

muito bom W. marino o firewall ocorreu tudo bem na instalação
mais ocorreu um erro que falhou
como se não tiver -se um ip invalido no diretório abaixo

Status: configurando servicos
Iniciando httpd: Syntax error on line 10 of /etc/httpd/conf.d/cacti.conf:
The specified IP address is invalid.
[FALHOU]
Status: configurando o sistema

Procurando 127.0.0.1
Conectando com HTTP em 127.0.0.1.
Alerta!: Impossível conectar ao servidor remoto.

lynx: Não foi possível acessar o arquivo principal http://127.0.0.1/fwadmin/machine_install.php
Status: configurando servicos
Parando o sshd: [ OK ]
Iniciando sshd: [ OK ]
Parando named: [ OK ]
Locating /var/named/chroot//etc/named.conf failed:
[FALHOU]
Iniciando dhcpd: [FALHOU]
Desligando o servidor de registros do kernel: [ OK ]
Desligando o servidor de registros do sistema: [ OK ]
Iniciando o registrador do sistema: [ OK ]
Parando o squid: . [ OK ]
2015/08/23 20:55:17| Creating Swap Directories
Iniciando squid: . [ OK ]
Limpando arquivos temporarios
ATENCAO: Acesse o sistema atraves do endereco http://fw.matrix.com.br:8081/fwadmin (ou http://:8081/fwadmin) utilizando o usuario 'admin', senha 'wmarino'

Reinicie o servidor para concluir a instalacao

Status: o sistema esta ativo

DIRETORIO
linAlias /cacti /etc/httpd/paginas/cacti

<Location /cacti>
#AuthName "Acesso restrito a pagina"
#AuthType basic
#AuthUserFile /etc/httpd/senhas
#Require valid-user admin

Order deny,allow
Allow from .0/24
Deny from all
ErrorDocument 403 /index.php
</Location>

não consigo acessar a parte web de configuração

[27] Comentário enviado por wmarino em 23/08/2015 - 21:47h

Olá Helton,

Creio que você não tenha definido corretamente o IP no momento da instalação ou o computador tenha somente uma interface de rede instalada.

Verifique novamente, pois o processo de instalação foi exaustivamente testado e não apresenta falhas

abraços

[28] Comentário enviado por helton1234 em 23/08/2015 - 22:22h


configuração esta ok testei efetuei um ping normal
eth0 Link encap:Ethernet Endereço de HW 5C:D9:98:BC:F3:50
inet end.: 192.168.10.1 Bcast:192.168.10.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:252 (252.0 b)
IRQ:16 Endereço de E/S:0x6000

eth1 Link encap:Ethernet Endereço de HW 00:24:8C:3E:BC:6C
inet end.: 192.168.25.100 Bcast:192.168.25.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:95655 errors:0 dropped:0 overruns:0 frame:0
TX packets:234550 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:34494713 (32.8 MiB) TX bytes:278552694 (265.6 MiB)
IRQ:251 Endereço de E/S:0xc000

creio que seja so esse erro aki
Iniciando httpd: Syntax error on line 10 of /etc/httpd/conf.d/cacti.conf:
The specified IP address is invalid.
[FALHOU]

no vi no diretório /etc/httpd/conf.d/cacti.conf o arquivo

Alias /cacti /etc/httpd/paginas/cactilias /cacti /etc/httpd/paginas/cacti

<Location /cacti>
#AuthName "Acesso restrito a pagina"
#AuthType basic
#AuthUserFile /etc/httpd/senhas
#Require valid-user admin

Order deny,allow
Allow from .0/24
Deny from all
ErrorDocument 403 /index.php
</Location>

esta faltando o ip pra acessar a maquina na web . aonde eu adicionaria o ip sendo o meu externo wlan 192.168.25.100
o interno 192.168.10.1



[29] Comentário enviado por lincolnRocha em 23/12/2016 - 15:31h

Parabéns Amigo, muito bom essa implementação. Gostaria de saber se é compatível com CentOS-6.8 ou se já tem algum outro post seu com a referia Distro.

Lincoln Brandão da Rocha
Analista de Sistemas I - SESPORTE-CE

[30] Comentário enviado por wmarino em 06/01/2017 - 00:34h

Olá Lincoln Brandão da Rocha,

Obrigado pelo seu contato.

A distribuição disponibilizada aqui no VoL é antiga, porém, já tenho disponível a nova versão.

Entre em contato comigo pra que possa passar mais detalhes.

Abraços.

[31] Comentário enviado por Junior2020 em 31/07/2017 - 14:35h

Boa Tarde! Alguém poderia me ajudar com Sub-Redes: https://www.vivaolinux.com.br/topico/Redes/Ajuda-Em-Sub-Redes preciso de ajuda. Sou novato na comunidade.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts