analizar regra no iptables [RESOLVIDO]

1. analizar regra no iptables [RESOLVIDO]

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 04/05/2011 - 15:25h

olá à todos,

tenho um trecho de código, para liberar apenas os IPs no arquivo ips.txt para digitar (no google, por exemplo) as palavras descritas no arquivo palavras.txt :

# Bloqueios de Palavras.
for LINHA in $(grep -Ev "^#" /etc/network/palavras/lista.txt)
do
for IPs in $(grep -Ev "^#" /etc/network/palavras/ips.txt)
do
iptables -I FORWARD -i $INTRA -o $INTER ! -s $IPs -m string
--algo bm --string $LINHA -p tcp --dport 80 -j DROP
done
done


Os ips e palavras estão nos arquivos uma palavra por linha e um ip por linha.

o problema é que não ocorre os bloqueios dos IPS que não são definidos no arquivo ips.txt .

A regra executa também na porta 443, apenas não postei aqui.


Agradeço ajuda galera.




  


2. Re: analizar regra no iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 04/05/2011 - 16:59h

usa assim

for LINHA in `grep -Ev ^# /etc/network/palavras/lista.txt`

for IPs in `grep -Ev ^# /etc/network/palavras/ips.txt`


3. Re: analizar regra no iptables [RESOLVIDO]

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 04/05/2011 - 17:08h

Não funcionou.

Esta forma abaixo compila , mas não bloqueia o pessoal que não possui ip no arquivo.

for LINHA in 'grep -Ev "^#" /etc/network/palavras/lista.txt"; do
for IPs in $(grep -Ev "^#" /etc/network/palavras/ips.txt); do
iptables -I FORWARD ! -s $IPs -p tcp --dport 80 -m string --algo bm --string $LINHA -j DROP
iptables -I FORWARD ! -s $IPs -p udp --dport 443 -m string --algo bm --string $LINHA -j DROP
done
done


4. Re: analizar regra no iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 04/05/2011 - 17:53h

posta o script completo que eu vou testar e depurar aqui.


5. Aí está:

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 05/05/2011 - 09:02h

#!/bin/bash

modprobe iptable_filter
modprobe iptable_nat
modprobe iptable_mangle
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_netlink
modprobe ip_conntrack_ftp
modprobe ip_queue
modprobe ip_tables

modprobe nf_conntrack_ipv4

modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_TCPMSS
modprobe ipt_REJECT
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tos

# politicas padrao
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

# limpa regras.
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z

# Permissão de LOOPBACK para processos do Firewall.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Mascaramento da rede local (Intranet).
iptables -t nat -A POSTROUTING -o $INTER -j MASQUERADE

# Bloqueios de Palavras.
for LINHA in $(grep -Ev "^#" /etc/network/palavras/lista.txt); do
for IPs in $(grep -Ev "^#" /etc/network/palavras/ips.txt); do
iptables -I FORWARD ! -s $IPs -p tcp --dport 80 -m string --algo bm --string $LINHA -j DROP
iptables -I FORWARD ! -s $IPs -p udp --dport 443 -m string --algo bm --string $LINHA -j DROP
echo "$IPs $LINHA"
done
done


# Statefull inspection
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# DNS (TCP e UDP)
iptables -A FORWARD -i $INTRA -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i $INTRA -p tcp --dport 53 -j ACCEPT


# HTTP/HTTPS
iptables -A FORWARD -i $INTRA -o $INTER -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -A FORWARD -i $INTER -o $INTRA -p tcp -m multiport --dport 80,443 -j ACCEPT


# também estou procurando alguma distribuição do linux com o kernel já compilado com o layer 7.
# Esse recurso é muito útil e não entendo o
# porquê desta ferramenta não vir por padrão.
# os processos de instalação e compilação do kernel que encontramos poraí em foruns é
# muito complicaado e geralmente desatualizado...



6. Re: analizar regra no iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 05/05/2011 - 13:49h

teste aqui funcionou certinho. vc usa somente iptables ou tem squid tbm?

roda seu script e posta iptables -L FORWARD


7. Aqui está:

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 05/05/2011 - 14:06h

# NAO uSO SQUID

root@FIREWALL:~# iptables -L FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:30000
ACCEPT udp -- anywhere anywhere udp dpt:30000
ACCEPT tcp -- anywhere anywhere tcp dpt:30000
ACCEPT tcp -- anywhere anywhere tcp dpt:30000
ACCEPT udp -- 189.82.0.0/16 192.168.0.0/24
ACCEPT tcp -- 192.168.0.0/24 189.82.0.0/16
ACCEPT tcp -- 189.82.0.0/16 192.168.0.0/24
ACCEPT udp -- anywhere anywhere udp dpt:6050
ACCEPT tcp -- anywhere anywhere tcp dpt:6050
ACCEPT udp -- anywhere anywhere udp dpt:mmcc
ACCEPT tcp -- anywhere anywhere tcp dpt:mmcc
ACCEPT udp -- anywhere anywhere udp dpt:8010
ACCEPT tcp -- anywhere anywhere tcp dpt:8010
ACCEPT tcp -- 201-36-121-4.intelignet.com.br anywhere tcp dpt:3388
ACCEPT tcp -- 201-36-121-4.intelignet.com.br anywhere tcp dpt:ms-sql-s
ACCEPT tcp -- anywhere anywhere tcp dpts:10001:10220
ACCEPT tcp -- anywhere anywhere tcp dpts:10001:10220
ACCEPT udp -- anywhere anywhere udp dpts:ms-sql-s:ms-sql-m
ACCEPT tcp -- anywhere anywhere tcp dpts:ms-sql-s:ms-sql-m
ACCEPT udp -- anywhere anywhere udp dpt:3389
ACCEPT tcp -- anywhere anywhere tcp dpt:3389
ACCEPT udp -- anywhere anywhere udp dpt:3389
ACCEPT tcp -- anywhere anywhere tcp dpt:3389
ACCEPT udp -- anywhere anywhere udp dpt:3388
ACCEPT tcp -- anywhere anywhere tcp dpt:3388
ACCEPT udp -- anywhere anywhere udp dpt:3388
ACCEPT tcp -- anywhere anywhere tcp dpt:3388
ACCEPT udp -- anywhere anywhere multiport dports 5900,5500,5800
ACCEPT tcp -- anywhere anywhere multiport dports 5900,5500,5800
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "4shared" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "4shared" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "filecrop" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "filecrop" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "rapidshare" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "rapidshare" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "easyshare" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "easyshare" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "megaupload" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "megaupload" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "torrent" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "torrent" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "p2p" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "p2p" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "twitter" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "twitter" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "facebook" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "facebook" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "orkut" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "orkut" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "yahoo" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "yahoo" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "gmail" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "gmail" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "hotmail" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "hotmail" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "youtube" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "youtube" ALGO name bm TO 65535
DROP udp -- !192.168.0.57 anywhere udp dpt:https STRING match "msn" ALGO name bm TO 65535
DROP tcp -- !192.168.0.57 anywhere tcp dpt:www STRING match "msn" ALGO name bm TO 65535
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpts:ftp-data:ssh
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere multiport dports www,https
ACCEPT tcp -- anywhere anywhere multiport dports www,https
ACCEPT all -- 192.168.0.0/24 200.201.173.0/24
ACCEPT all -- 192.168.0.0/24 200.201.166.0/24
ACCEPT all -- 192.168.0.0/24 200.201.174.0/24
ACCEPT all -- 192.168.0.0/24 200.201.174.0/24
ACCEPT tcp -- 192.168.0.0/24 anywhere tcp dpt:3456
ACCEPT tcp -- 192.168.0.0/24 201.23.207.124.nqt.com.br multiport dports supdup,3307
ACCEPT udp -- 192.168.0.0/24 201.23.207.124.nqt.com.br multiport dports 95,3307
ACCEPT tcp -- 201.23.207.124.nqt.com.br 192.168.0.0/24 multiport dports supdup,3307
ACCEPT udp -- 201.23.207.124.nqt.com.br 192.168.0.0/24 multiport dports 95,3307
ACCEPT tcp -- 192.168.0.0/24 201.33.134.55 tcp dpt:http-alt
ACCEPT tcp -- anywhere anywhere multiport dports submission,smtp
ACCEPT tcp -- anywhere anywhere multiport dports submission,smtp
ACCEPT udp -- anywhere anywhere multiport dports submission,25
ACCEPT udp -- anywhere anywhere multiport dports submission,25
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:ssmtp
ACCEPT tcp -- anywhere anywhere tcp dpt:ssmtp



8. Re: analizar regra no iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 05/05/2011 - 14:33h

ta certo. qual a versão do seu iptables? vc ta acessando a net do servidor ou de outra maquina?

testei com esse script sem carregar modulos.

#!/bin/bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -F

for LINHA in $(grep -Ev "^#" lista.txt); do
for IPs in $(grep -Ev "^#" ips.txt); do
iptables -I FORWARD ! -s $IPs -p tcp --dport 80 -m string --algo bm --string $LINHA -j DROP
iptables -I FORWARD ! -s $IPs -p udp --dport 443 -m string --algo bm --string $LINHA -j DROP
done
done

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


# DNS (TCP e UDP)
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT


# HTTP/HTTPS
iptables -A FORWARD -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 80,443 -j ACCEPT


9. Re: analizar regra no iptables [RESOLVIDO]

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 05/05/2011 - 14:55h

Em algumas máquinas (windows 7) o bloqueio ocorre, mas em outras (windows 7) não.
é muito estranho.

root@FIREWALL:~# iptables --version
iptables v1.4.4


por isso estou procurando um kernel já compilado com o layer 7, para bloquear na camada de aplicação , ao invés de fazer com string.





10. solução

guilherme gustavo ribeiro de godoi
GustavinhoO

(usa Debian)

Enviado em 05/05/2011 - 19:28h

amigo o certo não é usar o firewall para isso

tem coisas mais especificas e mais eficientes.

usa squid e dansguardian se deseja um bloqueio excelente.

tenho algumas sugestoes excelente.

add meu msn e se falamos

gustavo.ti@hotmail.com.br


11. Re: analizar regra no iptables [RESOLVIDO]

Mauro R. Larrat
maurolarrat

(usa Ubuntu)

Enviado em 05/05/2011 - 19:40h

Valeu , vou te adicionar no msn e te encher de perguntas eheheheeh

Ouvi dizer que o Squid é 10 vezes mais lento que o iptables com layer 7 (apenas lí em foruns).
Vou pesquisar também sobre a outra alternativa que você falou.

Vou fechar este tópico agradeçendo, mais uma vez, a ajuda da galera Linux!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts