You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.3 KiB
76 lines
2.3 KiB
#!/bin/bash |
|
#Script de parametrizacao de seguranca com iptables para o Simples PABX IP |
|
#Autor: Alan Pablo |
|
#Referencia: Livro Asterisk na pratica - Alexandre Keller |
|
#Cuiaba - MT - 23/02/2015 |
|
|
|
#Funcoes |
|
#Funcao para calcular o numero de bits de uma mascara, recebe a mascara de rede como parametro. |
|
#Referencia: http://www.linuxquestions.org/questions/programming-9/bash-cidr-calculator-646701/ |
|
mask2cidr() { |
|
nbits=0 |
|
IFS=. |
|
for dec in $1 ; do |
|
case $dec in |
|
255) let nbits+=8;; |
|
254) let nbits+=7;; |
|
252) let nbits+=6;; |
|
248) let nbits+=5;; |
|
240) let nbits+=4;; |
|
224) let nbits+=3;; |
|
192) let nbits+=2;; |
|
128) let nbits+=1;; |
|
0);; |
|
*) echo "Error: $dec : Mascara Invalida"; exit 1 |
|
esac |
|
done |
|
echo "$nbits" |
|
} |
|
|
|
#Funcao para identificar o bloco de ip da rede, recebe a interface de rede como parametro. |
|
rede() { |
|
if [ -z $1 ] ; then |
|
echo "Inteface Invalida: $1" |
|
exit |
|
fi |
|
|
|
ip=$(ifconfig $1 | grep "inet addr" | sed -e 's/inet addr/ IP/g' | sed -e 's/Bcast.* //g' | sed -e 's/P-t-P.* //g' | sed -e 's/Mask/ Mascara/g' | awk {'print $1'} | cut -d ":" -f2) |
|
mask=$(ifconfig $1 | grep "inet addr" | sed -e 's/inet addr/ IP/g' | sed -e 's/Bcast.* //g' | sed -e 's/P-t-P.* //g' | sed -e 's/Mask/ Mascara/g' | awk {'print $2'} | cut -d ":" -f2) |
|
mask2bits=$(mask2cidr $mask) |
|
end_rede=$(ipcalc -n $ip/$mask2bits | cut -d '=' -f2) |
|
|
|
echo "$end_rede/$mask2bits" |
|
|
|
} |
|
|
|
#Flush (esvaziar). Remove todas as regras existentes. |
|
iptables -F |
|
#Apagar uma chain vazia |
|
iptables -X |
|
#Fecha todas as entradas |
|
iptables -P INPUT DROP |
|
|
|
#Abre todas as entradas |
|
#iptables -P INPUT ACCEPT |
|
|
|
#Garantindo o acesso as redes existentes |
|
#Lista as interfaces disponiveis (desconsidera o loopback) |
|
interfaces=$(ifconfig | grep "Link encap"| awk {'print $1'} | grep -v "lo") |
|
for i in $interfaces |
|
do |
|
lan=$(rede $i) |
|
iptables -A INPUT --src $lan -j ACCEPT |
|
done |
|
|
|
#Liberacao com base na origem |
|
ips=$(cat /hdaux/utilitarios/ips-liberados.txt | grep -v ";" | grep -v "#") |
|
for i in $ips |
|
do |
|
iptables -A INPUT --src $i -j ACCEPT |
|
done |
|
|
|
#LOCALHOST |
|
iptables -A INPUT -i lo -j ACCEPT |
|
|
|
#Regra com base no status de conexao: now (NEW) estabelecida (ESTABLISHED) reincidente (RELATED) e invalida (INVALID) |
|
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
|
|