ido
(usa Ubuntu)
Enviado em 14/01/2011 - 13:49h
Oi!Uso o script abaixo em minha empresa e funciona normalmente em um servidor centos que foi montado por uma empresa terceirizada.
Quando preciso liberar uma porta vou no campo portas liberadas e adiciono a porta e restarto o firewall e tudo ok.
O que acontece é que montei um firewall com centos e coloquei o mesmo script para rodar ele roda, mas não reconhece as portas que estão na lista de portas liberadas, também os ips que estão nos campos ips liberados.
se bloquear as portas por linha de comando funciona normalmente, então o que esta faltando para o script funcionar da forma que uso no outro servidor?
Script que roda no outro servidor
#!/bin/bash
# Script gerado
# Limpando as regras
iptables -F
iptables -t nat -F
iptables -X
###
## Portas TCP/UDP liberadas, especificar separando com espacos.
###
PORTAS_LIBERADAS="21 8081 25 110"
#8081=servicos web
#25=servidor pop
#110=servidor smtp
#6060 9090=trib
#3456 =rec
#81=crcp
#3007=rais
#3001=imprensa
#8082=compesa
#8443=ple
###
## IPs TOTALMENTE (local) liberados -- especificar separando por espacos
## exemplo: IPS_LIBERADO_INT="192.168.154.99 192.168.154.76 192.168.154.231 "
### IP 14=PAULO;DONWLOADS DE DRIVERS IP 1=WEBDOC DOWNLOAD DE DRIVERS IP=20 27 conectividade social
### IP 74=PAGADORIA IP 85=PAGADORIA IP 83=PAGADORIA IP 84=PAGADORIA IP=23 24 FOLHA IP=155.1 patrimonio
IPS_LIBERADO_INT="200.214.44.204 192.168.154.14 192.168.154.1 192.168.154.20 192.168.154.27 192.168.154.74 192.168.154.85 192.168.154.83 192.168.154.84 192.168.154.23 192.168.154.24 192.168.155.1"
###
## IPs TOTALMENTE liberados (externo) -- especificar separando por espacos
## exemplo: IPS_LIBERADO_EXT="189.1.14.23 200.164.238.14 200.255.255.65"
####
IPS_LIBERADO_EXT="189.1.1.212 200.179.170.132 200.198.216.8 200.214.44.204"
# Habilitando repasse e nat de pacotes ipv4
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.1/255.255.255.0 -o eth1 -j SNAT --to-source 201.x.x.189
# cria 2 chains, para inspeção de estados e o firewall
iptables -N STATEFULL
iptables -N FIREWALL
iptables -N LAN_EXT
# Trafego pela loopback é OK
iptables -A INPUT -i lo -j ACCEPT
# Manda os pacotes para analise de estados
iptables -A INPUT -j STATEFULL
# Vou confiar em eth1 (LAN) porque voce mandou!
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 2022 --syn -j ACCEPT
# O resto vai pro fogo!
iptables -A INPUT -j FIREWALL
iptables -A FORWARD -j STATEFULL
# de: LAN para: EXT
iptables -A FORWARD -i eth0 -o eth1 -j LAN_EXT
# Se você chegou até aqui, é porque você não é aceito, então vai pro fogo!
iptables -A FORWARD -j FIREWALL
iptables -A STATEFULL -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A STATEFULL -m state --state INVALID -j FIREWALL
iptables -A FIREWALL -j LOG --log-level debug --log-prefix 'FIREWAL: '
iptables -A FIREWALL -j REJECT
# Liberando ping
iptables -A LAN_EXT -p icmp -j ACCEPT
###
# Criacao das regras com ips liberados (local)
###
if [ ! -z "$IPS_LIBERADO_INT" ]; then
for ip in $IPS_LIBERADO_INT
do
iptables -A LAN_EXT -s $ip/32 -j ACCEPT
done
fi
###
# Criacao das regras com ips liberados (externo)
###
if [ ! -z "$IPS_LIBERADO_EXT" ]; then
for ip in $IPS_LIBERADO_EXT
do
iptables -A LAN_EXT -d $ip -j ACCEPT
done
fi
###
## Criacao das regras para as portas liberadas
###
if [ ! -z "$PORTAS_LIBERADAS" ]; then
for porta in $PORTAS_LIBERADAS
do
iptables -A LAN_EXT -p tcp --dport $porta -j ACCEPT
iptables -A LAN_EXT -p udp --dport $porta -j ACCEPT
done
fi