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.919 ]

Por: Andrio Prestes Jasper em 11/10/2009


7. Controle de acesso (MAC x IP)



O controle de acesso por MAC x IP é feito com a ajuda do Iptables. O cliente deverá ter sempre o mesmo IP, basta configurar o DHCP com IP fixo ou configurar o micro do cliente manualmente.

Funcionará da seguinte forma:
  • Teremos um arquivo que conterá todos os IPs e MACs da rede;
  • Alteraremos a política padrão de ACCEPT para DROP (assim estaremos bloqueando TUDO);
  • Adicionaremos 2 regras no script do firewall, essas últimas serão responsáveis por liberar o acesso aos cadastrados.

7.1. Configurando o acesso (MAC x IP)

Atualmente nosso rc.local (/etc/rc.d.rc.local) está 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 ]"

# Redireciona o tráfego http(80) para o Squid (3128)
iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

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

Criaremos o arquivo que conterá os IPs e MACs e adicionaremos os IPs e MACs, cada cliente em uma linha, da seguinte forma:

IP;MAC;Marcação pacote;nome do cliente

# vim /etc/macxip

172.167.0.9;00:12:31:b3:6f:4C;10019;andrio

Agora editamos o rc.local (/etc/rc.d.rc.local) deixando-o da seguinte forma:

# Parâmetros do controle de acesso
MACLIST=/etc/macxip
echo " Configurações necessárias.....................[ OK ]"

# 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 DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo " Alterando política padrão.....................[ OK ]"

# # Controle de ACESSO # #
# Diretivas do BD IP, MAC e Port
for i in `cat $MACLIST`; do
IPSOURCE=`echo $i | cut -d ';' -f 1`
MACSOURCE=`echo $i | cut -d ';' -f 2`
CBQMARK=`echo $i | cut -d ';' -f 3`

# Controle de Acesso IPxMAC
iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT
done


# Redireciona o tráfego http(80) para o squid (3128)
iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

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

Execute o script do firewall e seu controle de acesso IP x MAC já estará funcionando.

Para bloquear um determinado cliente, basta mudar os 2 primeiros "00" do MAC do mesmo, dessa forma, o novo mac cadastrado não baterá com o mac real do cliente (MAC 00:12:31:b3:6f:4C é diferente do MAC 11:12:31:b3:6f:4C)

Pode ser necessário adicionar mais 3 linhas de regras no script para manter/aceitar as conexões estabilizadas. adicione-as logo abaixo das regras de "Política Padrão".

# Aceita os pacotes que realmente devem entrar
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Como deixamos o firewall restritivo, é bom adicionar a regra abaixo, responsável por aceitar toda conexão loopback.

# Aceita todo o tráfego vindo do loopback e indo para o loopback iptables -t filter -A INPUT -i lo -j ACCEPT

7.2. 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

PPoE Mikrotik - QoS Dinâmico e Individual

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

Entendendo redes wireless

Instalando o Fedora 10

Leitura recomendada

Controle de versão usando Git integrado ao Redmine

Slackware - Limpeza automática da pasta /tmp

Criando disquetes de inicialização

Permissão de Execução a Arquivo (script ou binário) no GNU/Linux - Abordagem Sistemática

Configurando o NRPE (Nagios Remote Plugin Executor) no Ubuntu Desktop 9.10/Server 8.04 com criptografia SSL

  
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