Responder 
 
Avaliação do Tópico:
  • 0 Votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Bloquear determinado IP por iptables
16/10/2013, 22:55
Resposta: #1
Bloquear determinado IP por iptables
Olá amigos, hoje de manhã senti necessidade de bloquear um determinado IP da minha 2ª rede local, pesquisando na internet, encontrei as seguintes regras:

Código:
iptables -A INPUT -s 172.16.0.3 -j DROP
iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP

iptables -A INPUT -s 172.16.0.3 -j DROP
iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP

iptables -A OUTPUT -s 172.16.0.3 -j DROP
iptables -A INPUT -s 172.16.0.3 -p tcp --dport 80 -j DROP

Mas nada que faça o bloqueio, o determinado IP continua tendo acesso à internet.

Vejam como se encontra meu Firewall:

Código:
#!/bin/bash

echo "Declarando variáveis"

# Interface da Internet:
ifinternet="eth4"

# IP da Internet
ip_internet="192.168.1.2"

# Interface da rede local
iflocal="eth3"

# IP da Rede Local
rede_local="10.0.0.0/24"

# Interface da rede local 1
iflocal1="eth3:0"

# IP da Rede Local 1
rede_local1="172.16.0.0/23"

# Portas à serem liberadas
portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"

#### Função "start" ####

iniciar(){

echo "Carregando módulos"

modprobe ip_tables
modprobe iptable_mangle
modprobe iptable_nat

echo "Módulos carregados"

echo "Limpando regras"

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z

echo "Regras limpas"

echo "Definindo política padrão"

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

echo "Política padrão definida"

echo "Habilitando roteamento"

echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Roteamento ativado"

echo "Compartilhando internet"

iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

echo "Internet compartilhada"

echo "Manter conexões establecidas"

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

echo "Negando pacotes inválidos"

iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

echo "Liberando portas"

iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT

echo "Portas liberadas"


echo "Hosts indesejados serão bloqueados"

iptables -A INPUT -i $iflocal1 -s 172.16.0.3 -j DROP
iptables -A FORWARD -i $iflocal1 -s 172.16.0.3 -j DROP

echo "Liberando tráfego"

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A INPUT -i $iflocal1 -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i $iflocal -j ACCEPT
iptables -A FORWARD -i $iflocal1 -j ACCEPT

echo "Tráfego liberado"

}

parar(){
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
}

status(){
iptables -L -v -n
}

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

Obrigado à todos que ajudar! Alegre
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
22/10/2013, 06:07
Resposta: #2
RE: Bloquear determinado IP por iptables
O iptables, se eu não me engano, é lido de cima pra baixo.
Primeiro você liberou as portas, 80, etc, etc...
Depois bloqueou determinado IP.
O que conta é o liberamento.

Acho...

Outra coisa, não seria:
Código:
iptables -A FORWARD -s 172.16.0.3 -j DROP
ao invés de:
Código:
iptables -A INPUT -s 172.16.0.3 -j DROP

Não sei ao certo.

Lucas Saliés Brum
site | blog | telegram | medium | vk | twitter | github | .share
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
10/11/2013, 19:49
Resposta: #3
RE: Bloquear determinado IP por iptables
boa noite Arthur,
estou estudando iptables e pelo que li até agora você deve primeiro fazer os bloqueios e depois as liberação, pois o iptables lê as regras em sequência.
acho que o correto seria:
iptables -A INPUT -s 172.16.0.3 - j REJECT
iptables -A INPUT -s 172.16.0.0/255.255.254.0 -j ACCEPT

leia o link: http://www.hardware.com.br/tutoriais/lin...-firewall/

se estiver errado me corrijam, estou aprendendo.
até mais

Luis - Linux User: #420124
ºvº. | Linux, porque eu amo a liberdade!
/(L)\ | Socialmente justo, economicamente viável e tecnologicamente sustentável
.^.^.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
16/04/2014, 16:28 (Resposta editada pela última vez em: 16/04/2014 16:29 por jslimma.)
Resposta: #4
RE: Bloquear determinado IP por iptables
Arthur,

É como o colega mencionou vc deve setar as regras de bloqueio no arquivo antes das liberações. Seria interessante vc incluir tbm a chain FORWARD pra ficar mais completo.
Se vc está fazendo esses testes direto na linha de comando para ver se funciona, provavelmtne tbm n funcionará porque qd vc declara "INPUT -A" essa regra será inserida ao final da tabela iptables, para a regra ser inclusa no início vc poderia usar "IPTABLES -I", porque ai viria antes das liberações q vc fez e tornará a regra mais eficaz

boa sorte...
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
05/05/2014, 17:22 (Resposta editada pela última vez em: 05/05/2014 19:59 por fran.)
Resposta: #5
RE: Bloquear determinado IP por iptables
EX:
iptables -I INPUT -m iprange --src-range 172.16.0.3 -j DROP

OU

iptables -A INPUT -s 172.16.0.0/255.255.254.0 -m iprange ! --src-range 172.16.0.3 -j ACCEPT

ou

iptables -A INPUT -m iprange ! --src-range 172.16.0.3 -s 172.16.0.0/255.255.254.0 -j ACCEPT
###########################################################
Bloquear site e libera para range ips
iptables -A OUTPUT -m iprange ! --src-range 10.0.0.10-10.0.0.12 -p tcp -m string --string "facebook.com" --algo kmp -j DROP

Bloquear site só para essa range ips

iptables -A OUTPUT -m iprange ! --src-range 10.0.0.10-10.0.0.12 -p tcp -m string --string "facebook.com" --algo kmp -j ACCEPT

(Isso e para vc ter a sua ideia, da para fazer uma coisa de dez jeitos)
Agora e só ver o jeito que da certo para vc.

[Imagem: 11112_9039_128_tux_gpl_linux_icon.gif]

Debian 10 "Buster" + LXDE 64 bits
Linux Sempre
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
06/05/2014, 10:03
Resposta: #6
RE: Bloquear determinado IP por iptables
Como informou o jslimma, deve ser incluída a regra na chain FORWARD, pois o tráfego como vem de outra rede está atravessando as interfaces.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
07/05/2014, 12:24 (Resposta editada pela última vez em: 07/05/2014 16:48 por fran.)
Resposta: #7
RE: Bloquear determinado IP por iptables
Dica, para quem for trabalhar com iptables da para vc criar sua própria Chain 2,3 e assim por diante e só saber, elas trabalhão com regras independente uma da outra o que eu quero dizer e que cada Chain criada por vc tem uma regra que a outra não tem isso facilita na organização do script fica fácil administra.

Um exemplo meu firewall pessoal só tem uma Chain criada por mim só controla o meu pc não a necessidade de outras Chain não estou controlando redes ou ips só um pc.

[email protected]:/home/fran# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 Pc all -- * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 Pc all -- * * 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain Pc (2 references) <<<<< essa
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport ports 6900,7777
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 multiport ports 27005,27016,27020
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 10.0.0.0/24 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0

A Chain Pc olha acima , de uma olhada nesse material LINK :: http://www.netfilter.org/

[Imagem: 11112_9039_128_tux_gpl_linux_icon.gif]

Debian 10 "Buster" + LXDE 64 bits
Linux Sempre
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
08/05/2014, 11:36 (Resposta editada pela última vez em: 08/05/2014 11:40 por fran.)
Resposta: #8
RE: Bloquear determinado IP por iptables
Esqueci de falar acho que da para bloquear por Host name não sei acho.

iptables -A OUTPUT -m string --string "fulano-pc" --algo bm -j DROP
ou
iptables -A OUTPUT -p tcp --dport 80 -m string --string "fulano-pc" --algo bm -j DROP
ou
iptables -A OUTPUT -p tcp -m string --string "fulano-pc" --algo bm -j DROP

[Imagem: 11112_9039_128_tux_gpl_linux_icon.gif]

Debian 10 "Buster" + LXDE 64 bits
Linux Sempre
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
08/05/2014, 22:20
Resposta: #9
RE: Bloquear determinado IP por iptables
Experimenta colocar o ip que deseja bloquear no arquivo hosts para o sistema reconhecer. Pode reforçar colocando o ip também no hosts.deny.
Como estudo você está no caminho certo mas quem quer comodidade deve usar o ufw. Abraços.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
09/05/2014, 16:51
Resposta: #10
RE: Bloquear determinado IP por iptables
Na minha opnião a melhor documentação em português sobre o iptables: http://www.guiafoca.org/cgs/guia/avancad...ables.html
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
Responder 


Ir ao Fórum:


Usuários visualizando este tópico: 1 Visitantes

Entre em Contato | Fórum Debian | Voltar ao Topo | Voltar ao Conteúdo | Modo Leve (Arquivo) | Feeds RSS