Thursday, June 9, 2011

Joomla – Bảo vệ file “configuration.php” khỏi các truy nhập trái phép

Việc bảo vệ các file có nội dung quan trọng, các file cấu hình chứa các thông số của hệ thống như: tên database, tên truy nhập, mật khẩu… là rất cần thiết và phải đặc biệt lưu tâm.


Trong Joomla có một file như thế – file “configuration.php”. Để tăng cường bảo mật cho file “configuration.php” này có nhiều cách, tuy nhiên có một cách hay được sử dụng và đề cập trên các diễn đàn, đó là chuyển file “configuration.php” tới một nơi an toàn, tránh sự nhòm ngó của hacker. Các bước thực hiện như sau:

Giả sử Website Joomla của bạn được đặt trong thư mục “/www/public_html”

1www
2---|public_html
3--------------|configuration.php

* Chuyển file “configuration.php” ra khỏi “public_html”, đặt nó vào một khu vực khác do bạn tự tạo chẳng hạn “/www/tvw_hide”. Đặt cho nó một cái tên mới, chẳng hạn “thegioimanguon.conf”.

1www
2---|tvw_hide
3-----------|thegioimanguon.conf

* Tạo một file “configuration.php” thay thế file cũ nhưng chứa nội dụng sau:

1<?php
2require( '/www/tvw_hide/thegioimanguon.conf' );
3?>

* Thiết lập (CHMOD) quyền chỉ đọc cho file “configuration.php” mới này để đảm bảo nó không bị thay đổi nội dung.

* Khi bạn cần thay đổi các thiết lập cho Joomla hãy thực hiện bằng tay đối với file “thegioimanguon.conf”

http://www.thegioimanguon.com/huong-dan-ma-nguon/joomla-huong-dan-ma-nguon-mo/joomla-%E2%80%93-bao-ve-file-%E2%80%9Cconfiguration-php%E2%80%9D-khoi-cac-truy-nhap-trai-phep.html

