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:
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:
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.