Servidor Virtual · 12 min read · Dec 17, 2025

Ambiente Virtual Multiserver Com Servidores Dedicados de Web & MySQL, Email & DNS No Debian Squeeze Com ISPConfig 3 - Página 2

5 Criando Os Servidores Virtuais

Agora usaremos o Painel Web OVZ para criar nossos servidores virtuais. Faça login no painel e adicione seus IPs em Endereços IP. Em seguida, clique em localhost e Modelos de SO.

Agora precisamos baixar um modelo para nossos servidores virtuais. Fazemos isso clicando em Instalar Novo Modelo de SO -> Contribuído e selecionamos debian-6.0-amd64-minimal.

Agora volte para localhost e clique em Criar servidor virtual. Preencha os campos conforme abaixo:

  • ID do Servidor (VEID): um número (eu escolheria a última parte do seu IP, então 2 para o primeiro)
  • Modelo de SO: já selecionado o correto
  • Modelo de Servidor: ilimitado
  • Endereço IP: 192.168.1.2
  • Nome do Host: web.example.tld
  • Servidor DNS: 8.8.4.4 8.8.8.8 (que são os DNS do Google)
  • deixe o resto como está e atribua Espaço em Disco, RAM e CPU como desejar…

Repita esta etapa para todos os seus servidores virtuais (finalmente 4 vezes: Web, Mail, 2x DNS).

5.1 Preparando Os Servidores Virtuais

Agora você deve fazer login em cada servidor virtual e executar estes comandos:

apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate

que irá atualizá-los para a versão mais recente e instalar alguns pacotes ausentes.

6 Instalando Os Servidores Dedicados

6.1 Instalando O Servidor Web/DB

Edite o arquivo hosts e adicione os endereços IP e nomes de host para todos os servidores. Os nomes de host e endereços IP devem ser ajustados para corresponder à sua configuração.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# As linhas a seguir são desejáveis para hosts compatíveis com IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Defina o nome do host do servidor:

echo web.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Instale o servidor MySQL. Uma instância do servidor MySQL é necessária em cada servidor, pois o ISPConfig a utiliza para sincronizar a configuração entre os servidores.

apt-get -y install mysql-client mysql-server

Digite a nova senha para o MySQL quando solicitado pelo instalador.

Queremos que o MySQL escute em todas as interfaces no servidor mestre, não apenas em localhost, portanto, editamos /etc/mysql/my.cnf e comentamos a linha bind-address = 127.0.0.1:

nano /etc/mysql/my.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
[...]  

Em seguida, reinicie o MySQL:

/etc/init.d/mysql restart

Agora instale Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt da seguinte forma:

apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo zip wget

Você verá a seguinte pergunta:

Servidor web para reconfigurar automaticamente: <– apache2

Em seguida, execute o seguinte comando para habilitar os módulos do Apache suexec, rewrite, ssl, actions, headers, expires e include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest headers expires

PureFTPd pode ser instalado com o seguinte comando:

apt-get -y install pure-ftpd-common pure-ftpd-mysql

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

vi /etc/default/pure-ftpd-common

… e certifique-se de que virtualchroot está definido como VIRTUALCHROOT=true:

[...]  
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

Nome do País (código de 2 letras) [AU]: <– Digite o Nome do Seu País (por exemplo, “DE”).
Nome do Estado ou Província (nome completo) [Some-State]: <– Digite o Nome do Seu Estado ou Província.
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 Organização (por exemplo, o nome da sua empresa).
Nome da Unidade Organizacional (por exemplo, seção) []: <– Digite o Nome da Sua Unidade Organizacional (por exemplo, “Departamento de TI”).
Nome Comum (por exemplo, SEU nome) []: <– Digite o Nome de Domínio Totalmente Qualificado do sistema (por exemplo, “web.example.tld”).
Endereço de Email []: <– Digite Seu Endereço de Email.

Altere as permissões do certificado SSL:

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

Instale vlogger, webalizer e awstats:

apt-get -y install vlogger webalizer awstats

Abra /etc/cron.d/awstats depois…

vi /etc/cron.d/awstats

… e comente ambas as tarefas cron nesse arquivo:

#*/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

Instale Jailkit: Jailkit é necessário apenas se você quiser chroot usuários SSH. Pode ser instalado da seguinte forma (importante: Jailkit deve ser instalado antes do ISPConfig - não pode ser instalado depois!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit2.14-1.deb
rm -rf jailkit-2.14

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

apt-get install fail2ban

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

vi /etc/fail2ban/jail.local

[pureftpd]

enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

Em seguida, crie o seguinte arquivo de filtro:

vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

Reinicie o fail2ban depois:

/etc/init.d/fail2ban restart

Em seguida, instalaremos o ISPConfig 3. Para obter a URL de download da versão estável mais recente do ISPConfig 3, visite o site do ISPConfig: http://www.ispconfig.org/ispconfig-3/download/

Este servidor é o servidor mestre em nossa configuração que executa a interface do painel de controle ISPConfig. Para permitir que as outras instâncias do MySQL se conectem ao banco de dados MySQL neste nó durante a instalação, precisamos adicionar registros de usuário root do MySQL no banco de dados mestre para cada nome de host e endereço IP do servidor escravo. A maneira mais fácil de fazer isso é usar a ferramenta de administração baseada na web phpmyadmin que já instalamos. Abra a URL http://192.168.1.2/phpmyadmin em um navegador da web, faça login como usuário root do MySQL e execute estas consultas MySQL:

CREATE USER ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Nos comandos sql acima, substitua os endereços IP (192.168.1.3 - 192.168.1.5) pelos endereços IP dos seus servidores e substitua mail.example.tld, ns1.example.tld e ns2.example.tld pelos nomes de host dos seus servidores e myrootpassword pela senha root desejada.

Clique no botão de recarregar permissões ou reinicie o MySQL. Em seguida, feche o phpmyadmin.

Volte para o shell de web.example.tld e baixe a versão estável mais recente do ISPConfig 3:

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

Em seguida, inicie o script de instalação:

php -q install.php

Selecione o idioma (en,de) [en]: <– en
Modo de instalação (padrão, especialista) [padrão]: <– especialista
Nome do host totalmente qualificado (FQDN) do servidor, por exemplo, server2.domain.tld [web.example.tld]: <– web.example.tld
Nome do host do servidor MySQL [localhost]: <– localhost
Nome de usuário root do MySQL [root]: <– root
Senha root do MySQL []: <– Digite sua senha root do MySQL aqui
Banco de dados MySQL a ser criado [dbispconfig]: <– dbispconfig
Charset MySQL [utf8]: <– utf8
Este servidor deve se juntar a uma configuração multiserver existente do ISPConfig (y,n) [n]: <– n
Configurar Email (y,n) [y]: <– n
Configurar Jailkit (y,n) [y]: <– y
Configurar Servidor FTP (y,n) [y]: <– y
Configurar Servidor DNS (y,n) [y]: <– n
Configurar Servidor Apache (y,n) [y]: <– y
Configurar Servidor de Firewall (y,n) [y]: <–n
Instalar Interface Web do ISPConfig (y,n) [y]: <–y
Porta do ISPConfig [8080]: <– 8080
Habilitar SSL para a interface web do ISPConfig (y,n) [y]: <– y
Nome do País (código de 2 letras) [AU]: <– ENTER
Nome do Estado ou Província (nome completo) [Some-State]: <– ENTER
Nome da Localidade (por exemplo, cidade) []: <– ENTER
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <– ENTER
Nome da Unidade Organizacional (por exemplo, seção) []: <– ENTER
Nome Comum (por exemplo, SEU nome) []: <– ENTER
Endereço de Email []: <– ENTER
Uma senha de desafio []: <– ENTER
Um nome de empresa opcional []: <– ENTER

Limpe os diretórios de instalação:

cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.2 Instalando O Servidor de Email

Edite o arquivo hosts e adicione os endereços IP e nomes de host para todos os servidores. Os nomes de host e endereços IP devem ser ajustados para corresponder à sua configuração.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# As linhas a seguir são desejáveis para hosts compatíveis com IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Defina o nome do host do servidor:

echo mail.example.tld > /etc/hostname
echo mail.example.tld > /etc/mailname
/etc/init.d/hostname.sh start

Instale postfix, dovecot e MySQL com um único comando:

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d

Digite a nova senha para mysql quando solicitado pelo instalador e responda às próximas perguntas conforme descrito abaixo:

Tipo geral de configuração? <– Site da Internet
Nome do email? <– mail.example.tld

Para instalar amavisd-new, SpamAssassin e ClamAV, executamos:

apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract 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

Se você quiser usar listas de discussão em seu servidor, então instale mailman. Esta etapa é opcional. mailman requer um servidor web apache, então se você não quiser executar uma instância apache em seu servidor de email, então não instale mailman.

apt-get -y install mailman

O instalador apt para mailman irá perguntar então para você selecionar os idiomas para a lista de discussão. Ative todos os idiomas que você deseja usar para mailman. Em seguida, crie a lista de discussão “mailman”.

newlist mailman

e insira o endereço de email e a nova senha para o administrador da lista de discussão. Essa é a última etapa da instalação do mailman. O próximo comando para instalar php deve ser executado em cada servidor, independentemente se você instalou mailman ou não.

Em seguida, instale a versão de linha de comando do PHP para poder executar scripts shell baseados em PHP para o ISPConfig:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Instale fail2ban: 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:

vi /etc/fail2ban/jail.local

[dovecot-pop3imap]

enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

Em seguida, crie o seguinte arquivo de filtro:

vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Reinicie o fail2ban depois:

/etc/init.d/fail2ban restart

Agora vou instalar o ISPConfig 3 neste servidor. Para obter a URL de download da versão estável mais recente do ISPConfig 3, visite o site do ISPConfig: http://www.ispconfig.org/ispconfig-3/download/

Baixe a versão estável mais recente do ISPConfig 3:

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

Em seguida, inicie o script de instalação:

php -q install.php

Selecione o idioma (en,de) [en]: <– en
Modo de instalação (padrão, especialista) [padrão]: <– especialista
Nome do host totalmente qualificado (FQDN) do servidor, por exemplo, server1.domain.tld [mail.example.tld]: <– mail.example.tld
Nome do host do servidor MySQL [localhost]: <– localhost
Nome de usuário root do MySQL [root]: <– root
Senha root do MySQL []: <– Digite sua senha root do MySQL aqui
Banco de dados MySQL a ser criado [dbispconfig]: <– dbispconfig
Charset MySQL [utf8]: <– utf8
Este servidor deve se juntar a uma configuração multiserver existente do ISPConfig (y,n) [n]: <– y
Nome do host do servidor mestre MySQL []: <– web.example.tld
Nome de usuário root do servidor mestre MySQL [root]: <– root
Senha root do servidor mestre MySQL []: <– Digite a senha root do servidor mestre aqui
Nome do banco de dados do servidor mestre MySQL [dbispconfig]: <– dbispconfig
Configurar Email (y,n) [y]: <– y

Nome do País (código de 2 letras) [AU]: <– DE (Digite o código do país ISO onde você mora aqui)
Nome do Estado ou Província (nome completo) [Some-State]: <– Niedersachsen (Digite o estado onde você mora aqui)
Nome da Localidade (por exemplo, cidade) []: <– Lueneburg (Digite a cidade aqui)
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <– ENTER
Nome da Unidade Organizacional (por exemplo, seção) []: <– ENTER
Nome Comum (por exemplo, SEU nome) []: <– ENTER
Endereço de Email []: <– ENTER

Configurar Jailkit (y,n) [y]: <– n
Configurar Servidor FTP (y,n) [y]: <– n
Configurar Servidor DNS (y,n) [y]: <– n
Configurar Servidor Apache (y,n) [y]: <– n
Configurar Servidor de Firewall (y,n) [y]: <–n
Instalar Interface Web do ISPConfig (y,n) [y]: <–n

Execute…

rm -f /var/www/ispconfig

… para remover o link da interface do ISPConfig no diretório /var/www.

Limpe os diretórios de instalação:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.