Firewall
Publicado por Fabio Tezzei 21/01/2006
[ Hits: 10.447 ]
#!/bin/bash
#Este Script foi desenvolvido por Fabio Tezzei.
# GNU/Linux .
#Qualquer duvida poste um email para tezzei@gmail.com.
#13/01/2005
echo "ESTE SCRIPT INICIA O FIREWALL, E HABILITA O PROXY";
/etc/init.d/squid stop;
sync;
sleep 3;
sync;
/etc/init.d/squid start;
sleep 2;
echo "Ativando FIREWALL";
#Limpando possiveis regras antigas.
iptables -F;
iptables -t nat -F;
sync;
#Estou negando todas as conexoes.
iptables -P INPUT DROP;
iptables -P OUTPUT DROP;
iptables -P FORWARD DROP;
#Declarando Variaveis de Ip,Ip externo, Ip seguro para ssh e rede.
IP=`ifconfig eth0 | grep end.: | cut -c 21-33 `;
IPEXT=`ifconfig eth1 | grep end.: | cut -c 21-33 `;
REDE=192.168.1.0;
IPSEG=192.168.1.35;
#Estou Liberando o Ping externo, e uma possivel conexao com o Squid, mas apenas
#no IP Declarado acima.
iptables -A INPUT -p 1 --icmp-type 8 -s $IP -d 0/0 -j ACCEPT;
iptables -A OUTPUT -p 1 --icmp-type 8 -s $IP -d 0/0 -j ACCEPT;
iptables -A INPUT -d 127.0.0.1 -j ACCEPT;
iptables -A INPUT -d $IP -j ACCEPT;
iptables -A OUTPUT -d $IP -j ACCEPT;
iptables -A FORWARD -d $IP -j ACCEPT;
iptables -A FORWARD -d 127.0.0.1 -j ACCEPT;
iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT;
#Regra que permite a navegacao WEB, caso nao utilize Squid
#iptables -A OUTPUT -p tcp -s $IP --sport 1024:65535 -d 0/0 --dport 80 -j ACCEPT;
#iptables -A INPUT -p tcp -s 0/0 --sport 80 -d $IP --dport 1024:65535 -j ACCEPT;
#Criando Regra de Mascareamento.
iptables -A FORWARD -s $REDE/24 -j ACCEPT;
iptables -A FORWARD -d $REDE/24 -j ACCEPT;
iptables -t nat -A POSTROUTING -o eth0 -s $IP/24 -j MASQUERADE;
#Regra para permitir ssh no firewall, por um IP Seguro.
iptables -A INPUT -p 6 -s $IPSEG --sport 1024:65535 -d $IP --dport 22 -j ACCEPT;
#Regra que permite o Traceroute
#iptables -A INPUT -p icmp -s 0/0 -icmp type 11 -j ACCEPT;
#Regra para resolucao de nomes, quando nao estiver usando Squid.
#iptables -A OUTPUT -p udp -s $IP --sport 1024:65535 -d 0/0 --dport 53 -j ACCEPT;
#iptables -A INPUT -p udp -s 0/0 --sport 53 -d 0/0 -d $IP --dport 1024:65535 -j ACCEPT;
#Salvando regras
iptables-save >/etc/backup/regras;
#Levantando os modulos da tabela Nat
modprobe iptable_nat;
echo 1 > /proc/sys/net/ipv4/ip_forward;
iptables-restore /etc/backup/regras;
#echo "Verificando regras ativas";
#iptables -t nat -L;
#iptables -L;
#Declarando variavel do path do log do Firewall
LOG=/var/log/firewall/firewall.log
#Criando pasta de log
if test -f /var/log/firewall/firewall.log
then echo "Arquivos de LOG ja criados"
exit 0
else mkdir /var/log/firewall
fi;
echo ---------------------------------------------------------------- > $LOG;
echo "Criando Arquivo de log em /var/log/firewall/firewall.log";
echo Arquivo de log gerado por Firewall, criado por Fabio Tezzei > $LOG;
echo Data da geracao. >> $LOG;
date >> $LOG;
echo Listando Regras. >> $LOG;
iptables -n -L >> $LOG;
iptables -n -L -t nat >> $LOG;
echo Verificando Status do Proxy. >> $LOG;
ps aux |grep squid >> $LOG;
echo Verificando Portas Ativas. >> $LOG;
netstat -nlt >> $LOG;
netstat -nlu >> $LOG;
echo Verificando processos ativos nas respectivas portas >> $LOG;
fuser -v 3128/tcp >> $LOG;
fuser -v 3130/udp >> $LOG;
fuser -v 32768/udp >> $LOG;
echo Verificando se existem portas ativas para conexoes externas, no IP $IP >> $LOG;
nmap -sT -n -P0 $IP >> $LOG;
nmap -sU -n -P0 $IP >> $LOG;
#echo Verificando se existem portas abertas para ips externos >> $LOG;
#nmap -sT -n -P0 $IPEXT >> $LOG;
#nmap -sU -n -P0 $IPEXT >> $LOG;
# Colocando os logs do squid nos terminais 2,3,4
echo "Utilizando os terminays 2,3,4, para visualizar a saida de logs";
tail -f /var/log/squid/cache.log >> /dev/tty2 &;
tail -f /var/log/squid/store.log >> /dev/tty3 &;
tail -f /var/log/squid/access.log >> /dev/tty4 &;
sync;
cat $LOG >> /var/log/firewall/firelogs.log;
#rm -rf teste.txt && rm -rf teste2 && ifconfig eth0 >teste.txt && sleep 2 | grep end.: teste.txt | cut -c 21-33 > teste2 ; sleep 2; sync; cat teste2
Script para listar tentativas de acessos
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Linux não é para todo mundo (17)
Comunicação entre sede e filial (7)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (1)