Servidor Debian · 24 min read · Nov 03, 2025

O Servidor Perfeito - Debian 10 (Buster) com Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.2

Este tutorial mostra como preparar um servidor Debian 10 (com Apache2, BIND, Dovecot) para a instalação do ISPConfig 3.2, e como instalar o ISPConfig. O painel de controle de hospedagem na web ISPConfig 3 permite que você configure os seguintes serviços através de um navegador web: servidor web Apache ou nginx, servidor de e-mail Postfix, servidor IMAP/POP3 Courier ou Dovecot, MySQL, servidor de nomes BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, e muito mais. Esta configuração cobre Apache (em vez de nginx), BIND e Dovecot.

1 Nota Preliminar

Neste tutorial, usarei o nome do host server1.example.com com o endereço IP 192.168.0.100 e o gateway 192.168.0.1. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado. Antes de prosseguir, você precisa ter uma instalação mínima do Debian 10. Isso pode ser uma imagem mínima do Debian do seu provedor de hospedagem ou você pode usar o tutorial do Servidor Debian Mínimo para configurar o sistema base.

Todos os comandos abaixo são executados como usuário root. Faça login como usuário root diretamente ou faça login como seu usuário normal e depois use o comando

su -

para se tornar usuário root em seu servidor antes de prosseguir. IMPORTANTE: Você deve usar ‘su -‘ e não apenas ‘su’, caso contrário, sua variável PATH será configurada incorretamente pelo Debian.

2 Instalar o servidor SSH (Opcional)

Se você não instalou o servidor OpenSSH durante a instalação do sistema, você pode fazê-lo agora:

apt-get install ssh openssh-server

A partir de agora, você pode usar um cliente SSH como o PuTTY e conectar-se do seu workstation ao seu servidor Debian 9 e seguir os passos restantes deste tutorial.

3 Instalar um editor de texto de shell (Opcional)

Usaremos o editor de texto nano neste tutorial. Alguns usuários preferem o editor vi clássico, portanto, instalaremos ambos os editores aqui. O programa vi padrão tem um comportamento estranho no Debian e Ubuntu; para corrigir isso, instalamos vim-nox:

apt-get install nano vim-nox

Se vi é seu editor favorito, então substitua nano por vi nos seguintes comandos para editar arquivos.

4 Configurar o Nome do Host

O nome do host do seu servidor deve ser um subdomínio como “server1.example.com”. Não use um nome de domínio sem a parte do subdomínio como “example.com” como nome do host, pois isso causará problemas mais tarde com sua configuração de e-mail. Primeiro, você deve verificar o nome do host em /etc/hosts e alterá-lo quando necessário. A linha deve ser: “Endereço IP - espaço - nome do host completo incluindo domínio - espaço - parte do subdomínio”. Para nosso nome do host server1.example.com, o arquivo deve parecer com isso:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# As linhas a seguir são desejáveis para hosts compatíveis com IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Em seguida, edite o arquivo /etc/hostname:

nano /etc/hostname

Deve conter apenas a parte do subdomínio, no nosso caso:

server1

Finalmente, reinicie o servidor para aplicar a alteração:

systemctl reboot

Faça login novamente e verifique se o nome do host está correto agora com estes comandos:

hostname  
hostname -f

A saída deve ser assim:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Atualize sua Instalação do Debian

Primeiro, certifique-se de que seu /etc/apt/sources.list contém o repositório buster/updates (isso garante que você sempre receba as atualizações de segurança mais recentes), e que os repositórios contrib e non-free estão habilitados, pois alguns pacotes necessários não estão no repositório principal.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free  
deb-src http://deb.debian.org/debian/ buster main contrib non-free  
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free  
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Execute:

apt-get update

Para atualizar o banco de dados de pacotes apt

apt-get upgrade

e para instalar as atualizações mais recentes (se houver).

6. Mudar o Shell Padrão

/bin/sh é um link simbólico para /bin/dash, no entanto, precisamos de /bin/bash, não /bin/dash. Portanto, fazemos isso:

dpkg-reconfigure dash

Usar dash como o shell padrão do sistema (/bin/sh)? <– Não

Se você não fizer isso, a instalação do ISPConfig falhará.

7 Sincronizar o Relógio do Sistema

É uma boa ideia sincronizar o relógio do sistema com um servidor NTP ( n etwork t ime p rotocol) pela Internet. Simplesmente execute

apt-get -y install ntp

e seu horário do sistema estará sempre em sincronia.

8 Instalar Postfix, Dovecot, MariaDB, rkhunter e Binutils

Podemos instalar Postfix, Dovecot, MariaDB como alternativa ao MySQL, rkhunter e Binutils com um único comando:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

Você será solicitado a responder às seguintes perguntas:

Tipo geral de configuração de e-mail: <– Internet Site
Nome do sistema de e-mail: <– server1.example.com

Para garantir a instalação do MariaDB e desativar o banco de dados de teste, execute este comando:

mysql_secure_installation

Responda às perguntas da seguinte forma:

Alterar a senha root? [Y/n] <-- y  
Nova senha: <-- Digite uma nova senha root do MariaDB  
Repetir nova senha: <-- Repita a senha root do MariaDB  
Remover usuários anônimos? [Y/n] <-- y  
Desabilitar login remoto do root? [Y/n] <-- y  
Remover banco de dados de teste e acesso a ele? [Y/n] <-- y  
Recarregar tabelas de privilégios agora? [Y/n] <-- y

Em seguida, abra as portas TLS/SSL e de envio no Postfix:

nano /etc/postfix/master.cf

Descomente as seções de envio e smtps da seguinte forma e adicione linhas onde necessário para que esta seção do arquivo master.cf fique exatamente como a abaixo. IMPORTANTE: Remova o # na frente das linhas que começam com smtps e envio também e não apenas das linhas -o após essas linhas!

[...]
submission inet n - - - - smtpd  
 -o syslog_name=postfix/submission  
 -o smtpd_tls_security_level=encrypt  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
smtps inet n - - - - smtpd  
 -o syslog_name=postfix/smtps  
 -o smtpd_tls_wrappermode=yes  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

Reinicie o Postfix em seguida:

systemctl restart postfix

Queremos que o MySQL escute em todas as interfaces, não apenas no localhost. Portanto, editamos /etc/mysql/mariadb.conf.d/50-server.cnf e comentamos a linha bind-address = 127.0.0.1 adicionando um # na frente dela.

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Em vez de skip-networking, o padrão agora é escutar apenas em
# localhost, que é mais compatível e não é menos seguro.
#bind-address           = 127.0.0.1  
[...]

Defina o método de autenticação de senha no MariaDB como nativo para que possamos usar o PHPMyAdmin mais tarde para conectar como usuário root:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Edite o arquivo /etc/mysql/debian.cnf e defina a senha root do MYSQL / MariaDB lá duas vezes nas linhas que começam com a palavra senha.

nano /etc/mysql/debian.cnf

A senha root do MySQL que precisa ser adicionada é mostrada em vermelho. Neste exemplo, a senha é “howtoforge”.

# Gerado automaticamente para scripts Debian. NÃO TOQUE!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Para evitar o erro ‘ Erro ao aceitar: Muitos arquivos abertos ‘, definiremos limites de arquivos abertos mais altos para o MariaDB agora.

Abra o arquivo /etc/security/limits.conf com um editor:

nano /etc/security/limits.conf

e adicione estas linhas no final do arquivo.

mysql soft nofile 65535  
mysql hard nofile 65535

Em seguida, crie um novo diretório /etc/systemd/system/mysql.service.d/ com o comando mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

e adicione um novo arquivo dentro:

nano /etc/systemd/system/mysql.service.d/limits.conf

cole as seguintes linhas nesse arquivo:

[Service]  
LimitNOFILE=infinity

Salve o arquivo e feche o editor nano.

Em seguida, recarregamos o systemd e reiniciamos o MariaDB:

systemctl daemon-reload  
systemctl restart mariadb

Agora verifique se a rede está habilitada. Execute

netstat -tap | grep mysql

A saída deve ser assim:

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Instalar Amavisd-new, SpamAssassin e ClamAV

Para instalar amavisd-new, SpamAssassin e ClamAV, executamos

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

A configuração do ISPConfig 3 usa amavisd que carrega a biblioteca de filtro SpamAssassin internamente, então podemos parar o SpamAssassin para liberar um pouco de RAM:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Instalar o Servidor Web Apache e PHP

Apache2, PHP, FCGI, suExec, Pear e mcrypt podem ser instalados da seguinte forma:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

Em seguida, execute o seguinte comando para habilitar os módulos do Apache suexec, rewrite, ssl, actions e include (mais dav, dav_fs e auth_digest se você quiser usar WebDAV):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Para garantir que o servidor não possa ser atacado através da vulnerabilidade HTTPOXY, desabilitaremos o cabeçalho HTTP_PROXY no apache globalmente adicionando o arquivo de configuração /etc/apache2/conf-available/httpoxy.conf.

*Nota: A vulnerabilidade é chamada httpoxy (sem ‘r’) e, portanto, o arquivo onde adicionamos a configuração para preveni-la é chamado httpoxy.conf e não httproxy.conf, então não há ‘r’ faltando no nome do arquivo.*

nano /etc/apache2/conf-available/httpoxy.conf

Cole o seguinte conteúdo no arquivo:


    RequestHeader unset Proxy early

E habilite o módulo executando:

a2enconf httpoxy  
systemctl restart apache2

11 Instalar Let’s Encrypt

O ISPConfig está usando acme.sh agora como cliente Let’s Encrypt. Instale acme.sh usando o seguinte comando:

curl https://get.acme.sh | sh -s

12 Instalar Mailman

O ISPConfig permite que você gerencie (crie/modifique/exclua) listas de discussão do Mailman. Se você quiser usar esse recurso, instale o Mailman da seguinte forma:

apt-get install mailman

Selecione pelo menos um idioma, por exemplo:

Idiomas a serem suportados: <-- en (Inglês)  
Lista de sites ausentes <-- Ok

Antes que possamos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:

newlist mailman
root@server1:~# newlist mailman  
Digite o e-mail da pessoa que está executando a lista: <-- endereço de e-mail do admin, por exemplo, [email protected]  
Senha inicial do mailman: <-- senha do admin para a lista do mailman  
Para terminar de criar sua lista de discussão, você deve editar seu /etc/aliases (ou  
arquivo equivalente) adicionando as seguintes linhas, e possivelmente executando o  
programa `newaliases`:  
  
## lista de discussão mailman  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"  
  
Pressione enter para notificar o proprietário do mailman... <-- ENTER  
  
root@server1:~#

Abra /etc/aliases depois…

nano /etc/aliases

… e adicione as seguintes linhas:

[...]
## lista de discussão mailman
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Execute:

newaliases

e reinicie o Postfix:

systemctl restart postfix

Finalmente, devemos habilitar a configuração do Apache do Mailman:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Isso define o alias /cgi-bin/mailman/ para todos os vhosts do Apache, o que significa que você pode acessar a interface de administração do Mailman para uma lista em http://server1.example.com/cgi-bin/mailman/admin/, e a página da web para usuários de uma lista de discussão pode ser encontrada em http://server1.example.com/cgi-bin/mailman/listinfo/.

Em http://server1.example.com/pipermail você pode encontrar os arquivos da lista de discussão.

Reinicie o Apache depois:

systemctl restart apache2

Então inicie o daemon do Mailman:

systemctl restart mailman

13 Instalar PureFTPd e Quota

PureFTPd e quota podem ser instalados com o seguinte comando:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Crie o arquivo dhparam para pure-ftpd:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Edite o arquivo /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… e certifique-se de que o modo de início esteja definido como standalone e defina VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Agora configuramos o PureFTPd para permitir sessões FTP e TLS. FTP é um protocolo muito inseguro porque todas as senhas e todos os dados são transferidos em texto claro. Ao usar TLS, toda a comunicação pode ser criptografada, tornando o FTP muito mais seguro.

Se você quiser permitir sessões FTP e TLS, execute

echo 1 > /etc/pure-ftpd/conf/TLS

Para usar TLS, devemos criar um certificado SSL. Eu o crio em /etc/ssl/private/, portanto, primeiro crio esse diretório:

mkdir -p /etc/ssl/private/

Depois, podemos gerar o certificado SSL da seguinte forma:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: <-- Digite o nome do seu país (por exemplo, "DE").  
State or Province Name (full name) [Some-State]: <-- Digite o nome do seu estado ou província.  
Locality Name (eg, city) []: <-- Digite sua cidade.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Digite o nome da sua organização (por exemplo, o nome da sua empresa).  
Organizational Unit Name (eg, section) []: <-- Digite o nome da sua unidade organizacional (por exemplo, "Departamento de TI").  
Common Name (eg, YOUR name) []: <-- Digite o Nome de Domínio Totalmente Qualificado do sistema (por exemplo, "server1.example.com").  
Email Address []: <-- Digite seu endereço de e-mail.

Altere as permissões do certificado SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Então reinicie o PureFTPd:

systemctl restart pure-ftpd-mysql

Edite /etc/fstab. O meu se parece com isso (adicionei,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à partição com o ponto de montagem /):

nano /etc/fstab
# /etc/fstab: informações estáticas do sistema de arquivos.  
#  
# Use 'blkid' para imprimir o identificador universalmente único para um  
# dispositivo; isso pode ser usado com UUID= como uma maneira mais robusta de nomear dispositivos  
# que funciona mesmo se discos forem adicionados e removidos. Veja fstab(5).  
#  
#        
# / estava em /dev/sda1 durante a instalação  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap estava em /dev/sda5 durante a instalação  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Para habilitar quota, execute estes comandos:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 Instalar o Servidor DNS BIND

O BIND pode ser instalado da seguinte forma:

apt-get install bind9 dnsutils

Se o seu servidor for uma máquina virtual, é altamente recomendável instalar o daemon haveged para obter uma maior entropia para a assinatura DNSSEC. Você pode instalar o haveged em servidores não virtuais também, não deve causar problemas.

apt-get install haveged

Uma explicação sobre esse tópico pode ser encontrada aqui.

15 Instalar Webalizer, AWStats e GoAccess

Webalizer e AWStats podem ser instalados da seguinte forma:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Abra /etc/cron.d/awstats depois…

nano /etc/cron.d/awstats

… e comente tudo nesse arquivo:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Gerar relatórios estáticos:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Instalando a versão mais recente do GoAccess diretamente do repositório GoAccess:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list  
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -  
apt-get update  
apt-get install goaccess

16 Instalar Jailkit

O Jailkit é necessário apenas se você quiser chroot usuários SSH. Ele pode ser instalado da seguinte forma:

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

Agora você pode instalar o pacote Jailkit.deb da seguinte forma:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 Instalar fail2ban e UFW Firewall

Isso é opcional, mas recomendado, porque o monitor do ISPConfig tenta mostrar o log:

apt-get install fail2ban

Para fazer o fail2ban monitorar o PureFTPd e o Dovecot, crie o arquivo /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

E adicione a seguinte configuração a ele.

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix[mode=auth]  
logpath = /var/log/mail.log  
maxretry = 3

Reinicie o fail2ban em seguida:

systemctl restart fail2ban

Para instalar o firewall UFW, execute este comando apt:

apt-get install ufw

18 Instalar a Ferramenta de Administração de Banco de Dados PHPMyAdmin

Desde o Debian 10, o PHPMyAdmin não está mais disponível como pacote .deb. Portanto, o instalaremos a partir da fonte.

Crie pastas para o PHPMyadmin:

mkdir /usr/share/phpmyadmin  
mkdir /etc/phpmyadmin  
mkdir -p /var/lib/phpmyadmin/tmp  
chown -R www-data:www-data /var/lib/phpmyadmin  
touch /etc/phpmyadmin/htpasswd.setup

Vá para o diretório /tmp e baixe as fontes do PHPMyAdmin:

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Descompacte o arquivo de archive baixado e mova os arquivos para a pasta /usr/share/phpmyadmin e limpe o diretório /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz  
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/  
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz  
rm -rf phpMyAdmin-4.9.0.1-all-languages

Crie um novo arquivo de configuração para o PHPMyaAdmin com base no arquivo de amostra fornecido:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Abra o arquivo de configuração com o editor nano:

nano /usr/share/phpmyadmin/config.inc.php

Defina uma senha segura (segredo blowfish) que deve ter 32 caracteres de comprimento:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* VOCÊ DEVE PREENCHER ISSO PARA AUTENTICAÇÃO DE COOKIE! */

Não use meu exemplo de segredo blowfish, defina o seu próprio!

Em seguida, adicione uma linha para definir o diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Em seguida, criamos o arquivo de configuração do Apache para o PHPMyAdmin abrindo um novo arquivo no editor nano:

nano /etc/apache2/conf-available/phpmyadmin.conf

Cole a seguinte configuração no arquivo e salve-o.

# configuração padrão do Apache para o phpMyAdmin  
  
Alias /phpmyadmin /usr/share/phpmyadmin  
  
  
 Options FollowSymLinks  
 DirectoryIndex index.php  
  
   
 AddType application/x-httpd-php .php  
  
 php_flag magic_quotes_gpc Off  
 php_flag track_vars On  
 php_flag register_globals Off  
 php_value include_path .  
   
  
  
  
# Autorizar para configuração  
  
   
 AuthType Basic  
 AuthName "Configuração do phpMyAdmin"  
 AuthUserFile /etc/phpmyadmin/htpasswd.setup  
   
 Require valid-user  
  
  
# Proibir acesso web a diretórios que não precisam  
  
 Order Deny,Allow  
 Deny from All  
  
  
 Order Deny,Allow  
 Deny from All  

Ative a configuração e reinicie o Apache.

a2enconf phpmyadmin  
systemctl restart apache2

No próximo passo, configuraremos o armazenamento de configuração do phpMyadmin (banco de dados).

Faça login no MariaDB como usuário root:

mysql -u root -p

No shell do MariaDB, crie um novo banco de dados para o PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Em seguida, crie um novo usuário:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Substitua a palavra mypassword por uma senha segura de sua escolha nos comandos acima e abaixo, use a mesma senha duas vezes. Em seguida, conceda ao usuário acesso a este banco de dados e recarregue as permissões do banco de dados.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT;

Finalmente, carregue as tabelas SQL no banco de dados:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Digite a senha root do MariaDB quando solicitado.

Tudo o que precisamos fazer agora é definir os detalhes do usuário phpmyadmin no arquivo de configuração. Abra o arquivo no editor nano novamente:

nano /usr/share/phpmyadmin/config.inc.php

Role para baixo até ver as linhas abaixo e edite-as:

/* Usuário usado para manipular o armazenamento */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* Banco de dados e tabelas de armazenamento */  
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';  
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';  
$cfg['Servers'][$i]['relation'] = 'pma__relation';  
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';  
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';  
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';  
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';  
$cfg['Servers'][$i]['history'] = 'pma__history';  
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';  
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';  
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';  
$cfg['Servers'][$i]['recent'] = 'pma__recent';  
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';  
$cfg['Servers'][$i]['users'] = 'pma__users';  
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';  
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';  
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';  
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';  
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';  
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Marquei as linhas em vermelho que editei. Substitua mypassword pela senha que você escolheu para o usuário phpmyadmin. Note que os // na frente das linhas foram removidos também!

19 Instalar RoundCube Webmail (opcional)

Neste capítulo, instalaremos o cliente webmail RoundCube. Primeiro, precisamos criar o banco de dados para o Roundcube manualmente, pois atualmente há um problema no instalador do RoundCube Debian que faz com que ele falhe ao criar o banco de dados automaticamente. Execute este comando para criar o banco de dados:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Em seguida, instale o RoundCube com este comando:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

O instalador fará as seguintes perguntas:

Configurar banco de dados para roundcube com dbconfig.common? <-- sim  
Senha da aplicação MySQL para roundcube: <-- pressione enter

Em seguida, edite o arquivo /etc/roundcube/config.inc.php e ajuste algumas configurações:

nano /etc/roundcube/config.inc.php

Defina o default_host como localhost e o smtp_server.

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

Em seguida, edite o arquivo de configuração do Apache RoundCube /etc/apache2/conf-enabled/roundcube.conf:

nano /etc/apache2/conf-enabled/roundcube.conf

E adicione uma linha de alias para o apache /webmail e uma para /roundcube, você pode adicionar a linha logo no início do arquivo. NOTA: Não use /mail como alias ou o módulo de e-mail do ispconfig deixará de funcionar!

Alias /roundcube /var/lib/roundcube  
Alias /webmail /var/lib/roundcube

Em seguida, recarregue o Apache:

systemctl reload apache2

Agora você pode acessar o RoundCube da seguinte forma:

http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (depois que você instalou o ISPConfig, veja o próximo capítulo)

Existem alguns plugins para integrar o RoundCube Webmail com o ISPConfig, dê uma olhada aqui para as instruções de instalação do plugin RoundCube do ISPConfig.

20 Baixar ISPConfig 3

20 Baixar a versão estável do ISPConfig (recomendado)

Para instalar o ISPConfig 3 a partir da versão mais recente lançada, faça isso:

cd /tmp  
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

21 Instalar ISPConfig

O próximo passo é executar o instalador do ISPConfig.

php -q install.php

Isso iniciará o instalador do ISPConfig 3. O instalador configurará todos os serviços como Postfix, Dovecot, etc. para você. Uma configuração manual, como era necessária para o ISPConfig 2 (guias de configuração perfeitas), não é necessária.

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
  
>> Configuração inicial
Sistema Operacional: Debian 10.0 (Buster) ou compatível
A seguir, algumas perguntas para configuração primária, então tenha cuidado.  
Os valores padrão estão entre [colchetes] e podem ser aceitos com .  
Digite "quit" (sem as aspas) para parar o instalador.
  
Selecione o idioma (en,de) [en]: <-- Pressione Enter
Modo de instalação (padrão, especialista) [padrão]: <-- Pressione Enter
Nome do host totalmente qualificado (FQDN) do servidor, por exemplo, server1.domain.tld [server1.example.com]: <-- Pressione Enter
Nome do host do servidor MySQL [localhost]: <-- Pressione Enter
Porta do servidor MySQL [3306]: <-- Pressione Enter
Nome de usuário root do MySQL [root]: <-- Pressione Enter
Senha root do MySQL []: <-- Digite sua senha root do MySQL
Banco de dados MySQL a ser criado [dbispconfig]: <-- Pressione Enter
Charset MySQL [utf8]: <-- Pressione Enter
Configurando Postgrey  
Configurando Postfix  
Gerando uma chave privada RSA de 4096 bits  
.......................................................................++  
........................................................................................................................................++  
es é 65537 (0x10001)  
Você está prestes a ser solicitado a inserir informações que serão incorporadas  
no seu pedido de certificado.  
O que você está prestes a inserir é o que é chamado de Nome Distinto ou DN.  
Existem muitos campos, mas você pode deixar alguns em branco  
Para alguns campos, haverá um valor padrão,  
Se você digitar '.', o campo ficará em branco.  
-----  
Código do Nome do País (2 letras) [AU]: <-- Digite o código do seu país de 2 letras  
Nome do Estado ou Província (nome completo) [Some-State]: <-- Digite o nome do estado  
Nome da Localidade (por exemplo, cidade) []: <-- Digite sua cidade  
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <-- Digite o nome da sua empresa ou pressione enter  
Nome da Unidade Organizacional (por exemplo, seção) []: <-- Pressione Enter  
Nome Comum (por exemplo, FQDN do servidor ou SEU nome) []: <-- Digite o nome do host do servidor, no meu caso: server1.example.com  
Endereço de E-mail []: <-- Pressione Enter  
Configurando Mailman  
Configurando Dovecot  
Configurando Spamassassin  
Configurando Amavisd  
Configurando Getmail  
Configurando BIND  
Configurando Jailkit  
Configurando Pureftpd  
Configurando Apache  
Configurando vlogger  
[INFO] serviço Metronome XMPP Server não detectado  
Configurando Firewall do Ubuntu  
Configurando Fail2ban  
[INFO] serviço OpenVZ não detectado  
Configurando vhost de Apps  
Instalando ISPConfig  
Porta do ISPConfig [8080]:
Senha do admin [admin]:
Você deseja uma conexão segura (SSL) à interface web do ISPConfig (y,n) [y]: <-- Pressione Enter
Gerando chave privada RSA, 4096 bits de comprimento  
.......................++  
................................................................................................................................++  
es é 65537 (0x10001)  
Você está prestes a ser solicitado a inserir informações que serão incorporadas  
no seu pedido de certificado.  
O que você está prestes a inserir é o que é chamado de Nome Distinto ou DN.  
Existem muitos campos, mas você pode deixar alguns em branco  
Para alguns campos, haverá um valor padrão,  
Se você digitar '.', o campo ficará em branco.  
-----  
Código do Nome do País (2 letras) [AU]: <-- Digite o código do seu país de 2 letras  
Nome do Estado ou Província (nome completo) [Some-State]: <-- Digite o nome do estado  
Nome da Localidade (por exemplo, cidade) []: <-- Digite sua cidade  
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <-- Digite o nome da sua empresa ou pressione enter  
Nome da Unidade Organizacional (por exemplo, seção) []: <-- Pressione Enter  
Nome Comum (por exemplo, FQDN do servidor ou SEU nome) []: <-- Digite o nome do host do servidor, no meu caso: server1.example.com  
Endereço de E-mail []: <-- Pressione Enter
Por favor, insira os seguintes atributos 'extras'  
que serão enviados com seu pedido de certificado  
Uma senha de desafio []: <-- Pressione Enter  
Um nome de empresa opcional []: <-- Pressione Enter  
gravando chave RSA
  
Configurando DBServer  
Instalando crontab do ISPConfig  
não há crontab para root  
não há crontab para getmail  
Detectando endereços IP  
Reiniciando serviços ...  
Instalação concluída.

O instalador configura automaticamente todos os serviços subjacentes, portanto, nenhuma configuração manual é necessária.

Depois, você pode acessar o ISPConfig 3 em http(s)://server1.example.com:8080/ ou http(s)://192.168.0.100:8080/ (http ou https depende do que você escolheu durante a instalação). Faça login com o nome de usuário admin e a senha admin (você deve alterar a senha padrão após seu primeiro login):

Login do ISPConfig no Debian 10

Dashboard do ISPConfig no Debian 10

O sistema agora está pronto para ser usado.

21.1 Manual do ISPConfig 3

Para aprender a usar o ISPConfig 3, recomendo fortemente baixar o Manual do ISPConfig 3.

Em mais de 300 páginas, ele cobre o conceito por trás do ISPConfig (admin, revendedores, clientes), explica como instalar e atualizar o ISPConfig 3, inclui uma referência para todos os formulários e campos de formulário no ISPConfig juntamente com exemplos de entradas válidas, e fornece tutoriais para as tarefas mais comuns no ISPConfig 3. Também descreve como tornar seu servidor mais seguro e vem com uma seção de solução de problemas no final.

22 Download da Imagem da Máquina Virtual deste Tutorial

Este tutorial está disponível como uma imagem de máquina virtual pronta para uso no formato ovf/ova que é compatível com VMWare e Virtualbox. A imagem da máquina virtual usa os seguintes detalhes de login:

Login SSH / Shell

Nome de usuário: administrador
Senha: howtoforge

Nome de usuário: root
Senha: howtoforge

Login do ISPConfig

Nome de usuário: admin
Senha: admin

Login do MySQL

Nome de usuário: root
Senha: howtoforge

O IP da VM é 192.168.0.100, pode ser alterado no arquivo /etc/network/interfaces. Por favor, altere todas as senhas acima para proteger a máquina virtual.

23 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.