Dê a sua opinião.

1. Dê a sua opinião.

David
davidstar16

(usa Debian)

Enviado em 01/05/2012 - 21:01h

Olá para todos!

Eu sou novo em relação ao uso do linux e queria saber se poderiam me ajudar dando uma opinião sobre um script de firewall que criei baseado nos estudos que fiz e em alguns foruns que eu pesquisei.
Estou implementando esse serviço na rede do meu trabalho, uma rede simples, onde usamos somente internet e ftp.
A topologia da rede para o firewal é a Dual-homed host architecture, onde ele divide a rede externa da interna.
Ainda não implementei os outros serviços como dns, o motivo da consulta dns está indo para rede externa.
Então, se puderem me ajudar dando uma opinião, me dizendo onde devo melhorá-lo, serei muito grato.

Obrigado a todos!

#!/bin/bash

echo "Configurando o firewall..."

# Definindo Variáveis -------------------------------------------------------
iptables=/sbin/iptables

# Interface externa: eth0
# Interface interna: eth1

# Ativando Módulos ----------------------------------------------------------
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_queue
/sbin/modprobe ip_tables
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_MARK
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_REDIRECT
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_TCPMSS
/sbin/modprobe ipt_TOS
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_mac
/sbin/modprobe ipt_mark
/sbin/modprobe ipt_multiport
/sbin/modprobe ipt_owner
/sbin/modprobe ipt_state
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat

# Limpando Regras ----------------------------------------------------------------------

# Limpando Regras
$iptables -F
$iptables -t nat -F
$iptables -t mangle -F

# Apagando Chains
$iptables -X
$iptables -t nat -X
$iptables -t mangle -X

# Limpando Contadores
$iptables -Z
$iptables -t nat -Z
$iptables -t mangle -Z

# Criando as Tabelas de Logs ------------------------------------------------------

# Adicionar ao arquivo /etc/rsyslog.conf a linha:
# *.=notice -/var/log/iptables
# Reinicie o syslogd para alteração
# Essa linha irá enviar as mensagens para o arquivo /var/log/iptables

# Chain ALERTAS
$iptables -N ALERTAS
$iptables -A ALERTAS -p tcp -j LOG --log-level 5 --log-prefix "DROP"
$iptables -A ALERTAS -p udp -j LOG --log-level 5 --log-prefix "DROP"
$iptables -A ALERTAS -p icmp -j LOG --log-level 5 --log-prefix "DROP"
$iptables -A ALERTAS -j DROP

# Chain ACEITAS
$iptables -N ACEITAS
$iptables -A ALERTAS -p tcp -j LOG --log-level 5 --log-prefix "ACEITO"
$iptables -A ALERTAS -p udp -j LOG --log-level 5 --log-prefix "ACEITO"
$iptables -A ACEITAS -j ACCEPT

# Bloqueando Serviços -------------------------------------------------------------------

# Bloqueando Gmail (GoogleTalk)
$iptables -I INPUT -s chatenabled.mail.google.com -j DROP
$iptables -A OUTPUT -d chatenabled.mail.google.com -j DROP
$iptables -A FORWARD -d chatenabled.mail.google.com -j DROP
$iptables -A FORWARD -d talk.l.google.com -p tcp --dport 443 -j DROP
$iptables -A FORWARD -d chatenabled.mail.google.com -p tcp --dport 443 -j DROP
$iptables -A FORWARD -d talk.google.com -p tcp --dport 443 -j DROP
$iptables -A FORWARD -d talkx.l.google.com -p tcp --dport 443 -j DROP
$iptables -A FORWARD -d talk.l.google.com -p tcp --dport 5222 -j DROP
$iptables -A FORWARD -d chatenabled.mail.google.com -p tcp --dport 5222 -j DROP
$iptables -A FORWARD -d talk.google.com -p tcp --dport 5222 -j DROP
$iptables -A FORWARD -d talkx.l.google.com -p tcp --dport 5222 -j DROP

# Definindo Políticas Padões-------------------------------------------------------------

# Definindo Políticas
$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

# Criando Regras INPUT -----------------------------------------------------------------

# Liberando interface Loopback
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A INPUT ! -i lo -s 127.0.0.0/8 -j DROP

# Bloqueando ping
$iptables -A INPUT -p icmp -i eth0 -j DROP

# Wincrash
$iptables -A INPUT -p tcp --dport 5042 -j ALERTAS

# BackOrifice
$iptables -A INPUT -p tcp -i eth0 --dport 31337 -j ALERTAS
$iptables -A INPUT -p udp -i eth0 --dport 31337 -j ALERTAS

# NetBus
$iptables -A INPUT -p tcp -i eth0 --dport 12345:12346 -j ALERTAS
$iptables -A INPUT -p udp -i eth0 --dport 12345:12346 -j ALERTAS

