logo
Hỗ trợ: 24/7
Điện thoại: 098 984 8886
Email: info@thuonghieuweb.com

Bảo mật các hosting sử dụng apache và php

updated on 2021-03-07

PHP là một công cụ mã nguồn mở tuyệt vời để xây dựng các ứng dụng web. Tuy nhiên vì là mã nguồn mở nên nó cũng chứa đựng nhiều lỗ hổng bảo mật nghiêm trọng mà nếu không được xây bịt lại, sẽ trở thành chỗ chui ra chui vào của các hacker thích nhòm ngó website của người khác. Bài viết này nêu lên một số lỗ hổng bảo mật của php và cách khắc phục

Cách phân quyền truy cập file của linux

PHP và apache dựa hoàn toàn vào cấu trúc file và thư mục của hệ điều hành linux, các quyền hạn này được gán cho user apache và user quản lý hosting do direct admin tạo ra. Và thư mục /home/tenhosting là thư mục được gắn với user quản lý hosting với quyền của chủ sở hữu là quyền cao nhất. Chúng ta ôn lại cách phân quyền của linux để hiểu được vì sao hacker có thể kiểm soát dữ liệu trong file của chúng ta

Một file và thư mục sẽ có quan hệ "phân quyền" đối với 3 chủ thể:

  • Owner : người "sở hữu" host.
  • Group : là nhóm người dùng.
  • World : bất kì ai.
Mỗi một nhóm trên có thể được phân 1 hoặc tất cả các quyền sau
  • Read : đọc (r = 4)
  • Write : ghi (w = 2)
  • Execute : thực thi (x = 1)
Ở mức hệ điều hành, người user là chủ sở hữu thư mục/file hoặc user root có thể dùng lệnh chmod để đặt lại các quyền này. Ví dụ lệnh chmod 751 abc là lệnh phân quyền (rwx) (r-x) (--x) cho thư mục abc. Có nghĩa là chủ sở hữu có đầy đủ quyền đọc ghi, thực thi (rwx), các thành viên cùng nhóm có quyền đọc, thực thi (r-x), còn người dùng bất kỳ chỉ có quyền thực thi (--x).

Lỗ hổng đáng sợ nhất là php và apache cho phép user chủ sở hữu của hosting tức là chủ sở hữu của home directory được truy cập qua http, và PHP có hàm chmod có chức năng tương tự như lệnh chmod của linux. Do vậy khi một hacker đã nắm quyền kiểm soát thư mục của bạn, thì hacker đó có thể chỉ cần thông qua giao diện web để tác động đến các file trong hệ thống mà không cần phải ssh hay remote.

Do vậy khi tiếp nhận một website, chúng ta cũng cần duyệt qua các file được phân quyền thế nào và áp dụng các chính sách phân quyền như dưới đây để đảm bảo an toàn

  • chmod 404 (chỉ cho phép đọc) tất cả các file. (cấm ghi đè vào các file)
  • chmod 101 (chỉ cho thực thi) tất cả các folder.
  • chmod 501 thư mục /public_html/

Các cách chmod trên đều không cho write, do đó bố cục được bảo toàn, đồng thời không thể xem cấu trúc site, thư mục, file. Có thể nói đó là các chmod an toàn nhất mà ứng dụng web như diễn đàn, site nhạc, tin tức có thể hoạt động ổn định.

Giấu đường dẫn


Khi đăng kí hosting, domain chính thường được trỏ vào ngay trong thư mục /public_html/, điều này giúp "kẻ tấn công" dễ dàng mò đến file quan trọng của website (vd như file config.php của các forum chẳng hạn), và khi đó thông tin đăng nhập quản lí cơ sở dữ liệu của website đã bị kẻ xấu lấy mất. Điều tệ hại gì sẽ xảy ra ?

Để khắc phục điểm này, ta nên yêu cầu bên cung cấp hosting tạo host không có domain (tên miền) chính và để ta tự gắn vào bằng chức năng add-on domain. Khi add domain sẽ có chỗ để bạn nhập đường dẫn đến thư mục mà domain sau khi gắn thành công sẽ trỏ vào như hình2.

VD: /public_html/foder1/folder2/folder3/forum/

Sau khi bạn bấm add các thư mục folder1, folder2, …, forum sẽ được tự động tạo ra. Và bây giờ bạn áp dụng cách chmod ở trên để chmod các thư mục folder1, folder2 … để giấu đường dẫn của site trên server.

Không hiển thị lỗi nếu phát sinh


Khi có lỗi phát sinh, PHP sẽ hiện thông báo ra trình duyệt và chỉ rõ lỗi ở file nào, dòng nào và đường dẫn của file, vì thế điều này rất nguy hiểm. Để che lỗi, bạn tạo một file php.ini với nội dung như sau:

display_errors = Off
log_errors = On

Sau đó upload lên thư mục chứa website.

Gợi ý: bạn nên up file php.ini trên vào các thư mục mà người dùng sẽ truy cập bằng trình duyệt, thường là thư mục chứa website, thư mục quản trị, thư mục của user …

Bật vô hiệu các hàm nguy hiểm

