Script de firewall
Publicado por Henrique Vieira Leanor (última atualização em 01/02/2010)
[ Hits: 6.947 ]
Homepage: henriqueinside.blogspot.com
Script pronto para ser usado em seu firewall.
#!/bin/bash ## Variáveis IPT=$(which iptables) ET0="192.168.1.112" LO="127.0.0.1" NET="0/0" PA="1024:65535" #----------------------------------------------------------------------- modulos() { echo "### CARREGANDO MÓDULOS ###" modprobe ip_conntrack_ftp modprobe ip_nat_ftp } nega() { echo "### FECHANDO O FIREWALL ###" $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP } limpa() { echo "### ABRINDO O FIREWALL ###" $IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT } loop() { echo "### LIBERANDO A LOOP BACK ###" $IPT -A INPUT -i lo -d $LO -j ACCEPT $IPT -A OUTPUT -o lo -d $LO -j ACCEPT } input() { echo "### ESTABILIZANDO AS CONEXÕES DE INPUT ###" $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT } output() { echo "### ESTABILIZANDO AS CONEXÕES DE OUTPUT ###" $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT } forward() { echo "### ESTABILIZANDO AS CONEXÕES DE FORWARD ###" $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT } icmps() { echo "### LIBERANDO ICMPS ###" for TIPO in 0 3/0 3/1 3/2 3/3 3/4 4 5 11 12 do $IPT -A INPUT -p icmp -s $NET -d $ET0 --icmp-type $TIPO -m limit --limit 1/s -j ACCEPT done $IPT -A OUTPUT -p icmp -s $ET0 -d $NET --icmp-type 8 -j ACCEPT } pt_cliente_tcp() { echo "### LIBERANDO CONEXÕES CLIENTE EM PORTAS TCP ###" for PORTAS in $(cat /etc/firewall/portas_tcp.txt | grep -v ^#) do $IPT -A OUTPUT -p tcp -m state --state NEW -s $ET0 --sport $PA -d $NET --dport $PORTAS -j ACCEPT done } pt_cliente_udp() { echo "### LIBERANDO CONEXÕES CLIENTE EM PORTAS UDP ###" for PORTAS in $(cat /etc/firewall/portas_udp.txt | grep -v ^#) do $IPT -A OUTPUT -p udp -m state --state NEW -s $ET0 --sport $PA -d $NET --dport $PORTAS -j ACCEPT done } pt_adm_tcp() { echo "### ATIVANDO CONTROLE DE CONEXÕES REMOTAS DE IP's AUTORIZAODS ###" for IP in $(cat /etc/firewall/ip_amigos.txt | grep -v ^#) do for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#) do $IPT -A INPUT -p tcp -m state --state NEW -s $IP --sport $PA -d $ET0 --dport $PORTAS -j ACCEPT done done for PORTAS in $(cat /etc/firewall/portas_adm.txt | grep -v ^#) do $IPT -A INPUT -p tcp -s $NET --sport $PA -d $ET0 --dport $PORTAS -j REJECT --reject-with tcp-reset done } flags_invalidas() { echo "### ATIVANDO CONTROLE DE FLAGS INVALIDAS ###" for FLAGS in $(cat /etc/firewall/flags.txt | grep -v ^#) do for CHAINS in INPUT FORWARD do $IPT -A $CHAINS -p tcp -d $ET0 -m state --state NEW --tcp-flags $FLAGS $FLAGS -j LOG --log-prefix "FLAG_$FLAGS" $IPT -A $CHAINS -p tcp -d $ET0 -m state --state NEW --tcp-flags $FLAGS $FLAGS -j DROP done done } #----------------------------------------------------------------------- case $1 in start) modulos nega loop input output forward icmps pt_cliente_tcp pt_cliente_udp flags_invalidas pt_adm_tcp echo " ******* FIREWAL ATIVADO ******* " ;; stop) limpa echo " ******* FIREWALL DESATIVADO ******* " ;; filter) $IPT -nL | more ;; nat) $IPT -nL -t nat | more ;; mangle) $IPT -nL -t mangle | more ;; restart) $0 stop $0 start ;; *) echo "erro use $0 {start|stop|filter|nat|mangle|restart}" exit 0 ;; esac exit 1
Gravar DVDs no Linux pelo Cron
Procurando um padrão num arquivo
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - CRIANDO USUÁRIOS MYSQL
Backup com data no nome do arquivo
Script para fazer download de vídeos do YouTube
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