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: 82.767 ]

Por: wmarino em 26/02/2015


Instalação e configuração - Parte 1



Nesta primeira parte, gostaria de apresentar o que compõe o sistema de modo geral:
  • Sistema operacional GNU/Linux CentOS 5.6 com kernel 2.6.28-9 customizado
  • Netfilter 2.22 com suporte à camada 7 - integrado ao kernel
  • Firewall iptables 1.4.10 - integrado ao kernel
  • Proxy Squid 2.6-Stable21 + squidGuard 1.3-2 + Lista negra versão 16/02/2015
  • DNS BIND 9.3.6
  • DHCP 3.0
  • Apache 2.2.3
  • PHP 5.1.6
  • MySQL 5.0.95
  • NTP 4.2.2p1
  • SNMP 5.3.2.2
  • Rsyslog 3.22.1
  • Sarg 2.3-9
  • Cacti 0.8.8c
  • SendEmail 1.56
  • Fail2ban 0.8.14
  • FWadmin: plataforma web utilizando linguagem de programação PHP com integrações via shell script com o sistema operacional, permitindo assim interagir com os diversos serviços nele disponibilizado.

Linux: Implantação de servidor Firewall-Proxy utilizando CentOS, IPtables, Squid, DHCP, DNS e outros
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

Gerenciando regras de Iptables com Firewall Builder

Bloqueando programas P2P com iptables

Montando regras iptables

Firewall com Iptables: direto ao assunto (RHEL5 e Fedora)

IPTABLES - Conceitos e aplicação

  
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