Servidor Fedora 11 de maneira fácil e funcional

Neste artigo mostro como configurar um servidor Fedora oferecendo os principais serviços para sua rede: firewall, servidor DHCP, web cache (Squid), DNS cache (bind), controle de banda (cbq), servidor web (Apache), controle de acesso, limite de conexões simultâneas, acesso remoto (SSH), relatório de acesso (Sarg). Ao final você deverá ter um servidor confiável.

[ Hits: 96.951 ]

Por: Andrio Prestes Jasper em 11/10/2009


2. SELinux, IPTABLES (introdução, NAT)



2.1. SELinux

O SELinux é uma implementação de segurança do Fedora, que por padrão deveria oferecer uma maior segurança. Porém normalmente causa mais problemas do que vantagens (eu tive alguns problemas. Alguns serviços não estavam funcionando, foi então que descobri que os serviços estavam corretamente configurados, mas o SELinux estava causando problemas).

Além do mais, em minha opinião, você não precisa dele para configurar um sistema seguro. Portanto aconselho a desabilitá-lo. O config do SELinux pode ser encontrado em: /etc/selinux/config. Edite-o e mude o SELINUX=enforcing para SELINUX=disabled:

# vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
mls - Multi Level Security protection.
# SELINUXTYPE=targeted

Reinicie o sistema:

# reboot
ou
# init 6

2.2. Introdução ao firewall

Firewall é uma extensão de segurança dado a um software/dispositivo que tem como seu principal objetivo aplicar uma política de segurança entre seu computador e a internet, ou a um ponto especifico de controle de sua rede. Explicando de uma maneira genérica, o firewall é como os seguranças da Casa Branca: só deixa entrar aqueles que são permitidos (total acesso), barram os que não são permitidos (acesso negado) ou direcionam os conhecidos a um determinado local (acesso parcial).

Nesse abordaremos o Iptables, o qual está presente nos kernels atuais. O Iptables é um firewall statefull a nível de pacotes e funciona baseado no endereço/porta de origem/destino do pacote, prioridade etc. Podemos usar o Iptables para uma gama de possibilidades, dependendo apenas da sua imaginação.

2.2.1. Tabelas e chains



Tabelas são os locais usados para armazenar os chains.

Chains são os locais onde são armazenados os conjuntos de regras definidas pelo usuário.

Existem 3 tabelas disponíveis no Iptables: filter, nat, mangle.

Nota: os nomes dos chains são case-sensitive, o chain output é completamente diferente de OUTPUT.
  • filter - tabela padrão, contém 3 chains:

    --INPUT (para pacotes destinados à própria máquina)
    --OUTPUT (para pacotes gerados localmente)
    --FORWARD (qualquer pacote que atravessa o firewall, oriundo de uma máquina e direcionado a outra)

  • nat - usada para dados que geram outra conexão. Contém 3 chains:

    --PREROUTING (para alterar pacotes recebidos antes do roteamento)
    --OUTPUT (para alterar localmente pacotes gerados antes do roteamento)
    --POSTROUTING (para mudar o endereço de origem das conexões para algo diferente)

  • mangle - usada em ações especiais para o tratamento do tráfego que atravessa os chains. Seus chains são:

    --PREROUTING - consultado quando os pacotes precisam ser modificados logo que chegam;
    --POSTROUTING - consultado quando os pacotes precisam ser modificados após o tratamento de roteamento
    --INPUT - consultado quando os pacotes precisam ser modificados antes que cheguem à máquina (o próprio servidor, antes de ser tratado por qualquer outro chain);
    --OUTPUT - consultado quando os pacotes precisam ser modificados antes de sair da máquina;
    --FORWARD - consultado quando os pacotes precisam ser modificados antes de serem redirecionados para outra interface.

2.3. NAT

"O NAT não é um protocolo nem um padrão. O NAT é apenas uma série de tarefas que um roteador (ou equipamento equivalente) deve realizar para converter endereços IPs entre redes distintas. Um equipamento que tenha o recurso de NAT (sigla em inglês: Network Address Translation ou Tradução de Endereço de Rede) deve ser capaz de analisar todos os pacotes de dados que passam por ele e trocar os endereços desses pacotes de maneira adequada. Vejamos agora como é fácil fazer um compartilhamento de acesso (NAT) no Linux com uma pequena ajuda do iptables"

Para fazer um nat basta você editar o arquivo rc.local que está em /etc/rc.d e adicionar as seguintes linhas ao seu conteúdo:

# Compartilha Conexão
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward

Nota: a placa de rede que se conecta a internet é eth1, isso pode mudar de acordo com sua configuração, podendo variar para eth0, ppp0 etc.

Como queremos que apenas as regras que adicionamos sejam executadas, antes de tudo, é necessário limpar quaisquer regras do firewall existente. Adicione as seguintes linhas antes da regra que compartilha conexão:

