Một số phương pháp bảo vệ php trên linux PHP là ngôn ngữ lập trình đang rất phổ

biến và đang được rất nhiều nhà quản trị, lập trình viên ưa chuộng. Đề chạy PHP dĩ nhiên là không khó, tuy nhiên nhiều cấu hình mặc định của PHP có thể bị lợi dụng để tấn công. Sau đây, mình xin giới thiệu tổng hợp một số phương pháp giúp cấu hình bảo vệ PHP tốt hơn. Bài viết sẽ chia làm 3 phần, sau đây là phần 1 I. Thông tin ban đầu Để tiện cho việc theo dõi, mình list ra những thông tin thư muc, platform mình sử dụng như sau DocumentRoot: /var/www/html Platform : CentOS 6.5 Webserver : Apache Php.ini : /etc/ php.ini (với Ubuntu là /etc/php5/apache2/php.ini) PHP extension config file: /etc/php.d (với Ubuntu là /etc/php5/apache2/conf.d) Sample php security config file: /etc/php.d/security.ini (file này các bạn tự tạo) Quyền: Các thông tin dưới đây sẽ được thực hiện với quyền root. II. Phương pháp 1. Các nguy cơ đối với PHP Những nguy cơ với php hay chính là những điểm yếu trong quá trình lập trình, hacker sẽ lợi dụng để tấn công vào hệ thống. Những lỗ hổng này có rất nhiều thông tin trên mạng, do đó mình chỉ liệt kê tên thôi XSS SQL injection

Tìm các module Built. ví dụ như sqlite3 chúng ta có thể xóa bằng câu lệnh hoặc disable nó đi bằng câu lệnh .File uploads Including local and remote files eval() Sea-surf Attack (Cross-site request forgery – CSRF) 2. theo khuyến cáo của nhiều site thì chúng ta nên disable một số module đi.in của PHP Sử dụng câu lệnh sau để tìm các module 1 php -m Rất nhiều đúng không các bạn.

Hạn chế Loadable PHP Modules (Dynamic Extensions) PHP hỗ trợ tính anwng Dynamic Extensions. nên phần này mình không nói lại nữa 4.Những module còn lại.d/security.d/.d --enable-fastcgi --enable-force-cgiredirect 3. Disallow Uploading Files Trong file /etc/php.ini 6. chúng ta chỉ có thể xóa php đi và cài lại. Ghi nhật ký tất cả các lỗi phát sinh của PHP Những lỗi phát sinh từ PHP không nên hiển thị cho người dùng view website./configure --with-libdir=lib64 --with-gd --with-mysql --prefix=/usr --exec-prefix=/usr -bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share -1 includedir=/usr/include --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=. 5./config.ini thực hiện thêm dòng code sau . Ví dụ: .d/security. trong quá trình . chúng ta có thể xóa hoặc disable những module này đi tương tự câu lệnh trong phần 2.. nên mặc định với Ubuntu. nó sẽ load hết các module trong thư mục /etc/php.cache --with-configfile-path=/etc --with-config-file-scan-dir=/etc/php. Hạn chế thông tin bị lộ Như bài viết của mình đã trình bày./configure sẽ loại bỏ những module thừa đi. các bạn thêm dòng code sau vào trong file /etc/php.

ini Khi chức năng này được bật.d/security.d/security.. nếu bạn chưa xem phần 1. mysql_connect() và mysql_pconnect() sẽ không nhận bất thì đối số nào được truyền tới chúng. Để hạn chế điều đó. Turn Off Remote Code Execution Nếu được enable. require(). include(). Enable SQL Safe Mode Cấu hình này được thực hiện trên file /etc/php. các bạn có thể theo dõi tại đây. Lập trình viên thường hay quên điều này và không xây dựng các bộ lọc dữ liệu đầu vào phù hợp dẫn đến lỗ hổng code injection. có thể truy xuất dữ liệu từ xa thông qua ftp hoặc website. Trong những báo cáo về điểm yếu của PHP. Lưu ý rằng. chúng ta có thể thực hiện thông qua /etc/php. Những . bạn có thể tùy chỉnh tùy thuộc vào code của bạn. module allow_url_fopen sẽ cho phép các chức năng file của php như file_get_contents(). chúng ta cần disable allow_url_include Đây là phần 2 của bài viết một số phương pháp bảo vệ php.Hoặc bạn có thể cho phép upload nhưng hạn chế size upload chẳng hạn 7. thì đây là lỗ hổng chiếm tỉ trọng rất lớn. Chúng ta tiếp tục phần 2 8.ini Ngoài ra.

