Liberação de computador através de MAC no iptables [RESOLVIDO]

1. Liberação de computador através de MAC no iptables [RESOLVIDO]

Marcelo Duarte Fernandes Alvarez
marcelo.duarte

(usa Outra)

Enviado em 09/01/2014 - 16:06h

Boa tarde Pessoal,

Já de alguns dias venho quebrando minha cabeça atrás de uma solução, porém só quebrando a cara. Na empresa onde trabalho temos o Squid com o Iptables, sendo que foi solicitado o bloqueio total do skype na empresa, fiz o bloqueio, porém preciso liberar um computador no firewall para acessar o Skype, porém já tentei liberar através de IP, MAC mas nada funcionou. Segue abaixo o meu arquivo de Firewall com as tentativas que realizei:


#!/bin/bash

#Interface da Internet:
ifinternet="eth0"

#Interface Local:
iflocal="eth1"

iniciar(){

# Compartilhando a conexao:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

# Proxy transparente:
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128

# Redirecionando uma porta no servidor
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3387 -j DNAT --to 10.0.0.4:3387
iptables -A FORWARD -p tcp -d 10.0.0.4 --dport 3387 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3388 -j DNAT --to 10.0.0.1:3388
#iptables -t nat -A POSTROUTING -d 10.0.0.1 -j SNAT --to 10.0.0.2
iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 3388 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3389 -j DNAT --to 10.0.0.3
iptables -A FORWARD -p tcp -d 10.0.0.3 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 8000 -j DNAT --to 10.0.6.11
iptables -A FORWARD -p tcp -d 10.0.6.11 --dport 8000 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 34567 -j DNAT --to 10.0.6.11
iptables -A FORWARD -p tcp -d 10.0.6.11 --dport 34567 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3050 -j DNAT --to 10.0.0.4
iptables -A FORWARD -p tcp -d 10.0.0.4 --dport 3050 -j ACCEPT

# Computadores Liberados no Skype
#1ª Tentativa
#iptables -t nat -A POSTROUTING -s 10.0.0.236 -j MASQUERADE

#2ª Tentativa
#macs="44:6D:57:A9:14:76"
#for mac in $macs; do
#iptables -t filter -A FORWARD -m mac --mac-source $macs -j ACCEPT
#done

#3ª Tentativa
#iptables -t filter -A FORWARD -d 0/0 -m mac --mac-source 44:6D:57:E4:55:55 -j ACCEPT
#iptables -t filter -A INPUT -d 0/0 -m mac --mac-source 44:6D:57:E4:55:55 -j ACCEPT

#4ª Tentativa
#iptables -t filter -A FORWARD -s 10.0.0.236 -j ACCEPT
#iptables -t filter -A INPUT -s 10.0.0.236 -j ACCEPT

# Regras basicas de firewall:
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $iflocal -s 10.0.0.0/8 -j ACCEPT
iptables -A FORWARD -i $ifinternet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A ping-chain -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#iptables -A INPUT -p tcp --syn -j DROP

#Bloqueio Skype
iptables -I FORWARD -s 111.221.74.0/24 -j DROP
iptables -I FORWARD -s 111.221.77.0/24 -j DROP
iptables -I FORWARD -s 157.55.130.0/24 -j DROP
iptables -I FORWARD -s 157.55.235.0/24 -j DROP
iptables -I FORWARD -s 157.55.56.0/24 -j DROP
iptables -I FORWARD -s 157.56.52.0/24 -j DROP
iptables -I FORWARD -s 194.165.188.0/24 -j DROP
iptables -I FORWARD -s 195.46.253.0/24 -j DROP
iptables -I FORWARD -s 213.199.179.0/24 -j DROP
iptables -I FORWARD -s 63.245.217.0/24 -j DROP
iptables -I FORWARD -s 64.4.23.0/24 -j DROP
iptables -I FORWARD -s 65.55.223.0/24 -j DROP

#Portas Liberadas
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3050 -j ACCEPT
iptables -A INPUT -i $iflocal -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp --dport 3155 -j ACCEPT
iptables -A INPUT -p tcp --dport 3388 -j ACCEPT
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -p tcp --dport 7030 -j ACCEPT
iptables -A INPUT -p tcp --dport 2121 -j ACCEPT
iptables -A INPUT -p tcp --dport 49152 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -p tcp --dport 34567 -j ACCEPT
iptables -A INPUT -i $iflocal -p tcp --dport 443 -j ACCEPT

# Liberando a porta VPN
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p tcp --dport 47 -j ACCEPT
iptables -A FORWARD -p tcp --dport 47 -j ACCEPT
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT

#Bloqueio MSN
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-port 3128

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo "Regras de firewall e compartilhamento ativados"
}

