Nâng cao bảo mật cho máy chủ PHP

Giới thiệu


PHP là ngôn ngữ nguồn mở được sử dụng khá phổ biến hiện nay và thường đi kèm với web server Apache. Theo thống kê của W3techs.com thì hơn 80% websites sử dụng ngôn ngữ này.
Program language statistic

Cấu hình các tham số liên quan dành cho PHP rất quan trọng, việc cấu hình sai có khả năng dẫn đến các nguy cơ bảo mật cho máy chủ. Một số tổng hợp liên quan đến việc nâng cao an ninh cho máy chủ PHP:

1. Tìm các built-in PHP modules và tắt nếu không cần thiết

Muốn xem các module đang được sử dụng dùng lệnh: Php –m Khuyến cáo sử dụng PHP chỉ với các modules cần thiết, và tắt bớt các modules không cần thiết đi để tăng hiệu suất và bảo đảm bảo mật. Ví dụ: tắt sqlite3 module bằng cách xóa module đi hoặc đơn giản nhất là đổi tên lại Sử dụng lệnh sau để đổi tên # mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable Một cách khác để tắt các compiled-in modules là có thể xóa và cài đặt lại php với cấu hình thích hợp.

2. Giảm thất thoát thông tin của PHP

Để ngăn chặn việc khai thác thông tin của PHP, tiến hành tắt expose_php. Chỉnh sửa file /etc/php.ini và đặt tham số sau: Expose_php=Off Khi bật tham số này lên (giá trị On) sẽ hiển thị thông tin rằng PHP được cài đặt trên máy chủ này bao gồm các thông tin như phiên bản PHP trong header HTTP (ví dụ: X-Powered-By: PHP/5.3.3). Khi expose_php đặt ở giá bị On, sử dụng câu lệnh sau để biết được phiên bản của PHP: Ví dụ:
Thong tin PHP

$ curl -I http://www.cyberciti.biz/index.php

Thong tin PHP - No display

3. Lưu ký lại toàn bộ log lỗi của PHP

Để không hiển thị lỗi trên trang web cho các clients có thể thấy được, và lưu lại tất cả các lỗi của php vào 1 file log, tiến hành chỉnh sửa các tham số sau trong /etc/php.ini

display_errors=Off (mặc định là On, chuyển thành Off)
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

4. Không cho phép upload files

Lưu ý: Option này chỉ thực hiện đối với các ứng dụng không cần upload file, ví dụ các trang tin tức hoặc các website chỉ đơn thuần cung cấp nội dung, không cần có sự tương tác upload file từ phía người dùng cuối, có thể tắt tính năng upload files để tăng tính bảo mật.
Thực hiện bằng cách chỉnh sửa trong file /etc/php.ini

file_uploads=Off

Trong trường hợp client cần upload files, cần phải bật tham số này lên, đồng thời đặt tham số liên quan đến dung lượng file upload phù hợp:

file_uploads=On
# user can only upload upto 1MB via php
upload_max_filesize=1M

Tài liệu tham khảo: PHP-security-best-practices-tutorial

Bình luận