3. Thay vào đó. Ngoài ra. chúng ta có thể cấu hình thông qua file gedit /etc/httpd/conf/httpd. Do đó. Chuyên gia khuyến cáo nên tắt magic_quotes_gpc trong tất cả các phiên bản php 5.conf 1 <Directory “/var/www/html”> 2 <LimitExcept GET POST> 3 Order allow.ini 1K là dung lượng tối đa dữ liệu dạng post được phép chấp nhận. 9. setting này cũng ảnh hưởng tới file upload.x do bộ lọc này thực sự không hiệu quả.ứng dụng mã nguồn mở như WordPress lại không hoạt động khi tính năng này được bật. cần hạn chế những giao thức request tới server. Hacker có thể gửi gói tin POST quá tải nhằm tiêu tốn tài nguyên của server.deny 4 </LimitExcept> 5 </Directory> .d/security. để an toàn chúng ta nên hạn chế dung lượng tối đa của POST request thông qua file /etc/php. giá trị này cần lớn hơn giá trị trong upload_max_filesize (đã giới thiệu trong mục 6 của part 1). chúng ta có thể sử dụng mysql_escape_string() hoặc các bộ lọc khác hiệu quả hơn. Để upload file lớn hơn. Kiểm soát POST Size Giao thức HTTP POST được dùng khi client cần gửi dữ liệu tới Apache web server ví dụ như upload file hay submit form.

ini 11. Thành phần thứ 2 bao gồm rất nhiều thành phần mở rộng mạnh mẽ cho PHP bla bla … Đó là những giới thiệu về Suhosin. Thành phần đầu tiên là một bản patch cho PHP core. Chúng ta thực hiện việc này thông qua file /etc/php. nó được thiết kế để bảo vệ server và người dùng từ những điểm yếu đã biết và chưa biết trong ứng dụng PHP và trong P HP core. Cài đặt Suhosin để bảo vệ PHP Suhosin là một chương trình dùng để bảo vệ PHP. trong đó có chứa một số cơ chế bảo vệ mức thấp đối với lỗ hổng buffer overflow và format string. nếu không cẩn thận. chúng ta có thể disable những chức năng này thông qua file /etc/php.10. chúng ta có thể giới hạn thời gian tối đa mỗi script này có thể request data cũng như giới hạn bộ nhớ tối đa mà mỗi php script có thể sử dụng. Ngoài ra.d/security. 12. Disable những chức năng nguy hiểm của PHP PHP có rất nhiều tính năng là con dao 2 lưỡi. Kiểm soát tài nguyên (DoS Control) Chúng ta có thể giới hạn thời gian tối đa mỗi php script có thể chạy. Sohosin bao gồm hai thành phần. chúng ta sẽ bị chính những tính năng này làm hại.d/security. có thể sử dụng riêng biệt hoặc kết hợp với nhau. do đó.ini . quá trình cài đặt và cấu hình suhosin mình sẽ giới thiệu với các bạn trong bài viết tới. để an toàn.

Cấu hình Fastcgi / CGI PHP có thể hoạt động với FastCGI. bạn nên chạy php bằng tài khoản non. Do đó.biz/cgi bin/php/hackerdir/backdoor.13. Cấu hình cgi.PHP sẽ từ chối việc này. Hạn chể quyền truy cập đến các file hệ thống. kẻ tấn công có thể lợi dụng fa stcgi để xâm nhập và thay đổi các file trong hệ thống. các bạn có thể theo dõi tại đây Link phần 1 Link phần 2 .d/security. 15. Chúng ta cấu hình thông qua file /etc/php.cyberciti. Do đó. Chúng ta thực hiện việc này thông qua /etc/php.root (tài khoản không phải root). PHP User and Group ID mod_fastcgi là một cgi. Nếu PHP được chạy với tài khoản root hoặc tài khoản có UID nhỏ hơn 100.module của Apache.ini 14. force_redirect nhằm ngăn chặn việc gọi PHP trực tiếp như http://www.php. nếu bạn chưa xem phần 1 và phần 2. FastCGI có thể giảm năng suất của server tuy nhiên lại làm tăng tốc độ của PHP. nên chạy PHP CGI bằng những tài khoản như suEXEC hoặc mod_suPHP. Các bạn có thể cấu hình Apache2+PHP+FastCGI. nó có thể connect tới FASTCGI server bên ngoài. Đây là những tài khoản có đủ quyền để thực thi công việc chạy php. Tính năng open_basedir dùng để xác định những thư mục nào PHP được phép truy cập thông qua những function như fopen()… Nếu ứng dụng truy cập đến file ở các thư mục khác.ini Đây là phần 3 (phần cuối) của bài viết một số phương pháp bảo vệ php.

PHP. PHP Lợi ích thì đã quá rõ rồi. Session Path Session trong PHP nhằm bảo vệ dữ liệu trong những lần truy cập tiếp theo. Đường dẫn này được định nghĩa trong /etc/php. chúng ta sử dụng câu lệnh 1 yum update Hoặc 1 apt-get update && apt-get upgrade 18. MySQL Sử dụng câu lênh chattr để bảo vệ chống ghi đè file cấu hình: .save_path Ngoài ra.Chúng ta sẽ đi và phần cuối: 16.ini và tất cả những dư liệu liên quan đến phiên đó sẽ được lưu trữ trong thư mục được định nghĩa qua session. Điều này cho phép chúng ta có thể xây dựng những ứng dụng tùy chỉnh khác cho website. chúng ta có thể cấu hình thư mục tạm cho việc upload file 17. Bảo vệ các file cấu hình của Apache. Cập nhật thường xuyên hệ điều hành.

chúng ta sử dụng câu lệnh 1 getsebool -a | grep httpd .19. Ví dụ như. Để liệt kê tất cả chính sách liên quan đến Apache của SELinux. SELinux có một số những policy cho Linux kernel và Apache web server. Bạn có thể sử dụng SELinux nhằm hạn chế việc sử dụng băng thông mạng cũng như hạn chế các chương trình khác. Sử dụng Linux Security Extensions (ví dụ như SELinux) Linux có rất nhiều bản vá lỗi cho các lỗi về cấu hình hoặc những chương trình trên hệ thống.

Thường xuyên kiểm tra file log Log của apache: 1 tail -f /var/log/httpd/error_log 2 grep 'login. 22.php' /var/log/httpd/error_log 3 egrep -i "denied|error|warn" /var/log/httpd/error_log . ta sử dụng câu lệnh: 1 setsebool -P httpd_enable_cgi off 20. Sử dụng firewall để hạn chế những truy cập từ bên ngoài. để tắt httpd_enable_cgi. Kẻ tấn công có thể download các file từ máy tính của chúng ta thông qua wget. việc sử dụng mod_security có thể giúp ứng dụng web chống lại những tấn công như xss hay sql injection 21. Để hạn chế điều này.Ví dụ. Install Mod_security ModSecurity là ứng dụng IPS mã nguồn mở cho ứng dụng web. chúng ta có thể sử dụng iptables để block các kết nối từ bên ngoài.

Những lưu ý khác Sử dụng các công cụ bảo vệ khác: như PHPIDS hoặc PhpSecInfo. chúng ta có thể tìm kiếm trên hệ thống thông qua grep .Log của php 1 tail -f /var/log/httpd/php_scripts_error. PHPIDS có tác dụng lọc các dữ liệu đầu vào có thể gây ảnh hưởng tới ứng dụng. PhpSecInfo kiểm tra function phpinfo() của PHP.log Những câu lệnh trên có thể giúp các bạn tìm hiểu xem có những tấn công xảy ra với server của mình hay không 23. đưa ra những thông tin hữu ích về hiện trạng cũng như những gợi ý nhằm nâng cao hiệu năng ứng dụng.log 2 grep ".. Tìm xem hệ thống có dính backboor hay không Nếu hệ thống có dính một số backdoor thông dụng như c99 hay r57. Trong đó..etc/passwd" /var/log/httpd/php_scripts_error.

hacker là những người rất giỏi. ngoài việc duy trì hệ thống ổn định. Do đó. êm ái.1 grep -iR 'c99' /var/www/html/ 2 grep -iR 'r57' /var/www/html/ 3 find /var/www/html/ -name \*. những biện pháp vừa rồi không thể hoàn toàn ngăn cản họ.php -type f -print0 | xargs -0 grep c99 4 grep -RPn "(passthru|shell_exec|system|base64_decode|fopen|fclose|eval)" /var/www/html/ Kết luận Trên đây là một số phương pháp tăng cường bảo mật cho PHP. các bạn cần thường xuyên pentest nó để phát hiện điểm yếu sớm và khắc phục kịp thời. . Tuy nhiên.

Sign up to vote on this title
UsefulNot useful