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.
O kernel conta com algumas opções interessantes, vamos adicioná-las em nosso script de firewall, deixando por fim como mostrado em seguida.
Temos um problema no acesso remoto (ssh), pois deixamos nosso firewall restritivo, liberando acesso somente aos cadastrados. Vamos então adicionar mais uma regra que permitirá o acesso remoto na porta do ssh.
# Parâmetros do Controle de acesso
MACLIST=/etc/macxip
echo " Configurações necessárias.....................[ 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 ]"
# 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
# rejeita todas as requisição de ICMP ECHO, ou apenas aquelas destinadas a endereçamento broadcasting ou multicasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# ignora mensagens falsas de icmp_error_responses
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Kill timestamps. These have been the subject of a recent bugtraq thread
echo "0" > /proc/sys/net/ipv4/tcp_timestamps
# Permite o redirecionamento seguro dos pacotes
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
# Evita problema de resposta tamanho zero
echo "0" > /proc/sys/net/ipv4/tcp_ecn
# Tempo em segundos para manter um fragmento IP na memória
echo "15" > /proc/sys/net/ipv4/ipfrag_time
# Tempo máximo de Espera da Conexão sem Resposta
echo "1800" > /proc/sys/net/ipv4/tcp_fin_timeout
# conf/accept_redirects - essa opção decide se o kernel aceita redirecionar mensagens ICMP ou não # conf/accept_source_route - Desativar essa opção fecha as chances para que um cracker realize ataques do tipo IP Spoofing # conf/send_redirects - Não envie mensagens de redirecionamento ICMP # conf/*/log_martians - permite que pacotes de origem suspeita ou desconhecida (como pacotes forjados) sejam logados pelo próprio kernel. # conf/*/rp_filter - verifica o Endereço de Origem do Pacote, prevenindo a sua máquina de ataques como 'IP Spoofing'.
for i in /proc/sys/net/ipv4/conf/*; do
echo "0" > $i/accept_redirects
echo "0" > $i/accept_source_route
echo "0" > $i/send_redirects
echo "1" > $i/log_martians
echo "1" > $i/rp_filter;
done
# Liberando todos os dados cacheados da memória
echo 3 > /proc/sys/vm/drop_caches
# permite determinar o n° de segundos que uma conexão precisa estar ociosa antes de o TCP enviar checagens de keep-alive
echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl
# Permite ativar o TCP Selective Acknowledgements previsto pela RFC2018
echo "0" > /proc/sys/net/ipv4/tcp_sack
# permite ativar o TCP window scaling previsto pela RFC1323
echo "0" > /proc/sys/net/ipv4/tcp_window_scaling
# Esse parâmetro determina o nº de pacotes SYN+ACK enviados antes de o kernel liberar a conexão
echo "2" > /proc/sys/net/ipv4/tcp_synack_retries
echo " Carregando Proteções Adicionais...............[ 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
#Pacote Marcado
iptables -A PREROUTING -t mangle -i eth1 -s $IPSOURCE -j MARK --set-mark $CBQMARK
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
[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
[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