Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)
Publicado por Alessandro Dias 29/05/2007
[ Hits: 15.129 ]
Esse é um script bem completo, implementando um sistema de firewall com 3 interfaces (Rede Interna, DMZ).
É só baixar e usar. Não se esqueça de torná-lo executável.
Abraços.
Alessandro Dias.
#! /bin/sh ############################################## #============================================# #= =# #= Firewall Iptables =# #= =# #= Autor: Alessandro Dias =# #= Versão: 1.0 =# #= Data: 15/06/2004 =# #============================================# ############################################## # # Desenho da rede: # # ------------ # | Internet | # ------------ # | # | # | # ------ ------- # | FW |---------| DMZ | # ------ ------- # | # | # ---------------- # | Rede Interna | # ---------------- # # # # #========================================================================= #= Execução: = #= iptables start -> Inicia o Firewall = #= iptables stop -> Para o firewall, abrindo-o totalmente = #= iptables free -> Inicia o Firewall com acesso liberado = #= iptables backup -> Levanta o backup deste arquivo na = #= máquina 200.20.120.18, diretório /bkp = #= iptables restore -> Restaura a cópia feita com a opção backup = #========================================================================= ########################## # DEFINIÇÃO DE VARIÁVEIS # ########################## IPTABLES="/usr/sbin/iptables" MODPROBE="/sbin/modprobe" TROJANS="/etc/trojans" IF_LOC="lo" IF_INT="eth0" IF_EXT="eth1" IF_DMZ="eth2" IP_INT="10.2.203.254" IP_EXT="200.20.120.22" IP_DMZ="10.5.0.22" IP_NAT1="200.20.120.18" IP_NAT2="200.20.120.19" IP_NAT3="200.20.120.21" NET_LOC="127.0.0.0/8" NET_INT="10.2.200.0/22" NET_EXT="200.20.120.16/29" NET_DMZ="10.5.0.16/29" BRO_ESP="255.255.255.255" BRO_INT="10.2.203.255" BRO_DMZ="200.20.120.23" BRO_EXT="200.20.120.23" IP_ADMINRMT="10.5.0.18" IP_ADMIN="10.2.207.201" IP_SEC="10.5.0.18" IP_WWW="10.5.0.19" IP_DNS="10.5.0.21" IP_SMTP="10.5.0.21" IP_DNS_IME="200.20.120.33" ######################## # CARGA DE MÓDULOS # ######################## carrega_modulos() { $MODPROBE ip_tables $MODPROBE iptable_filter $MODPROBE iptable_nat $MODPROBE ip_nat_ftp $MODPROBE ip_conntrack $MODPROBE ip_conntrack_ftp } ######################## # CARGA DE REGRAS # ######################## cria_regras() { echo "Iniciando Firewall..." cria_regras_auxiliares # if [ -s "$TROJANS"]; then # cria_regras_trojans # fi cria_regras_PREROUTING cria_regras_INT2DMZ cria_regras_DMZ2INT cria_regras_DMZ2EXT cria_regras_EXT2DMZ cria_regras_INT2EXT cria_regras_EXT2INT cria_regras_INPUT cria_regras_FORWARD cria_regras_POSTROUTING } ############################# # FLUSH E POLÍTICAS DEFAULT # ############################# destroi_regras() { echo -e "\n\nFecha o Firewall totalmente para FORWARD e INPUT..." # define política defaults para chains defaults $IPTABLES -P INPUT DROP # política default para filter $IPTABLES -P FORWARD DROP # política default para filter $IPTABLES -P OUTPUT ACCEPT # política default para filter $IPTABLES -F -t filter # flush nas regras de filter $IPTABLES -F -t nat # flush nas regras de nat $IPTABLES -F -t mangle # flush nas regras de mangle $IPTABLES -X -t filter # deleta chains de filter $IPTABLES -X -t nat # deleta chains de nat $IPTABLES -X -t mangle # deleta chains de mangle $IPTABLES -Z -t filter # zera contadores de filter $IPTABLES -Z -t nat # zera contadores de nat $IPTABLES -Z -t mangle # zera contadores de mangle } abre_regras() { echo -e "\n\nAbre o Firewall..." # define política defaults para chains defaults $IPTABLES -P INPUT ACCEPT # política default para filter $IPTABLES -P FORWARD ACCEPT # política default para filter $IPTABLES -P OUTPUT ACCEPT # política default para filter $IPTABLES -F -t filter # flush nas regras de filter $IPTABLES -F -t nat # flush nas regras de nat $IPTABLES -F -t mangle # flush nas regras de mangle $IPTABLES -X -t filter # deleta chains de filter $IPTABLES -X -t nat # deleta chains de nat $IPTABLES -X -t mangle # deleta chains de mangle $IPTABLES -Z -t filter # zera contadores de filter $IPTABLES -Z -t nat # zera contadores de nat $IPTABLES -Z -t mangle # zera contadores de mangle cria_regras_PREROUTING cria_regras_POSTROUTING } ############################# # CHAIN DE PREROUTING - NAT # ############################# cria_regras_PREROUTING() { echo "Regras de performance de pacotes e NAT 1:1 ..." # Diminui o delay para acesso SSH. #$IPTABLES -A PREROUTING -t mangle -p tcp --dport ssh -j TOS --set-tos Minimize-Delay # Melhorar a performance do acesso ao servidor WEB #$IPTABLES -A PREROUTING -t mangle -p tcp -s $NET_DMZ --sport http -j TOS --set-tos Maximize-Throughput # Faz NAT 1:1 com IP público e privado $IPTABLES -A PREROUTING -t nat -d $IP_NAT1 -j DNAT --to $IP_SEC $IPTABLES -A PREROUTING -t nat -d $IP_NAT2 -j DNAT --to $IP_WWW $IPTABLES -A PREROUTING -t nat -d $IP_NAT3 -j DNAT --to $IP_SMTP $IPTABLES -A PREROUTING -t nat -d $IP_NAT3 -j DNAT --to $IP_DNS #$IPTABLES -A PREROUTING -t nat -j MASQUERADE -i $IF_EXT } ############################### # CHAINS DE POSTROUTING - NAT # ############################### cria_regras_POSTROUTING() { echo "Regras para NAT 1:1 ..." # Faz NAT 1:1 com IP público e privado $IPTABLES -A POSTROUTING -t nat -s $IP_SEC -j SNAT --to-source $IP_NAT1 $IPTABLES -A POSTROUTING -t nat -s $IP_WWW -j SNAT --to-source $IP_NAT2 $IPTABLES -A POSTROUTING -t nat -s $IP_SMTP -j SNAT --to-source $IP_NAT3 $IPTABLES -A POSTROUTING -t nat -s $IP_DNS -j SNAT --to-source $IP_NAT3 $IPTABLES -A POSTROUTING -t nat -j MASQUERADE -o $IF_EXT } ######################## # CHAINS DE INPUT # ######################## cria_regras_INPUT() { echo "Regras de INPUT ..." $IPTABLES -A INPUT -j END_INVALID -m state --state INVALID $IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED if [ -s "$TROJANS" ]; then $IPTABLES -A INPUT -j TROJAN_CHECK; fi $IPTABLES -A INPUT -j ACCEPT -i $IF_LOC $IPTABLES -A INPUT -j SPOOF_CHECK $IPTABLES -A INPUT -j REJECT -p tcp --dport auth # Pula para a chain específica #$IPTABLES -A INPUT -j INT2DMZ #$IPTABLES -A INPUT -j DMZ2INT #$IPTABLES -A INPUT -j INT2EXT #$IPTABLES -A INPUT -j EXT2INT #$IPTABLES -A INPUT -j DMZ2EXT #$IPTABLES -A INPUT -j EXT2DMZ # Aceita SSH(222) e Relatórios via Web $IPTABLES -A INPUT -j ACCEPT -p tcp -s $IP_ADMINRMT -i $IF_DMZ --dport 222 $IPTABLES -A INPUT -j ACCEPT -p tcp -s $IP_ADMIN -i $IF_INT --dport 222 $IPTABLES -A INPUT -j ACCEPT -p tcp -s $IP_ADMIN -i $IF_INT --dport http $IPTABLES -A INPUT -j REJECT --reject-with tcp-reset -p tcp --dport 222 $IPTABLES -A INPUT -j REJECT --reject-with tcp-reset -p tcp --dport http $IPTABLES -A INPUT -j REJECT --reject-with tcp-reset -p tcp --dport https #Aceita ICMP da rede interna e DMZ apenas #$IPTABLES -A INPUT -j ACCEPT -p icmp -s $NET_INT -i $IF_INT #$IPTABLES -A INPUT -j ACCEPT -p icmp -s $NET_DMZ -i $IF_DMZ $IPTABLES -A INPUT -j ACCEPT -p icmp # Rejeita pacotes vindos de fora com IP's internos - Evitar SPOOFING $IPTABLES -t filter -A INPUT -j REJECT -s 10.0.0.0/8 -d 10.0.0.0/8 -i $IF_EXT } ######################## # CHAINS DE FORWARD # ######################## cria_regras_FORWARD() { echo "Regras de FORWARD ..." $IPTABLES -A FORWARD -j END_INVALID -m state --state INVALID $IPTABLES -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED if [ -s "$TROJANS" ]; then $IPTABLES -A FORWARD -j TROJAN_CHECK; fi # Pula para chain específica $IPTABLES -A FORWARD -j ACCEPT -i $IF_DMZ -o $IF_DMZ $IPTABLES -A FORWARD -j ACCEPT -i $IF_INT -o $IF_INT $IPTABLES -A FORWARD -j ACCEPT -i $IF_EXT -o $IF_EXT $IPTABLES -A FORWARD -j INT2DMZ -s $NET_INT -d $NET_DMZ -i $IF_INT -o $IF_DMZ $IPTABLES -A FORWARD -j DMZ2INT -s $NET_DMZ -d $NET_INT -i $IF_DMZ -o $IF_INT $IPTABLES -A FORWARD -j INT2EXT -s $NET_INT -d $NET_EXT -i $IF_INT -o $IF_EXT $IPTABLES -A FORWARD -j EXT2INT -s $NET_EXT -d $NET_INT -i $IF_EXT -o $IF_INT $IPTABLES -A FORWARD -j DMZ2EXT -s $NET_DMZ -d $NET_EXT -i $IF_DMZ -o $IF_EXT $IPTABLES -A FORWARD -j EXT2DMZ -s $NET_EXT -d $NET_DMZ -i $IF_EXT -o $IF_DMZ } ######################################## # CHAINS DIRECIONAIS - INT -> DMZ # ######################################## cria_regras_INT2DMZ() { echo "Regras da rede interna para a DMZ ..." $IPTABLES -N INT2DMZ # Restringe o que a rede interna pode acessar na DMZ $IPTABLES -A INT2DMZ -j ACCEPT -p udp -d $IP_DNS --dport domain $IPTABLES -A INT2DMZ -j ACCEPT -p tcp -d $IP_DNS --dport domain $IPTABLES -A INT2DMZ -j ACCEPT -p tcp -d $IP_SMTP -m multiport --dport pop-3,smtp,5000,6666,194 $IPTABLES -A INT2DMZ -j ACCEPT -p tcp -d $IP_WWW -m multiport --dport http,https,137,139,5000,6666 # Máquina Security - redes.eti $IPTABLES -A INT2DMZ -j ACCEPT -p udp -d $IP_SEC --dport domain $IPTABLES -A INT2DMZ -j ACCEPT -p tcp -d $IP_SEC -m multiport --dport domain,pop-3,smtp,http,https # Libera a porta tcp 171(ssh) de $IP_ADMIN para a máquina $IP_SEC $IPTABLES -t filter -A FORWARD -j ACCEPT -s $IP_ADMIN -d $IP_SEC -m multiport -p tcp --destination-port 171,ftp,ftp-data -i $IF_INT $IPTABLES -A INT2DMZ -j ACCEPT -p icmp $IPTABLES -A INT2DMZ -j REJECT -p tcp --dport auth # Nega todo o resto $IPTABLES -A INT2DMZ -j END_INT2DMZ } ######################################## # CHAINS DIRECIONAIS - DMZ -> INT # ######################################## cria_regras_DMZ2INT() { echo "Regras da DMZ para a rede interna ..." $IPTABLES -N DMZ2INT # Rejeita AUTH $IPTABLES -A DMZ2INT -j REJECT -p tcp --dport auth # Permite ICMP para a rede interna $IPTABLES -A DMZ2INT -j ACCEPT -p icmp # Nega todo o resto $IPTABLES -A DMZ2INT -j END_DMZ2INT } ######################################## # CHAINS DIRECIONAIS - DMZ -> EXT # ######################################## cria_regras_DMZ2EXT() { echo "Regras da DMZ para a rede externa ..." $IPTABLES -N DMZ2EXT # Restringe o que a rede interna pode acessar na DMZ $IPTABLES -A DMZ2EXT -j ACCEPT -p udp -s $IP_DNS --dport domain $IPTABLES -A DMZ2EXT -j ACCEPT -p tcp -s $IP_DNS --dport domain $IPTABLES -A DMZ2EXT -j ACCEPT -p tcp -s $IP_SMTP -m multiport --dport smtp,pop-3,http,https $IPTABLES -A DMZ2EXT -j ACCEPT -p tcp -s $IP_WWW -m multiport --dport http,https,smtp,pop-3 # Máquina Security - redes.eti $IPTABLES -A DMZ2EXT -j ACCEPT -p udp -s $IP_SEC --dport domain $IPTABLES -A DMZ2EXT -j ACCEPT -p tcp -s $IP_SEC -m multiport --dport domain,pop-3,smtp,http,https,ftp,ftp-data $IPTABLES -A DMZ2EXT -j ACCEPT -p icmp $IPTABLES -A DMZ2EXT -j ACCEPT -p tcp --dport auth $IPTABLES -A DMZ2EXT -j DROP -d $BRO_ESP # Nega todo o resto $IPTABLES -A DMZ2EXT -j END_DMZ2EXT } ######################################## # CHAINS DIRECIONAIS - EXT -> DMZ # ######################################## cria_regras_EXT2DMZ() { echo "Regras da rede externa para a DMZ ..." # Restringe o que a rede externa pode acessar na DMZ $IPTABLES -N EXT2DMZ $IPTABLES -A EXT2DMZ -j ACCEPT -p tcp -d $IP_DNS --dport domain $IPTABLES -A EXT2DMZ -j ACCEPT -p udp -d $IP_DNS --dport domain $IPTABLES -A EXT2DMZ -j ACCEPT -p tcp -d $IP_SMTP -m multiport --dport pop-3,smtp $IPTABLES -A EXT2DMZ -j ACCEPT -p tcp -d $IP_WWW -m multiport --dport http,https # Máquina Security - redes.eti $IPTABLES -A EXT2DMZ -j ACCEPT -p udp -d $IP_SEC --dport domain $IPTABLES -A EXT2DMZ -j ACCEPT -p tcp -d $IP_SEC -m multiport --dport domain,pop-3,smtp,http,https,171,ftp,ftp-data # Rejeita AUTH $IPTABLES -A EXT2DMZ -j REJECT -p tcp --dport auth # Permite ICMP para a DMZ $IPTABLES -A EXT2DMZ -j ACCEPT -p icmp # Nega todo o resto $IPTABLES -A EXT2DMZ -j END_EXT2DMZ } ######################################## # CHAINS DIRECIONAIS - INT -> EXT # ######################################## # MÁQUINAS DA REDE INTERNA QUE ACESSAM A INTERNET permite_acesso() { $IPTABLES -A INT2EXT -j ACESSO -s 10.1.7.13 # Maj Elza $IPTABLES -A INT2EXT -j ACESSO -s 10.1.7.15 # Maj Elza $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.2 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.6 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.8 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.11 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.14 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.31 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.32 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.33 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.45 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.46 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.47 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.80 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.81 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.86 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.90 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.100 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.102 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.106 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.123 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.131 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.134 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.141 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.143 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.150 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.167 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.202 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.203 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.213 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.215 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.218 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.223 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.12.227 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.14.56 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.14.156 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.6 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.12 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.18 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.19 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.21 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.23 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.56.26 # CRO/1 $IPTABLES -A INT2EXT -j ACESSO -s 10.1.156.93 # SCT $IPTABLES -A INT2EXT -j ACESSO -s 10.2.207.200 # SNASERVER $IPTABLES -A INT2EXT -j ACESSO -s 10.2.207.201 # SNABACKUP $IPTABLES -A INT2EXT -j ACESSO -s 10.4.100.1 # PDC-SIP $IPTABLES -A INT2EXT -j ACESSO -s 10.3.4.10 # SIMATEX - Cap Motta } cria_regras_INT2EXT() { echo "Regras da rede interna para a rede externa ..." # Restringe o que a rede interna pode acessar na rede externa $IPTABLES -N ACESSO $IPTABLES -A ACESSO -j ACCEPT -p udp -m multiport --dport domain,194 $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport domain,194 $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport pop-3,smtp $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport http,https $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport ftp,ftp-data $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport 137,139 $IPTABLES -A ACESSO -j ACCEPT -p tcp -m multiport --dport 5000,6666 # Libera a porta tcp 5190(icq) para a máquina 10.2.207.201 $IPTABLES -t filter -A FORWARD -j ACCEPT -s $IP_ADMIN -m multiport -p tcp --destination-port 5190 -i $IF_INT #Cria Chain INT2EXT $IPTABLES -N INT2EXT # Acoplar os IPs que terão acesso à Internet permite_acesso # Rejeita AUTH $IPTABLES -A INT2EXT -j REJECT -p tcp --dport auth # Permite ICMP para a Rede Externa $IPTABLES -A INT2EXT -j ACCEPT -p icmp # Nega todo o resto $IPTABLES -A INT2EXT -j END_INT2EXT } ######################################## # CHAINS DIRECIONAIS - EXT -> INT # ######################################## cria_regras_EXT2INT() { echo "Regras da rede externa para a rede interna ..." $IPTABLES -N EXT2INT # Rejeita AUTH $IPTABLES -A EXT2INT -j REJECT -p tcp --dport auth # Permite ICMP para a rede interna $IPTABLES -A EXT2INT -j ACCEPT -p icmp # Nega todo o resto $IPTABLES -A EXT2INT -j END_EXT2INT } ##################### # CHAINS AUXILIARES # ##################### cria_regras_auxiliares() { echo "Regras para LOGs ..." # END_SPOOF $IPTABLES -N END_SPOOF $IPTABLES -A END_SPOOF -j LOG --log-prefix "Firewall: SPOOF!!! " $IPTABLES -A END_SPOOF -j DROP # END_INVALID $IPTABLES -N END_INVALID $IPTABLES -A END_INVALID -j LOG --log-prefix "Firewall: Invalid!!! " $IPTABLES -A END_INVALID -j DROP # END_TROJAN $IPTABLES -N END_TROJAN $IPTABLES -A END_TROJAN -j LOG --log-prefix "Firewall: Trojan!!! " $IPTABLES -A END_TROJAN -j DROP # END_INT2DMZ $IPTABLES -N END_INT2DMZ $IPTABLES -A END_INT2DMZ -j LOG --log-prefix "Firewall: INT -> DMZ !!! " $IPTABLES -A END_INT2DMZ -j DROP # END_DMZ2INT $IPTABLES -N END_DMZ2INT $IPTABLES -A END_DMZ2INT -j LOG --log-prefix "Firewall: DMZ -> INT !!! " $IPTABLES -A END_DMZ2INT -j DROP # END_INT2EXT $IPTABLES -N END_INT2EXT $IPTABLES -A END_INT2EXT -j LOG --log-prefix "Firewall: INT -> EXT !!! " $IPTABLES -A END_INT2EXT -j DROP # END_EXT2INT $IPTABLES -N END_EXT2INT $IPTABLES -A END_EXT2INT -j LOG --log-prefix "Firewall: EXT -> INT !!! " $IPTABLES -A END_EXT2INT -j DROP # END_DMZ2EXT $IPTABLES -N END_DMZ2EXT $IPTABLES -A END_DMZ2EXT -j LOG --log-prefix "Firewall: DMZ -> EXT !!! " $IPTABLES -A END_DMZ2EXT -j DROP # END_EXT2DMZ $IPTABLES -N END_EXT2DMZ $IPTABLES -A END_EXT2DMZ -j LOG --log-prefix "Firewall: EXT -> DMZ !!! " $IPTABLES -A END_EXT2DMZ -j DROP # SPOOFCHECK # As redes internas são consideradas confiáveis, só é checado o path # de roteamento. Para se proteger do SPOOF interno também seria # necessário monitorar os MAC:IP na rede interna. $IPTABLES -N SPOOF_CHECK $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s 127.0.0.0/8 -i $IF_EXT $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s 10.0.0.0/8 -i $IF_EXT $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s 172.16.0.0/12 -i $IF_EXT $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s 192.168.0.0/16 -i $IF_EXT $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s $NET_INT -i ! $IF_EXT $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s $NET_DMZ -i ! $IF_EXT } ################## # CHAINS TROJANS # ################## cria_regras_trojans() { echo "Regras para TROJANs ..." ### TROJANS # Alguns trojans, os mais comuns. # não é necessário checar por trojans se vc adota a política # de tudo fechado, abrem-se as excessões. Mas, vc pode querer # verificar mesmo assim para poder registrar um log mais específico. $IPTABLES -N TROJAN_CHECK for bloco in "`cat trojans | cut -d "/" -f1,2 | cut -d "#" -f1 | tr '/t' ':' | cut -d ":" -f2`" do for trojan in $bloco do porta="`echo $trojan | cut -d "/" -f1`" proto="`echo $trojan | cut -d "/" -f2`" $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p $proto --dport $porta done done } #################### # SCRIPT PRINCIPAL # #################### # checa se o pacote iptables foi instalado if [ ! -x "$IPTABLES" ]; then echo "O executável $IPTABLES não existe!" exit 1 fi # checa se o kernel é 2.3 ou 2.4 KERNELMAJ=`uname -r | sed -e 's,\..*,,'` KERNELMIN=`uname -r | sed -e 's,[^\.]*\.,,' -e 's,\..*,,'` if [ ! "$KERNELMAJ" -eq 2 -o ! "$KERNELMIN" -eq 4 ]; then echo "Você não está usando um kernel versão 2.4!" exit 1 fi # Não insere regras se o módulo IPCHAINS estiver carregado if /sbin/lsmod 2>/dev/null | grep -q ipchains; then echo "Descarregue o módulo IPCHAINS para o netfilter!" exit 1 fi if ! carrega_modulos; then echo "Não consegui carregar os módulos do IPTABLES!" exit 1 fi # Inicio do CASE case "$1" in backup) echo "Montando Dispositivo /bkp..." mount -t nfs $IP_SEC:/tmp/firewall/bkp /bkp echo "Copiando arquivo iptables..." cp ./iptables* /bkp echo "Desmontando Dispositivo..." umount /bkp echo "Ok" ;; restore) echo "Montando Dispositivo /bkp..." mount -t nfs $IP_SEC:/tmp/firewall/bkp /bkp echo "Restaurando Script anterior..." cp /bkp/iptables ./iptables echo "Desmontando Dispositivo..." umount /bkp echo "Ok" ;; free) echo "Libera todos os pacotes..." echo 1 > /proc/sys/net/ipv4/ip_forward carrega_modulos $IPTABLES -t filter -A FORWARD -j ACCEPT $IPTABLES -t filter -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED $IPTABLES -t nat -A POSTROUTING -j MASQUERADE -o eth1 echo "Ok" ;; start) echo -n "Configurando regras do firewall:" destroi_regras && cria_regras touch /var/lock/subsys/iptables echo 1 > /proc/sys/net/ipv4/ip_forward echo "Ok" ;; stop) echo "Removendo regras e abrindo firewall:" abre_regras rm -f /var/lock/subsys/iptables echo "Ok" ;; status) echo -e "\nApresentação do status do IPTABLES:\n" $IPTABLES --list -n $IPTABLES --list -n > STATUS echo -e "\nStatus Gravado no arquivo STATUS." echo "Utilize o comando: vi STATUS" echo "Ok" ;; restart) echo "Isso não é um daemon, não precisa de stop! Então:" $0 start echo "Ok" ;; *) echo "Use o Comando:" echo;echo " iptables (status|start|stop|free|backup|restore)" esac exit 0 #### FIM DO SCRIPT PRINCIPAL ####
Automatizando a instalação do BLAS/LAPACK no Linux
Script que envia email para um Relay sem autenticação.
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta