Collection by traibingo
128
Part 20
Kiểm tra hệ thống file Joomla bằng Joomla
Diagnostics
Thông thường sau khi upload Joomla lên Hosting, hoặc sau một quá trình
dài sử dụng bạn rất muốn biết liệu thư mục Joomla của mình có bị thiếu
file, hư hỏng hoặc bị Hacker chỉnh sửa gì không? Joomla của mình có an
toàn không? Thật đơn giản, bạn hãy tìm và download Joomla
Diagnostics. Đây là một công cụ miễn phí cho phép xác định rõ:
Những file bị thiếu
Những file bị hỏng hoặc đã bị chỉnh sửa
Những file không an toàn (có thể truy cập trực tiếp từ đường dẫn, do
thiếu kiểm tra _VALID_MOS hoặc _JEXEC)
Các thiết lập không an toàn (VD: register_globals = off)
Quy trình kiểm tra như sau:
Download Joomla Diagnostics:
Xác định rõ phiên bản Joomla mà bạn đang sử dụng: Joomla 1.0.13
hay Joomla 1.5
Tìm đúng Joomla Diagnostics cho phiên bản mà bạn đang sử dụng
Link download: Joomla Diagnostics
Giải nén Joomla Diagnostics
Giải nén Joomla Diagnostics mà bạn vừa download ở trên (gồm 2 file:
diagnostics.php và Joomla txt) vào thư mục Joomla (nơi có file
configuration.php)
diagnostics.php: file dùng để kiểm tra
Collection by traibingo
129
joomla txt: chứa danh sách các file của Joomla và mã kiểm tra tính
toàn vẹn (CHECKSUM)
Chạy Joomla Diagnostics
Mở đường dẫn http://website_cua_ban/diagnostics.php
VD: http://yoursite.com/diagnostics.php
VD: http://yoursite.com/joomla/diagnostics.php
Hình minh họa
Chú ý:
Vì lý do bảo mật bạn cần phải xóa ngay file diagnostics.php sau khi sử
dụng.
9 bước bảo mật Website Joomla!
Bảo mật cho Website Joomla là một nhân tố quan trọng
góp phần bảo vệ Website trước các âm mưu tấn công có
Collection by traibingo
130
chủ đích cũng như vô tình, giúp cho Website luôn hoạt động ổn định và
bền vững. Nhiều quản trị Website chỉ đặt trọng tâm vào việc thiết kế, cập
nhật nội dung và giành thứ hạng cao trong các kết quả tìm kiếm mà quên
đi việc đảm bảo an toàn cho Website, tới khi sự việc xảy ra thì đã quá
muộn. Bài viết dưới đây sẽ giới thiệu tới các bạn 9 bước để bảo mật cho
Website Joomla và giảm thiểu các nguy cơ tấn công từ Internet.
1. Sao lưu toàn bộ Website theo định kỳ
Điều đầu tiên và cũng là quan trọng nhất là bạn phải thường xuyên sao
lưu 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ộ.
2. Nâng cấp khi Joomla có phiên bản phát hành ổn định mới nhất.
Nhóm phát triển nòng cốt của Joomla luôn phát hành đều đặn vài tháng
một lần phiên bản Joomla mới bao gồm cả các bản vá lỗi bảo mật và và
các bản vá tăng cường hiệu suất làm việc, do vậy bạn cần kiểm tra thường
xuyên trên website của Joomla (http://www.joomla.org) để kịp thời cập nhật
phiên bản mới nhất.
3. 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.
4. Quyền hạn đối với các 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.
Collection by traibingo
131
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)
components
language
modules
mambots
templates
administrator
administrator/backups
administrator/components
administrator/modules
5. Quyền hạn đối với các tệp
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.
Collection by traibingo
132
6. Quyền hạn đối với tệp configuration.php
Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập
quyền hạn cho tệp "configuration.php" sang CHMOD 644.
7. Bảo mật với .htaccess
Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho
tệp ".htaccess" để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy
bạn cần phải truyền tệp .htaccess này tới server của bạn và đổi quyền hạn
sang CHMOD 644.
8. Joomla! Register Globals Emulation.
Bạn cần phải chắc chắn rằng biến "register global emulation" được thiết
lập thành OFF. Hãy mở tệp "global.php", tìm dòng
define('RG_EMULATION', 1) và đổi nó thành
define('RG_EMULATION', 0)
9. Register Globals
Đả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 hoặc mở tệp .htaccess và
thêm vào đoạn mã sau
php_flag register_globals off.
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ử
Collection by traibingo
133
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"
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 "yoursite_joomla.conf".
www
|private
|yoursite_joomla.conf
Tạo một file "configuration.php" thay thế file cũ nhưng chứa nội
dụng sau:
<?php
require( '/www/private/yoursite_joomla.conf' );
?>
Đừng để bất cứ khoảng trắng hoặc dòng trắng nào phía trước thẻ
"<?php" và phía sau 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ư:
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 "yoursite_joomla.conf"
Collection by traibingo
134
Bảo mật toàn tập cho Website Joomla
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.0.x, Joomla 1.5)
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. 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).
05. Đổ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.
06. Chặn các truy vấn nguy hiểm nhờ file ".htaccess"
07. 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"
08. 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"
09. Chọn Host có hỗ trợ PHP5.
Collection by traibingo
135
10. Sử dụng các công cụ nổi tiếng như PHPsuExec, php_suexec và
suPHP.
11. 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.
12. 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).
13. 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ếtkế tương thích với
PHP5.
14. 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.
15. Tắt Joomla! Register Globals Emulation trong file "globals.php".
define( 'RG_EMULATION', 0 );
16. Thiết lập quyền truy cập (CHMOD) các thư mục sang 755, các file sang
644. Bạn có thể vào Site > Global Configuration > Server để thiết lập
các quyền này cho thư mục và file. Bạn cũng có thể sử dụng một công cụ
FTP như FileZilla, SmartFTP, WS_FTP, Net2FTP để CHMOD. Lưu ý:
Một số thành phần mở rộng trong quá trình cài đặt có thể yêu cầu quyền
truy cập 777.
17. 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.
18. Thuê một chuyên gia bảo mật Joomla! để kiểm tra toàn bộ Website của
bạn.
Collection by traibingo
136
Bảo mật cho trang quản trị administrator bằng
mật khẩu
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\"
<?php
$name='439581667ef694b60d58f213cccf9503';
$pass='439581667ef694b60d58f213cccf9503';
if (!isset($_SERVER['PHP_AUTH_USER'])
|| md5($_SERVER['PHP_AUTH_USER'])!==$name
|| md5($_SERVER['PHP_AUTH_PW'])!==$pass)
{
header('WWW-Authenticate');
header('HTTP/1.0 401 Unauthorized');
exit('<a href="http://yoursite.com/">YOURSITE</a> : Access Denied');
}
?>
Trong đó
username = yoursite
password = yoursite
. dụng: Joomla 1.0.13
hay Joomla 1.5
Tìm đúng Joomla Diagnostics cho phiên bản mà bạn đang sử dụng
Link download: Joomla Diagnostics
Giải nén Joomla. cho Joomla hãy thực hiện bằng tay
đối với file "yoursite _joomla. conf"
Collection by traibingo
134
Bảo mật toàn tập cho Website Joomla