Muitos vão dizer que não seria necessário explicar como instalar o WebHTB no
Slackware, já que ninguém merece sofrer tanto (hehe), mas como eu sou um dos que gostam de sofrer aprendendo com o Slackware, vamos ao que interessa.
A instalação padrão do Slackware já possui os aplicativos necessários para o funcionamento do WebHTB, de forma que precisamos apenas configurar alguns arquivos. Primeiramente, vamos habilitar os módulos SSL e PHP.
Editamos o arquivo
/etc/httpd/httpd.conf e descomentamos as linhas:
LoadModule ssl_module lib/httpd/modules/mod_ssl.so # linha 143 do arquivo original
include /etc/httpd/mod_php.conf # linha 527 do arquivo original
Salvamos o arquivo e saímos.
A seguir, geramos o certificado SSL da mesma forma que nas outras distros:
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/httpd/apache.pem -keyout /etc/httpd/apache.pem
Assim podemos iniciar o Apache e testar o servidor HTTP:
# /etc/rc.d/rc.httpd start
Feito isso, podemos testar acessando com o navegador:
https://127.0.0.1
A tela para examinar o certificado deve aparecer da mesma forma:
Agora vamos ativar o "short_open_tag" no "php.ini". Para isso vamos criar o arquivo "/etc/php/php.ini" e ativar a opção "short_open_tag". No Slackware, por padrão, o arquivo não existe, mas basta criá-lo e inserir a regra:
short_open_tag = on
Caso o MySQL não esteja sendo ativado durante o boot, alteramos a permissão do seu script de inicialização e iniciamos o serviço:
# chmod +x /etc/rc.d/rc.mysqld
# /etc/rc.d/rc.mysqld start
Caso o MySQL não esteja ainda sendo utilizado para outros fins, vamos realizar a instalação segura do MySQL e criar o banco de dados:
# mysql_secure_installation
Podemos escolher as mesmas opções: remover o usuário anônimo, bloquear login como root remotamente e remover a database "test". Feito isso, vamos logar no MySQL e criar o banco de dados:
# 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
Até aqui tudo até mais fácil do que nas outras distros... mas, se não tivéssemos alguns problemas, não seria Slackware.
Por padrão, o MariaDB server (servidor MySQL presente no Slackware) vem com a opção "skip-networking" ativada, o que faz com se sejam aceitas apenas conexões do host loopback.
O problema é que nos scripts do WebHTB, ele conecta através do IP 127.0.0.1 que, teoricamente, é a mesma coisa porém, tecnicamente falando, a conexão pelo loopback é feita através de socket, enquanto 127.0.0.1 é feita pela network. Ou seja, precisamos desativar o "skip-networking" ou abrir arquivo por arquivo do WebHTB e trocar onde aparece "127.0.0.1" por "loopback". Eu testei as duas maneiras e foi bem mais fácil a segunda opção. ;)
Para isso, editamos o arquivo
/etc/rc.d/rc.mysqld e comentamos a seguinte linha:
SKIP="--skip-networking"
Está exatamente na linha 32 do arquivo.
Agora instalamos o WebHTB:
# cd /var/www/htdocs
# wget -c http://sourceforge.net/projects/webhtb/files/WebHTB%20V2.xx/WebHTB_V2.9/WebHTB_V2.9.bz2
# tar jxvf WebHTB_V2.9.bz2
Obs.: o diretório padrão do Apache no Slack é o "/var/www/htdocs", cuidado para não confundir!
Se você chegou "vivo" até aqui, você já está a um passo de ser seduzido pelo "lado negro da força"...
Para funcionar corretamente no Slackware, teremos que editar manualmente alguns arquivos do WebHTB. Isso se faz necessário, pois o WebHTB utiliza alguns comandos nativos do sistema e, mais especificamente o "ifconfig" do Slackware tem uma saída ligeiramente diferente do Debian ou CentOS, o que gera um comportamento inesperado, causando erros.
O primeiro arquivo a editarmos é o
/var/www/htdocs/webhtb/setup/index.php. Exatamente na linha 64 temos:
$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1`');
Alteraremos e deixaremos da seguinte forma:
$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1|'.$cut.' -d":" -f1`');
O segundo arquivo a editarmos é o
/var/www/htdocs/webhtb/interfaces.php. Exatamente na linha 58, faremos A MESMA ALTERAÇÃO:
$string = shell_exec($echo.' `'.$ifconfig.' |'.$grep' " "|'.$cut.' -d" " -f1|'.$cut.' -d":" -f1`');
Feito isso, podemos acessar o setup do WebHTB:
https://127.0.0.1/webhtb/setup/index.php
Colocamos a senha do MySQL e escolhemos a interface padrão e clicamos em "Submit".
Antes de terminar, é necessário inserir o script de inicialização do WebHTB no "rc.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/htdocs/webhtb/docs/webhtb /etc/rc.d/rc.webhtb
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
Mais uma alteração que se faz necessária é no script de inicialização do WebHTB. Por padrão, ele procura pelos arquivos do WebHTB no diretório
/var/www/html, no entanto, no Slackware, o apache coloca os arquivos em
/var/www/htdocs.
Para isso, basta editarmos o arquivo
/etc/rc.d/rc.webhtb e na linha 6 alterarmos:
dir="/var/www/html/webhtb"
Para:
dir="/var/www/htdocs/webhtb"
Feito isso, vamos colocá-lo para funcionar:
# /etc/rc.d/rc.webhtb start
E agora, podemos acessar a interface web através do endereço:
https://127.0.0.1/webhtb/index.php
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. Se o login ocorrer corretamente, cairemos na tela de administração do WebHTB: