Với những ai quản trị Webserver thì nỗi lo bị hack nói chung hay local hack nói riêng là một điều luôn thường trực. PHP cung cấp cho chúng ta một ngôn ngữ lập trình web mạnh với rất nhiều hàm gọi hệ thống, giúp các lập trình viên có thể thao tác với hệ thống một cách tiện lợi. Tuy nhiên đây cũng là điểm yếu khi mà server bị hack, hay đơn giản server bạn là share hosting và hàng xóm của bạn Up 1 con shell loại như R57 hay c99 lên. Vậy chúng ta phải chống như thế nào?

Để chống được shell này ở mức cơ bản, chúng ta cần cài đặt mod_security, chạy php ở mức và cần phải disable một số hàm gọi hệ thống được đánh giá là nguy hiểm trong PHP, cụ thể là những hàm sau, và disable như sau:

Chúng ta mở file php.ini, tìm đến dòng bắt đầu bằng disable_funtions = và thêm vào như sau:

Mã:
disable_functions = "dl, fsockopen, socket_create, socket_create_listen, socket_create_pair, pfsockopen, putenv, pcntl_exec, pcntl_fork, apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode"
Nếu disable các hàm trên mà trang web bạn không hoạt động được thì bạn có thể sử dụng code dưới đây thay thế:

Mã:
disable_functions = "dl, openlog, syslog, exec, passthru, shell_exec, proc_open, system, popen, fsockopen, ftp_connect, posix_setuid, socket_create, socket_create_listen, socket_create_pair, pfsockopen, putenv, pcntl_exec, pcntl_fork"
Nói chung tùy thuộc vào từng loại mã nguồn mà yêu cầu sử dụng các hàm PHP khác nhau. Nếu gặp lỗi ở đâu thì ta có thể dựa vào lỗi php đó để enable thêm các functions cần thiết cho mã nguồn đó :)

Sau đó lưu lại và khởi động lại apache, lúc này server của bạn đã được an toàn hơn.