quinta-feira, 13 de abril de 2017

configuracao basica iptables servidor linux

https://www.vivaolinux.com.br/dica/Configuracao-basica-do-IPtables

CONFIGURAÇÃO BÁSICA DO IPTABLES

 

Segue abaixo, uma sugestão de configuração básica para o IPtables

É somente um cabeçalho com regras iniciais, sendo que você pode adaptá-las livremente, acrescentar suas próprias regras, comentar o que não precisa, etc. 

#!/bin/bash
#
#Desabilitando o tráfego entre as placas
#################################

echo 0 > /proc/sys/net/ipv4/ip_forward
#
##Apagando e restaurando as chains e tabelas
######################################

iptables -Z  # Zera as regras de todas as chains
iptables -F  # Remove as regras de todas as chains
iptables -X  # Apaga todas as chains
#iptables -t nat -Z
#iptables -t nat -F
#iptables -t nat -X
#iptables -t mangle -Z
#iptables -t mangle -F
#iptables -t mangle -X
#
##Proteção contra ping, SYN Cookies, IP Spoofing e proteções do kernel
##########################################################

echo 1 > /proc/sys/net/ipv4/tcp_syncookies          # Syn Flood (DoS)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts  # Port scanners
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses      # Sem resposta remota
for i in  /proc/sys/net/ipv4/conf/*; do
echo 0 > $i/accept_redirects                # Sem redirecionar rotas
echo 0 > $i/accept_source_route            # Sem traceroute
echo 1 > $i/log_martians                # Loga pacotes suspeitos no kernel
echo 1 > $i/rp_filter                  # Ip Spoofing
echo 1 > $i/secure_redirects; done                      # Redirecionamento seguro de pacotes
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all        # Sem ping e tracert
#
# Carregando os módulos - Não é necessário todos os módulos,
# somente aqueles que você irá utilizar.
# O iptables, por padrão, carrega os módulos principais automaticamente.
# Para identificar qual módulo adicional carregar, você deve elaborar todo o script
# e depois de acordo com o nome do alvo utilizado, você carrega o mesmo módulo.
# Por exemplo, se você utilizar a seguinte regra:
# iptables -A FORWARD -p udp -m multiport --dport 80,1024:65535 -j DROP
# o módulo "ipt_multiport" deve ser carregado.
# Abaixo estão quase todos os módulos.
################################

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_gre
#
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_NETMAP
#
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tos
modprobe ipt_mark
modprobe ipt_tcpmss
modprobe ipt_string
modprobe ipt_statistic
#
modprobe nf_nat_pptp
modprobe nf_nat_proto_gre
#
# Definindo políticas padrões
######################

iptables  -P  INPUT DROP  # iptables a política padrão da chain INPUT é proibir tudo
iptables  -P  FORWARD DROP
iptables  -P  OUTPUT ACCEPT
#
# Liberando a Loopback
####################

iptables -A  INPUT -i lo -j ACCEPT
#
## Regras de segurança na internet e acessos
#####################################

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW !  -i  ethx -j DROP    # Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i ethx -j DROP    # Interface de entrada da internet
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
# Redirecionamento para o Squid e mascaramento/compartilhamento
###########################################

iptables -t nat -A PREROUTING -i ethx -p tcp --dport 80 -j REDIRECT --to-port 3128  # Interface da rede interna
iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE  # Interface de entrada da internet
#
# A partir daqui você pode inserir as regras de liberação e bloqueio, não esqueça habilitar no final o tráfego entre as placas.
#
# Habilitando o tráfego entre as placas
##########################

echo 1 > /proc/sys/net/ipv4/ip_forward
#

Depois de criar o script (com o nome de, por exemplo, firewall.sh), lembre de dar permissão de execução: 

# chmod +x /caminho/do/script/firewall.sh 

Exemplos:
  • No Debian é em: /ect/init.d/firewall.sh
  • No Slackware é em: /etc/rc.d/init.d/firewall.sh
  • No Red Hat é em: /etc/rc.d/init.d/firewall.sh
  • No openSuse é em: /ect/init.d/firewall.sh

O nome do script, aconselho a não colocar firewall.sh, pois é muito óbvio, coloque outro nome de sua escolha. 

Aqui tem uma regra simples, feita pelo próprio Rusty Russel, à qual você pode acrescentar para dar maior segurança na sua rede interna: 

## Carregando módulos de acompanhamento de conexões (desnecessário se compilados diretamente no kernel).
     insmod ip_conntrack
     insmod ip_conntrack_ftp

## Cria chain que rejeita novas conexões, exceto as vindas da rede interna.
     iptables -N block
     iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
     iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT  # em ppp0 coloque a sua interface de entrada da internet
     iptables -A block -j DROP

     ## Saltar das chains INPUT e FORWARD para a chain block.
     iptables -A INPUT -j block
     iptables -A FORWARD -j block

Retirado deste documento feito pelo próprio:
Conclusão: Estude o IPtables. Estude o IPtables. Estude o IPtables... 

Nenhum comentário:

Postar um comentário