đồng thời không để đối thủ cạnh tranh cũng như các loại tội phạm tin học sử dụng chính những công nghệ này gây hại.Bảo mật cho website Joomla là một nhân tố quan trọng góp phần bảo vệ We
Trang 1KHOA KỸ THUẬT & CÔNG NGHỆ
BÁO CÁO THỰC TẬP CHUYÊN
Trang 2MỤC LỤC
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: 4
2 CHMOD = 755 4
3 CHMOD = 644 5
CHMOD = 644 cho các tệp (file) có nghĩa là: 5
1 Phân quyền Joomla! ở tiền sảnh (front-end) 10
Bước 1: Tạo một thư mục bí mật chẳng hạn [Joomla]/secret 14
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: .14
Bước 3: Thêm nội dung sau tới file ".htaccess" của thư mục /administrator 15
3 Sao lưu toàn bộ Website theo định kỳ 15
Bước 1: Download plugin LazyBackup 18
Bước 2: Cài đặt plugin LazyBackup 18
Bước 3: Mở menu ”Extensions” 18
Chọn mục “Install/Unistall” 18
Trong mục“Upload Package File”, chọn plugin LazyBackup đã download 18
Nhấn nút [Upload Files & Install] 18
Bước 4: Cấu hình plugin LazyBackup 18
Mở menu “Extensions” 18
Chọn mục “Plugin Manager” 18
Tìm đến plugin có tên “LazyBackup” 18
Một số tùy chọn cần lưu ý: 18
V.13.1.Tạo file htpasswd với nội dung sau: 19
V.13.2 Tạo file htaccess với nội dung sau: 19
Upload 2 file trên vào trong thư mục Administrator 19
Quy trình kiểm tra 21
Joomla! HISA sẽ thông báo kết quả 22
Host Environment: Thông số chung của Host 22
PHP Environment: Thông số về PHP 23
MySQL Environment: Thông số về MySQL 23
Joomla! Environment: Các thông số liên quan cho Joomla 23
Required and Recommended Settings: Các yêu cầu bắt buộc và khuyến cáo 23
Directory and File Permissions: Quyền hạn đối với các tệp và thư mục 24
Chú ý: 24
1.1.1 7 Bảo vệ file "configuration.php" khỏi các truy nhập trái phép 25
8 Bảo mật cho trang quản trị administrator bằng mật khẩu 26
Cách thực hiện: 26
9 Kiểm tra mức độ bảo mật của Joomla 27
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: .31
Trang 3Bước 3: Thêm nội dung sau tới file ".htaccess" của thư mục /administrator 31
LỜI MỞ ĐẦU
Bảo mật luôn là vấn đề rất quan trọng trong mọi lĩnh vực kinh tế, chính trị, quân sự, ngoại giao Và đây cũng là một vấn đề đã được nghiên cứu trong hàng nghìn năm nay
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
Đối với các doanh nghiệp việc bảo mật thông tin thương mại luôn là vấn đề được đặt ra, đặc biệt trong thời đại hiện nay Khi mà thông tin giữ vai trò quan trọnghàng đầu và các phương tiện truyền thông hiện đại cho phép chúng ta chuyển tin rất
dễ dàng và cũng dễ dàng để mất thông tin Vậy ta có thể làm những gì để sử dụng được các tiện ích của công nghệ thông tin và viễn thông đã mang lại cho thế giới và
Trang 4đồng thời không để đối thủ cạnh tranh cũng như các loại tội phạm tin học sử dụng chính những công nghệ này gây hại.
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 bền vững
Nhiều quản trị website chỉ đặt trọng tâm và việc thiết kế, cập nhật nội dung
và dà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 đến khi sự việc xảy ra thì đã quá muộn
Khi thông tin được đảm bảo là an toàn thì sẽ giúp chúng ta tiết kiệm được nhiều chi phí, thời gian…
Nếu thông tin bị tiết lộ hay bị đánh cắp thì thiệt hại sẽ rất nghiêm trọng, có thể dẫn đến phá sản hoặc phải chịu truy cứu trước pháp luật
Xuất phát từ những suy nghĩ như vậy nên em đã quyết định chọn đề tài: “Bảo mậttrong Joomla” Đồ án thực hiện giới thiệu, phân tích, kỹ thuật bảo mật Joomla nhằmtối ưu trang web
Đồ án chia làm 4 chương:
o CHƯƠNG I: MỘT SỐ KHÁI NIỆM LIÊN QUAN
o CHƯƠNG II: CÁC LỖ HỔNG BẢO MẬT CỦA CÁC ỨNG DỤNG WEB
o CHƯƠNG III: BẢO MẬT TRONG JOOMLA
Vì thời gian có hạn cũng như còn hạn chế về kiến thức nên báo cáo của em khó tránh khỏi thiếu sót Em rất mong nhận được sự đóng góp ý kiến của thầy cô giáo và bạn bè
Với lòng biết ơn sâu sắc, em xin chân thành cảm ơn thầy giáo NGUYỄNĐÌNH LUYỆN cùng các thầy cô giáo trong khoa Kỹ Thuật và Công Nghệ và cán bộ
cơ quan Báo Bình Định đã nhiệt tình hướng dẫn giúp em hoàn thành báo cáo này
Trang 5Em xin chân thành cảm ơn !
Quy Nhơn, tháng 8 năm 2010
Trang 6NỘI DUNG
CHƯƠNG I: MỘT SỐ KHÁI NIỆM LIÊN QUAN
1 Khái niệm CHMOD
CHMOD định nghĩa đơn giản chính là cụm từ viết tắt của Change Mode - Một lệnh đặc biệt chỉ dùng trên các máy chủ hệ Unix (Linux, Solaris, True64 ) dùng để thay đổi quyền lực của một người bất kỳ đối với một tập tin, thư mục bất kỳ trên một website cụ thể Bằng cách thay đổi chmod, bạn đồng thời gán một quyền lực cho một người nào đó đối với các tập tin, thư mục trong cấu trúc website của bạn
Giá trị chmod luôn được biểu thị bằng một cụm gồm 3 chữ số (***) đại diện cho 3 người gồm: User (Owner - Chủ sở hửu) - Group (Nhóm cộng tác) - Other (Guest - Tất cả mọi người còn lại) và gồm các giá trị gồm 1 (Execute - Thực thi), 2 (Write - Ghi), 4 (Read - Đọc)
Ví dụ 1: chmod: 124 >>> Chủ sở hửu : 1 - Nhóm cộng tác : 2 - Mọi người : 4Chủ sở hửu có quyền gọi thực thi tập tin, thư mục
Nhóm cộng tác có quyền ghi nội dung vào tập tin, thư mục
Mọi người có quyền xem nội dung tập tin, thư mục
Ví dụ 2: chmod: 412 >>> Chủ sở hửu : 4 - Nhóm cộng tác : 1 - Mọi người : 2Chủ sở hửu có quyền xem nội dung tập tin, thư mục
Nhóm cộng tác có quyền gọi thực thi tập tin, thư mục
Mọi người có quyền ghi nội dung vào tập tin, thư mục
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
Trang 7CHMOD cùng lúc thay đổi quyền hạn trên các file/thư mục với các đốitượ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
2 CHMOD = 755
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);
• 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)
Trang 8• 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
3 CHMOD = 644
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)
Trang 9CHMOD 644 (rw- r r ) cho file
Trang 10CHƯƠNG II: CÁC LỖ HỔNG BẢO MẬT CỦA CÁC ỨNG
DỤNG WEB
Sau đây là một vài lỗ hổng bảo mật thường gặp nhất:
• Cross Site Scripting
Các lỗ hổng bảo mật ở trên có thể xuất hiện trong tất cả các ứng dụng web bất
kể nó được phát triển bởi các chuyên gia độc lập hay các công ty phần mềm nổi tiếng nhất Mặc dù vậy, nhờ kiến trúc hệ thống, thông qua việc kiểm tra sản phẩm cuối cùng và tỉ mỉ các lỗ hổng bảo mật trong tất cả các bước phát triển phần mềm lànhân tố cho phép loại trừ được các lỗ hổng bảo mật này
1 Cross Site Scripting (XSS):
Cross Site Scripting hay XSS là khả năng thêm một đoạn mã HTML bất kì vào trang có lỗi bảo mật Đoạn mã code thêm vào sẽ tác động đến tất cả các phươngthức nhập thông tin đầu vào Một ứng dụng web bất kì sẽ hiển thị bất cứ thông tin nào nhận được từ người sử dụng sẽ có nguy cơ lớn bị tấn công Những cuộc tấn công như vậy có thể thực hiện dựa vào các giá trị không được lọc của các biến nhậnđược từ người sử dụng, trong đó có thể chứa các đoạn mã scripts (javaScript,
VBScript) hoặc các thẻ HTML nguy hiểm Kiểu tấn công này có thể được sử dụng
để chặn và bắt các giá trị của cookie của người sử dụng (bao gồm cả người quản trị
Trang 11hệ thống) và các phiên làm việc (session) Trong một vài trường hợp, nó cho phép đăng nhập vào hệ thống, hoặc nếu hỗ trợ SSI (Server Side Includes) thì còn có thể thực hiện một lệnh bất kì trên server.
Có thể xem thêm thông tin về XSS:
web cache poisioning, deface, “cross-user defacement”, chặn và ăn cắp thông tin
người dùng và Cross site Scritpting
Bạn có thể xem thêm thông tin tại:
http://www.packetstormsecurity.org/papers/general/whitepaper_httpresponse.pdf
3 SQL injection:
SQL injection là phương pháp tấn công cơ sở dữ liệu bằng cách vượt qua tường lửa
Ở phương pháp này các tham số truyền tới CSDL qua ứng dụng web sẽ được kiểm tra khiến cho câu lệnh truy vấn SQL bị sửa chữa Ví dụ bằng cách thêm vào các kí
tự đặc biệt vào tham số, một câu truy vấn bổ sung sẽ được thực hiện
4 Việc tấn công nhằm vào các mục đích sau:
Trang 12Chiếm được quyền truy cập vào CSDL hoặc lấy được cấu hình hệ thống của CSDL để nhằm mục đích tấn công tiếp sau này Ví dụ một câu truy vấn bị sửa đổi
có thể trả về danh sách người dùng và mật khẩu (bị mã hóa), mật khẩu này có thể được giải mã tiếp sau đó
Chiếm được quyền truy cập vào máy trạm thông qua máy chủ CSDL Điều này có thể thực hiện bằng các hàm, thủ tục của hệ quản trị CSDL và các phần mở rộng 3GL cho phép chạy các ứng dụng khác nhau
5 Code injection:
Nếu một ứng dụng web xử lý động các file đính kèm (included file) hoặc đường dẫn đến file không đúng, thì việc thực thi một đoạn mã bất kì (PHP, ASP…) trên máy chủ, hoặc nhận được nội dung của các file là hoàn toàn có thể Thực thi một cuộc tấn công thành công có thể giúp vượt qua được bước xác thực, và thực thi các lệnh tùy ý trên máy chủ, xem nội dung các file, ghi dữ liệu bất kì vào file…
Trang 13CHƯƠNG III: BẢO MẬT TRONG JOOMLA
1 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ứctruy 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ỉnhsử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
Trang 14Phâ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
Trang 15•
Trang 17Bướ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:
Trang 18Bạ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]
Để đả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
3 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ộ
Sao lưu và phục hồi dữ liệu
Điều đầu tiên quan trọng nhất là 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 Nên sao lưu ít nhất mộttuần một lần Chúng sẽ tiết kiệm 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 toàn bộ
Việc sao lưu dữ liệu ngoài việc chép toàn bộ các thư mục (có dung lượng lớn)
Trang 193.1 Công cụ sử dụng Sypex SQL dumper.
Sypex SQL dumper thực sự là không thể thiếu cho việc backup và restore dữ liệu
Nó chỉ có một file duy nhất nhưng hiệu quả làm việc rất tốt Giao diện thân thiện và
có thể backup và restore được dữ liệu có dung lượng lớn
Cài đặt Sypex SQL Dumper
define('DBNAMES', 'cho tên Database vào ở đây');
* Tạo thêm 1 folder backup trên host, ngang với file dump.php Nhớ CHMOD thư mục này thành 775, nếu ko sẽ bị lỗi, ko thực hiện được
Backup database (sao lưu dữ liệu)
* Mở công cụ Sypex Dumper bằng cách chạy link: OpenDNS
* Nhập username và password của cái Database đã cho vào file dum.php
Chọn "Backup / Make a database backup" > chọn database > chọn
"Compression = GZIP" (nếu muốn nén)> chọn mức nén "Compression Level" (9 mức cao nhất)
-* Nhấn "Go" để xuất dữ liệu
Restore database (Khôi phục dữ liệu)
* Mở công cụ Sypex Dumper bằng cách chạy link:
OpenDNS
Trang 20* Nhập username và password của cái Database đã nhập vào file dum.php
* Chọn "Restore existing backup" > chọn database trong "Restore in Database" > chọn file dữ liệu đã sao lưu trong "Dump File"
* Nhấn "Go" để khôi phục dữ liệu
Dùng Sypex SQL Dumper 1.0.8b để chuyển HOST
Trước hết cũng cài đặt Sypex SQL Dumper 1.0.8b ở Host mới như đã làm ở trên, tức là upload file dum.php lên host mới, tạo folder backup trên host mới CHMOD
775 và nhớ là mở dum.php để thay cái dòng DB Name bằng cái tên Database muốn dùng
Ở trên đã hướng dẫn backup, vậy là ở Host cũ bạn đã có file backup, nếu chưa có thì bạn backup ở host cũ Sau đó upload cái file backup này vào cái thư mục backupmới tạo ở trên cái host mới
Sau đó tiến hành Restore giống như đã hướng dẫn ở trên
Chú ý: nếu bị lỗi font tiếng V khi restore bạn mở file dum.php tìm dòng
3.2 Backup database với LazyBackup
Trong các cách để backup database thì plugin LazyBackup (hay Lazy Backup 2) là
một giải pháp sao lưu dữ liệu khá hay và được nhiều người sử dụng Với nhiều tùy chọn như: Tự động backup và gửi vào một hoặc nhiều email cùng lúc, hẹn giờ backup, không cần những thao tác phức tạp hoặc đòi hỏi kỹ năng hiểu biết cao về
"cron" của Unix hay "scheduled tasks" của Windows, hỗ trợ chuẩn nén gzip và bảo
vệ bằng mật khẩu, dễ dàng cài đặt và quan trọng là miễn phí; Plugin LazyBackup xứng đáng là một món đồ không thể thiếu trong kho extensions của các fan Joomla