# Limpando Regras
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo " Limpando Regras ..............................[ OK ]"

# Definindo Política Padrão
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo " Alterando política padrão.....................[ OK ]"

Ficando o nosso script da seguinte forma:

# Limpando Regras
iptables -F
iptables -X
iptables -Z
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
echo " Limpando Regras ..............................[ OK ]"

# Definindo Política Padrão
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo " Alterando política padrão.....................[ OK ]"

# Compartilha conexão
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward

2.4. Links extras


Página anterior     Próxima página

Páginas do artigo
   1. Início
   2. 1 - Introdução
   3. 2. SELinux, IPTABLES (introdução, NAT)
   5. 4. DNS cache (Bind)
   6. 5. Web cache (Squid)
   7. 6. Acesso remoto (SSH)
   8. 7. Controle de acesso (MAC x IP)
   9. 8. Controle de banda (CBQ)
   10. 9. Outras regras
   11. 10. Limite de conexão (connlimit)
Outros artigos deste autor

Entendendo redes wireless

Integração do Hotspot Mikrotik com AD Windows Server 2012

PPoE Mikrotik - QoS Dinâmico e Individual

Instalando o Fedora 10

Leitura recomendada

Instalação de configuração do RIS para gerenciamento de imagens Ghost no Windows

Configurando wvdial com Gnome-ppp no Slackware

Otimizando o seu Slackware pra valer com o SlackBuild

Criando um servidor DNS com o DJBDNS

O que é $PATH, como funciona e como trabalhar com ele

  
Comentários
[1] Comentário enviado por dtux em 11/10/2009 - 17:23h

Muito bom artigo várias rotinas interessantes, que me ajudaram muito!!

[2] Comentário enviado por andriopj em 11/10/2009 - 23:19h

estou dando continuação nesse material... pretendo montar um Guia com varias rotinas de trabalho.
Se alguem estiver interessado em acompanhar ou ate mesmo em adicionar alguma rotina... sera bem vindo: (http://under-linux.org/f132192-servidor-fedora-de-maneira-facil-e-funcional-2)

[3] Comentário enviado por lele_1997 em 12/10/2009 - 19:16h

Muito bom artigo!!! Parabéns !!
Vc poderia ampliar o leque desse artigo, fazendo implementação do Mysql com os dados dos cliente e os scripts para pegar do banco as informações e registrar no sistema. No Iptables, CBQ e DHCP ..
Ai iria matar a pau!!!
Valeu pela ajuda

[4] Comentário enviado por nps em 12/10/2009 - 19:22h

Muito bom,excelente continue assim ajudando a todos nós.

[5] Comentário enviado por andriopj em 16/10/2009 - 21:23h

bom amigos, estou ampliando o assunto... e ate melhorando o mesmo. Lembrando que estou tentando descrever o metodo mais facil, nao sendo esses as unicas maneiras de se produzir o mesmo... mas enfim, espero que gostem.

[6] Comentário enviado por alotus em 03/11/2009 - 10:47h

Bom Artigo.

Eu estou tentando implementar um postfix num servidor com Banda larga GVT. Já fizeram o DNS Reverson na operadora, cadastrei o domínio no Registro BR com o serviço do SUPERDNS, e redirecionei para o IP Fixo do Modem da operadora no SUPERDNS. Pinga sem problema algum. Como faria para implementar o POSTFIX nele. Poderia dar alguma dica????


[7] Comentário enviado por deuz em 19/11/2009 - 12:23h

Muito bom, pelo menos até onde li, que foi somente o Bind. Meu caro, fiz conforme vc falou, e tudo funciona correto, navego, o serviço sobe normalmente sem erros, ocorre que com isso nao consigo enviar e nem receber e-mails, o que poderia estar faltando, eu apenas configurei o bind, nao uso dhcp (pelo que vi no artigo, tem uma ligação ambos).

se voce ou alguem puder me dar umas dicas, pretendo fazer isso na minha rede sem configurar o dhcp.

[8] Comentário enviado por andriopj em 04/04/2010 - 19:26h

@deuz
a ligacao entre o dhcp e o dns é somente para enviar as informacoes aos hosts clientes...

nessa maquina que vc nao esta conseguindo enviar nen receber emails, qual o dns que esta configurado ai?
tente colocar outro dns... apenas de eu achar que nao seria esse o erro.

[9] Comentário enviado por cdcanalli em 07/03/2012 - 16:25h

Estava pesquisando sobre firewall e cheguei ao seu artigo....
Parabéns...
Materia muito bem detalhado, bem comentado...
Me Ajudou Muito...
Meu servidor Debian tá ficando Ninja... :p

Obrigado...

Abraço...

[10] Comentário enviado por llbranco em 20/03/2012 - 13:11h

olá, tenho uma grande duvida em relação ao squid:

como faço para o squid tornar disponivel um objeto em cache caso o site da qual está o verdadeiro objeto esteja offline???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts