Eu recomendo que você veja algo como Dansguardian:
A documentação é muito boa e há alguns recursos em restrições de navegação baseadas em tempo.
Eu sei sobre o aplicativo SelfControl, mas ele precisa ser iniciado toda hora e as horas de bloco a serem definidas.
Eu quero, por exemplo, proibir o carregamento de determinados sites durante o horário de trabalho, mas torná-lo possível durante o resto. Eu quero definir uma vez e esquecer. Tem que fazer o interruptor automaticamente todos os dias.
Qual seria a maneira mais fácil de fazer isso, considerando que sou super novato?
Usaremos uma combinação de Iptables, Bash Scripting e Cron para conseguir isso.
O comando Iptables para bloquear um domínio é assim:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
Da mesma forma, o comando unblock se parece com:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j ACCEPT
Crie um arquivo, digamos, block.sh
, no qual você define as regras do Iptables para bloquear as conexões de saída dos domínios que você deseja bloquear e um script reverso para desbloqueá-los.
#! /usr/bin/env bash
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
# other stuff you want to do when you block a domain
# add blocking commands for each domain here
Execute chmod +x block.sh
para tornar o script executável. Agora você pode executá-lo como /path/to/file/block.sh
.
Assim, você terá dois scripts como:
/path/to/block.sh
/path/to/unblock.sh
Agora, adicione uma entrada crontab para executar seus scripts da seguinte forma:
Execute crontab-e
. Na primeira execução, ele pedirá que você configure um editor de texto. Use nano, se você não tiver certeza.
Adicione estas linhas ao final do arquivo:
0 9 * * * /path/to/block.sh
0 17 * * * /path/to/unblock.sh
Salve o arquivo com CTRL+O
, pressione ENTER
e, em seguida, CTRL+X
para sair.
Agora, às 9h todos os dias, o primeiro script bloqueia todos os domínios e, às 17h, o segundo script os desbloqueia.