WebHTB - Controle de banda de internet

O WebHTB é uma excelente ferramenta para controlar a velocidade da internet na rede local. Resolvi criar este artigo usando três grandes distros de referência: Debian, CentOS (Red Hat) e Slackware, mostrando as diferenças em cada caso.

[ Hits: 39.566 ]

Por: Ronaldo Moraes Junior em 19/03/2015


Instalando o WebHTB no CentOS



Em minha opinião, a instalação no CentOS é a mais simples, porém, a que me deu mais dor de cabeça! Isso porque o CentOS já vem com um firewall configurado e também com o SELinux ativo, o que me demandou muito tempo até descobrir a origem dos problemas. Mas uma vez descobertos, a instalação e o funcionamento ocorreram com facilidade.

Primeiramente, vamos instalar os aplicativos necessários. Note que há uma ligeira diferença nos nomes dos aplicativos em relação ao Debian, mas são os mesmo pacotes:

# yum install httpd php php-cli php-mysql php-snmp php-xmlrpc mysql-server openssl mod_ssl

Vamos agora criar o certificado SSL da mesma forma que no Debian:

# openssl req $@ -new -x509 -days 365 -nodes -out /etc/httpd/apache.pem -keyout /etc/httpd/apache.pem

Ativar o módulo SSL no Apache não é necessário, já que ao instalar o "mod_ssl" ele já insere um arquivo de configuração do SSL em /etc/httpd/conf.d/ssl.conf.

Agora vamos liberar as portas 80 e 443 no firewall do CentOS. Para isso, vamos editar o arquivo /etc/sysconfig/iptables e inserir as regras para liberar as portas:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m TCP -p tcp --dport 443 -j ACCEPT

Inserindo essas linhas ANTES das regras de bloqueio. A seguir, depois de salvarmos, vamos reiniciar o firewall com as novas regras:

# service iptables restart

Assim como no Debian, vamos ativar o "short_open_tag" no "php.ini". Repare que a localização do arquivo difere ligeiramente: ele deve ficar em /etc/php.ini.

short_open_tag = on

Agora iniciamos o Apache e o marcamos para que seja sempre iniciado na inicialização do sistema:

# chkconfig httpd on
# service httpd start

A seguir, verificamos se o servidor HTTP está ativo acessando o SSL: https://127.0.0.1

Se tudo correu bem, vamos nos deparar com a mesma tela nos pedindo para examinarmos o certificado SSL:
Linux: WebHTB - Controle de banda de internet
Agora vamos inicializar o MySQL (com o "secure_install") e criar o banco de dados do WebHTB:

# chkconfig mysqld on
# service mysqld start

# mysql_secure_install

Podemos "setar" as mesmas opções da instalação no Debian, sejam elas: remover o usuário anônimo, bloquear login como root remotamente e remover a database "test". Agora vamos logar no MySQL e criar o banco:

# mysql -u root -p

mysql> create database webhtb;
mysql> GRANT ALL PRIVILEGES ON webhtb .* TO 'root@127.0.0.1' IDENTIFIED BY 'suasenha' WITH GRANT OPTION;
mysql> exit

Então instalamos o WebHTB:

# cd /var/www/html
# wget -c http://sourceforge.net/projects/webhtb/files/WebHTB%20V2.xx/WebHTB_V2.9/WebHTB_V2.9.bz2
# tar jxvf WebHTB_V2.9.bz2

O próximo passo é muito importante pois, por padrão, o CentOS vem com o SELinux ativo. Será preciso mudar seu status de Enforcing para Permissive, pois sem isso, não conseguimos logar no MySQL através da interface do WebHTB.

É possível alterar as regras do SELinux para que não seja necessário mudar seu status, mas sinceramente, não sei utilizar o SELinux (e nem nunca precisei) o suficiente para mudar suas ACLs diretamente. Aqui foi onde tive mais dor de cabeça, pois o WebHTB não funcionava e não havia log de erros em lugar nenhum!

# setenforce 0

A seguir, editamos o arquivo de inicialização dele (/etc/sysconfig/selinux) para que daqui em diante sempre seja inicializado no modo Permissive.

