Correção de Segurança e VPN iptables

1. Correção de Segurança e VPN iptables

Dhiego Caetano Pagoto
pagoto

(usa Ubuntu)

Enviado em 03/01/2012 - 17:21h

Alguns dos comandos peguei com a galera aqui do under-linux, hoje meu script está desse jeito abaixo.
Gostaria que vocês analisa-se por favor, e me ajuda-se a deixa-lo mais seguro.

O problema é, NÃO CONSIGO conectar a VPN pptpd ( sei que é insegura ) sempre dá erro 807 no windows.
Viajo muito e preciso conectar de qualquer computador em qualquer lugar do Brasil, ( não tem como ficar instalando OPENVPN )

INFORMAÇÕES: VPN, FIREWALL E APACHE NO MESMO SERVIDOR.
Interface Rede Interna: eth1
Interface Rede externa (internet): eth0






#!/bin/bash
echo "Carregando o firewall..."

# Definindo as variaveis
#
IPTABLES="/sbin/iptables"
REDEINT="10.10.100.0/24"
IPDNSPROVEDOR="200.189.88.12"
IPDNSPROVEDOR2="200.189.88.39"
IPDNSPROVEDOR3="10.10.100.200"
IPDNSPROVEDOR4="10.10.100.201"
ENT="eth0"

# Limpar e Inicializar modulos
#
$IPTABLES -F
$IPTABLEs -t nat -F
$IPTABLEs -t mangle -F
modprobe iptable_nat
modprobe ipt_LOG

#----------------
# POLÍTICA DROP |
#----------------

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

# Bloqueio de pings e ip spoofing
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
$IPTABLES -A INPUT -m state --state INVALID -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 os ataques do tipo "Syn-flood, DoS, etc"
$IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT

# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os relatados ...
$IPTABLES -A INPUT -i ! $ENT -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Logar os pacotes mortos por inatividade ...
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG

# Protege contra port scanners avançados (Ex.: nmap)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Protege contra pacotes informações da rede interna
$IPTABLES -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP

# Protege contra todos os pacotes danificados e ou suspeitos ...
$IPTABLES -A FORWARD -m unclean -j DROP

# Bloqueando tracertroute
$IPTABLES -A INPUT -p udp -s 0/0 -i $ENT --dport 33435:33525 -j DROP

# Protecoes contra ataques
$IPTABLES -A INPUT -m state --state INVALID -j DROP

# Performance - Setando acesso a web com delay minimo
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 53 -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 80 -j TOS --set-tos Minimize-Delay

# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR2 -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR3 -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR4 -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -j REJECT

# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
$IPTABLES -A INPUT -i $ENT -p tcp --syn -j DROP

# Fechar todas as portas abaixo de 32000
$IPTABLES -A INPUT -i $ENT -p tcp --dport :32000 -j DROP

# Responde pacotes icmp especificados e rejeita o restante
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type host-unreachable -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp -j REJECT --reject-with icmp-host-unreachable

# libera acesso interno da rede
$IPTABLES -A INPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A FORWARD -p tcp --syn -s $REDEINT -j ACCEPT

# libera o loopback
$IPTABLES -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT

# libera conexoes de fora pra dentro (SSH usando 9991/ APACHE usando 9999)
$IPTABLES -A INPUT -p tcp --destination-port 9991 -j ACCEPT
$IPTABLES -A INPUT -p tcp --destination-port 9999 -j ACCEPT

#libera conexoes de dentro pra fora:
$IPTABLES -A OUTPUT -p tcp --destination-port 9999 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 9991 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 443 -j ACCEPT

# Loga tentativa de acesso a determinadas portas
$IPTABLES -A INPUT -p tcp --dport 21 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
$IPTABLES -A INPUT -p tcp --dport 23 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
$IPTABLES -A INPUT -p tcp --dport 25 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
$IPTABLES -A INPUT -p tcp --dport 80 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
$IPTABLES -A INPUT -p tcp --dport 110 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
$IPTABLES -A INPUT -p udp --dport 111 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
$IPTABLES -A INPUT -p tcp --dport 113 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
$IPTABLES -A INPUT -p tcp --dport 137:139 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
$IPTABLES -A INPUT -p udp --dport 137:139 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
$IPTABLES -A INPUT -p tcp --dport 161:162 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
$IPTABLES -A INPUT -p tcp --dport 6667:6668 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
$IPTABLES -A INPUT -p tcp --dport 3128 -i $ENT -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "

