Tutorial Webmin com Nginx, Firewall, Postfix e phpMyAdmin

Neste tutorial irei mostrar como instalar um servidor com Webmin completo. A ideia é criar um VPS para ambiente de produção com webserver NginX, sistema de firewall e Postfix para enviar emails, com isso poderemos usar SMTP relay caso seja necessário enviar notificações.

Uma boa aplicação para este ambiente é usá-lo naqueles casos onde queremos manter os arquivos do site em um servidor e o banco de dados em outro. O Webmin gerencia melhor databases e um exemplo disso é quando precisamos fazer upload de um arquivo grande exportado do MySQL, no phpMyAdmin geralmente dá erro mas no Webmin a base sobe sem problemas. No Webmin há também um agendador de backup de banco de dados que poderá ser usado para agendar e gravar os dumps das tabelas em local determinado, e, posteriormente, sincronizá-lo com um repositório externo usando rsync.

Para garantir que o servidor não sofra muito com ataques vamos configurar também um firewall com UFW e Fail2Ban, liberando somente as portas necessárias. Com isso o sistema anti hacker ficará muito parecido com aquele que vocês estão acostumados a usar seguindo meus tutoriais de ISPConfig aqui no site. Apesar do firewall não ser o escopo principal deste tutorial irei colocar algumas dicas adicionais no texto.

*Notas: Na última instalação que fiz de Webmin notei que o tema padrão já estava com o Authentic Theme, considerado o melhor tema para o painel (veja thumbnail do post). Tente usar o Webmin em inglês, notei que quando traduzido para o português gera alguns erros e caracteres estranhos na tela. Criaremos um ambiente perfeito para hospedar banco de dados mas somente use isto caso seja realmente necessário, na maioria dos sites você poderá usar o MySQL do próprio servidor onde os sites estão.

Painel de controle Webmin

* Não tente instalar o Webmin em servidores que já tenham outro painel, como o ISPConfig por exemplo. Paineis controladores de sistema como o Webmin e o ISPConfig não podem coexistir no mesmo servidor, e mesmo que você consiga fazê-lo não haverá garantia de bom funcionamento Os meus tutoriais são todos visando ambiente em produção e isso não é indicado.

** Um painel que pode ser usado com o Webmin é o Virtualmin que permite gerenciar sites por um frontend mas que não será aplicado neste artigo porque, como expliquei acima, usaremos o Webmin somente para os databases.

Instalando o sistema operacional Linux

A empresa de hospedagem que eu indico para criar este ambiente é a DigitalOcean (clique no link ao lado para registrar-se e ganhe 10 dólares de bônus).

*Outras empresas ofertam VPS com preços menores, mas cuidado para não contratar servidores OpenVZ para abrigar banco de dados. OpenVZ é um container de baixo desempenho que nem se compara com os VPS KVM e não suporta grandes cargas de uso. Não entrarei em detalhes agora, mas pode apostar que se você criar um DB em servidores deste tipo haverá perda de dados e overload de sistema por causa do MySQL. **Os VPS da Digital Ocean são todos KVM.

Acesse o painel e clique em criar/adicionar um novo servidor (Droplet). Em sistema operacional selecione Debian 8.x X64 (última versão do Debian 8 64 bits). No tamanho do servidor selecione $10 dólares pois este será um ambiente para banco de dados com demanda de RAM. E no Hostname não esqueça de usar um nome FQDN, como já expliquei inúmeras vezes aqui no site o FQDN como nome de host é necessário para o bom funcionamento dos serviços.

Após criar o servidor você receberá um email com dados para acesso. Ao acessar o VPS pela primeira vez será necessário trocar a senha de root (se não conseguir fazer acesse o meu tutorial de deploy no Debian 8 que explica isso em detalhes).

2 Prepare o sistema para instalar os pacotes

Acesse o console SSH com o superusuário root, para facilitar a edição de arquivos pode-se acessar também o modo explorer com o WinSCP (clique aqui e veja como usar), ou se preferir use o Nano que tem um modo de edição bem amigável.

Edite o arquivo: /etc/apt/sources.list e adicione ” contrib non-free” ao final de todas as linhas de repositórios como no exemplo abaixo:

#Exemplo:
deb http://mirrors.digitalocean.com/debian jessie main contrib non-free

E, ainda no mesmo arquivo, adicione ao final o repositório para o BackPorts do Debian

# Backports
deb http://mirrors.digitalocean.com/debian jessie-backports main contrib non-free

