shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Script Firewall


From: Edinaldo de Souza Revoredo Junior
Subject: Re: [shell-script] Re: Script Firewall
Date: Fri, 05 Nov 2004 09:38:59 -0300
User-agent: Mozilla Thunderbird 0.6 (Windows/20040502)

Cara gostei muito vou usa-lo em casa, gostaria de ver o que vc usa num ambiente corporativo, se vc puder postar aqui vai ser muito bom...

Edinaldo Junior




xxoin escreveu:


Aí vai o que uso num computador pessoal, se lhe interessar o que
utilizo num ambiente corporativo me avise...

Algumas regras output estão explícitas para o caso de se desejar mudar
a política para output. O mesmo para a tabela nat...

Os logs estão indo para /var/log/messages


_____ script_FW-início __________

#!/bin/bash

echo "Lendo variáveis..."
echo "Por favor aguarde."
sleep 2
echo echo "Limpando a tela."
clear

# Identificando variáveis:
#-------------------------

# Módulo iptables:
iptables=/usr/sbin/iptables

# Interfaces:
eth_int=eth0
eth_ext=ppp0

# Iniciando função "start":
# ************************
FW_start(){

# Zerando regras:
$iptables -F
$iptables -t nat -F
$iptables -X

#=============================================================


# Estabelecendo política padrão:
#-------------------------------

$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT
$iptables -t nat -P PREROUTING ACCEPT
$iptables -t nat -P POSTROUTING ACCEPT
$iptables -t nat -P OUTPUT ACCEPT

#==============================================================


# Regras genéricas de proteção:
#------------------------------

# Protegendo de pacotes ping:
$iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP

# Protegendo contra Ping of Death:
$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT

# Protegendo contra Port Scan (nmap & cia):
$iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT

# Protegendo contra Syn Flood:
$iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT

# Negando pings:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Contra ataque "icmp flooding" (broadcasts):
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Contra mensagens de icmp_redirects:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Para evitar o desvio de pacotes:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Evitar o repasse de pacotes falsificados:
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Evitar syn flood (syn cookies):
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#===========================================================


# Regras administrativas:
#------------------------

# LOOPBACK:
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT

# Libera ping para o FW:
$iptables -A OUTPUT -p icmp -j ACCEPT


#-----------------> Regras FW > Internet:

# Libera conexões estabilizadas e com estas relacionadas (já iniciadas):
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera o Proxy/FW para resolver DNS (usar --dport 53 ou domain):
$iptables -A OUTPUT -p UDP --dport 53 -o $eth_ext -j ACCEPT

# Libera navegação para o FW aos protocolos http/https/ftp:
$iptables -A OUTPUT -d 201.2.0.1 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 80 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 443 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 20 -o $eth_ext -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 21 -o $eth_ext -j ACCEPT

# Mascarando as conexões:
$iptables -t nat -A POSTROUTING -o $eth_ext -d 0/0 -j MASQUERADE

# ----> Logando tentativas de conexao na placa externa:
$iptables -A INPUT -i $eth_ext -m state --state NEW,INVALID -j LOG
--log-prefix "TENTATIVA_EXT"
$iptables -A INPUT -i $eth_ext -m state --state NEW,INVALID -j DROP

# Logando outras tentativas de conexão:
$iptables -A INPUT -p tcp --syn -j LOG --log-prefix "OUTRAS_TENTATIVAS"
$iptables -A INPUT -p tcp --syn -j DROP


# Fechando função "start":
# ***********************
}

#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

# Iniciando função "stop":
# ***********************
FW_stop(){

# Dando um "flushing" e abrindo tudo:
$iptables -F
$iptables -t nat -F
$iptables -X

$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -t nat -P PREROUTING ACCEPT
$iptables -t nat -P POSTROUTING ACCEPT
$iptables -t nat -P OUTPUT ACCEPT

# Fechando função "stop":
# **********************
}

#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

# Iniciando função "restart":
# **************************
FW_restart(){

FW_stop

FW_start

# Finalizando função "restart":
# ****************************
}

#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

# Mensagens na tela:
# *****************

case "$1" in

"start")

FW_start
echo "O FW está sendo ativado..."
sleep 2
echo "O FW foi ativado com sucesso!"
;;
        "stop")
       FW_stop
        echo "O FW está sendo desativado..."
        sleep 1
        echo "O FW foi DESATIVADO!"
       echo '                   ===================='
        echo '                   Mostrando tabelas:'
        echo '                  ===================='
        echo
        echo 'Tabela FILTER'
        echo '*************'
        iptables -L -n
        echo
        echo 'Tabela NAT'
        echo '**********'
        iptables -t nat -L
echo
  ;;
                "restart")
                FW_restart
                echo "O FW está sendo desativado..."
                sleep 1
                echo "O FW está sendo reativado..."
                sleep 2
                echo "O FW foi ativado com sucesso!"
;;
                        *)
                        iptables -L -n |less

esac

________ Final do script_FW ____________


_______
Xxoin


_________________________________________________________


--- Em address@hidden, Esdras <klapzin@y...> escreveu
Salve Lista,

Alguem teria um modelo de script de firewall start stop pra colocar no init.d ? nao precisa ter muitas regras configuradas só preciso de um modelo pra me basear numa programação.

Esdras





---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos












reply via email to

[Prev in Thread] Current Thread [Next in Thread]