[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Script Firewall
From: |
xxoin |
Subject: |
Re: Script Firewall |
Date: |
Fri, 05 Nov 2004 21:38:27 -0000 |
User-agent: |
eGroups-EW/0.82 |
Prezado Ednaldo e demais participantes do grupo, caso se interessem,
este é o script_FW que utilizo no trabalho.
Antes, porém, alguns detalhes:
- As variáveis precisam ser ajustadas;
- Utilizo Squid com autenticação de usuáios num PDC;
- Não aceito nenhuma conexão que não venha da rede
interna nas portas do proxy e do apache para
visualização de relatórios gerados pelo sarg;
- Para que a inicilização seja automática (no boot, e
isto vale para o FW_pessoal que coloquei na lista):
edite o arquivo /etc/rc.local com a seguinte linha:
. /etc/init.d/NOME_DO_SCRIPT_FW
- A linha acima, começa com ponto+espaço...
- Caso você faça alguma alteração utilizando
software_Windows, será necessário "limpar" o END
(final) de todas as linhas do script...
- Não está liberado o outlook para ninguém...
------ Início do script_FW -------
#!/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=eth1
# Rede:
LAN=10.10.10.0/24
# Máquina para acesso à Imprensa Nacional:
imp_nac=10.10.10.3
# PDC, para autenticação dos usuários do Proxy:
PDC=10.10.10.1
# Caso seja necessário liberar uma máquina para
navegar >sem< proxy:
#by_pass=10.10.10.x
# IP's do FW_Proxy:
IP_int=10.10.10.254
IP_ext=192.168.200.1
#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<
#
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>
# 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 DROP
$iptables -t nat -P POSTROUTING DROP
$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:
# Caso se deseje utilizar Proxy_Transparente, deverão
ser observadas as
# anotações feitas no arquivo /etc/squid/squid.conf
#$iptables -t nat -A PREROUTING -p tcp -i $eth_int
--dport 80 -j REDIRECT --to- port 3128
# 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 o Proxy para a Rede_Local:
$iptables -A INPUT -p tcp --syn -s $LAN --dport 3128
-j ACCEPT
# Libera navegação para o FW aos protocolos
http/https/ftp:
$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
# Libera acesso ao PDC para autenticação de usuários
do Proxy:
$iptables -A OUTPUT -d $PDC -j ACCEPT
# Permite os usuários cadastrados visualizarem os
Relatórios do Sarg:
$iptables -A INPUT -p tcp --syn -s $LAN --dport 80 -j
ACCEPT
#===================================================================
# Liberando o acesso do Setor de Licitações para
acessar a Imprensa Nacional:
#-------------------------------------------------------------------
$iptables -A FORWARD -p UDP -s $imp_nac --dport 53 -j
ACCEPT
$iptables -A FORWARD -p tcp -s $imp_nac -d 201.2.0.1
-j ACCEPT
$iptables -A FORWARD -p tcp -s $imp_nac -d
www.in.gov.br -j ACCEPT
$iptables -A FORWARD -p tcp -s $imp_nac -d
incom.in.gov.br -j ACCEPT
$iptables -A FORWARD -p tcp -s $imp_nac -d
200.252.141.134 --dport 3001 -j ACCEPT
$iptables -A FORWARD -m state --state
ESTABLISHED,RELATED -j ACCEPT
# Negando a navegação em outros sites:
$iptables -A FORWARD -s $imp_nac -j DROP
$iptables -A FORWARD -d $imp_nac -j DROP
# Fazendo NAT para a navegação para a Imprensa
Nacional:
$iptables -t nat -A POSTROUTING -s $imp_nac -o
$eth_ext -j SNAT --to $IP_ext
#====================================================================
#--------> Liberando máquina via FW (navegação sem o
Proxy):
#$iptables -A FORWARD -p UDP -s $by_pass --dport 53 -j
ACCEPT
#$iptables -A FORWARD -p tcp -s $by_pass -d 0/0 -j
ACCEPT
#$iptables -t nat -A POSTROUTING -s $by_pass -o
$eth_ext -j SNAT --to $IP_ext
#=====================================================================
# ----> Logando tentativas de conexão 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_proxy está sendo ativado..."
sleep 1
echo "O FW_proxy foi ativado com sucesso!"
;;
"stop")
FW_stop
echo "O FW_proxy está sendo desativado..."
sleep 1
echo " O FW_proxy foi DESATIVADO!"
echo ' ===================='
echo ' Mostrando tabelas:'
echo ' ===================='
echo 'Tabela FILTER'
echo '*************'
iptables -L -n
echo
echo 'Tabela NAT'
echo '**********'
iptables -t nat -L
;;
"restart")
FW_restart
echo "O FW_proxy está sendo desativado..."
sleep 1
echo "O FW_proxy está sendo reativado..."
sleep 2
echo "O FW_proxy foi ativado com sucesso!"
;;
"filter")
echo "Listando as regras da Tabela FILTER..."
iptables -L -n
;;
"nat")
echo "Listando as regras da Tabela NAT..."
iptables -t nat -L
;;
*)
echo "Utilize um dos seguintes comandos:"
echo
echo "service FW_proxy start --> para iniciar o
FW;"
echo "service FW_proxy stop --> para desativar o
FW;"
echo "service FW_proxy restart --> para
reiniciar o FW;"
echo "service FW_proxy filter --> para mostrar a
Tabela FILTER e"
echo "service FW_proxy nat --> para mostrar a
Tabela NAT."
esac
# ---------------- < Xxoin - 2004 > -------------------------
------ Final do scritp_FW --------
Qualquer dúvida, manda aí...
Um abração!
_______
Xxoin
--- Em address@hidden, Edinaldo de Souza Revoredo
Junior <edinaznet@y...> escreveu
> 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
> >
> >
> >_________________________________________________________
> >
> >
>
Re: [shell-script] Script Firewall, Enaldo Sousa Leite, 2004/11/04