Salve o arquivo e execute os comandos abaixo (em azul negritados):

#Update e upgrade dos pacotes e do sistema
> apt-get update && apt-get -yqq upgrade

> dpkg-reconfigure dash
   [Selecione: NO]

> apt-get -yqq install ntp ntpdate && dpkg-reconfigure tzdata
   [Selecione: America/Sao Paulo]

> apt-get -yqq install snmp-mibs-downloader
# Adicione SWAP
> fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile

> printf '\n/swapfile none swap sw 0 0\n' | tee -a /etc/fstab; mount -a

> printf '\nvm.swappiness=10\n' | tee -a /etc/sysctl.conf && cat /etc/sysctl.conf

> sysctl -p; free -m
# JAILKIT (podera ser necessario)
> apt-get -y install build-essential autoconf automake libtool flex bison debhelper binutils

> cd /tmp && wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz && tar xvfz jailkit-2.19.tar.gz && cd jailkit-2.19

> ./debian/rules binary && cd .. && dpkg -i jailkit_2.19-1_*.deb && rm -rf jailkit-2.19*
# Mais alguns pacotes necessários...
> apt-get -yqq install ssh openssh-server vim-nox php5-cli ntp ntpdate debconf-utils binutils sudo git lsb-release haveged
3 Instalação e configuração do MySQL

Instale o MySQL, ele será o gerenciador de banco de dados no servidor. Executaremos também o script para deixá-lo mais seguro.

#MySQL:
> apt-get -y install mysql-client mysql-server
   #New password for the MySQL "root" user: <Digite uma senha segura>
   #Repeat password for the MySQL "root" user: <Repita a senha>
   #Dica: Nos campos de senha admin para o MySQL use a mesma do "root" do sistema, na minha experiência se um hacker souber qualquer uma delas o seu VPS já era então pode usar a mesma, colocando uma senha difícil obviamente.
 
#Edite o arquivo /etc/mysql/my.cnf e altere a linha 47 desativando-a com um sinal de "#". Faremos isso para permitir o acesso externo ao MySQL, lembre-se que a ideia é manter os sites em outro servidor.
> nano +47 /etc/mysql/my.cnf
   #bind-address = 127.0.0.1
 
#Script para reforçar a segurança do MySQL
> /usr/bin/mysql_secure_installation
   #Tecle ENTER após digitar cada campo
   >> Enter current password for root (enter for none): <-- DIGITE A SENHA ADMIN DO MYSQL
   >> Change the root password? [Y/n]: <-- n
   >> Remove anonymous users? [Y/n]: <-- Y
   >> Disallow root login remotely? [Y/n]: <-- Y
   >> Remove test database and access to it? [Y/n]: <-- Y
   >> Reload privilege tables now? [Y/n]: <-- Y
 
# Reinicie o MySQL
> /etc/init.d/mysql restart && /etc/init.d/mysql status
4 Instalação e configuração do NginX Webserver

O servidor de páginas que eu utilizo em quase 100% dos servidores é o NginX. NginX é muito mais prático que o Apache e executa as páginas com melhor performance, ele é mais seguro também. Mundialmente o NginX já está presente em 30% dos servidores web, clique neste link para ver o comparativo de uso.

Edite os arquivos /etc/php5/fpm/php.ini e /etc/php5/fpm/pool.d/www.conf alterando as linhas abaixo:

#ALTERAR o arquivo /etc/php5/fpm/php.ini
 [Linha 372] max_execution_time = 180
 [Linha 382] max_input_time = 180
 [Linha 393] memory_limit = 256M
 [Linha 660] post_max_size = 100M
 [Linha 771] cgi.fix_pathinfo = 0
 [Linha 820] upload_max_filesize = 100M
 [Linha 823] max_file_uploads = 100
 [Linha 894] date.timezone = "America/Sao_Paulo"
#ALTERAR o arquivo /etc/php5/fpm/pool.d/www.conf
 [Linha 328] request_terminate_timeout = 180

Reinicie o PHP e instale os pacotes adicionais abaixo:

> /etc/init.d/php5-fpm restart
 
> apt-get -y install mcrypt imagemagick memcached curl tidy snmp

> /etc/init.d/php5-fpm restart

> apt-get -y install fcgiwrap

> /etc/init.d/php5-fpm restart
5 Instalação e configuração do phpMyAdmin

O Webmin tem um webserver próprio e podemos usar o painel para gerenciar os bancos de dados. Mas vamos instalar o phpMyAdmin para facilitar a vida de quem não está habituado com Webmin ou quer executar comandos SQL usando a interface do phpMyAdmin.

#Instale o pacote
> apt-get -y install phpmyadmin
   >> Web server to reconfigure automatically:<-- <Não selecionar nada> - Para prosseguir pressione OK
   >> Configure database for phpmyadmin with dbconfig-common? <-- <Yes>
   >> Password of the databases's administrative user: [A mesma senha ADMIN do MySQL digitada no passo 3]
   >> MySQL application password for phpmyadmin:<-- <deixar em branco> - Uma senha aleatória será gerada

Crie o arquivo /etc/nginx/phpmyadmin.vhost e cole as linhas abaixo (Note que usaremos a porta 8081 para phpMyAdmin):

server {
 listen 8081;
 server_name _;
 
 root /var/www;
 client_max_body_size 100M;

 location / {
 index index.php index.html;
 }

 # serve static files directly
 location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
 access_log off;
 }

 location ~ \.php$ {
 try_files $uri =404;
 include /etc/nginx/fastcgi_params;
 fastcgi_pass unix:/var/lib/php5-fpm/apps.sock;
 #fastcgi_param HTTPS on; # <-- add this line
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 #fastcgi_param PATH_INFO $fastcgi_script_name;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 256 4k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 }

 location ~ /\. {
 deny all;
 }
 location ^~ /.well-known/acme-challenge/ {
 default_type text/plain;
 }

 location /phpmyadmin {
 root /usr/share/;
 index index.php index.html index.htm;
 location ~ ^/phpmyadmin/(.+\.php)$ {
 try_files $uri =404;
 root /usr/share/;
 fastcgi_param QUERY_STRING $query_string;
 fastcgi_param REQUEST_METHOD $request_method;
 fastcgi_param CONTENT_TYPE $content_type;
 fastcgi_param CONTENT_LENGTH $content_length;

 fastcgi_param SCRIPT_FILENAME $request_filename;
 fastcgi_param SCRIPT_NAME $fastcgi_script_name;
 fastcgi_param REQUEST_URI $request_uri;
 fastcgi_param DOCUMENT_URI $document_uri;
 fastcgi_param DOCUMENT_ROOT $document_root;
 fastcgi_param SERVER_PROTOCOL $server_protocol;

 fastcgi_param GATEWAY_INTERFACE CGI/1.1;
 fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

 fastcgi_param REMOTE_ADDR $remote_addr;
 fastcgi_param REMOTE_PORT $remote_port;
 fastcgi_param SERVER_ADDR $server_addr;
 fastcgi_param SERVER_PORT $server_port;
 fastcgi_param SERVER_NAME $server_name;

 fastcgi_param HTTPS $https;

 # PHP only, required if PHP was built with --enable-force-cgi-redirect
 fastcgi_param REDIRECT_STATUS 200;
 # To access phpMyAdmin, the default user (like www-data on Debian/Ubuntu) must be used
 #fastcgi_pass 127.0.0.1:9000;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 256 4k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 fastcgi_read_timeout 1200;
 }
 location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
 root /usr/share/;
 }
 }
 location /phpMyAdmin {
 rewrite ^/* /phpmyadmin last;
 }
}

Crie o symlink para o bloco phpMyAdmin no NginX e reinicie o serviço:

> ln -s /etc/nginx/sites-available/phpmyadmin.vhost /etc/nginx/sites-enabled/phpmyadmin.vhost

> /etc/init.d/nginx restart

Após isso o phpMyAdmin poderá ser acessado pelo link http://IP-DO-SERVIDOR:8081/phpmyadmin

6 Postfix webmail

Este passo é opcional mas importante, poderemos usar o Postfix mais tarde para enviar emails de alerta via SMTP Relay. Além de que em termos de segurança é melhor desativar o Sendmail e usar Postfix.

Execute os comandos abaixo e edite os arquivos conforme descrito:

# Desative o Sendmail e Instale o Postfix
> service sendmail stop; update-rc.d -f sendmail remove; apt-get -y remove sendmail

> apt-get -y install postfix postfix-mysql postfix-doc getmail4
   >> Please select the mail server configuration type that best meets your needs: <-- <OK>
   >> General type of mail configuration: <-- <Internet Site>
   >> System Mail Name: <-- <hostname FQDN do servidor>

Edite o arquivo /etc/postfix/main.cf e adicione estas linhas ao final:

inet_protocols = all
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
  reject_unknown_recipient_domain
smtpd_tls_security_level = may
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_helo_hostname,
  reject_invalid_helo_hostname,
  permit
smtpd_sender_restrictions = 
  permit_mynetworks,
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
  permit
smtpd_client_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unknown_client_hostname,
  permit
smtpd_client_message_rate_limit = 100
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = dovecot
owner_request_special = no
smtp_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2,!SSLv3
smtp_tls_protocols = !SSLv2,!SSLv3
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
message_size_limit = 104857600
authorized_submit_users = !www, root, static:all

Edite o arquivo /etc/postfix/master.cf e na linha 17 adicione o texto (*Se já houver uma entrada “submission inet” no arquivo delete o bloco antes de colar o novo):

submission inet n - - - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_enforce_tls=no
  -o smtpd_tls_security_level=may
  -o smtpd_tls_auth_only=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Reinicie o Postfix e instale o Dovecot:

> /etc/init.d/postfix restart
 
> apt-get -y install dovecot-imapd dovecot-pop3d dovecot-sieve dovecot-mysql dovecot-lmtpd opendkim opendkim-tools
7 Firewall complementar com Fail2Ban

Fail2Ban é uma ferramenta de firewall que faz ban automaticamente em tentativas de acesso repetitivas, por exemplo quando alguém tenta um brute force attack no servidor. Além de detectar e banir ataques ele integra-se muito bem aos demais serviços do servidor permitindo a criação de regras avançadas para cada situação. *Note que o Webmin tem um item de menu para o Fail2Ban, não usaremos aquela opção, siga os procedimentos descritos aqui que já será o suficiente.

Instale o Fail2Ban:

> apt-get -y install fail2ban

Crie o arquivo /etc/fail2ban/jail.local e cole as linhas abaixo dentro dele:

[DEFAULT]
# Adicione IPs internos e o DNS do Google na lista de redes confiaveis com os IPs da CloudFlare
ignoreip = 127.0.0.0/8 10.0.0.0/8 8.8.8.8 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 104.16.0.0/12 108.162.192.0/18 131.0.72.0/22 141.101.64.0/18 162.158.0.0/15 172.64.0.0/13 173.245.48.0/20 188.114.96.0/20 190.93.240.0/20 197.234.240.0/22 198.41.128.0/17 199.27.128.0/21
# Se você utiliza o ManageWP terá que adicionar os IPs deles na WhiteList também (após o último IP na lista acima acrescente um espaço em branco e cole estes endereços):
# 35.162.254.253 52.11.12.231 52.11.29.70 52.11.54.161 52.24.142.159 52.25.191.255 52.27.181.126 52.34.126.117 52.34.254.47 52.35.82.99 52.36.28.80 52.38.106.97 52.39.177.152 52.41.230.148 52.41.237.12 52.42.126.166 52.43.13.71 52.43.76.224 52.88.96.110 52.89.155.51 54.148.73.118 54.186.37.105 54.187.92.57 54.191.32.65 54.191.67.23 54.191.80.119 54.191.135.209 54.191.136.176 54.191.137.17 54.191.148.85 54.191.149.8 52.26.122.21 52.24.187.29 52.89.85.107 54.186.128.167 54.191.40.136 52.24.62.11 52.88.119.122 54.191.148.225 54.191.151.18 52.89.94.121 52.25.116.116 52.88.215.225 54.186.143.184 52.88.197.180 52.27.171.126

# Antes de adicionar jails configure valores padrão de ação e ban (pode-se alterar cada jail individualmente)
# Os valores abaixo sao exemplos e estao em segundos: bantime (600 segundos); findtime (300 segundos); maxretry (4 tentativas):
bantime = 600
findtime = 300
maxretry = 4

#Altere o modo de detecção para o Debian reconhecer as alterações de arquivo corretamente:
backend = polling

#
# JAILS
#
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log

[ssh-ddos]
enabled = true
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
bantime = 1200
maxretry = 6

[dropbear]
enabled = true
port = ssh
filter = dropbear
logpath = /var/log/auth.log
maxretry = 6

# Monitora as tentativas de autenticação para diretórios protegidos no NginX
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log

[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 6

[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 6

[postfix]
enabled = true
port = smtp,ssmtp,submission
filter = postfix
logpath = /var/log/mail.log

[sasl]
enabled = true
port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = postfix-sasl
logpath = /var/log/mail.log

[dovecot]
enabled = true
port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = dovecot
logpath = /var/log/mail.log

#Bloqueando ataques DDoS no BIND9, servidor DNS. Note que mudamos o arquivo padrao de log e tambem trocamos o 
#action para hostsdeny, isso e necessario pois ataques ao DNS devem ser barrados logo na entrada do servidor
[named-refused-udp]
enabled = true
port = domain,953
protocol = udp
filter = named-refused
#logpath = /var/log/named/security.log
logpath = /var/log/daemon.log
action = hostsdeny
maxretry = 10

[named-refused-tcp]
enabled = true
port = domain,953
protocol = tcp
filter = named-refused
#logpath = /var/log/named/security.log
logpath = /var/log/daemon.log
action = hostsdeny
maxretry = 10

Edite o arquivo /etc/fail2ban/filter.d/named-refused.conf e adicione o parâmetro “ignoreregex =” na linha 40:

*Neste passo irei demonstrar um comando de atalho para editar os arquivos com Nano apontando para a linha correta ao abrir

> nano +40 /etc/fail2ban/filter.d/named-refused.conf
   ignoreregex =

Edite o arquivo /etc/fail2ban/filter.d/postfix-sasl.conf e faça a mesma coisa na linha 13:

> nano +13 /etc/fail2ban/filter.d/postfix-sasl.conf
   ignoreregex =

Edite o arquivo /etc/fail2ban/filter.d/postfix.conf e adicione as linhas de código a partir da linha 19:

> nano +19 /etc/fail2ban/filter.d/postfix.conf
   ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 454 4\.7\.1 :*$
   ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 454 4\.7\.1 .*$
   reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
   reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
   reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
   reject: RCPT from unknown\[<HOST>\]: 454 4.7.1
   warning: Illegal address syntax from unknown\[<HOST>\]
   warning: non-SMTP command from unknown\[<HOST>\]:

Crie o arquivo /etc/fail2ban/filter.d/dovecot-pop3imap.conf e adicione as linhas:

> nano /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<host>\S*),.*
ignoreregex =

Crie o arquivo /etc/fail2ban/filter.d/pureftpd.conf e adicione as linhas abaixo:

> nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =

Em seguida reinicie os serviços:

> /etc/init.d/fail2ban restart && /etc/init.d/postfix restart && /etc/init.d/fail2ban status
8 Implementação do firewall com UFW

Poderíamos usar o IPTables para criar estas regras de firewall mas optei pelo UFW para demonstrar a ferramenta pois eu ainda não havia escrito sobre isso aqui no Fator Binário.

Antes e após a implementação do firewall é indicado testar as portas de serviços que permitem conexão ao servidor. Use esta ferramenta online para verificar as portas abertas.

Instale o pacote do UFW:

> apt-get -y install ufw

Em seguida execute os comandos abaixo para habilitar o firewall somente para algumas portas específicas de entrada mas permitindo qualquer conexão de saida.

> ufw logging on
> ufw allow 22,80,3306,8081,10000/tcp
> ufw allow 3306/udp
> ufw default deny incoming
> ufw default allow outgoing
   #Alguns outros exemplos de uso:
   # ufw allow 21,22,80/tcp
   # ufw allow 1000:2000/tcp
   # ufw allow 1000:2000/udp
   # ufw allow from 111.222.333.444
   # ufw allow from 15.15.15.51 to any port 22
   # ufw allow from 15.15.15.0/24
   # ufw delete allow ssh

> ufw enable
   # Comando para desativar: ufw disable
   Command may disrupt existing ssh connections. Proceed with operation (y|n)? <-- y

> ufw status verbose

Ative ainda os logs de firewall para que sejam gravados em arquivo próprio. No Debian os logs serão gravados em /var/log/ufw.log

Edite o arquivo /etc/rsyslog.d/20-ufw.conf e descomente a linha 7 (retirando a hashtag) desta maneira:

> nano +7 /etc/rsyslog.d/20-ufw.conf

& ~

Reinicie o serviço rsyslog:

> /etc/init.d/rsyslog restart
9 Instalação de alguns pacotes complementares necessários

Instale estes compactadores/descompactadores de arquivos para facilitar a operação do sistema.

> apt-get -yqq install zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl systemd unrar-free p7zip rpm2cpio tnef
10 Painel de controle Webmin

Isso tudo foi somente a preparação do sistema para o Webmin. A instalação do painel em si é rápida e fácil.

Execute os comandos abaixo na ordem apresentada:

> cd /root

> printf '\n#Repositorio do Webmin\ndeb http://download.webmin.com/download/repository sarge contrib\n' | tee -a /etc/apt/sources.list

> wget http://www.webmin.com/jcameron-key.asc

> apt-key add jcameron-key.asc

> apt-get update
   #Aguarde uns 60 segundos antes de executar o próximo comando

> apt-get -y install webmin
   #Repetir o comando se der erro

Após alguns minutos o Webmin exibirá um resumo da instalação notificando sobre a URL de acesso que deverá ser o FQDN do servidor ou o IP do servidor na porta 10000 (não esqueça de criar o registro na tabela DNS para acessar usando a URL).

O usuário de acesso ao Webmin é: root

E a senha para acesso é a mesmo do usuário root

Por último reinicie o servidor para testar se tudo foi configurado corretamente e para que os logs sejam gravados no horário certo.

> shutdown -r now

Gerenciamento em infraestrutura de Servidores Cloud VPS e Dedicados. Planos mensais acessíveis e consultoria diferenciada para agências de marketing. Envie um email para [email protected] e solicite uma análise gratuita!

728x90a
  • André

    🙂 Parabéns! Gostei.. Com estas configurações eu consigo ter um desempenho melhor do que com EasyEngine?

  • Easy Engine é um problema quando você precisar de configurações avançadas.

  • André

    instalei site com Easy vou tentar com este seu esquema depois posto resultado.. fazer um teste

  • André

    Obrigado! ótimo trabalho

  • Rodrigo Carvalho

    Olá, sou leigo nessa área. Qual seria diferença entre esse tutorial e o DEBIAN WHEEZY E ISPCONFIG 3? No caso WEBMIN COM NGINX, FIREWALL, POSTFIX E PHPMYADMIN seria um servidor mais parrudo?

  • Não.
    O ISPConfig é um gerenciador de servidores e de sites/emails. O Webmin gerencia somente o servidor. Você até poderia instalar junto o Virtualmin mas o ISPConfig 3 já faz tudo com pouco esforço.

    Eu explico no inicio deste artigo que o Webmin é uma boa alternativa caso você queira criar um servidor somente para banco de dados pois ele lida melhor com isso. Tem agendador automático de backups, permite subir bancos gigantes, etc..

    E se for instalar o ISPConfig siga o tutorial de Debian 8 x64, está em destaque na capa do site.

  • Rodrigo Carvalho

    Luis muito obrigada pela rápida resposta! Estarei vendo agora mesmo este tutorial. Você conhece o serviços da OVH vale a pena? E como eu determino qual a hardware necessário para minha aplicação?

  • Conheço a OVH sim, ela é a minha segunda opção de servidores hoje, mas somente na opção Dedicados. A OVH é superior a Amazon, SoftLayer e Azure. O preço e a qualidade do serviço são melhores.

    Para determinar o spec necessário ao projeto você pode enviar ao meu email o escopo que faço uma avaliação gratuita dele. Mas basicamente sempre comece com um servidor de $5 dolares na Digital Ocean, eu consigo fazer “milagres” para clientes neste servidor de baixo custo.

  • Alexis Reyes

    Eu tenha dúvida, depois de todo esse processo como instalar o wordpress pelo WEBMIN de forma segura e incluir meus 2 sites? Obrigado ótimo tutorial

  • Este tutorial de Webmin é para aqueles casos onde pode-se separar o banco de dados do site em outro servidor. Para adicionar sites no mesmo servidor o melhor é usar o ISPConfig como expliquei logo no inicio.

    O ISPConfig é tão leve quanto o Webmin, mas ele é muito melhor para administrar sites porque tem esquema de jail automático e facilidade de configuração.

  • Alexis Reyes

    Obrigado desculpe q eu pulei eu fui lendo em Painel de controle Webmin pra baixo.. hehehe! E já fez algum teste pra ver diferença entre o EasyEngine e o ISPConfig?

  • Fiz sim, o EasyEngine é uma enganação que te leva para uma sinuca de bico, somente quando você precisar de tunagens e configurações adicionais é que nota o problema. E aquela propaganda deles dizendo que com o EasyEngine o site suporta milhões de requisições por dia é facilmente reproduzido em qualquer NginX com as regras anti-DDoS que explico nos tutoriais, configure conforme explico lá e rode um teste AB para ver.

  • Ana Carolina

    Notei q a dúvida abaixo é parecida com a minha: ISPConfig com esta configuração ? ou do outro tutorial pra alguns sites juntos

  • Use o ISPConfig se quiser manter sites no mesmo servidor, é bem mais seguro e de fácil gerenciamento. Não tem como colocar ISPConfig e Webmin no mesmo servidor.