Buckminster
(usa Debian)
Enviado em 31/05/2017 - 00:28h
Crie um script de firewall para o Iptables.
Usei o vim, você use o teu editor de texto preferido.
# vim /etc/init.d/firewall.sh <<< dei o nome de firewall.sh, você dê o nome que quiser, sugiro um nome que não seja óbvio como esse (firewall.sh)
Coloque dentro o seguinte conteúdo:
#! /bin/sh
### BEGIN INIT INFO
# Provides: nome_do_arquivo_sem_sh_no_final
# Short-Description: executa o arquivo do Iptables
### END INIT INFO
#
#Desabilitando o tráfego entre as placas
#################################
echo 0 > /proc/sys/net/ipv4/ip_forward
#
##Apagando e restaurando as chains e tabelas
######################################
iptables -F # Remove as regras de todas as chains
iptables -Z # Zera 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_conntrack_irc
# 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
# modprobe nf_nat_irc
#
# 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 sem_fio_A -j DROP
iptables -A FORWARD -m state --state NEW ! -i sem_fio_A -j DROP
iptables -A INPUT -m state --state NEW ! -i sem_fio_B -j DROP
iptables -A FORWARD -m state --state NEW ! -i sem_fio_B -j DROP
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 -s xxx.xxx.xxx.xxx/xx -o sem_fio_A -j MASQUERADE # Em xxx tu coloca o endereço e a máscara da rede da placa ethernet_0
iptables -A FORWARD -d xxx.xxx.xxx.xxx/xx -j ACCEPT # Em xxx tu coloca o endereço e a máscara da rede da placa ethernet_0
iptables -t nat -A POSTROUTING -s xxx.xxx.xxx.xxx/xx -o sem_fio_B -j MASQUERADE # Em xxx tu coloca o endereço e a máscara da rede da placa ethernet_1
iptables -A FORWARD -d xxx.xxx.xxx.xxx/xx -j ACCEPT # Em xxx tu coloca o endereço e a máscara da rede da placa ethernet_1
#
# A partir daqui você pode inserir as regras de liberação e bloqueio.
#
# Finalizando:
# Habilitando o tráfego entre as placas
##########################
echo 1 > /proc/sys/net/ipv4/ip_forward
#
Salve e saia do arquivo.
Dê permissão de execução:
# chmod +x /etc/init.d/firewall.sh
Coloque dentro do arquivo /etc/rc.local, antes de exit 0, assim:
/etc/init.d/firewall.sh start
exit 0
Salve e saia do arquivo.
Dessa maneira tu pode iniciar, parar e reiniciar o Iptables no terminal:
# /etc/init.d/firewall.sh start
# /etc/init.d/firewall.sh stop
# /etc/init.d/firewall.sh restart
Veja bem, as regras de mascaramento/compartilhamento devem funcionar. Caso não funcionar e der algum erro, poste aqui.
Acredito que não precisaremos partir para definição de rotas.
Onde estiver sem_fio_A e sem_fio_B tu coloca os nomes das respectivas placas de rede.
Reinicie o servidor e teste.
Qualquer dúvida, posta aqui.
https://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/?pagina=1