Phòng chống hacker không phải là nhiệm vụ của riêng người quản trị mà cần có sự kết hợp, hỗ trợ của những vai trò khác tham gia: người lập trình
Web, người dùng
- Người quản trị hệ thống cần xác định rõ những đối tượng nào là quan trọng nhất trong hệ thống cần bảo vệ; xác định rõ mức độ ưu tiên đối với những đối tượng đó.
- Ví dụ các đối tượng cần bảo vệ trên một hệ thống có thể là: Các máy chủ dịch vụ, các router, các điểm truy nhập hệ thống, các chương trình
ứng dụng, hệ quản trị CSDL, các dịch vụ cung cấp ... - Cấu hình cho những ứng dụng:
- Thận trọng trong việc cấu hình trình chủ và một số ứng dụng. Trình chủ nên hay không cho phép thực thi những câu lệnh SSI. Ngoài ra phải thiết lập quyền cho ứng dụng chỉ chạy dưới một số quyền hạn nhất định như trong quản trị cơ sở dữ liệu ( không nên chạy quyền
Admin) tránh trường hợp hacker có thể lợi dụng chạy những câu lệnh
điều khiển hệ thống.
- Xác định nguy cơ đối với hệ thống chính là xác định các lỗ hổng bảo mật của các dịch vụ, ứng dụng trên hệ thống đó. Việc xác định đúng đắn các nguy cơ này giúp người quản trị có thể tránh được những cuộc tấn công mạng, hoặc có biện pháp bảo vệ đúng đắn bằng cách thường xuyên cập nhật tin tức trên các nhóm tin về bảo mật và từ nhà cung cấp phần mềm để phát hiện những lỗi của phần mềm sử dụng. Khi phát hiện lỗi cần cập nhập những phần mềm mới nhất để tránh trường hợp hacker lợi dụng những lỗ hổng có trong những ứng dụng chưa được sửa chữa trong phiên bản cũ.
- Nắm được hoạt động của các phần mềm sử dụng, ý nghĩa của các file cấu hình quan trọng (như etc/password), áp dụng các biện pháp bảo vệ
cấu hình như sử dụng phương pháp mã hóa hashing code (MD5). - Sử dụng một vài công cụ có thể phát hiện ra các hoạt động truy nhập
- Kiểm soát chặt chẽ các quyền của các tài khoản trên hệ thống; không sử dụng quyền root trong các trường hợp không cần thiết. Đối với các tài khoản không sử dụng trên hệ thống cần đổi mật khẩu hoặc hủy bỏ. - Quản lý mật khẩu một cách chặt chẽ
Buộc người sử dụng thay đổi mật khẩu trong một thời gian nhất định. Hầu hết các hệ thống hiện nay đều hỗ trợ cơ chế này; nếu không thay
đổi mật khẩu, tài khoản đó không còn giá trị trên hệ thống. Trong
trường hợp người sử dụng bị mất mật khẩu, để cấp lại mật khẩu mới c
ần có các thủ tục khác để xác thực người sử dụng ...Cần giám sát và theo dõi chặt chẽ các chương trình đổi mật khẩu; đây thường là mục
tiêu để tấn công.
+ Người phát triển ứng dụng
- Đảm bảo dữ liệu được cung cấp từ người dùng là hợp lệ:
- Tất cả những dữ liệu được đưa vào ứng dụng phải đảm bảo được kiểm tra kĩ, loại bỏ hoặc từ chối những kí tự đặc biệt như < > ‘ /…
- Tuy nhiên, không nên dùng ngôn ngữ trình khách (như JavaScript, VBScript…) để kiểm tra dữ liệu nhập hợp lệ vì hacker vẫn có thể lợi dụng để tấn công như trong kĩ thuật mã hoá URL hay vượt đường dẫn…Cách tốt nhất vẫn là kiểm tra ngay trên ứng dụng trình chủ. - Nếu không thể từ chối cũng như lọai bỏ những kí tự, ứng dụng cần
kiểm tra dữ liệu xuất để đảm bảo rằng dữ liệu xuất đến trình duyệt là an toàn.
- Ví dụ: Với SQL Injection, ứng dụng cần xuất một trang báo lỗi do chính ứng dụng qui định để phòng tránh trường hợp hacker lợi dụng nội dung báo lỗi cú pháp SQL để lấy thông tin.
- Ngoài ra, ứng dụng cần kết hợp với HTTP Header, đặc biệt là thành phần Referer để đảm bảo trang yêu cầu không xuất phát từ máy hacker
như trong kĩ thuật Buffer Overflow, thao tác trên biến ẩn form,… - Xác thực người dùng:
- Nhiều ứng dụng hiện nay quản lí một phiên làm việc của người dùng bằng sessionID nhưng sự yếu kém trong cách quản lí một phiên làm việc khiến cho hacker có thể dễ dàng kiểm soát được một phiên làm việc của người dùng như trong kĩ thuật “quản lí phiên làm việc”. Vì thế, đối với một phiên làm việc, ứng dụng cần hủy ngay sau khi trình duyệt đóng kết nối.
- Mã hóa dữ liệu quan trọng: Những thông tin quan trong như tên/mật khẩu, credit card,… cần được mã hóa để tránh hacker có thể lấy được nội dung và sử dụng chúng như trong kĩ thuật XSS, SQL Injection...Ngoài ra, trong quá trình truyền, kết hợp phương pháp SSL để tránh trường hợp mất mát thông tin trên đường truyền.
Hiện nay trong lĩnh vực mã hóa dữ liệu, có rất nhiều phương
pháp mã hóa như mã hóa khóa bí mật, mã hóa khóa công khai,…nên tùy vào mức độ sử dụng cũng như tầm quan trọng mà ứng dụng có thể
chọn một trong những phương pháp mã hóa để đảm bảo dữ liệu được
bảo mật.
- Hiện nay nhiều nhà ứng dụng lại mã hóa dữ liệu kết hợp với vài thông
tin như ngày giờ, địa chỉ IP…khiến cho hacker có thể dễ dàng dự đoán, hoặc nội dung dữ liệu mã hóa quá ngắn khiến cho hacker có thể
sử dụng nhưng công cụ sẵn có để vét cạn những khả năng có thể xảy
ra như trong kĩ thuật tấn công sessionID. Hoặc phương pháp mã hóa
mã như “John and Ripper”. Do đó, cần chọn thuật toán mã hóa cùng với khóa để mã hóa sao cho dữ liệu không dễ dự đoán và bị vét cạn. - Ngoài ra, việc dùng SSL là cần thiết để tránh trường hợp dữ liệu bị
đánh cắp trên đường truyền. - Dùng phần mềm bảo mật:
Hiện nay trên thị trường xuất hiện những phần mểm như
Appshield hoạt động như một proxy, nghĩa là trung gian giữa máy
khách và máy chủ, mọi yêu cầu từ máy khách đều đi qua phần mềm
này, nếu phát hiện trong yêu cầu có ẩn chứa khả năng tấn công lên hệ
thống, nó sẽ từ chối yêu cầu, không gửi lên máy chủ nữa mà sẽ tự động hủy yêu cầu.
- Thiết lập quyền:
Với ứng dụng, hệ thống chỉ nên cung cấp những quyền hạn nhất định sao cho ứng dụng đủ thực hiện các chức năng của mình. Không
nên đưa quyền cao nhất, như root vì hacker có thể lợi dụng quyền root này để có thể thực thi những câu lệnh của hệ thống, như trong kĩ thuật
tấn công SQL Injection, Buffer Overflow…
+ Người sử dụng
- Đưa ra những lời cảnh báo cho người sử dụng Web rủi ro có thể xảy
ra, đặc biệt nên chú ý khi cho phép trình duyệt thực thi ngôn ngữ trình khách trên máy của mình, vì khả năng lợi dụng ngôn ngữ này là rất lớn như trong kĩ thuật XSS, sessionID.
- Sau khi sử dụng xong ứng dụng cần thoát ra khỏi hệ thống theo qui
định (như Sigh-out của Yahoo) để những nội dung quan trọng lưu trữ
trong cookie bị hủy bỏ, tránh khả năng hacker vẫn tiếp tục dùng session ID tồn tại đó để đăng nhập vào hệ thống hợp lệ.
- Quản lý tài khoản:
a.) Người sử dụng cần nhận thức được vai trò quan trọng trong việc bảo vệ tài khoản của mình. Các hoạt động quản lý tài khoản bao gồm việc bảo vệ mật khẩu, thay đổi mật khẩu định kỳ, đăng ký thời điểm, ... Sử dụng các phần mềm bảo vệ máy trạm của người sử dụng, log out khỏi hệ thống sau một thời gian time-out ...
b.) Phát hiện tài khoản sử dụng trái phép: Người dùng cần được huấn luyện về các cách phát hiện tài khoản của mình sử dụng trái phép như thế nào. Người sử dụng cần thường xuyên kiểm tra các hoạt động của mình
để đảm bảo không có người khác lợi dụng tài khoản thực hiện những
hành động khác.