Bài viết này xin cung cấp cho bạn một loạt các thủ thuật để tăng cường bảo mật cho Website Joomla! được trích dẫn từ diễn đàn Joomla! (http://forum.joomla.org). Có thể một vài thủ thuật hơi khó thực hiện hoặc gây khó khăn, thâm chí là lỗi cho hệ thống của bạn, tuy nhiên đừng nản chí , mọi cái đều có giá của nó. Nếu không thiết lập một vòng đai an toàn cho Website sẽ có lúc bạn phải hối tiếc vì điều đó và thiệt hại có khi là không tính đếm được. Hãy tiến hành ngay khi có thể.

01. Luôn cập nhật phiên bản mới nhất (Joomla 1.5), sao lưu website định kỳ toàn bộ Website bao gồm cả thư mục chứa Joomla và cơ sở dữ liệu MySQL. Hãy lập lịch ít nhất một lần trong tuần (khuyến cáo là mỗi ngày một lần) để thực hiện sao lưu. Bạn sẽ tiết kiệm được rất nhiều công sức và tiền của khi Website bị tấn công và chỉ mất vài phút hoặc vài chục phút để khôi phục lại gần như toàn bộ..

02. Chỉ nên download Joomla! từ website chính thức Joomlacode.org và kiểm tra mã xác thực MD5 (nếu có)

03. Xóa thẳng tay những thư mục hoặc file không còn sử dụng.
Sau khi cài đặt thành công Joomla, bạn phải xóa toàn bộ thư mục "installation". Nếu bạn upload lên Host bộ cài Joomla ở định dạng nén (*.zip), bạn cũng cần phải xóa bỏ file nén này. Tốt nhất là không nên để lại file hoặc thư mục gì ngoài gói Joomla.

04. Kiểm tra các thành phần mở rộng (module, component, mambot/plugin) của các hãng thứ ba.

Một số Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các thành phần mở rộng được cài đặt thêm từ hãng thứ ba. Do vậy bạn cũng luôn phải chắc chắn rằng nếu mình có cài đặt các thành phần mở rộng từ hãng thứ ba thì đó phải là các phiên bản mới nhất.
Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ hãng thứ ba. Ngoài ra khi bạn quyết định gỡ một thành phần mở rộng nào đó khỏi hệ thống thì bạn cũng xóa cả các bảng cơ sở dữ liệu liên quan.

05. Tăng cường bảo vệ cho file cấu hình "configuration.php" bằng cách chuyển nó ra khỏi thư mục public (thường có tên là public_html).

Việc bảo vệ các file có nội dung quan trọng, các file cấu hình chứa các thông số của hệ thống như: tên database, tên truy nhập, mật khẩu... là rất cần thiết và phải đặc biệt lưu tâm. Trong Joomla có một file như thế - file "configuration.php". Để tăng cường bảo mật cho file "configuration.php" này có nhiều cách, tuy nhiên có một cách hay được sử dụng và đề cập trên các diễn đàn, đó là chuyển file "configuration.php" tới một nơi an toàn, tránh sự nhòm ngó của hacker. Các bước thực hiện như sau:
Giả sử Website Joomla của bạn được đặt trong thư mục "/www/public_html"
Code:

www
---|public_html
--------------|configuration.php

* Chuyển file "configuration.php" ra khỏi "public_html", đặt nó vào một khu vực khác do bạn tự tạo chẳng hạn "/www/private". Đặt cho nó một cái tên mới, chẳng hạn "vinaora_joomla.conf".

Code:

www
---|private
-----------|vinaora_joomla.conf

* Tạo một file "configuration.php" thay thế file cũ nhưng chứa nội dụng sau:

Code:



* Đừng để bất cứ khoảng trắng hoặc dòng trắng nào phía trước thẻ "" và không được lưu nó với UTF-8 nếu không bạn sẽ nhận được thông báo lỗi, đại loại như:

Code:

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxx/public_html/configuration.php:2) in /home/xxxxx/public_html/index.php on line 250

* Thiết lập (CHMOD) quyền chỉ đọc cho file "configuration.php" mới này để đảm bảo nó không bị thay đổi nội dung.

* Khi bạn cần thay đổi các thiết lập cho Joomla hãy thực hiện bằng tay đối với file "vinaora_joomla.conf"


06. Đổi tên tài khoản truy nhập Joomla thay vì tài khoản mặc định "admin". Bước này tưởng chừng rất đơn giản nhưng lại ngăn chặn được khá nhiều cuộc tấn công. [Xem thêm]

07. Bạn muốn ngăn chặn việc truy cập trái phép vào vùng quản trị, trang administrator (phần backend trong Joomla). Có nhiều giải pháp để thực hiện việc này. Bài viết này xin giới thiệu một cách khá đơn giản nhưng lại hiệu quả với mục đích "Tăng cường thêm một rào cản trước khi truy nhập được file index.php". Áp dụng trên Hosting chạy Apache Server.
Cách thực hiện:

Copy đoạn mã sau và đặt vào đầu của file "index.php" trong thư mục "Joomla\administrator\"
Code:

VINAORA : Access Denied');
}
?>



08. Edit quyền hạn đối với thư mục và tập tin

Quyền hạn đối với thư mục Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các thư mục sang chế độ CHMOD 755.

Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng (component/module/language...) gặp trục trặc bạn cần chuyển các thư mục sau sang CHMOD 777. Khi cài đặt xong lại thiết lập như trên (755 đối với thư mục và 644 đối với file)

Code:

components
language
modules
mambots
templates
administrator
administrator/backups
administrator/components
administrator/modules

Quyền hạn đối với tập tin

Thiết lập quyền hạn đối với tất cả các tệp của bạn sang chế độ CHMOD 644.