Para isso, basta mudar a linha: SELINUX=enforcing
Para:

SELINUX=permissive

Salvar e sair.

Neste ponto o WebHTB estará disponível, mas primeiramente, precisa ser configurado para inicialização. Da mesma forma que no Debian, primeiramente acessamos o setup, no entanto o endereço é ligeiramente diferente: https://127.0.0.1/webhtb/setup/index.php

Será exibida a tela para configuração inicial idêntica ao Debian:
Linux: WebHTB - Controle de banda de internet
Lá, da mesma forma, informamos o usuário MySQL root, sua senha e a interface padrão. Feito isso enviamos a configuração clicando em Submit. Se tudo correu bem, estaremos na tela principal de login do WebHTB.

Após tudo ter funcionado corretamente, podemos excluir o diretório "setup/" do WebHTB por motivos de segurança.

A seguir é necessário inserir o script de inicialização do WebHTB no "init.d" para que ele seja executado a cada boot e incluir os módulos do kernel responsáveis pelo controle de banda:

# cp /var/www/html/webhtb/docs/webhtb /etc/init.d/webhtb
# chkconfig webhtb on

Ativamos os módulos do kernel para uso do WebHTB:

# modprobe sch_htb
# modprobe sch_sfq
# modprobe cls_u32

E incluímos os módulos do kernel para serem ativados no momento do boot editando o arquivo /etc/rc.d/rc.local e incluindo as linhas abaixo ao final do arquivo:

modprobe sch_htb
modprobe sch_sfq
modprobe cls_u32

A partir daí é só logar no WebHTB acessando: https://127.0.0.1/html/webhtb, usando a senha de root do sistema (e não a senha de root do MySQL) e inserir as regras de controle de banda das classes e dos usuários.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando o WebHTB no Debian
   3. Instalando o WebHTB no CentOS
   4. Instalando o WebHTB no Slackware
   5. Problemas (e soluções) encontrados
Outros artigos deste autor

DVDAuthor: Como autorar DVDs no Linux

Instalando Squid a partir do código fonte

Leitura recomendada

Configurando Zabbix Server no Debian

Instalando o Zabbix 2.4.3 em ambientes CentOS/RHEL 7

Criando RADIUS no Windows Server 2012 para autenticar no Mikrotik

MikroTik RouterOS 5.20 para provedores - Tutorial completo

Montagem de Cluster

  
Comentários
[1] Comentário enviado por stremenx em 16/02/2016 - 17:43h

Boa tarde, segui 100% sua dica mais está retornando assim quando tento entrar:
https://127.0.0.1/html/webhtb/setup/index.php

Sendo essa imagem do erro:
https://www.dropbox.com/s/ubt0npn1dy2jqzg/Screenshot.png?dl=0

Poderia me dar uma ajuda.

[2] Comentário enviado por ronaldomjunior em 17/02/2016 - 23:19h

Já verificou se o PHP está ativo? outra coisa, verifique se o SERVIDOR SSH também está ativo e configurado para iniciar automaticamente.

--
Ronaldo Moraes Junior
Divinópolis - MG

[3] Comentário enviado por stremenx em 18/02/2016 - 11:47h

Bom dia, achei o problema era php.ini onde deve ser alterado no Debian 8, /etc/php5/apache2/php.ini
Poderia me ajudar, tenho squid3 e dansguard tudo funcionado mais queria fazer controle de velocidade (Downloads e Update) como seria no meu caso pois não estou achando tutorial, pois tenho internet de 10 mg e queria quer todos tivesse apenas acesso a downloads até 200 kbps.

[4] Comentário enviado por ediwisa em 07/03/2016 - 17:34h

Boa Tarde, sou iniciante em linux e tambem aqui no forum.Gostaria de saber , se possivel , o que é necessario alterar no Debian 8, /etc/php5/apache2/php.ini para acessar a pagina de setup corretamente, pois estou com o mesmo problema que o amigo stremenx
estava.Obrigado!

[5] Comentário enviado por stremenx em 07/03/2016 - 20:13h