# Trin00
$iptables -A INPUT -p tcp -i eth0 --dport 1524 -j ALERTAS
$iptables -A INPUT -p tcp -i eth0 --dport 27665 -j ALERTAS
$iptables -A INPUT -p udp -i eth0 --dport 27444 -j ALERTAS
$iptables -A INPUT -p udp -i eth0 --dport 31335 -j ALERTAS

# X Server
$iptables -A INPUT -p tcp -i eth0 --dport 5999:6003 -j ALERTAS
$iptables -A INPUT -p tcp -i eth0 --dport 7100 -j ALERTAS
$iptables -A INPUT -p udp -i eth0 --dport 5999:6003 -j ALERTAS

# Tracertroute
$iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j ALERTAS

# IP Spoofing
#$iptables -A INPUT -s 172.16.0.0/12 -i eth0 -j ALERTAS
#$iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ALERTAS
#$iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j ALERTAS

# Ident requeridos
$iptables -A INPUT -p tcp -i eth0 --dport 113 -j DROP
$iptables -A INPUT -p udp -i eth0 --dport 113 -j DROP

# CMD.EXE
#$iptables -A INPUT -p tcp -s 0.0.0.0/0 -m string --string 'cmd.exe' -j ALERTAS (Eu não consegui ativar essa regra)

# Liberando conexões estabelecidas ou relatadas
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Contendo escaneamentos

# Caso um host da lista SUSPEITOS passe aqui 4 vezes será bloqueado por 1 hora
$iptables -A INPUT -m recent --update --hitcount 4 --name SUSPEITO --seconds 3600 -j DROP

# Liperando portas

# Liberando SSH
# Liberando o SSH por 120 segundos se somente para quem estiver na lista ssh
$iptables -A INPUT -p tcp --dport 7070 -m recent --rcheck --name SSH --second 120 -j ACCEPT

# O host que me mandar um pacote na porta 5050 será aicionado na lista SSH
$iptables -A INPUT -p tcp --dport 5050 -m recent --set --name SSH
#$iptables -A INPUT -p tcp -i eth0 --dport 7070 -j ACCEPT

#Adicionando o host na lista SUSPEITOS
$iptables -A INPUT -m recent --set --name SUSPEITO

# Criando Regras OUTPUT ---------------------------------------------------------------

# Liberando conexões estabelecidas ou relatadas
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Liberando interface Loopback
$iptables -A OUTPUT -o lo -j ACCEPT

# Liberando HTTP
$iptables -A OUTPUT -p tcp -o eth0 --dport 80 -j ACCEPT

# Liberando FTP
$iptables -A OUTPUT -p tcp -o eth0 --dport 21 -j ACCEPT

# Liberando DNS consulta
$iptables -A OUTPUT -p udp ! -o eth0 --dport 53 -j ACCEPT

# Liberando SSH para rede interna
$iptables -A OUTPUT -p tcp ! -o eth0 --dport 7071 -j ACCEPT

# Liberando Ping
$iptables -A OUTPUT -p icmp -j ACCEPT

# Criando Regras FORWARD ----------------------------------------------------------------

# Proteção contra ping da morte
#$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

$iptables -A FORWARD -p icmp -m limit --limit 1/s -j ACCEPT
# Liberando portas

# Liberano conexões estabelecidas ou relatadas
$iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Liberando HTTP
$iptables -A FORWARD -p tcp -o eth0 --dport 80 -j ACCEPT

# Liberando HTTPS
$iptables -A FORWARD -p tcp -o eth0 --dport 443 -j ACCEPT

# Liberando SMTP
#$iptables -A FORWARD -p tcp -o eth0 --dport 25 -j ACCEPT

# Liberando POP3
#$iptables -A FORWARD -p tcp -o eth0 --dport 110 -j ACCEPT

# Liberando FTP
$iptables -A FORWARD -p tcp -o eth0 --dport 21 -j ACCEPT

# Liberando TELNET
#$iptables -A FORWARD -p tcp -o eth0 --dport -23 -j ACCEPT

# Liberando SSH
#$iptables -A FORWARD -o eth0 -p tcp --dport 22 -j ACCEPT

# Liberando DNS (Consultas)
$iptables -A FORWARD -p udp -o eth0 --dport 53 -j ACCEPT

# Criando Regras NAT --------------------------------------------------------------------

# Compartilhando a internet
$iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Proxy Transparente Se o redirecionamento for para uma máquina diferente
#$iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination ip_de_destino:porta_de_destino

# Proxy Transparente
#$iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Definindo Parâmetros ------------------------------------------------------------------

# Habilitando Forwarding (encaminhamento)
echo 1 > /proc/sys/net/ipv4/ip_forward

# Desabilitando Resposta Ping
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Protecao contra ICMP Broadcasting
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Desabilitando Syn-Cookies
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

# Negando IP_Spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $i
done

Fim ---------------------------------------------------------------------------------------

Vlw!


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts