Como bloquear, negar ou redirecionar um endereço IP ou domínio do site

2

Essa pergunta surgiu há alguns dias e é: Como bloquear, negar ou redirecionar um endereço IP ou nome de domínio para outro IP ou domínio da Web sem o uso de um roteador ou a configuração de um navegador. Basicamente usando apenas o Ubuntu para fazer isso.

Por exemplo, um usuário usa um computador, ele / ela não tem acesso ao facebook ou twitter (pode ser um acesso negado para sempre ou apenas entre as 14h e as 20h). Se o usuário tentar entrar no facebook ou no twitter, ele será redirecionado para outro lugar ou apenas cancelado.

O programa seria preferível na GUI, mas se não houvesse terminal, faria.

Eu verifiquei por exemplo o ufw e o gufw, mas ele funciona apenas para programas e portas. O caso sobre nomes de domínio não está lá. O que tornaria mais fácil selecionar ou desmarcar um domínio.

    
por Luis Alvarado 14.12.2011 / 01:12

5 respostas

3

iptables é útil se forem apenas alguns nomes de domínio / ip.

Com iptables você pode restringir com base no usuário, grupo e / ou tempo, embora para isso você precise usar a tabela OUTPUT. Então, para permitir root, e um grupo "web", use

# this allows root for things such as apt-get
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT

# this allows users of the group web
# create a group, web, and add users to it to allow access
sudo iptables -A OUTPUT -m owner --gid-owner web -j ACCEPT

# These two rules allow access to port 80 and 443 over the lunch hour
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -m time --timestart 12:00 --timestop 13:00 -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -j DROP

Mas à medida que suas necessidades se tornam mais complexas, é útil usar proxies. Por exemplo, você pode usar privoxy (e outros) para adblock. O Squid adiciona filtragem e regras mais complexas (acl ou listas de controle de acesso), mas é provável que seja superado para um usuário doméstico.

Você então torna o proxy transparente com o iptables

# This allows root
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT

# This allows privoxy, which serves as adblock
sudo iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner privoxy -j ACCEPT

# this blocks direct access to ports 80 to all other users
sudo iptables -A OUTPUT -p tcp --dport 80 -j DROP

# This allows squid to access privoxy (I think squid runs as "proxy")
#sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -m owner --uid-owner proxy -j ACCEPT

# this rule blocks other users from direct access to privoxy
sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -j DROP

# Redirect all outgoing traffic on port 80 to squid listening on port 3128
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner privoxy -j REDIRECT --to-port 3128

Agora você instala e configura o privoxy e o squid

guia do servidor Ubuntu squid

wiki do Ubuntu privoxy

O problema com esse método é que você precisa instalar o squidguard, configurar o squid, etc, o que seria um post longo e mais adequado para uma LAN maior.

    
por Panther 14.12.2011 / 02:19
2

Eu encontrei uma solução melhor para você, moblock, ele vem com uma lista negra que é atualizada diariamente e uma ferramenta de configuração gráfica.

Para instalá-lo, execute

sudo add-apt-repository ppa:jre-phoenix/ppa
sudo apt-get update
sudo apt-get install moblock blockcontrol mobloquer

Em seguida, execute o Mobloquer

Para informações adicionais, veja Home Page do Moblock (sourceforge)

    
por Panther 14.12.2011 / 04:33
1

Você pode bloquear nomes de IP e de domínio com IPTABLES

exemplo de saída:

iptables -A OUTPUT -p tcp -m string --string "xxx.com" --algo kmp -j DROP

depois, com um cron job, você pode bloquear todos os domínios que desejar no horário específico desejado e, mais tarde, desbloqueá-los

    
por Francisco Valdez 14.12.2011 / 01:35
0

Ela pode surgir devido a várias condições nas quais você pode exigir o bloqueio ou restrição de qualquer endereço IP ou domínio específico do acesso do seu servidor. É um processo simples e, seguindo essas instruções, você pode bloquear o domínio do website no Ubuntu. Como sabemos, o Ubuntu é um sistema operacional baseado em comando de software livre, por isso você teria que passar pela cadeia de entrada da regra MASQUERADE e acionar o comando abaixo:

iptables -I INPUT –s <desired ip address> -j DROP

por exemplo, você quer bloquear 160.10.11.01 do que o tipo:

iptables -I Input –s <160.10.11.01> -j DROP

Se você quiser bloquear endereços IP inteiros a partir de 160… * do que

iptables -I Input –s <160.0.0.0> -j DROP

Se ainda assim ocorrer algum problema, seria melhor entrar em contato com qualquer host da web ou registro de domínios .

    
por JessieGregory 18.12.2014 / 14:50
0

Eu encontrei firestarter uma boa interface GUI para gerenciar entradas do iptables.

    
por Stuart 18.12.2014 / 15:26