09. Bảo mật cookie
Ý tưởng của giải pháp này là: Sử dụng chứng thực bằng cookie ngăn chặn mọi truy cập trực tiếp tới vùng quản trị Joomla! bằng đường dẫn /administrator (VD: http://vinaora.com/joomla/administrator). Thay vào đó phải truy cập gián tiếp thông qua một đường dẫn chỉ mình bạn biết (chẳng hạn http://vinaora.com/joomla/secret/vinaora.php).



Bước 1: Tạo một thư mục bí mật chẳng hạn [Joomla]/secret

Thư mục này nằm cùng mức với thư mục /administrator
Lưu ý: Bạn hoàn toàn có thể sử dụng một thư mục có sẵn (chẳng hạn thư mục /language)

Bước 2: Tạo một file "vinaora.php" trong thư mục bí mật trên với nội dung sau:

Code:

< ?php
$admin_cookie_code="abcdef123456";
setcookie("VinaoraAdminSession",$admin_cookie_code ,0,"/");
header("Location: /administrator/index.php");
?>

Bạn nên đổi cặp giá trị cookie "VinaoraAdminSession" & "abcdef123456" bằng những chuỗi ký tự bất kỳ (gồm ký tự chữ cái và ký tự số) để tránh hacker sử dụng công cụ chèn trực tiếp cookie trên vào trình duyệt.
Bạn cũng có thể sử dụng một cái tên khác chứ không nhất thiết phải là "vinaora.php"
Bước 3: Thêm nội dung sau tới file ".htaccess" của thư mục /administrator

Code:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/administrator
RewriteCond %{HTTP_COOKIE} !VinaoraAdminSession=abcdef123456
RewriteRule .* - [L,F]

Trong trường hợp HOSTING của bạn không hỗ trợ file .htaccess hãy liên hệ với bộ phận kỹ thuật để được giúp đỡ.
Khi cần truy cập vào trang quản trị hãy gõ đường dẫn: http://yoursite/secret/vinaora.php

10. Chặn các truy vấn nguy hiểm nhờ file ".htaccess"

11. Bảo vệ các thư mục nhậy cảm, chẳng hạn thư mục "administrator" thông qua file ".htaccess"

12. Giới hạn các IP truy cập tới các thư mục nhậy cảm thông qua file ".htaccess"

13. Chọn Host có hỗ trợ PHP5.

14. Sử dụng các công cụ nổi tiếng như PHPsuExec, php_suexec và suPHP.

15. Nếu có thể, hãy yêu cầu Server nạp các module mod_security và mod_rewrite để lọc và chặn các truy vấn nguy hiểm.

16. Sử dụng tài khoản MySQL đã được thiết lập quyền giới hạn (không sử dụng tài khoản root).

17. Cố gắng nâng cấp các đoạn mã sang PHP5. Riêng gói Joomla thì bạn không cần lo lắng vì ngay từ ban đầu nó đã được thiết kế tương thích với PHP5.

18. Cố gắng không sử dụng các thành phần mở rộng yêu cầu "safe_mode" của PHP.

19. Tắt Joomla! Register Globals Emulation trong file "globals.php".
Đảm bảo rằng Register Globals được thiết lập thành OFF. Nếu không hãy liên hệ với Server của bạn để đổi nó thành OFF
Code:

define( 'RG_EMULATION', 0 );

hoặc mở tệp .htaccess và thêm vào đoạn mã sau
Code:

php_flag register_globals off.

20. Xóa bỏ toàn bộ các template không sử dụng khỏi thư mục "templates" và không đặt bất cứ đoạn mã nhạy cảm nào vào các file trong template.

21. Thuê một chuyên gia bảo mật Joomla! để kiểm tra toàn bộ Website của bạn.

Tut được edit lại từ bài viết trên site vinaora.com sao cho dễ hiểu và dễ áp dụng nhất

vinaora.com

No comments:

Router Packet Networking

Đây là video ngắn khá hay, mô tả đường đi của một gói tin trên Mạng Internet.