Các hàm passthru, shell_exec, chmod của PHP sẽ cho phép chúng ta thông qua giao diện web, thực thi các lệnh trên hệ thống y hệt như khi chúng ta login vào linux. Vì vậy, nếu website của chúng ta không cần can thiệp nhiều đến hệ thống thì nên disable các hàm này đi, tránh các hacker lợi dụng.  Để làm như vậy, hãy thêm hoặc edit dòng sau trong nội dung file php.ini

disable_functions = passthru, system, shell_exec, exec, dir, readfile, virtual, proc_terminate, chmod


Phân quyền account truy cập cơ sở dữ liệu MySQL


Khi bạn tạo user truy cập vào database, bạn cần lưu ý, không dùng user và pass của host làm user của database. Không tạo quá nhiều user cho database mà chỉ nên tạo một user duy nhất để kết nối.


Mã hoá các file chứa thông tin nhạy cảm


Các file nhạy cảm chứa các thông tin kết nối cơ sở dữ liệu như config.php với các kiểu mã hoá như base64 của PHP. Nếu mã hoá base64 PHP thì các bạn có thể dùng google để tìm với từ khoá base64 encode
Mình xin giới thiệu một link để các bạn mã hoá base64 file php: http://dnstools.it-4vn.com/phpencode.php

8. Ngăn download source code khi server gặp sự cố:


Tạo file .htaccess nội dung như sau:


Order Allow,Deny
Deny from All



Order Allow,Deny
Deny from All


Mục đích để ngăn cản việc download source code khi PHP bị overload hoặc terminated. Nguyên nhân có thể đến từ bên trong hoặc bên ngoài. Tôi không đề cập ở đây.

Vô hiệu hoá biên dịch mã PHP trong thư mục chỉ định


Nếu bạn có một thư mục dành cho việc upload, bạn nên vô hiệu hoá việc biên dịch và thực thi mã PHP trong thư mục ấy vì attacker có thể lợi dụng việc upload để đưa script độc (webshell) lên host của bạn.

Tạo file .htaccess đặt vào thư mục đó với nội dung như sau:

php_admin_flag engine off

Sau đó chmod 444 cho file.



Lưu ý cuối cùng:


Thường xuyên cập nhật vá lỗi cho website và đặt một mật khẩu quản trị tương đối kiên cố, liên hệ với nhà cung cấp dịch vụ để sửa lỗi.

File php.ini mình đề cập ở trên chỉ có tác dụng tại thư mục chứa nó, các thư mục không chứa nó sẽ không bị nó chi phối mà sẽ bị cấu hình trong php.ini của server chi phối.

Các file php.ini và .htaccess nên chmod 444 để bảo vệ cấu hình.

   
 
Có thể bạn muốn xem thêm....

Những điều cần biết khi xây dựng website

Xây dựng một website không đơn giản chỉ là một gian hàng hay một tờ rơi. Bạn cần phải làm mọi cách để website của mình hướng tới khách hàng, và quan trọng hơn cả, là làm sao để nội dung của bạn có sức lan tỏa nhanh chóng trong môi trường mạng từ đó lôi kéo khách hàng đến với website của bạn

Xem chi tiết

Những điều cần biết về dịch vụ email với tên miền riêng

Email tên miền riêng là email gắn với tên miền của doanh nghiệp kiểu như tennhanvien@tencongty.com. Email tên miền riêng sẽ tạo sự chuyên nghiệp và tin cậy khi giao dịch, đồng thời có thể cấp phát cho nhân viên khi mới đi làm, thu hồi lại khi nhân viên đó thôi việc và lưu trữ được mọi giao dịch trên email mà không sợ nhân viên đổi mật khẩu, mang theo hòm thư khi rời công ty...

Xem chi tiết
Đội ngũ lập trình viên, kỹ thuật viên và seo-er của Thương Hiệu Web cam kết

Hỗ trợ 24/7

Hỗ trợ khách hàng 24 giờ 1 ngày, 7 ngày 1 tuần qua điện thoại, email và chat online

Hoàn tiền 100%

Trong thời gian 45 ngày sử dụng dịch vụ, nếu quý khách không hài lòng!

Cam kết uptime 99.99%

Nếu dịch vụ của quý khách bị gián đoạn, chúng tôi sẽ cộng thêm 1 tháng sử dụng

KHÁCH HÀNG NÓI VỀ CHÚNG TÔI

Một đơn vị xây dựng web tận tâm và chuyên nghiệp!

"Thương Hiệu Web là đơn vị thiết kế website có năng lực, tôn trọng và có trách nhiệm với khách hàng, đặt mình vào vị trí khách hàng để mang lại cho khách hàng nhiều giá trị từ chính dịch vụ của mình. Với tôi, Thương Hiệu Web là một lựa chọn hợp lý!" Chị Nguyễn Phượng, TP kinh doanh, Công Ty Cổ Phần Quản Lý Công Trình Đô Thị Hải Dương.

Xem bình luận trên FB
Sitemap Điều khoản sử dụng Chính sách riêng tư
Bản quyền thuộc về công ty cổ phần truyền thông số VDATA
Tầng 2, tòa nhà 71 Hoàng Cầu, Đống Đa, Hà Nội
Điện thoại: (04) 3990 9643 - Email: info@vdata.com.vn
Giấy chứng nhận ĐKKD số: 0102766780, do Sở KHĐT Tp Hà Nội cấp ngày 28/04/2009

Online