Sistemas altamente acessados são alvos de constantes ataques, que muitas vezes afetam a disponibilidade, integridade e confiabilidade das informações.
Para minimizar os acidentes podemos evitar que o servidor retorne erros de URL não encontradas, esses erros geralmente mostram versões de softwares que estão sendo usados e o sistema operacional que está sendo usado, essas informações contribuem para tentativas de invasão e exploração de falhas, portanto é importante que sejam tratadas para que o servidor possa ter melhor robustez.
Pode-se configurar esse erro no arquivo principal do apache (apache.conf) usando a diretiva ErrorDocument. Segue abaixo o erro gerado e as diretivas usadas para impedí-los.
Erro do Apache:
The requested URL /ds was not found on this server.
Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.5 with Suhosin-Patch Server at 200.131.231.53 Port 80
Tratamento de exibição de erro:
ErrorDocument 400 "<h1>400 error: bad request</h1>"
ErrorDocument 403 "<h1>403 error: access forbidden</h1>"
ErrorDocument 404 "<h1>404 error: document not found</h1>"
ErrorDocument 500 "<h1>500 error: internal server error</h1>"
Pode-se configurar também exibições de erros e funções que possuem caráter de insegurança, uma série de funções podem permitir que falhas sejam exploradas por um cracker. Portanto devemos configurar duas diretivas: disable_functions, seguida pelo nome das funções separadas por vírgulas e a display_errors que desabilita a exibição de erro do php, seus parâmetros são on e off. Como é mostrado no quadro abaixo.
; Para não mostrar mensagens de erro
display_errors = Off
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions = apache_child_terminate, apache_setenv, curl_exec, curl_multi_exec, define_syslog_variables, dir, dl, escapeshellarg, escapeshellcmd, eval, exec, set_time_limit, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_restore, ini_set, ini_get_all, ocilogon, openlog, opendir, parse_ini_file, passthru, phpinfo, php_uname, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, readdir, readfile, sacndir, shell_exec, show_source, syslog, system, xmlrpc_entity_decode, mysql_pconnect