Boa noite, para alterar bastar alterar a permissão #chmod 777 /etc/php5/apache2/php.ini e basta abrir e salvar dentro somente "short_open_tag = on".

Mais eu recomendo você ir para pfsense é mais rápido se quiser somente squid, squidguard, dansguards e controle de banda, pois já vem mastigado seria melhor que debian.

[6] Comentário enviado por ediwisa em 08/03/2016 - 08:58h

Bom dia , consegui concluir o setup agora ,seguindo a dica do amigo stremenx.Tenho agora que fazer ele logar na pagina,pois ele esta dando o problema de ficar girando a animaçao do webhtb e não logou ainda.Já verifiquei a questão da porta do ssh, a qual não foi alterada.Vou tentar mais um pouco .Muito obrigado e que Deus os abençoe.

[7] Comentário enviado por stremenx em 08/03/2016 - 09:53h

Amigo basta seguir o ultimo passo para corrigir.

https://www.vivaolinux.com.br/artigo/WebHTB-Controle-de-banda-de-internet?pagina=5

Só que como você é iniciante recomendo você pegar o PfSense, muito mais fácil de configura, além de ser gratuito.

https://www.pfsense.org/

https://forum.pfsense.org/index.php?board=12.0

[8] Comentário enviado por ediwisa em 08/03/2016 - 19:17h

Boa noite , consegui colocar pra rodar o webhtb senguindo as dicas passadas.Fiz os testes e esta perfeito.Muito obrigado!

[9] Comentário enviado por nizopi em 11/06/2016 - 12:29h

Boa tarde pessoal, segui todo o tutorial e tudo tem dado certo, até o momento de logar no sistema, o mesmo fica parado na animação do login, mas já conferi a porta do SSH e está na 22, tbm adicionei o grupo de algoritmos no final do arquivo de configuração do SSH, mas tbm não resolveu, e outra duvida tbm é referente ao local /var/www/html, já que o mesmo já existe no sistema, até aí ok, o conteúdo está la em html/, mas na hora de abrir no navegador ele só abre se eu tirar o html e colocar direto http://127.0.0.1/webhtb/setup/index.php e não http://127.0.0.1/html/webhtb/setup/index.php, isso poderia estar influenciando no erro?

Estou usando o Debian 8 Jessie 3.16.0-4-686pae

Obg.

[10] Comentário enviado por nizopi em 11/06/2016 - 18:39h


[9] Comentário enviado por nizopi em 11/06/2016 - 12:29h

Boa tarde pessoal, segui todo o tutorial e tudo tem dado certo, até o momento de logar no sistema, o mesmo fica parado na animação do login, mas já conferi a porta do SSH e está na 22, tbm adicionei o grupo de algoritmos no final do arquivo de configuração do SSH, mas tbm não resolveu, e outra duvida tbm é referente ao local /var/www/html, já que o mesmo já existe no sistema, até aí ok, o conteúdo está la em html/, mas na hora de abrir no navegador ele só abre se eu tirar o html e colocar direto http://127.0.0.1/webhtb/setup/index.php e não http://127.0.0.1/html/webhtb/setup/index.php, isso poderia estar influenciando no erro?

Estou usando o Debian 8 Jessie 3.16.0-4-686pae

Obg.


Já resolvi esse problema, estava na configuração do SSH, só o caso de não iniciar com html que ainda resta dúvida, mas funcionou..

Agora o problema é outro, o webhtb só entra em ação se eu abrir a interface e clicar em "Start/Restart QOS", mesmo inserindo o script no init.d e mesmo adicionando os modulos como indicado no artigo, mas não inicia automaticamente, o que poderia ser?

Obg.

[11] Comentário enviado por ajsalmeida em 23/02/2017 - 14:47h

Olá. Consegui ir até o final, mas quando loga no webHTB ele entra no sistema e aparecem algumas imagens azuis e só.
Já tentei mudar o arquivo php.ini mas não deu resultado. Na verdade estou usando ubuntu server, eu sei eu sou meio maluco, mas
não posso usar o pfsense aqui. Alguma ideia de como resolver esse problema de não carregar tudo da página depois que loga?


Contribuir com comentário