Ở phần tiền sảnh, Joomla! chia làm 5 nhóm người dùng tương ứng với 5 mức truy cập
khác nhau:
• Guest (Khách): Là những người truy cập, sử dụng website nói chung, họ không sở
hữu tài khoản nào trên hệ thống Joomla!
• Registered (Thành viên): Là khách sau khi đăng ký vào của hệ thống Joomla! và
trở thành thành viên chính thức của hệ thống.
• Author (Tác giả): Là thành viên có quyền đăng bài hoặc đăng một vài thứ khác mà
hệ thống cho phép (chẳng hạn như weblink)
• Editor (Người biên soạn): Là thành viên có quyền đăng, kiểm duyệt và chỉnh sửa
tất cả các bài viết (thậm chí cả những bài viết không phải của họ)
• Publisher (Người xuất bản): Là người biên soạn, ngoài ra có thêm quyền quyết
định việc phát hành các bài viết (chính thức xuất bản lên Website hay không)
22 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1244 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Mẹo thủ thuật sử dụng joomla (phần 2), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MẸO THỦ THUẬT SỬ DỤNG JOOMLA (PHẦN 2)
Bảo mật Website Joomla!
28. Phân quyền trong Joomla! 1.5
Phân quyền Joomla! ở tiền sảnh (front-end)
Ở phần tiền sảnh, Joomla! chia làm 5 nhóm người dùng tương ứng với 5 mức truy cập
khác nhau:
• Guest (Khách): Là những người truy cập, sử dụng website nói chung, họ không sở
hữu tài khoản nào trên hệ thống Joomla!
• Registered (Thành viên): Là khách sau khi đăng ký vào của hệ thống Joomla! và
trở thành thành viên chính thức của hệ thống.
• Author (Tác giả): Là thành viên có quyền đăng bài hoặc đăng một vài thứ khác mà
hệ thống cho phép (chẳng hạn như weblink)
• Editor (Người biên soạn): Là thành viên có quyền đăng, kiểm duyệt và chỉnh sửa
tất cả các bài viết (thậm chí cả những bài viết không phải của họ)
• Publisher (Người xuất bản): Là người biên soạn, ngoài ra có thêm quyền quyết
định việc phát hành các bài viết (chính thức xuất bản lên Website hay không)
Lưu ý 1: Có thể thiết lập để mặc định tài khoản Khách (Guest) cũng là tài khoản Thành
viên (Registered).
Lưu ý 2: Bất cứ thành viên nào thuộc phần hậu sảnh (Back-End) cũng có thể thực hiện
các thao tác mà người xuất bản (Publisher) có thể làm.
Phân quyền Joomla! ở hậu sảnh (back-end)
Ở phần hậu sảnh, Joomla! chia làm 3 nhóm tài khoản với 3 mức độ quyền hạn khác nhau:
• Manager (Người quản lý): Là tài khoản có quyền thực hiện các thao tác quản lý cơ
bản (quản lý menu, quản lý bài viết...).
• Administrator (Quản trị viên): Là tài khoản có quyền thực hiện mọi thao tác, trừ
việc quản lý thông tin cấu hình hệ thống, quản lý giao diện, quản lý ngôn ngữ,
quản lý các tài khoản siêu quản trị.
• Super Administrator (Siêu quản trị): Là tài khoản có đặc quyền cao nhất, có thể
thực hiện mọi hành động.
t a
tong
32
than
hton
g32
Thuật ngữ:
• Front-end (Frontend): Phần tiền sảnh hay phần mặt trước, phần mặt tiền phía
trang chủ mà ai cũng có thể trông thấy.
• Back-end (Backend): Phần hậu sảnh hay phần quản trị là vùng chỉ dành cho các
thành viên có quyền quản trị hệ thống Joomla!.
• ACL (Access Control List): Danh sách điều khiển truy cập (trong bài viết này sử
dụng khái niệm Phân quyền cho dễ hiểu).
Keyword:
• phân quyền, quản trị, khách, người đăng ký, tác giả, người biên soạn, người xuất
bản, quản lý, thành viên, đăng, kiểm duyệt, tiền sảnh, hậu sảnh, tài khoản, danh
sách điều khiển truy cập
• joomla, administrator, manager, publisher, editor, author, registered, guest, front-
end, back-end, acl, access control list
Chú ý: Ghi rõ nguồn VINAORA.COM khi sử dụng bài viết này.
29. Bảo mật cho trang quản trị Joomla! bằng 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:
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
Bước 1: Tạo một thư mục bí mật chẳng hạn
[Joomla]/secret
than
hto
32
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:
< ?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
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:
• VD:
Keyword:
• bảo mật, ngăn cấm, truy cập, trang quản trị, thư mục, trực tiếp, gián tiếp
• joomla, security, administrator, htaccess, cookie
Reference:
Chú ý: Ghi rõ nguồn VINAORA.COM khi sử dụng bài viết này.
30. Các cách CHMOD cho tệp (file) và thư mục
(directory)
th n
hton
g32
Để đảm bảo an toàn cho các file và thư mục trong Joomla!, tránh sự nhóm ngó của các
hacker thì một trong các yêu cầu quan trọng và phải luôn lưu ý đó là CHMOD cho đúng.
Thông thường chúng ta cần thiết lập CHMOD 755 cho các thư mục và CHMOD 644 cho
các file.
CHMOD là gì? CHMOD= 755 là gì? CHMOD = 644 là
gì?
CHMOD chính là thao tác thay đổi các quyền sau:
• "Read" (Đọc): viết tắt là "r", và được biểu diễn bằng số 4
• "Write" (Ghi / Chỉnh sửa): viết tắt là "w", và được biểu diễn bằng số 2
• "Execute" (Thực thi): viết tắt là "x", và được biểu diễn bằng số 1
CHMOD cùng lúc thay đổi quyền hạn trên các file/thư mục với các đối
tượng sau:
• "Owner" - chủ sở hữu của file/thư mục,
• "Group" - Nhóm mà Owner là thành viên,
• "Public / Others/ Everybody": những người còn lại.
CHMOD 755 (rwx r-x r-x) cho thư mục
Lưu ý: Khái niệm CHMOD không tồn tại trên hệ thống Windows, mà chỉ có trên các hệ
thống Unix/Linux
CHMOD = 755 cho các thư mục có nghĩa là:
• 7 = 4 + 2 + 1 : Người sở hữu thư mục có quyền đọc thư mục (read); chỉnh sửa
thư mục (write); liệt kê các thư mục và file bên trong (execute);
than
hton
g32
• 5 = 4 + 0 + 1 : Những người cùng nhóm chỉ có quyền đọc thư mục (read); liệt kê
các thư mục và file bên trong (execute)
• 5 = 4 + 0 + 1 : Những người còn lại chỉ có quyền đọc thư mục (read); liệt kê các
thư mục và file bên trong (execute)
CHMOD 755 (rwx r-x r-x) cho thư mục
CHMOD = 644 cho các tệp (file) có nghĩa là:
• 6 = 4 + 2 + 0 : Người sở hữu thư mục có quyền đọc tệp (read); chỉnh sửa tệp
(write)
• 4 = 4 + 0 + 0 : Những người cùng nhóm chỉ có quyền đọc tệp (read)
• 4 = 4 + 0 + 0 : Những người còn lại chỉ có quyền đọc tệp (read)
than
hton
g32
CHMOD 644 (rw- r-- r--) cho file
CMOD 755 cho các thư mục, CHMOD 644 cho các file
bằng một file PHP
Tạo một file "chmod.php" nằm trong thư mục mà bạn cần CHMOD cho toàn bộ các file,
thư mục bên trong nó với nội dung như sau:
<?php
system('find . -type d -exec chmod 755 {} \; 2>&1');
system('find . -type f -exec chmod 644 {} \; 2>&1');
echo("\n\nComplete!");
?>
Sau đó thực thi các dòng lệnh trên bằng cách mở link tới file này. VD:
CHMOD 755 cho các thư mục, CHMOD 644 cho các
file bằng dòng lệnh
Nếu bạn là người quản trị server hoặc có thể thực thi dòng lệnh thông qua SSH thì trước
tiên bạn cần chuyển đến thư mục Joomla bằng lệnh "cd" (change directory), sau đó bạn
có thể dùng các lệnh sau:
find . -type d -exec chmod 755 {} \; // dùng để CHMOD cho các thư mục
find . -type f -exec chmod 644 {} \; // dùng để CHMOD cho các file
th
hton
g32
hoặc
find . -type d -print0 | xargs -0 chmod 0775 // dùng để CHMOD cho các thư mục
find . -type f -print0 | xargs -0 chmod 0664 // dùng để CHMOD cho các file
hoặc
chmod -R 755 ./* // dùng để CHMOD tất cả các thư mục và file
find . -type f -exec chmod 644 {} \; // dùng để CHMOD cho các file
CHMOD bằng các trình quản lý file như "File
Manager", "FileZilla"...
Đối với FileZilla:
• Chọn"Recurse into subdirectories" để áp dụng thao tác CHMOD cho cả các thư mục
con
• Chọn "Apply to all files and directories" để áp dụng thao tác CHMOD cho tất cả các
file và thư mục
• Chọn "Apply to files only" để chỉ áp dụng thao tác CHMOD cho các file
• Chọn "Apply to directories only" để chỉ áp dụng thao tác CHMOD cho các thư mục
CHMOD 755 (rwx r-x r-x) cho thư mục bằng FileZilla
than
hton
g32
CHMOD 755 (rwx r-x r-x) cho thư mục bằng "File Manager"
Keyword
• chmod, 755, 644, read, write, execute, PHP, FileManager, FileZilla
• đọc, ghi, chỉnh sửa, thực thi, dòng lệnh
Các câu hỏi liên quan
• Làm thế nào để CHMOD trong Joomla?
• Làm sao để CHMOD cho các thư mục và file trong Joomla?
• CHMOD = 755 nghĩa là gì?
• CHMOD = 644 nghĩa là gì?
31. Chống tấn công SQL Injection trong Joomla
Sunday, 03 August 2008 14:31
Hiện Joomla! ngày càng phát triển mạnh mẽ và ngày càng được ứng dụng rộng rãi ở Việt
Nam với số lượng các thành phần mở rộng (extensions) từ các hãng thứ ba cũng tăng
không ngừng cả về số lượng và chất lượng. Rất nhiều thành phần mở rộng (gồm
component, module, plugin, template...) thực sự tuyệt vời và đáng được cài đặt trên mọi
Website.
Tuy nhiên, có một thực tế song hành với mặt ưu điểm trên là số lượng các Website bị tấn
công thông qua các lỗi lập trình bất cẩn trong các thành phần mở rộng được cài đặt thêm
cũng ngày càng tăng cao. Thậm chí số lượng lỗi bị khai thác còn cao hơn cả Microsoft
(theo báo cáo 6 tháng đầu năm 2008 của IBM).
t a
ton
32
Do vậy, ngay từ lúc này, bạn hãy kiểm tra lại toàn bộ hệ thống của mình để đảm bảo: Chỉ
cài đặt các thành phần mở rộng thực sự cần thiết, thực sự uy tín và hãy nhờ một người có
kinh nghiệm để kiểm tra các đoạn mã, mà một trong số chúng thường bị hacker khai thác
- các lỗi phổ biến về truy vấn SQL (thường gọi là SQL Injection).
Đối với người sử dụng cuối (end-user):
Không dùng tiền tố mặc định 'jos_'
Khi cài đặt website, Joomla sử dụng tiền tố mặc định cho các bảng của cơ sở dữ liệu:
'jos_'. Tuy nhiên để tránh sự nhòm ngó của các haker bạn nên đổi tiền tố này.
Không dùng tài khoản mặc định 'admin'
• Tạo một tài khoản quản trị (Super Administrator) mới thay vì dùng tài khoản mặc
định có tên 'admin'
• Đổi tên và vô hiệu hóa tài khoản mặc định 'admin' mà Joomla đã tạo ra khi cài đặt
bằng cách: Mở bảng _users, tìm bản ghi có id=62, đổi username khác 'admin' và
thay block bằng '1')
Đối với những người lập trình (developer) thì chú ý những
vấn đề sau:
Ép kiểu dữ liệu
Luôn ép kiểu dữ liệu cho các chuỗi đưa vào câu lệnh truy vấn SQL. Thí dụ:
tha
hton
g32
Nếu muốn kiểu dữ liệu là kiểu nguyên (integer) thì sử dụng câu lệnh SQL:
$sql = 'UPDATE #__mytable SET `id` = ' . (int) $int;
Nếu muốn kiểu dữ liệu là kiểu ngày/tháng (date) thì sử dụng câu lệnh SQL:
$date = & JFactory::getDate($mydate);
$sql = 'UPDATE #__mytable SET `date` = ' . $db->quote( $date->toMySQL(), false);
Luôn gỡ bỏ ý nghĩa của những ký tự đặc biệt
Bạn cần gỡ bỏ ý nghĩa của những ký tự đặc biệt (những ký tự có khả năng gây nguy hiểm
cho câu lệnh SQL) nằm trong các chuỗi dữ liệu được đưa vào câu lệnh SQL bằng câu lệnh:
$sql = 'UPDATE #__mytable SET `string` = ' . $db->quote( $db->getEscaped( $string ), false );
Chống tấn công DOS
Trong các mệnh đề WHERE, nếu bạn có sử dụng lệnh LIKE, hãy đảm bảo rằng bạn đã lọc
các ký tự đặc biệt như "%" và "_" thì sử dụng câu lệnh SQL:
$sql = 'UPDATE #__mytable SET .... WHERE `string` LIKE '.
$db->quote( $db->getEscaped( $string, true ), false )
Chống tấn công XSS
Rất nhiều người có thói quen lấy dữ liệu nhập vào từ người dùng bằng câu lệnh
JRequest::getVar(). Tuy nhiên đây là một thói quen không tốt. Thay vào đó bạn nên sử
dụng các phương thức ép kiểu. Thí dụ:
Nếu muốn kiểu số nguyên, dùng câu lệnh:
$int = JRequest::getInt( $name, $default );
Nếu muốn kiểu số thực, dùng câu lệnh:
$float = JRequest::getFloat( $name, $default );
Nếu muốn kiểu logic (đúng/sai), dùng câu lệnh:
$bool = JRequest::getBool( $name, $default );
Nếu muốn kiểu từ (word): chỉ có các ký tự chữ cái và ký tự gạch dưới "_", dùng câu lệnh:
$word = JRequest::getWord( $name, $default );
Nếu muốn kiểu câu lệnh (command): chỉ có các ký tự chữ cái, ký tự số, ký tự "." và "_",
dùng câu lệnh:
$cmd = JRequest::getCMD( $name, $default );
than
h n
g32
Nếu muốn kiểu văn bản không phải HTML (văn bản đã được lọc bỏ các thẻ HTML), dùng
câu lệnh:
$string = JRequest::getString( $name, $default );
Tham khảo thêm:
• Preventing SQL Injections (tác giả: Anthony Ferrara - Joomla Core Team, bài gốc
tiếng Anh)
• SQL Injection
• API getEscaped
• database->getEscaped
Keyword:
• câu lệnh, sql, sql injection, ép kiểu, lọc bỏ, số nguyên, số thực, DOS, XSS, interger,
float, string, JRequest...
Ghi rõ nguồn "" (bản gốc) và "" (bản dịch
và tổng hợp) khi sử dụng bài viết này.
32. Kiểm tra Website Joomla bằng Joomla! HISA
Joomla HISA là một công cụ kiểm tra - bảo mật cho phép:
• Kiểm tra một HOSTING có đáp ứng các yêu cầu cần thiết để cài đặt Joomla hay
không
• Thông báo các thông số của HOST (tên host, địa chỉ IP...); thông số về PHP,
MYSQL...
• Cảnh báo về các thiết lập không an toàn
• Cảnh báo về các thư mục chưa được thiết lập đúng quyền hạn
Cũng giống như "Joomla Diagnostics", rất đơn giản bạn chỉ cần tải về công cụ có tên là
Joomla! HISA (Joomla! Health, Installation and Security Audit). Sau đó upload 1 file duy
nhất (joomla_hisa_en.php) lên Hosting định cài đặt Joomla và xem kết quả.
Phiên bản Joomla HISA hiện tại chỉ cho phép kiểm tra dòng Joomla! 1.0.x (từ Joomla
1.0.10 trở đi)
Quy trình kiểm tra
• Download Joomla HISA: >> Joomla HISA <<<
• Giải nén và upload Joomla! HISA: Giải nén, sau đó upload 1 file duy nhất
(joomla_hisa_en.php) lên thư mục chứa Joomla
• Chạy Joomla! HISA: Mở trình duyệt và gõ vào URL tới file "joomla_hisa_en.php".
VD:
tha
ong
32
Joomla! HISA sẽ thông báo kết quả
Host Environment: Thông số chung của Host
PHP Environment: Thông số về PHP
MySQL Environment: Thông số về MySQLtha
hton
g32
Joomla! Environment: Các thông số liên quan cho Joomla
Required and Recommended Settings: Các yêu cầu bắt buộc và khuyến
cáo
Nếu một trong các thiết lập bị cảnh báo bằng màu đỏ thì bạn nên xem bài viết "Xử lý
cảnh báo trong quá trình cài đặt và cấu hình Joomla!" để biết cách khắc phục.
Directory and File Permissions: Quyền hạn đối với các tệp và thư mục
Để tránh các HACKER nhòm ngó bạn nên thiết lập các thư mục với CHMOD = 755, các tệp
với CHMOD = 644than
hton
g32
Chú ý:
Thứ nhất, nên đổi tên file joomla_hisa_en.php trước khi upload lên host (Chẳng hạn
đổi tên thành vinaora_hisa.php)
Thứ hai, sau khi sử dụng hãy xóa ngay file Joomla Hisa nói trên
Bài viết liên quan
•
Keyword:
• joomla, hisa, joomla hisa, kiểm tra, website, chmod
33. 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:
th n
hton
g32
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
• 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
• VD:
• VD:
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.
Tham khảo thêm:
•
than
hton
g32
•
Keyword:
• Joomla, joomla 1.0, joomla 1.5, diagnostics, joomla diagnostics, file
34. 9 bước bảo mật Website Joomla!
Friday, 08 June 2007 23:55
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ó 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
( để 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
than
hto
g32
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)
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.
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
than
hton
g32
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.
Tham khảo thêm
• Bảo mật cho Website Joomla! (tại diễn đàn chính thức của Joomla)
35. Bảo vệ file "configuration.php" khỏi các truy
nhập trái phép
Friday, 01 June 2007 17:38
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"
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".
www
---|private
-----------|vinaora_joomla.conf
tha
tong
32
• Tạo một file "configuration.php" thay thế file cũ nhưng chứa nội dụng
sau:
<?php
require( '/www/private/vinaora_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
"vinaora_joomla.conf"
Tham khảo thêm:
•
•
Keywords: FAQ, security, config, configuration, configuration.php, public_html, web_root,
secure files
36. Bảo mật toàn tập cho Website Joomla
Wednesday, 30 May 2007 22:19
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! ( 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.
tha
ht n
g32
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). [Xem thêm]
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. [Xem
thêm]
06. Chặn các truy vấn nguy hiểm nhờ file ".htaccess" [Xem thêm]
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" [Xem thêm]
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" [Xem
thêm]
09. Chọn Host có hỗ trợ PHP5.
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ết kế 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". [Xem thêm]
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.
Tham khảo thêm:
• Joomla! Administrator's Security Checklist
than
hto
g32
37. 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('VINAORA : Access Denied');
}
?>
Trong đó
username = vinaora
password = vinaora
Tham khảo thêm:
• Công cụ tạo mã hóa MD5 và một số loại mã hóa khác
• Làm sao để thay đổi đường dẫn tới trang ad
Các file đính kèm theo tài liệu này:
- meothuthuatsudugjjoomlaphan2.pdf