# Proteção contra trinoo
$IPTABLES -N TRINOO
$IPTABLES -A TRINOO -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trinoo: "
$IPTABLES -A TRINOO -j DROP
$IPTABLES -A INPUT -p TCP -i $ENT --dport 27444 -j TRINOO
$IPTABLES -A INPUT -p TCP -i $ENT --dport 27665 -j TRINOO
$IPTABLES -A INPUT -p TCP -i $ENT --dport 31335 -j TRINOO
$IPTABLES -A INPUT -p TCP -i $ENT --dport 34555 -j TRINOO
$IPTABLES -A INPUT -p TCP -i $ENT --dport 35555 -j TRINOO

# Proteção contra tronjans
$IPTABLES -N TROJAN
$IPTABLES -A TROJAN -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "FIREWALL: trojan: "
$IPTABLES -A TROJAN -j DROP
$IPTABLES -A INPUT -p TCP -i $ENT --dport 666 -j TROJAN
$IPTABLES -A INPUT -p TCP -i $ENT --dport 4000 -j TROJAN
$IPTABLES -A INPUT -p TCP -i $ENT --dport 6000 -j TROJAN
$IPTABLES -A INPUT -p TCP -i $ENT --dport 6006 -j TROJAN
$IPTABLES -A INPUT -p TCP -i $ENT --dport 16660 -j TROJAN

# Roteamento para o Proxy Squid
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# compartilha a web na rede interna
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# bloqueia ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Libera Acesso VPN

$IPTABLES -A INPUT -p tcp -m tcp --dport 1723 state --state NEW -j ACCEPT
$IPTABLES --append INPUT --protocol 47 --jump ACCEPT
$IPTABLES --append INPUT --protocol tcp --match tcp --destination-port 1723 --jump ACCEPT
$IPTABLES -A FORWARD -i eth0 -j ACCEPT
$IPTABLES -A FORWARD -o eth0 -j ACCEPT

echo "Script carregado..."

#------------------------------------FIM DO SCRIPT---------------------------------------#
#


  


2. Re: Correção de Segurança e VPN iptables

leonardo Souza
lejoso

(usa Debian)

Enviado em 04/01/2012 - 09:57h

Bom dia!

Suas regras para liberação da VPN estão ok.

$IPTABLES -A INPUT -p tcp -m tcp --dport 1723 state --state NEW -j ACCEPT
$IPTABLES --append INPUT --protocol 47 --jump ACCEPT

Uma regra libera a porta 1723/TCP e outra o protocolo gre.
O que você tem que fazer é verificar nos logs se informa algum erro:

tail -f /var/log/messages

Também sugiro monitorar via tcpdump e verificar se os pacotes estão chegando no servidor.

tcpdump -i any host ip_origem -nn

Nele tem que chegar pacotes na porta 1723 e também o protocolo gre.
Outro problema que pode ocorrer é o provedor fazer algum tipo de bloqueio.
Já peguei casos em que o virtua ( ip dinamico ) bloqueia o upload do protocolo gre. Ou seja, os pacotes chegam ao servidor, ele devolve, porém o link bloqueia a volta e não retorna a estação de origem.

No windows, também pode tentar instalar o wireshark e monitorar também.

Att,

Leonardo Souza


3. Re: Correção de Segurança e VPN iptables

Pedro Henrique de Almeida
Neo_X

(usa CentOS)

Enviado em 29/01/2013 - 13:02h

Olá Pagoto,

Conseguiu resolver? Estou pesquisando o mesmo problema e até agora nada.

Se puder postar a solução agradeço.


4. Re: Correção de Segurança e VPN iptables

Dhiego Caetano Pagoto
pagoto

(usa Ubuntu)

Enviado em 29/01/2013 - 15:57h

Consegui sim, mudei a porta de conexão.

Agora não lembro bem o arquivo que Editei.

Mas assim que mudei a porta, funcionou uma beleza.

Está funcionando até hoje.

VOu ter que procurar o arquivo pra ver se acho.


5. Re: Correção de Segurança e VPN iptables

Pedro Henrique de Almeida
Neo_X

(usa CentOS)

Enviado em 29/01/2013 - 16:02h

Blz, enquanto isso continuo pesquisando srrs






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts