cpdrede
(usa CentOS)
Enviado em 24/11/2010 - 15:22h
Olá a todos, estou disponibilizando o script que fiz aqui para minha rede.
É o script de firewall, esta funcionando normal, para aquele que precisam de um start acredito que ajuda.
Sei que pode ser melhorado, e como sou iniciante tb, só peço que aqueles que utilizarem e fizerem alguma alteração que disponibilizem as alterações para os outros colegas.
#! /bin/bash
# /etc/init.d/firewall
# description: firewall
# Feito por Emerson Ricardo
# Interface de Loopback
IF_LOOP="lo"
# Interface da rede EXTERNA
IF_EXTERNA="eth0"
# Interface da rede INTERNA
IF_INTERNA="eth1"
# Definicao da rede interna
REDE_INTERNA="192.168.1.0/24"
# ========================================================== #
# ======================== Modulos ========================= #
# ========================================================== #
MODPROBE=/sbin/modprobe
IPTABLES=/sbin/iptables
prog=/etc/init.d/firewall
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_nat_ftp
$MODPROBE ip_tables
$MODPROBE iptable_filter
$MODPROBE iptable_mangle
$MODPROBE iptable_nat
$MODPROBE ipt_tos
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state
$MODPROBE ipt_mark
$MODPROBE ipt_multiport
$MODPROBE ipt_conntrack
$MODPROBE ipt_MARK
$MODPROBE ipt_MASQUERADE
$MODPROBE ipt_REJECT
fw_start()
{
echo ""
echo "Iniciando Firewall..................... [ OK ]"
echo ""
# ========================================================== #
# =================== Limpando as Regras =================== #
# ========================================================== #
echo ""
echo "Limpando Regras........................ [ OK ]"
echo ""
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
$IPTABLES -F -t mangle
$IPTABLES -X
$IPTABLES -Z
# ========================================================== #
# ==================== POLITICAS PADRAO ==================== #
# ========================================================== #
echo ""
echo "Aplicando Politicas Padrao............. [ OK ]"
echo ""
$IPTABLES -t filter -P INPUT DROP
$IPTABLES -t filter -P FORWARD DROP
$IPTABLES -t filter -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P POSTROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -t mangle -P INPUT ACCEPT
$IPTABLES -t mangle -P FORWARD ACCEPT
# ========================================================== #
# =============== Ativa o roteamento dinamico ============== #
# ========================================================== #
echo ""
echo "Liberando Internet..................... [ OK ]"
echo ""
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "0" > /proc/sys/net/ipv4/conf/all/proxy_arp
# ========================================================== #
# ===== Habilitando o fluxo interno entre os processos ===== #
# ========================================================== #
echo ""
echo " Aplicando Fluxo Interno............... [ OK ]"
echo ""
$IPTABLES -A INPUT -i $IF_LOOP -j ACCEPT
$IPTABLES -A OUTPUT -o $IF_LOOP -j ACCEPT
$IPTABLES -A INPUT -i $IF_INTERNA -j ACCEPT
$IPTABLES -A FORWARD -i $IF_INTERNA -j ACCEPT
# ========================================================== #
# ====================== CHECA CONEXAO ===================== #
# ========================================================== #
echo ""
echo " Checando Conexoes...................... [ OK ]"
echo ""
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ========================================================== #
# ========= Libera a conexao para a rede interna =========== #
# ========================================================== #
echo ""
echo " Liberacao Rede Interna................ [ OK ]"
echo ""
$IPTABLES -t nat -A POSTROUTING -s $REDE_INTERNA -o $IF_EXTERNA -j MASQUERADE
# ========================================================== #
# ================= Liberacao de Portas ==================== #
# ========================================================== #
echo ""
echo "Liberando Portas....................... [ OK ]"
echo ""
# FTP
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 21 -j ACCEPT
# SSH
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 22 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $IF_EXTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 2222 -j ACCEPT
# HTTP
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 80 -j ACCEPT
# HTTPS
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 443 -j ACCEPT
# SMTP
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 25 -j ACCEPT
# SMTPS
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 465 -j ACCEPT
# POP
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 110 -j ACCEPT
# POPS
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 995 -j ACCEPT
# IMAP
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 143 -j ACCEPT
# IMAPS
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 993 -j ACCEPT
# DNS
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 53 -j ACCEPT
# SQUID
$IPTABLES -A FORWARD -p tcp -i $IF_INTERNA -s $REDE_INTERNA -o $IF_EXTERNA --dport 3128 -j ACCEPT
# ========================================================== #
# ================ Liberar Maquina do Proxy ================ #
# ========================================================== #
$IPTABLES -t nat -A PREROUTING -i $IF_INTERNA -s 192.168.1.1 -p tcp --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_INTERNA -s 192.168.1.2 -p tcp --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_INTERNA -s 192.168.1.10 -p tcp --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_INTERNA -s 192.168.1.51 -p tcp --dport 80 -j ACCEPT
# ========================================================== #
# =================== PROTECOES ============================ #
# ========================================================== #
echo ""
echo "Aplicando Protecoes.................... [ OK ]"
echo ""
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
# Contra Ping
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j DROP
# Protege contra os "Ping of Death"
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# Protege contra port scanners avancados (Ex.: nmap)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
# Bloqueando tracertroute
$IPTABLES -A INPUT -p udp -s 0/0 -i eth1 --dport 33435:33525 -j REJECT
# Protecoes contra ataques
$IPTABLES -A INPUT -m state --state INVALID -j REJECT
# Proteção contra pacotes danificados ou suspeitos
$IPTABLES -A BLOCK -m unclean -j DROP
# Bloqueio Anti-Spoofings
$IPTABLES -A INPUT -s 10.0.0.0/8 -i $IF_EXTERNA -j DROP
$IPTABLES -A INPUT -s 127.0.0.0/8 -i $IF_EXTERNA -j DROP
$IPTABLES -A INPUT -s 172.16.0.0/12 -i $IF_EXTERNA -j DROP
$IPTABLES -A INPUT -s 192.168.1.0/16 -i $IF_EXTERNA -j DROP
# ========================================================== #
# ================= Redirecionando porta 80 ================ #
# ========================================================== #
echo ""
echo " Redirecionamento porta 80............. [ OK ]"
echo ""
$IPTABLES -t nat -A PREROUTING -i $IF_INTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
}
fw_stop()
{
echo ""
echo "Parando Firewall ..................... [ OK ]"
echo ""
$IPTABLES -t filter -P INPUT ACCEPT
$IPTABLES -t filter -P FORWARD ACCEPT
$IPTABLES -t filter -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P POSTROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -t mangle -P INPUT ACCEPT
$IPTABLES -t mangle -P FORWARD ACCEPT
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
$IPTABLES -t filter -Z
$IPTABLES -t nat -Z
$IPTABLES -t mangle -Z
}
fw_usage()
{
echo
echo "$0 (start | stop | restart | clear)"
echo
echo "start - Ativa o firewall"
echo "stop - Desativa o firewall"
echo "restart - Reativa o firewall"
echo "clear - Limpa os contatores"
}
fw_clear()
{
$IPTABLES -t filter -Z
$IPTABLES -t nat -Z
$IPTABLES -t mangle -Z
}
case $1 in
start)
fw_start;
;;
stop)
fw_stop;
;;
restart)
fw_stop;
fw_start;
;;
clear)
fw_clear;
;;
*)
fw_usage;
exit;
;;
esac