Configurar Ig no E-mail usando iptables
Citação:
Postado originalmente por fdotta
coloca elas por ultimo... falando nisso era bom vc dar um organizanda no teu script.... ahhh e inclui estas linhas no comeco
Código :
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i INTERFACE_INTERNA -j ACCEPT
E nao se esqueca de trocar os "INTERFACE_INTERNA" e "INTERFACE_EXTERNA" pelas suas respectivas interfaces (eth0, eth1, etc...)
[] Dotta :twisted:
O que faz essas ?
Configurar Ig no E-mail usando iptables
Elas sao para (na ordem):
- Regra geral de INPUT - DROP
- Regra geral de OUTPUT - ACCEPT
- Rgera geral de FORWARD - DROP
- Regra para quando uma coneccao feita (estabelecida) de dentra da sua rede para fora (ex. navegacao www) ela seja aceita no INPUT
- Regra para quando uma coneccao nova de dentra da sua rede para fora ela seja aceita no INPUT.
E ai funcionou.... se nao funcionar eu posso te mandar um scrip de firewall mais simple para vc, mas um que funciona com tudo....
[] Dotta :twisted:
Configurar Ig no E-mail usando iptables
Ainda não coloquei essas ultimas regras, mas já esta fiuncionando..., vou te mandar o scan do meu IP, acho que tem muita coisa aberta, vou colocar essas novas regras e escanear novamente, depois te passo por e-mail pra vc me dizer c tá ruim ou não blz ?
Atenciosamente
angkor
Configurar Ig no E-mail usando iptables
uma coisa que era bom vc fazer é organozar se script do firewall, isso vai te ajudar a controlar e melhorar seu firewall. Mas manda o scan da sua rede sim... e como ja lhe falei antes eu posso te mandar um script de firewall com tudp bloqueado, ai vc so adiciona o que vc quer desblorear....
[] Dotta :twisted:
Configurar Ig no E-mail usando iptables
Manda pra mim então seu script !!!
Qual seria a sequencia ideal para esse script que coloquei ai ?
angkor
Configurar Ig no E-mail usando iptables
Uma sequencia ideal... é uma sequencia organzada... por ex... primeiro os policiys (regras gerais), protecoes extras, depois portas liberadas,..., roteamento de rede....
Quanto ao script va vou mandar.... deixa eu dar uma editada para vc. O meu tem muita coisa.... redirecionamentos, etc...
[] Dotta :twisted:
Configurar Ig no E-mail usando iptables
Angkor,
Como lhe promenti o script para firewall, vc vai ter que dar umas editadas nele... mas da uma olhada e qualquer coisa vc me pergunta. Ahh outra coisa ta tudo fechado, so libera o que vc precisar tá... nao é necessario liberar as portas 25 e 100 para e-mail, vc so liberar as portas que necessitam conexao de origem externa... no caso do e-mail as origens so internas.
firewall.rc
#! /bin/sh
# **********************************************
# * -=- Configuracao do FIREWALL -=- *
# * *
# * Criado por: Fernando Dotta *
# * Ultima Mod.: 05/05/2004 *
# * *
# * Adaptadores de Rede *
# * ------------------- *
# * *
# * ppp0: coneccao speedy *
# * eth0: rede externa (internet) ligado na ppp0 *
# * eth1: servidor apache (www) - nao implementado *
# * *
# ************************************************************
IPTABLES="/bin/iptables"
INTERNAL_INTERFACE="eth1"
EXTERNAL_INTERFACE_1="ppp0"
LAN="10.0.0.0/24"
# -=- [ Pega numero do IP do Speedy ] -=-
#
# preip=`ip -4 addr list ppp0 | awk '{print $2}'`
# IP=`echo $preip | awk '{print $2}'`
# -=- [ Abilita IP FORWARD ] -=-
echo "1" > /proc/sys/net/ipv4/ip_forward
# -=- [ Apaga todas as resgras do Firewall ] -=-
$IPTABLES -F
$IPTABLES -Z
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
# -=- [ Protecao de entrada (INPUT) ] -=-
$IPTABLES -I INPUT -i lo -j ACCEPT
$IPTABLES -I OUTPUT -o lo -j ACCEPT
$IPTABLES -I INPUT -i ! lo -s 127.0.0.0/255.0.0.0 -j DROP
$IPTABLES -A INPUT -p tcp ! --syn -i $INTERNAL_INTERFACE -j ACCEPT
$IPTABLES -A INPUT -s 172.16.0.0/12 -i $INTERNAL_INTERFACE -j DROP
$IPTABLES -A INPUT -s 224.0.0.0/4 -i $INTERNAL_INTERFACE -j DROP
$IPTABLES -A INPUT -s 240.0.0.0/5 -i $INTERNAL_INTERFACE -j DROP
# -=- [ Regras Gerais do Firewall ] -=-
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state NEW -i $INTERNAL_INTERFACE -j ACCEPT
# -=- [ Servicos Externos Permitidos na interface externa ] -=-
# $IPTABLES -A INPUT -i $EXTERNAL_INTERFACE_1 -s 0/0 -p tcp --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -i $EXTERNAL_INTERFACE_1 -s 0/0 -p tcp --dport 22 -j ACCEPT
# $IPTABLES -A INPUT -i $EXTERNAL_INTERFACE_1 -s 0/0 -p tcp --dport 23 -j ACCEPT
# $IPTABLES -A INPUT -i $EXTERNAL_INTERFACE_1 -s 0/0 -p tcp --dport 80 -j ACCEPT
# $IPTABLES -A INPUT -i $EXTERNAL_INTERFACE_1 -s 0/0 -p tcp --dport 443 -j ACCEPT
# -=- [ Protecoes Extras ] -=-
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 135 -i $INTERNAL_INTERFACE -j REJECT
$IPTABLES -N syn-flood
$IPTABLES -A INPUT -i $INTERNAL_INTERFACE -p tcp --syn -j syn-flood
$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A syn-flood -j DROP
#
# OBS: [ Protecoes Extras ] 1) protecao contra pacotes indesejaveis
# 2) protecao contra syn-flood
# 3) protecao contra ping da morte
# 4) protecao contra worms
# 5-8) protecao contra IP spoofing
# -=- [ Portas Bloqueadas (MSN) ] -=-
# $IPTABLES -A FORWARD -s LAN -p tcp --dport 1863 -j REJECT
# $IPTABLES -A FORWARD -s LAN -d loginnet.passport.com -j REJECT
#
# -=- [ Portas Bloqueadas (MSN) ] -=-
# $IPTABLES -A FORWARD -s LAN -d webmessenger.msn.com -j REJECT
#
# -=- [ Liberacao do VPN ] -=-
# $IPTABLES -A INPUT -p udp -i $EXTERNAL_INTERFACE_1 --sport 500 --dport 500 -j ACCEPT
# $IPTABLES -A OUTPUT -p udp -o $EXTERNAL_INTERFACE_1 --sport 500 --dport 500 -j ACCEPT
# $IPTABLES -A INPUT -p udp --sport 500 --dport 500 -j ACCEPT
# $IPTABLES -A OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT
# $IPTABLES -A INPUT -p 50 -i $EXTERNAL_INTERFACE_1 -j ACCEPT
# $IPTABLES -A OUTPUT -p 50 -o $EXTERNAL_INTERFACE_1 -j ACCEPT
# $IPTABLES -A INPUT -p 50 -j ACCEPT
# $IPTABLES -A OUTPUT -p 50 -j ACCEPT
# $IPTABLES -A FORWARD -d $LOCALNET -j ACCEPT
# $IPTABLES -A FORWARD -s $LOCALNET -i $INTERNAL_INTERFACE -j ACCEPT
# -=- [ Roteamento da REDE ] -=-
$IPTABLES -A INPUT -j DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -A FORWARD -i $EXTERNAL_INTERFACE_1 -o $INTERNAL_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE_1 -j ACCEPT
# $IPTABLES -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE_1 -j SNAT --to $IP
$IPTABLES -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE_1 -j MASQUERADE
# -=- [ Logs ] -=-
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW syn: "
$IPTABLES -A INPUT -p tcp --dport 21 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
$IPTABLES -A INPUT -p tcp --dport 23 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: telnet: "
$IPTABLES -A INPUT -p tcp --dport 25 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: smtp: "
$IPTABLES -A INPUT -p tcp --dport 80 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
$IPTABLES -A INPUT -p tcp --dport 110 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: pop3: "
$IPTABLES -A INPUT -p udp --dport 111 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: rpc: "
$IPTABLES -A INPUT -p tcp --dport 113 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: identd: "
# $IPTABLES -A INPUT -p tcp --dport 137:139 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
# $IPTABLES -A INPUT -p udp --dport 137:139 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: samba: "
# $IPTABLES -A INPUT -p tcp --dport 161:162 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: snmp: "
# $IPTABLES -A INPUT -p tcp --dport 6667:6668 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: irc: "
# $IPTABLES -A INPUT -p tcp --dport 3128 -i $EXTERNAL_INTERFACE_1 -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "
# -=- [ Diminuindo DELAY de sevicos especiais ] -=-
# $IPTABLES -t mangle -A INPUT -p tcp --dport 22 -j TOS --set-to Minimize-Delay
# $IPTABLES -t mangle -A INPUT -p tcp --dport 80 -j TOS --set-to Minimize-Delay
# $IPTABLES -t mangle -A INPUT -p tcp --dport 443 -j TOS --set-to Minimize-Delay
[] Dotta
Configurar Ig no E-mail usando iptables
Mais uma vez muito Obrigado Fernando, segunda-feira vou colocar em pratica esse script e pra variar, quelquer duvida te pergunto, Ok ?
Atenciosamente
angkor
Configurar Ig no E-mail usando iptables
Como vc deve ter percebido eu não manjo miuto ded firewall, ou melhor, não manjo nada.
Essas adaptações que fiz estão corretas ?
Será desse jeito que eu vou roda-lo...
/*********************************************************/
#!/bin/bash
IPT='/usr/sbin/iptables'
MODPROBE='/sbin/modprobe'
LOCAL=MEU IP DE INTERNET OU IP DO PROXY ???
DNSONE=200.183.43.1
DNSTWO=200.183.43.4
## CARREGANDO MODULOS
$MODPROBE ip_tables
$MODPROBE iptable_filter
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ipt_LOG
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
## DANDO FLUSHING NO FIREWALL, ZERANDO TUDO E DROPANDO TUDO, EXCETO OUTPUT
$IPT -F
$IPT -Z
$IPT -X
$IPT -t nat -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
## HABILITANDO ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
## LIBERANDO INPUT PARA INTERFACE LOOPBACK
$IPT -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
$IPT -A INPUT -p ALL -s $LOCAL -i lo -j ACCEPT
## LIBERANDO AS RESPOSTAS DOS DNS PARA O FIREWALL
$IPT -A INPUT -p udp -s $DNSONE --sport 53 -d $LOCAL -j ACCEPT
$IPT -A INPUT -p udp -s $DNSTWO --sport 53 -d $LOCAL -j ACCEPT
$IPT -A INPUT -p udp -s $LOCAL --sport 53 -d $LOCAL -j ACCEPT
## NADA DE PACOTE FRAGMENTADO NO FIREWALL
$IPT -A INPUT -i eth0 -f -j LOG --log-prefix "Pacote INPUT fragmentado: "
$IPT -A INPUT -i eth0 -f -j DROP
## REGRAS DE PING
$IPT -A INPUT -p icmp --icmp-type 8 -i eth0 -j DROP
$IPT -A INPUT -p icmp --icmp-type 0 -j DROP
$IPT -A INPUT -p icmp -s $FIREWALL -d $LOCAL -j ACCEPT
# Protege contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
## Desabilita suporte a souce routed packets, este recurso funciona como
## um NAT ao contradio, que em certas circunstacias pode permitir que
## alguem de fora envie pacotes para micros dentro da rede local.
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/ppp0/accept_source_route
## Protecao contra ICMP Broadcasting
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Protecoes diversas contra potscaners, ping of death, ataques Dos, etc...
$IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
$IPT -A FORWARD -m unclean -j DROP
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -N VALID_CHECK
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP
## LIBERANDO ALGUMAS PORTAS
$IPT -A INPUT -p TCP -s 0/0 --dport 80 -j ACCEPT
$IPT -A INPUT -p TCP -s 0/0 --dport 443 -j ACCEPT
$IPT -A INPUT -p TCP -s 0/0 --dport 25 -j ACCEPT
$IPT -A INPUT -p TCP -s 0/0 --dport 110 -j ACCEPT
$IPT -A INPUT -p udp -s 0/0 --dport 53 -j ACCEPT
$IPT -A INPUT -p TCP -s 0/0 --dport 143 -j ACCEPT
$IPT -A INPUT -p TCP --destination-port 22 -j ACCEPT
## DESCARTANDO PACOTES INVALIDOS
$IPT -A FORWARD -m state --state INVALID -j DROP
## Abre para uma faixa de enderecos da rede local
$IPT -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
## Libera squid para rede interna
$IPT -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp --dport 3128 -j ACCEPT
# Proxy transparente
$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
## ACEITA CONEXOES ESTABILIZADAS
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
## PARA OUTLOOK FUNCIONAR, LIBERA A RESPOSTA E O ACESSO AOS RESOLVEDORES DE NOME
$IPT -A FORWARD -p udp -s 0/0 -d $DNSONE --dport 53 -j ACCEPT
$IPT -A FORWARD -p udp -s 0/0 -d $DNSTWO --dport 53 -j ACCEPT
$IPT -A FORWARD -p udp -s 0/0 -d $LOCAL --dport 53 -j ACCEPT
$IPT -A FORWARD -p udp -s $DNSONE --sport 53 -d 0/0 -j ACCEPT
$IPT -A FORWARD -p udp -s $DNSTWO --sport 53 -d 0/0 -j ACCEPT
$IPT -A FORWARD -p udp -s $LOCAL --sport 53 -d 0/0 -j ACCEPT
## DROPANDO TUDO E GRAVANDO
$IPT -A FORWARD -j LOG --log-prefix "Pacote FORWARD descartado: "
$IPT -A FORWARD -j DROP
/******************************************************/
Configurar Ig no E-mail usando iptables
angkor,
Acredito que esteja tudo certo, mas me diz uma coisa, vc tem um servidor de e-mail ai? caso contrario vc nao precisa liberas as portas 110 e 25. Quanta a sua variavel LOCAL, vc deve colocar o ip da internet.
[] Dotta :twisted:
Configurar Ig no E-mail usando iptables
Não, não tenho servidor de e-mail aqui não... vou tirar essas regras então.
Valeu
angkor
Configurar Ig no E-mail usando iptables
e se vc nao tiver servidor de http, https e ssh vc pode tirar estas portas tb (80, 443 e 22) nao ha necessidade, pois as regras do firewall liberam o input para qualquer conexao feito de uma das maquinas que estao atraz do firewall... entendeu???
[] Dotta :twisted:
Configurar Ig no E-mail usando iptables
Entendi cara valeu, mas tenho um apache rodando em uma maquina interna na qual compartilho arquivos com amigos e o SSH é para eu acessar ded casa, pra ver c ta tudo ok.
Beleza, obrigado.
Atenciosamente
angkor
Configurar Ig no E-mail usando iptables
entao libera as portas 80 e 22 e caso va use https a porta 443
[] Dotta :twisted: