Bài viết sau đây cung cấp cho khách hàng các phương pháp để bảo vệ website của mình cũng như hướng dẫn cơ bản khách hàng kiểm tra website khi website bị hack.
I. DẤU HIỆU
Thông thường khi một website của khách hàng bị hack sẽ có các dấu hiệu dễ nhận biết sau:
- Website bị thay đổi nội dung (deface) hoặc trong mã nguồn bị chèn một số đoạn mã, script lạ do hacker chèn vào. Các đoạn mã này bị chèn vào tùy thuộc vào mục đích của hacker
- Khi truy cập vào website thì thường xuyên bị redirect qua các website độc hại, website quảng cáo
- Website bị upload shell
- Website bị cảnh báo Reported Attack Site bởi Google
Khách hàng có thể dựa vào các dấu hiệu này xác định được website của mình có bị hack hay không để có biện pháp kiểm tra xử lý kịp thời.
II. NGUYÊN NHÂN
Có khá nhiều nguyên nhân để website của khách hàng có thể trở thành mục tiêu của hacker tuy nhiên thông thường nguyên nhân thường thuộc phía người dùng với các lý do sau:
- Đặt mật khẩu quản trị quá yếu (không đủ độ dài ký tự, không có các ký tự viết hoa, ký tự đặc biệt,... ), thiếu cơ chế chống brute force khiến kẻ tấn công có thể dò password admin.
- Cài đặt các module, plugin, extension,... trong các mã nguồn mở hiện nay (thường là các website joomla, wordpress,...).
- Để lộ mật khẩu quản trị trong quá trình sử dụng
- Dùng mã nguồn phiên bản cũ với nhiều lỗi bảo mật qua đó hacker tấn công vào một điểm yếu và khai thác lỗi
- Tấn công local attack (các server share hosting của Vinahost dùng hệ điều hành CloudLinux do đó các website của khách hàng sẽ không bị ảnh hưởng bởi tấn công dạng này)
III. KIỂM TRA
Một khi website của khách hàng bị hack khách hàng cần bình tĩnh và thực hiện các thao tác sau để kiểm tra và xử lý:
- Cách li website
- Kiểm tra và xác định thiệt hại
- Nhận diện lỗ hổng
- Xử lý và bảo trì website
- Đưa website trở lại hoạt động
Bước 1: Cách li website
Khi website của khách hàng bị hack việc đầu tiên là cần cách li ngay website của mình. Kiểm tra các bản backup của website hoặc nhanh chóng báo cho phòng kỹ thuật để phòng kỹ thuật cung cấp lại bản backup cho việc phục hồi và kiểm tra website. Việc này giúp cho website của khách hàng không bị tiếp tục tấn công bởi hacker hoặc website tiếp tục cung cấp các nội dung bị sửa đổi cho người dùng. Để thực hiện khách hàng có thể thay thế trang chủ bởi nội dung "Website đang được bảo trì!"
Tiếp đến khách hàng cần kiểm tra các tài khoản trên website, kiểm tra có tài khoản nào hacker mới tạo ra và xóa đi. Tránh hacker có thể login vào với thông tin đăng nhập cũ.
Khách hàng cần đổi tất cả các thông tin tài khoản bao gồm: tài khoản website, database, tài khoản quản lý hosting, FTP.
Sau khi thực hiện tất cả các thao tác trên khách hàng đã hoàn tất việc cách li website của mình để tiến hành kiểm tra
Sau khi thực hiện tất cả các thao tác trên khách hàng đã hoàn tất việc cách li website của mình để tiến hành kiểm tra
Bước 2: Kiểm tra và xác định thiệt hại
Bước tiếp theo là kiểm tra mức độ thiệt hai của website sau khi bị tấn công. Thông thường với dạng tấn công deface hacker chỉ thay thế trang chủ website của khách hàng và thông báo cho khách hàng website đã bị hack. Trường hợp này ta chỉ cần xóa file "index" của hacker và thay thế lại bằng file "index" gốc của website là website đã có thể hoạt động bình thường.
Tuy nhiên, với một số trường hợp tinh vi hơn, hacker chèn vào trong mã nguồn của khách hàng các đoạn mã hay script việc phát hiện sẽ khó khăn hơn. Ngoài ra hacker cũng có thể upload shell lên website của khách hàng để chiếm quyền điều khiển sau này. Với những trường hợp này khách hàng cần download toàn bộ mã nguồn website về máy tính local và thực hiện rà soát mã nguồn. Nếu kiểm tra trong mã nguồn có các đoạn mã nào lạ bị chèn vào hay file nào lạ được upload lên khách hàng cần thực hiện xóa ngay.
Nếu khách hàng có một bản backup website sạch việc kiểm tra sẽ dễ dàng hơn, khách hàng có thể thực hiện các lệnh sau để kiểm tra các file bị sửa đổi trên website:
# diff -qr <current-directory> <backup-directory>
Ví dụ:
# diff -qr www/ backups/full-backup-20140724/
Hoặc lệnh sau:
# md5sum <current-page> <backup-page>
Ví dụ:
# md5sum www/page.html backups/full-backup-20140724/page.html
Dựa vào các thông tin trên khách hàng sẽ dễ dàng thấy các file nào bị sửa đổi hay mới được tạo ra và thực hiện thêm một số kiểm tra trên các file này (Lưu ý các lệnh diff và md5sum chỉ thực hiện trên hệ điều hành Linux, khách hàng có thể tìm và sử dụng một số tool tương tự trên Window).
Nếu website của khách hàng có chứa database việc kiểm tra cụ thể các dữ liệu trên database là cần thiết. Khách hàng có thể dễ dàng thực hiện công việc này thông qua công cụ phpMyAdmin
Bước 3: Nhận diện lỗ hổng
Đây là bước khó nhất, nó đòi hỏi kinh nghiệm và kiến thức để có thể kiểm tra chính xác nguyên nhân và cách khắc phục. Bài viết này chỉ cung cấp cho khách hàng một số bước cơ bản để kiểm tra và xác định nguyên nhân:
- Đầu tiên khách hàng kiểm tra trong access log hay error log tìm kiếm tất cả các thông tin liên quan đến việc website bị tấn công: ví dụ như website bị tấn công dò mật khẩu, có một số login không hợp lệ từ IP lạ , một số file lạ được upload bằng FTP. Dựa vào các thông tin trên khách hàng có thể kết luận khách hàng bị lộ mật khẩu hay hacker tấn công băng cách khai thác các lỗ hỗng bảo mật khác
- Kiểm tra xem mã nguồn đang dùng có đang tồn tại lỗ hỗng bảo mật, các module, plugin được cài lên website có an toàn. Nếu một số lỗi trên có thể bị khai thác thì tìm hiểu cách khai thác và so sánh với access log để đưa ra kết luận
- Kiểm tra một số đoạn access log lạ từ đó tìm ra cách khai thai lỗ hỗng của hacker. Ví dụ thông thường để upload một file lên website thì phải dùng phương thức POST, khách hàng có thể dựa vào thông tin này để rút ngắn lại phạm vi tìm kiếm nhằm xác định chính xác cách thức khai thác
- Dùng một số phần mềm kiểm tra bảo mật để quét các lỗi bảo mật trên website. Có thể kể đến Acunetix, Nikto, OpenVAS
Bước 4: Xử lý và bảo trì website
Khi xác định được chính xác nguyên nhân khách hàng cần có phương án xử lý ngay lập tức. Nếu xác định nguyên nhân do lộ mật khẩu quản trị khách hàng cần đổi mật khẩu phức tạp và tránh để lộ mật khẩu trong quá trình sử dụng.
Nếu lỗi do mã nguồn khách hàng cần update mã nguồn lên phiên bản mới nhất để fix các lỗi bảo mật. Ngoài ra khách hàng cần tránh dùng các module hay plugin không rõ nguồn gốc cho website. Nếu Module hay plugin có thể bị khai thác khách hàng cần xóa ngay plugin này khỏi website
Kiểm tra lần cuối để chắc chắn website của khách hàng đã bvà tạo một bản backup để sử dụng khi cần thiết
Bước 5: Đưa website trở lại hoạt động
Ngay sau khi đưa website vào hoạt động lại khách hàng cần thường xuyên kiểm tra để xác định website của mình được an toàn và không tiếp tục bị tấn công
III. KẾT LUẬN
Mỗi website có thể có những vấn đề và điểm yếu riêng. Tuy nhiên, yếu điểm quan trọng nhất là yếu tố con người. Khách hàng phải không ngừng nâng cao, học hỏi thêm kiến thức mới, tăng cường nhận thức về các mối đe dọa và bảo mật nhằm kịp thời nhận ra các lỗ hổng về kỹ thuật, tránh mắc phải các sai lầm trong công tác quản trị website. Vinahost khuyến khích khách hàng thực hiện các thao tác sau nhằm nâng cao an toàn cho website của mình:
- Thường xuyên kiểm tra dữ liệu website (chú ý thời gian tập tin, thư mục bị thay đổi ).
- Có kế hoạch backup dữ liệu cụ thể để lúc cần có thể restore lại ngay.
- Không nên cài đặt các module, plugin, extension,... không thật sự cần thiết và không rõ nguồn gốc (nên download module, plugin, extension,.... từ các trang web uy tín). Thường xuyên update mã nguồn lên phiên bản mới nhất để hạn chế các lỗi bảo mật trong các phiên bản trước
- Nên đổi mật khẩu quản trị theo 1 chu kỳ định sẵn và lưu giữ cẩn thận.
Chỉ với những thao tác trên thì website của khách hàng đã an toàn và hạn chế khả năng bị tấn công bởi hacker
*Tham khảo:
- https://support.google.com/webmasters/topic/4596795?hl=en&ref_topic=4558844
- https://www.owasp.org/index.php/Category:Vulnerability_Scanning_Tools