parar(){
iptables -F
iptables -F -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "Regras de firewall e compartilhamento desativados"
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start, restart ou stop"
esac


Fico no aguardo da colaboração de vocês e obrigado.



  


2. MELHOR RESPOSTA

Buckminster
Buckminster

(usa Debian)

Enviado em 09/01/2014 - 21:14h

Teste com essas regras nessa posição:

# Computadores Liberados no Skype
#1ª Tentativa
iptables -A FORWARD -s 10.0.0.236 -j ACCEPT
iptables -A FORWARD -d 10.0.0.236 -j ACCEPT

Com essas regras nessa posição esse IP passará pelo Squid, pois as regras estão depois do redirecionamento.
Caso queria liberar esse IP do Squid também, coloque as regras ANTES da regra de redirecionamento.

E nas regras de bloqueio do Skype mude -I para -A.

Veja bem, -I coloca a regra no topo da chain, no caso da chain FORWARD.
E -A adiciona a regra na sequência em que ela é colocada no script.

Atente para isso, pois muda toda a esquemática de leitura e execução das regras.

Com -I, a última regra coloca no script será a primeira a ser executada.
Com -A, a última regra colocada no script será a última a ser executada.

Procure colocar sempre tudo -I ou tudo -A na mesma chain.
O -I e o -A só valem para a mesma chain, por exemplo, uma regra -I FORWARD não afeta uma regra -A INPUT.

Ou numere as regras com -I:
iptables -I FORWARD 1 -s 10.0.0.236 -j ACCEPT
iptables -I FORWARD 2 -d 10.0.0.236 -j ACCEPT

iptables -I FORWARD 3 -s 111.221.74.0/24 -j DROP
iptables -I FORWARD 4 -s 111.221.77.0/24 -j DROP
iptables -I FORWARD 5 -s 157.55.130.0/24 -j DROP

assim ele executará na sequência numérica e você não se perderá.

3. Re: Liberação de computador através de MAC no iptables [RESOLVIDO]

Marcelo Duarte Fernandes Alvarez
marcelo.duarte

(usa Outra)

Enviado em 10/01/2014 - 09:21h

Buckminster, perfeito cara, muito obrigado, eu realmente acreditava que tinha algum problema na questão da ordem das políticas. Como troquei o -I pelo -A nas regras do skype eu precisei puxar estas regras para o começo do script, segue abaixo como ficou o arquivo:

#!/bin/bash

#Interface da Internet:
ifinternet="eth0"

#Interface Local:
iflocal="eth1"

iniciar(){

# Compartilhando a conexao:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

#Computadores Liberados
iptables -A FORWARD -s 10.0.0.236 -j ACCEPT
iptables -A FORWARD -d 10.0.0.236 -j ACCEPT

#Bloqueio Skype
iptables -A FORWARD -s 111.221.74.0/24 -j DROP
iptables -A FORWARD -s 111.221.77.0/24 -j DROP
iptables -A FORWARD -s 157.55.130.0/24 -j DROP
iptables -A FORWARD -s 157.55.235.0/24 -j DROP
iptables -A FORWARD -s 157.55.56.0/24 -j DROP
iptables -A FORWARD -s 157.56.52.0/24 -j DROP
iptables -A FORWARD -s 194.165.188.0/24 -j DROP
iptables -A FORWARD -s 195.46.253.0/24 -j DROP
iptables -A FORWARD -s 213.199.179.0/24 -j DROP
iptables -A FORWARD -s 63.245.217.0/24 -j DROP
iptables -A FORWARD -s 64.4.23.0/24 -j DROP
iptables -A FORWARD -s 65.55.223.0/24 -j DROP

# Proxy transparente:
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128

# Redirecionando uma porta no servidor
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3387 -j DNAT --to 10.0.0.4:3387
iptables -A FORWARD -p tcp -d 10.0.0.4 --dport 3387 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3388 -j DNAT --to 10.0.0.1:3388
#iptables -t nat -A POSTROUTING -d 10.0.0.1 -j SNAT --to 10.0.0.2
iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 3388 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3389 -j DNAT --to 10.0.0.3
iptables -A FORWARD -p tcp -d 10.0.0.3 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 8000 -j DNAT --to 10.0.6.11
iptables -A FORWARD -p tcp -d 10.0.6.11 --dport 8000 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 34567 -j DNAT --to 10.0.6.11
iptables -A FORWARD -p tcp -d 10.0.6.11 --dport 34567 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport 3050 -j DNAT --to 10.0.0.4
iptables -A FORWARD -p tcp -d 10.0.0.4 --dport 3050 -j ACCEPT

# Regras basicas de firewall:
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $iflocal -s 10.0.0.0/8 -j ACCEPT
iptables -A FORWARD -i $ifinternet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A ping-chain -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#iptables -A INPUT -p tcp --syn -j DROP


#Portas Liberadas
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3050 -j ACCEPT
iptables -A INPUT -i $iflocal -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp --dport 3155 -j ACCEPT
iptables -A INPUT -p tcp --dport 3388 -j ACCEPT
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -p tcp --dport 7030 -j ACCEPT
iptables -A INPUT -p tcp --dport 2121 -j ACCEPT
iptables -A INPUT -p tcp --dport 49152 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -p tcp --dport 34567 -j ACCEPT
iptables -A INPUT -i $iflocal -p tcp --dport 443 -j ACCEPT

# Liberando a porta VPN
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p tcp --dport 47 -j ACCEPT
iptables -A FORWARD -p tcp --dport 47 -j ACCEPT
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT

#Bloqueio MSN
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-port 3128

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo "Regras de firewall e compartilhamento ativados"
}

parar(){
iptables -F
iptables -F -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "Regras de firewall e compartilhamento desativados"
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start, restart ou stop"
esac





4. Re: Liberação de computador através de MAC no iptables [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 10/01/2014 - 10:43h

De nada.

Mas somente uma sugestão a mais. Coloque assim no início:

iniciar(){

iptables -Z # Zera as regras das chains
iptables -F # Remove as regras das chains
iptables -X # Apaga as chains

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Compartilhando a conexao:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

Deixe sempre as regras de limpeza por primeiro, pois assim o Iptables sempre irá iniciar limpo e logo após sempre coloque as políticas padrões.

Segue link para o Manuel do Iptables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/


5. Re: Liberação de computador através de MAC no iptables [RESOLVIDO]

Marcelo Duarte Fernandes Alvarez
marcelo.duarte

(usa Outra)

Enviado em 10/01/2014 - 16:55h

Ok. Vou fazer isso sim. Mais uma vez obrigado pela ajuda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts