Differences

This shows you the differences between two versions of the page.

Link to this comparison view

servidor_web_apache_trabalhando_em_chroot_no_debian_wheezy_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Servidor Web Apache trabalhando em modo chroot + Debian Wheezy ======
  
 +
 +Aqui vou estar abordando a implementação de um servidor Web trabalhando em modo chroot dando suporte a php5, <​nowiki>​MySQL</​nowiki>,​ Fail2ban, mod_security,​ mod-evasive para garantirmos a segurança de nosso servidor. ​
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialwheezy_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos primeiro fazer um update de nosso repositórios e a atualização de todo o sistema. ​
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos instalar o apache e módulo de chroot e o debootstrap para montar a nossa jaula. ​
 +<sxh bash>
 +aptitude install apache2 ​ debootstrap libapache2-modsecurity -y
 +</​sxh>​
 +
 +Montando a nossa jaula. ​
 +<sxh bash>
 +debootstrap wheezy /var/chroot http://​ftp.br.debian.org/​debian ​
 +</​sxh>​
 +
 +Copiando a configuração do nosso sistema para a jaula 
 +<sxh bash>
 +cp -a /​etc/​resolv.conf /​var/​chroot/​etc/​
 +cp -a /etc/hosts /​var/​chroot/​etc/​
 +cp -a /​etc/​mime.types /​var/​chroot/​etc/​
 +cp -a /​usr/​share/​zoneinfo/​America/​Sao_Paulo /​var/​chroot/​usr/​share/​zoneinfo/​America
 +cp -a /​etc/​adjtime /​var/​chroot/​etc/​
 +</​sxh>​
 +
 +Instalando o apache dentro da jaula e o locales pois as vezes temos problemas com idioma dai já podemos corrigir este problema. ​
 +<sxh bash>
 +chroot /var/chroot apt-get update ​
 +chroot /var/chroot aptitude dist-upgrade -y 
 +chroot /var/chroot apt-get install apache2.2-common apache2-utils locales -y
 +</​sxh>​
 +
 +Acertando o idioma da jaula. ​
 +<sxh bash>
 +sed -i 's/# pt_BR.UTF-8 UTF-8/​pt_BR.UTF-8 UTF-8/'​ /​var/​chroot/​etc/​locale.gen
 +chroot /var/chroot locale-gen
 +</​sxh>​
 +
 +Não precisamos mais ajustar o pid do apache pois quando criamos a jaula o sistema cria um link do /​var/​chroot/​var/​run para o /run
 +
 +Configurando o apache arquivo /​etc/​apache2/​apache2.conf
 +<sxh bash>
 +echo "​SecChrootDir /​var/​chroot"​ >> /​etc/​apache2/​apache2.conf
 +</​sxh>​
 +
 +Copiando os sites para a jaula caso já tenha algum. ​
 +<sxh bash>
 +cp -Ra /var/www/* /​var/​chroot/​var/​www/​
 +</​sxh>​
 +
 +Vamos testar o acesso a nossa jaula, vamos editar o index.html da nossa jaula e colocar um valor diferente do padrão para termos certeza que o apache esta nos mostrando os dados da jaula. ​
 +<sxh bash>
 +echo "<​center><​h1>​Teste de chroot no Apache</​h1></​center>​ " > /​var/​chroot/​var/​www/​index.html
 +</​sxh>​
 +
 +Agora precisamos ajustar a jaula pois nesta nova versão do debootstrap ele cria alguns links que o modsecurity não aceita, com isso vamos remover os links e vamos criar os diretórios.
 +<sxh bash>
 +unlink /​var/​chroot/​var/​lock
 +unlink /​var/​chroot/​var/​run
 +</​sxh>​
 +
 +Agora vamos criar os diretórios e ajustar os links.
 +<sxh bash>
 +mkdir -p /​var/​chroot/​var/​run/​lock
 +ln -sf /​var/​chroot/​var/​run/​lock /​var/​chroot/​var/​lock
 +mv /​var/​run/​apache2.pid /​var/​chroot/​var/​run/​apache2.pid
 +mv /​var/​run/​apache2 /​var/​chroot/​var/​run/​apache2
 +ln -s /​var/​chroot/​var/​run/​apache2.pid /​var/​run/​apache2.pid
 +ln -s /​var/​chroot/​var/​run/​apache2 /​var/​run/​apache2
 +rm -rf /​var/​chroot/​var/​run/​apache2.pid
 +</​sxh>​
 +
 +Agora vamos matar o processo do apache
 +<sxh bash>
 +killall -9 apache2
 +</​sxh>​
 +
 +Vamos iniciar o apache ​
 +<sxh bash>
 +/​etc/​init.d/​apache2 start
 +</​sxh>​
 +
 +Vamos agora acessar o nosso site. 
 +
 +http://​ip_servidor
 +
 +Vai ter que aparecer a mensagem de teste que colocamos na jaula. ​
 +
 +Podemos acompanhar os erros do apache como exemplo abaixo. ​
 +<sxh bash>
 +tail -f /​var/​log/​apache2/​error.log ​
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity:​ chroot checkpoint #1 (pid=4300 ppid=4295)
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity for Apache/​2.6.6 (http://​www.modsecurity.org/​) configured.
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity:​ APR compiled version="​1.4.6";​ loaded version="​1.4.6"​
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity:​ PCRE compiled version="​8.30";​ loaded version="​8.30 2012-02-04"​
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity:​ LUA compiled version="​Lua 5.1"
 +[Mon Dec 02 16:53:40 2013] [notice] ModSecurity:​ LIBXML compiled version="​2.8.0"​
 +[Mon Dec 02 16:53:41 2013] [notice] ModSecurity:​ chroot checkpoint #2 (pid=4301 ppid=1)
 +[Mon Dec 02 16:53:41 2013] [notice] ModSecurity:​ chroot successful, path=/​var/​chroot
 +[Mon Dec 02 16:53:41 2013] [notice] Apache/​2.2.22 (Debian) configured -- resuming normal operations
 +</​sxh>​
 +
 +A primeira parte já esta ok o apache esta trabalhando em modo chroot, agora temos que fazer o php5 e o mysql trabalhar com ele, e vamos também configurar mais alguns módulos para a segurança de nosso apache. ​
 +
 +Instalando o php5 ele não precisa ficar na jaula. ​
 +<sxh bash>
 +
 +aptitude install php5 libapache2-mod-php5 php5-gd php5-ps php5-cli php-pear php5-gd php5-mysql php5-imap php5-mcrypt php5-json -y
 +aptitude install php5-xmlrpc php5-dev php5-common fail2ban vsftpd postfix mysql-client -y
 +chroot /var/chroot apt-get install imagemagick php5-common -y
 +</​sxh>​
 +
 +Acertando permissões ​
 +<sxh bash>
 +rm -rf /​var/​chroot/​dev/​*
 +for SEC in $(echo $(find /​var/​chroot/​ -type f \( -perm -04000 -o -perm -02000 \) -print)); do chmod -s ${SEC}; done
 +chmod -x /​var/​chroot/​bin/​su
 +chmod -x /​var/​chroot/​bin/​stty
 +</​sxh>​
 +
 +Configurando o módulo avasive para nos ajudar a prevenir os ataques do tipo DOS. 
 +<sxh bash>
 +
 +apt-get install libapache2-mod-evasive
 +echo "​LoadModule evasive20_module /​usr/​lib/​apache2/​modules/​mod_evasive20.so"​ > /​etc/​apache2/​mods-available/​evasive.load
 +</​sxh>​
 +
 +Configurando o módulo /​etc/​apache2/​mods-available/​evasive.conf  ​
 +<sxh apache>
 +
 +vim /​etc/​apache2/​mods-available/​evasive.conf
 +<​IfModule mod_evasive.c>​
 +DOSHashTableSize 3097 
 +DOSPageCount 2            ​
 +DOSSiteCount 50            ​
 +DOSPageInterval 1          ​
 +DOSSiteInterval 1            ​
 +DOSBlockingPeriod 900  ​
 +DOSWhitelist 66.249.65.*
 +DOSWhitelist 66.249.66.*
 +# As ultimas são as que o google usa para indexar.
 +</​IfModule>​
 +</​sxh>​
 +
 +Acertando o idioma do sistema  ​
 +<sxh bash>
 +
 +sed -i 's/# pt_BR.UTF-8 UTF-8/​pt_BR.UTF-8 UTF-8/'​ /​etc/​locale.gen
 +locale-gen
 +</​sxh>​
 +
 +Vamos montar um virtualhost para testarmos o nosso chroot /​etc/​apache2/​sites-available/​wiki.douglasqsantos.com.br  ​
 +<sxh apache>
 +
 +vim /​etc/​apache2/​sites-available/​wiki.douglasqsantos.com.br
 +<​VirtualHost *:80>
 + ​ServerName wiki.douglasqsantos.com.br
 + ​ServerAlias douglasqsantos.com.br
 +
 + ​DocumentRoot "/​var/​www/​website/​frontend/"​
 + <​Directory "/​var/​www/​website/​frontend/">​
 +   ​Options -Indexes +FollowSymLinks +MultiViews
 +   ​AllowOverride All
 +   Order allow,deny
 +   allow from all
 + </​Directory>​
 +
 + ​ScriptAlias /cgi-bin/ "/​var/​www/​website/​frontend/​cgi-bin/"​
 + <​Directory "/​var/​www/​website/​frontend/​cgi-bin/">​
 +   ​AllowOverride All
 +   ​Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +   Order allow,deny
 +   Allow from all
 + </​Directory>​
 +
 + ​ErrorLog ${APACHE_LOG_DIR}/​wiki.douglasqsantos.com.br-error.log
 + ​CustomLog ${APACHE_LOG_DIR}/​wiki.douglasqsantos.com.br-access.log common
 + 
 + ​ServerSignature Off
 + 
 + ​IndexIgnore .??* *~ *# README RCS CVS *,v *,t *
 +
 + # Possible values include: debug, info, notice, info, error, crit,
 + # alert, emerg.
 + ​LogLevel info
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Vamos montar a base do nosso site  ​
 +<sxh bash>
 +mkdir -p /​var/​chroot/​var/​www/​website/​frontend/​cgi-bin
 +ln -sf /​var/​chroot/​var/​www/​website /​var/​www/​website
 +</​sxh>​
 +
 +Criando o arquivo index de teste.  ​
 +<sxh bash>
 +
 +echo "<?​php phpinfo(); ?>" > /​var/​www/​website/​frontend/​index.php
 +</​sxh>​
 +
 +Incluindo o shell /bin/true para o usuário ftp  ​
 +<sxh bash>
 +
 +echo "/​bin/​true"​ >> /etc/shells
 +</​sxh>​
 +
 +Criando o usuário ftp para o nosso site  ​
 +<sxh bash>
 +
 +useradd -m -d /​var/​www/​website -s /bin/true usuarioftp
 +</​sxh>​
 +
 +Agora vamos definir uma senha para ele  ​
 +<sxh bash>
 +
 +passwd usuarioftp
 +</​sxh>​
 +
 +Carregando o nosso site e descarregando os sites defaults  ​
 +<sxh bash>
 +
 +a2ensite wiki.douglasqsantos.com.br
 +a2dissite default ​
 +a2dissite default-ssl ​
 +a2enmod rewrite
 +</​sxh>​
 +
 +Agora vamos configurar o mod_security insira no final do arquivo /​etc/​apache2/​apache2.conf o conteúdo abaixo.  ​
 +<sxh apache>
 +
 +vim /​etc/​apache2/​apache2.conf
 +[...]
 +#Final do arquivo
 +<​IfModule mod_security.c>​
 + # Turn the filtering engine On or Off
 + ​SecFilterEngine On
 +
 + # Make sure that URL encoding is valid
 + ​SecFilterCheckURLEncoding On
 +
 + # Unicode encoding check
 + ​SecFilterCheckUnicodeEncoding Off
 +
 + # Only allow bytes from this range
 + ​SecFilterForceByteRange 0 255
 +
 + # Only log suspicious requests
 + ​SecAuditEngine RelevantOnly
 +
 + # The name of the audit log file
 + ​SecAuditLog /​var/​log/​apache2/​audit_log
 +
 + # Debug level set to a minimum
 + ​SecFilterDebugLog /​var/​log/​apache2/​modsec_debug_log
 + ​SecFilterDebugLevel 0
 +
 + # Should mod_security inspect POST payloads
 + ​SecFilterScanPOST On
 +
 + # By default log and deny suspicious requests
 + # with HTTP status 500
 + ​SecFilterDefaultAction "​deny,​log,​status:​500"​
 +</​IfModule>​
 +</​sxh>​
 +
 +Vamos reiniciar agora o nosso apache. ​
 +<sxh bash>
 +
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora vamos analisar os logs do apache ​
 +<sxh bash>
 +tail -f /​var/​log/​apache2/​error.log ​
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity:​ chroot checkpoint #1 (pid=13239 ppid=13234)
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity for Apache/​2.6.6 (http://​www.modsecurity.org/​) configured.
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity:​ APR compiled version="​1.4.6";​ loaded version="​1.4.6"​
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity:​ PCRE compiled version="​8.30";​ loaded version="​8.30 2012-02-04"​
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity:​ LUA compiled version="​Lua 5.1"
 +[Mon Dec 02 17:05:42 2013] [notice] ModSecurity:​ LIBXML compiled version="​2.8.0"​
 +[Mon Dec 02 17:05:43 2013] [notice] ModSecurity:​ chroot checkpoint #2 (pid=13240 ppid=1)
 +[Mon Dec 02 17:05:43 2013] [notice] ModSecurity:​ chroot successful, path=/​var/​chroot
 +[Mon Dec 02 17:05:43 2013] [notice] Apache/​2.2.22 (Debian) PHP/​5.4.4-14+deb7u5 configured -- resuming normal operations
 +</​sxh>​
 +
 +Vamos também tirar a assinatura do nosso php  ​
 +<sxh apache>
 +
 +vim /​etc/​php5/​apache2/​php.ini
 +[...]
 +expose_php = Off
 +[...]
 +</​sxh>​
 +
 +Agora já podemos reiniciar o nosso apache novamente para ver se vamos ter mais algum aviso ou erro. 
 +<sxh bash>
 +
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Vamos configurar o nosso <​nowiki>​MySQL</​nowiki>​ para o apache ter acesso. ​
 +<sxh bash>
 +
 +aptitude install mysql-server mysql-client php5-mysql -y
 +</​sxh>​
 +
 +Agora vamos ajustar o <​nowiki>​MySQL</​nowiki> ​
 +<sxh bash>
 +/​etc/​init.d/​mysql stop
 +mv /​var/​run/​mysqld /​var/​chroot/​var/​run/​mysqld
 +ln -s /​var/​chroot/​var/​run/​mysqld /​var/​run/​mysqld
 +</​sxh>​
 +
 +Agora podemos já inicializar o nosso <​nowiki>​MySQL</​nowiki> ​
 +<sxh bash>
 +
 +/​etc/​init.d/​mysql start
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões do nosso site. 
 +<sxh bash>
 +
 +chown -R usuarioftp:​www-data /​var/​chroot/​var/​www/​website
 +</​sxh>​
 +
 +Agora vamos configurar o logrotate para ir fazendo rotação dos logs do nosso site arquivo /​etc/​logrotate.d/​websites ​
 +<sxh bash>
 +
 +vim /​etc/​logrotate.d/​websites
 +#/​etc/​logrotate.d/​websites
 +/​var/​www/​website/​logs/​*.log {
 + ​weekly
 + ​missingok
 + ​rotate 6
 + ​compress
 + ​delaycompress
 + ​notifempty
 + ​create 640 www-data www-data
 + ​sharedscripts
 + ​postrotate
 + /​etc/​init.d/​apache2 reload > /dev/null
 + ​endscript
 +}
 +</​sxh>​
 +
 +Vamos configurar o vsftdp para podermos subir os arquivos para o site, os usuários somente vão poder ver o seu home eles vão ficar presos dentro da jaula arquivo /​etc/​vsftpd.conf  ​
 +<sxh apache>
 +
 +vim /​etc/​vsftpd.conf ​
 +#/​etc/​vsftpd.conf
 +listen=YES
 +listen_ipv6=NO
 +anonymous_enable=NO
 +local_enable=YES
 +write_enable=YES
 +local_umask=002
 +anon_upload_enable=NO
 +anon_mkdir_write_enable=NO
 +dirmessage_enable=YES
 +use_localtime=YES
 +xferlog_enable=YES
 +connect_from_port_20=NO
 +xferlog_file=/​var/​log/​vsftpd.log
 +xferlog_std_format=YES
 +idle_session_timeout=600
 +data_connection_timeout=120
 +nopriv_user=ftp
 +ftpd_banner=Bem-Vindo ao FTP douglasqsantos.com.br.
 +deny_email_enable=NO
 +chroot_local_user=YES
 +allow_writeable_chroot=YES
 +chroot_list_enable=NO
 +banned_email_file=/​etc/​vsftpd.banned_emails
 +chroot_list_file=/​etc/​vsftpd.chroot_list
 +ls_recurse_enable=YES
 +secure_chroot_dir=/​var/​run/​vsftpd/​empty
 +pam_service_name=vsftpd
 +rsa_cert_file=/​etc/​ssl/​private/​vsftpd.pem
 +</​sxh>​
 +
 +Criando mais alguns arquivos necessários ​
 +
 +Nesse arquivos podemos colocar os usuários que vão poder sair da jaula. ​
 +<sxh bash>
 +
 +touch /​etc/​vsftpd.chroot_list ​
 +</​sxh>​
 +
 +Nesse arquivo podemos colocar os emails que vão ser negados pelo vsftpd. ​
 +<sxh bash>
 +
 +touch /​etc/​vsftpd.banned_emails
 +</​sxh>​
 +
 +A Versão padrão do debian está com pau gera o seguinte erro quando loga no ftp podemos ver o bug em http://​bugs.debian.org/​cgi-bin/​bugreport.cgi?​bug=656900
 +<sxh bash>
 +ftp localhost
 +ftp: connect to address ::1: Connection refused
 +Trying 127.0.0.1...
 +Connected to localhost.
 +220 Bem-Vindo ao FTP douglasqsantos.com.br.
 +Name (localhost:​root):​ usuarioftp
 +331 Please specify the password.
 +Password:
 +500 OOPS: vsftpd: refusing to run with writable root inside chroot()
 +Login failed.
 +ftp> quit
 +421 Service not available, remote server has closed connection
 +</​sxh>​
 +
 +Agora vamos ajustar o vsftpd
 +<sxh bash>
 +echo "deb http://​ftp.cyconet.org/​debian wheezy-updates main non-free contrib"​ >> /​etc/​apt/​sources.list.d/​wheezy-updates.cyconet.list ​
 +aptitude update; aptitude install -t wheezy-updates debian-cyconet-archive-keyring vsftpd
 +</​sxh>​
 +
 +Agora que já instalamos o nosso pacote podemos remover este repositório
 +<sxh bash>
 +rm -rf /​etc/​apt/​sources.list.d/​wheezy-updates.cyconet.list ​
 +</​sxh>​
 +
 +Vamos reiniciar o nosso serviço. ​
 +<sxh bash>
 +/​etc/​init.d/​vsftpd restart
 +</​sxh>​
 +Agora vamos testar o acesso via ftp. 
 +<sxh bash>
 +ftp localhost
 +ftp: connect to address ::1: Connection refused
 +Trying 127.0.0.1...
 +Connected to localhost.
 +220 Bem-Vindo ao FTP douglasqsantos.com.br.
 +Name (localhost:​root):​ usuarioftp
 +331 Please specify the password.
 +Password:
 +230 Login successful.
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> ls
 +200 PORT command successful. Consider using PASV.
 +150 Here comes the directory listing.
 +drwxr-xr-x ​   3 1001     ​33 ​          4096 Dec 02 17:26 frontend
 +226 Directory send OK.
 +ftp> quit
 +221 Goodbye.
 +</​sxh>​
 +
 +Como pode ser notado conseguimos acessar o nosso servidor normalmente com o usuário que criamos. ​
 +
 +Agora vamos configurar o Fail2ban para cuidar de nosso servidor arquivo /​etc/​fail2ban/​jail.conf ​
 +<sxh apache>
 +
 +vim /​etc/​fail2ban/​jail.conf
 +#/​etc/​fail2ban/​jail.conf
 +[DEFAULT]
 +ignoreip = 127.0.0.1, 10.0.0.0/23
 +bantime ​ = 600
 +maxretry = 3
 +backend = polling
 +destemail = email_do_webmaster
 +banaction = iptables-multiport
 +mta = sendmail
 +protocol = tcp
 +action_ = %(banaction)s[name=%(__name__)s,​ port=\"​%(port)s\",​ protocol=\"​%(protocol)s]
 +action_mw = %(banaction)s[name=%(__name__)s,​ port=\"​%(port)s\",​ protocol=\"​%(protocol)s]
 + ​%(mta)s-whois[name=%(__name__)s,​ dest=\"​%(destemail)s\",​ protocol=\"​%(protocol)s]
 +action_mwl = %(banaction)s[name=%(__name__)s,​ port=\"​%(port)s\",​ protocol=\"​%(protocol)s]
 + ​%(mta)s-whois-lines[name=%(__name__)s,​ dest=\"​%(destemail)s\",​ logpath=%(logpath)s]
 + 
 +action = %(action_mwl)s
 +
 +[ssh]
 +enabled = true
 +port    = ssh
 +filter ​ = sshd
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[pam-generic]
 +enabled = true
 +filter ​ = pam-generic
 +port = all
 +banaction = iptables-allports
 +port     = anyport
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[ssh-ddos]
 +enabled = true
 +port    = ssh
 +filter ​ = sshd-ddos
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[apache]
 +enabled = true
 +port    = http,https
 +filter ​ = apache-auth
 +logpath = /​var/​log/​apache*/​*error.log
 +maxretry = 3
 +
 +[dominio.com.br]
 +enabled = true
 +port    = http,https
 +filter ​ = apache-auth
 +logpath = /​var/​www/​website/​logs/​*error.log
 +maxretry = 3
 +
 +[vsftpd]
 +enabled ​ = true
 +port     = ftp,​ftp-data,​ftps,​ftps-data
 +filter ​  = vsftpd
 +logpath ​ = /​var/​log/​vsftpd.log
 +maxretry = 3
 +
 +[postfix]
 +enabled ​ = true
 +port     = smtp,ssmtp
 +filter ​  = postfix
 +logpath ​ = /​var/​log/​mail.log
 +
 +[sasl]
 +enabled ​ = true
 +port     = smtp,​ssmtp,​imap2,​imap3,​imaps,​pop3,​pop3s
 +filter ​  = sasl
 +logpath ​ = /​var/​log/​mail.log
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço para que o nosso servidor estejá com um agente análisando os logs e bloqueando quando necessário. ​
 +<sxh bash>
 +
 +/​etc/​init.d/​fail2ban restart
 +</​sxh>​
 +
 +Agora vamos fazer mais alguns ajustes em nosso apache deixe como abaixo arquivo /​etc/​apache2/​conf.d/​security  ​
 +<sxh bash>
 +
 +vim /​etc/​apache2/​conf.d/​security
 +[...]
 +ServerTokens Prod
 +[...]
 +ServerSignature Off
 +</​sxh>​
 +
 +E na jaula também /​var/​chroot/​etc/​apache2/​conf.d/​security  ​
 +<sxh bash>
 +vim /​var/​chroot/​etc/​apache2/​conf.d/​security
 +[...]
 +ServerTokens Prod
 +[...]
 +ServerSignature Off
 +</​sxh>​
 +
 +Agora é só reiniciar o apache. ​
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora é só acessar o site em http://​wiki.douglasqsantos.com.br  ​
 +
 +
 +====== Referências ======
 +
 +  - http://​www.apache.org/​
 +  - http://​httpd.apache.org/​
 +  - http://​wiki.apache.org/​httpd/​
 +  - http://​wiki.apache.org/​httpd/​FAQ
 +  - http://​httpd.apache.org/​security_report.html
 +  - http://​httpd.apache.org/​docs/​2.2/​
 +  - http://​www.php.net/​manual/​en/​install.unix.php
 +  - http://​www.php.net/​manual/​en/​install.php
 +  - http://​www.php.net/​manual/​en/​install.unix.apache2.php
 +  - http://​www.mysql.com/​
 +  - http://​www.mysql.com/​downloads/​
 +  - http://​dev.mysql.com/​
 +  - http://​dev.mysql.com/​doc/​
 +  - https://​security.appspot.com/​vsftpd.html
 +  - ftp://​vsftpd.beasts.org/​users/​cevans/​untar/​vsftpd-2.3.4/​
 +  - https://​security.appspot.com/​vsftpd/​vsftpd_conf.html
 +  - http://​wiki.colivre.net/​Aurium/​UsandoChroot
 +  - http://​www.unixwiz.net/​techtips/​chroot-practices.html
 +  - http://​www.slideshare.net/​rstm/​criao-de-ambientes-em-chroot
 +  - http://​wiki.debian.org/​pt_BR/​Debootstrap
 +  - http://​www.debian-administration.org/​articles/​426
 +  - http://​www.fail2ban.org/​wiki/​index.php/​Main_Page
 +  - http://​www.fail2ban.org/​wiki/​index.php/​MANUAL_0_8
 +  - http://​blog.waja.info/​2013/​05/​13/​500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/​