Tải bản đầy đủ
TỔNG QUAN CÁC GIẢI PHÁP BẢO VỆ WEB SERVER

TỔNG QUAN CÁC GIẢI PHÁP BẢO VỆ WEB SERVER

Tải bản đầy đủ

4

động liên tục 24/24 giờ, 7 ngày một tuần và 365 ngày một năm, để phục vụ
cho việc cung cấp thông tin trực tuyến.
Có nhiều Web Server khác nhau, việc lựa chọn một web server phù hợp
sẽ dựa trên các tiêu chí đánh giá. Khả năng làm việc với hệ điều hành, các
ứng dụng khác, thiết lập các chương trình ứng dụng phía server, bảo mật dữ
liệu, xuất bản trang web, các công cụ hỗ trợ khi xây dựng các trang web.
Hiện nay, có 2 loại web server thông dụng nhất là: Internet Information
Services (IIS), Apache Web Server.
1.1.1. Internet Information Services (IIS)
Internet Information Services (IIS) là một dịch vụ tùy chọn của Windows
Server cung cấp các tính năng về Web site.
Giải pháp phổ biến nhất của Microsoft cho một web site là chạy IIS trên
nền Windows Server. IIS là dịch vụ thông tin Internet do Microsoft phát
triển, sản phẩm này được tích hợp cùng với hệ điều hành Windows. Phiên bản
mới nhất hiện nay là IIS 7.0 được chạy trên hệ điều hành Windows Server
2003, 2008... Phiên bản này được Microsoft thiết kế lại dưới dạng module,
vừa kế thừa ưu điểm của những phiên bản trước,vừa tăng cường tính bảo mật
và ổn định. Những điểm đáng chú ý trong IIS 7.0 bao gồm:
IIS 7.0 cung cấp 2 công cụ quản trị, một dưới dạng đồ họa và một dưới
dạng dòng lệnh. Những công cụ quản trị này cho phép bạn:
- Quản lý tập trung IIS và ASP.NET;
- Xem thông tin, chẩn đoán, trong đó bao gồm các thông tin real-time;
- Thay đổi quyền trên các đối tượng site và ứng dụng;
- Ủy quyền cấu hình các đối tượng site và ứng dụng cho các thành viên
không có quyền quản trị;

5

Hình 1.2 Phần mềm IIS7
Thay đổi cách thức lưu trữ thông tin cấu hình IIS 7.0 và ASP.NET
vào một vị trí, từ đó cho phép:
- Cấu hình IIS và ASP.NET với một định dạng thống nhất
- Dễ dàng sao chép các file cấu hình và nội dung của site hoặc ứng dụng
đến một máy tính khác
Dễ dàng chẩn đoán và khắc phục sự cố nhờ vào thông tin real-time và
hệ thống file log ở mức độ chi tiết
IIS 7.0 được thiết kế dưới dạng module, cho phép bạn bổ sung cũng
như loại bỏ các thành phần từ Web Server khi cần.
Khả năng tương thích cao đối với các ứng dụng đã triển khai trong các
phiên bản IIS trước. Khi đó triển khai IIS 7.0 bạn có thể chạy các ứng dụng
ASP hoặc ASP.NET 2.0 đã được xây dựng từ trước mà không cần phải thay
đổi mã nguồn.
Trong IIS bao gồm nhiều dịch vụ dịch vụ như: dịch vụ Web Server, dịch
vụ FTP Server … Ở đây ta đề cập đến dịch vụ Web Server. IIS Web Server
đáp ứng mọi yêu cầu chủ yếu của một Web Server như: độ tin cậy, hiệu năng,

6

khả năng theo dõi giám sát, tính bảo mật và tính khả thi trong việc phát triển
các dịch vụ ứng dụng. Tất cả các cải tiến này là kết quả là sự kết hợp chặt chẽ
cùng với các tính năng mới được cung cấp trong hệ điều hành Windows.
Người dùng có thể triển khai liên tục các ứng dụng mạng lên các Server
với nội dung mới nhất. IIS hỗ trợ đầy đủ các hệ thống ngôn ngữ lập trình như
Visual Basic, Visual Basic Script, J scriptMT được phát triển bởi Microsoft và
Java Conponent, ứng dụng CGI dành cho các ngôn ngữ lập trình Web cơ sở,
ISAPI mở rộng và các bộ lọc.
1.1.2. Apache Web Server
Apache Web Server được xem như một sự nỗ lực rất lớn trong việc phát
triển và duy trì một Web Server mã nguồn mở cho các hệ điều hành, bao gồm
Unix, Linux và Windows. Đây là một Web Server hội tụ tất cả các tính năng:
bảo mật, hiệu suất, mở rộng và phát triển cung cấp các dịch vụ Web được
đồng bộ trong các chuẩn Web hiện hành.
Các đặc điểm nổi bật của Apache:
- Apache có thể chạy kết hợp giữa chế độ đa xử lý và chế độ đa chỉ lệnh.
- Hỗ trợ nhiều giao thức: Apache được phát triển để có thể phục vụ trên
nhiều giao thức khác nhau.
- Ngày càng hỗ trợ tốt hơn cho các hệ điều hành khác như: Linux, OS và
Windows.
- Ngày càng phát triển và hoàn thiện các API (Application Program
Interface).
- Hỗ trợ IPv6.
- Hỗ trợ nhiều modul dùng để lọc các dòng dữ liệu đến hoặc đi từ server.

7

Hình 1.3 Phần mềm apache
- Hỗ trợ nhiều ngôn ngữ hiển thị các thông báo lỗi.
Ngày càng đơn giản và dễ dàng thiết lập các tham số cho Web Server
qua các file cấu hình.
1.2. Một số phương thức tấn công web server
1.2.1. Authentication attacks
Authentication đóng một vai trò rất quan trọng trong việc đảm bảo tính
an ninh của một web application. Khi một user cung cấp login name và
password để xác thực tài khoản của mình, web application cấp quyền truy
xuất cho user dựa vào login name mà user nhập vào đã được lưu trong cơ sở
dữ liệu. HTTP có một số phương thức xác thực:
- Basic
- Digest
- Form-based.
- NTLM.

8

- Negotiate.
- Client-side.
- Microsoft Passport.
Kiểu tấn công này không dựa vào lỗ hổng an ninh trên hệ điều hành và
phần mềm của server. Nó phụ thuộc vào mức độ an ninh và phức tạp của
password được lưu trữ và mức độ khó khăn để cho attacker có thể tiếp cận
được server. Khi thực hiện tấn công này, hacker có thể vượt rào xác thực và
vào hệ thống với quyền truy xuất mà mình mong muốn. Với quyền đăng nhập
cao nhất admin, hacker có thể toàn quyền điều khiển hệ thống web bị tấn
công.
Giải pháp tốt hơn cho vấn đề này là sử dụng một vài hình thức “multifactor authentication” (chứng thực sử dụng nhiều yếu tố).
Vấn đề ở đây là sức mạnh tính toán của các máy tính ngày này ngày
càng tăng. Chúng có khả năng xử lý một lượng lớn dữ liệu chỉ trong một
khoảng thời gian ngắn. Một “password” chỉ là một chuỗi các ký tự (có trên
bàn phím) mà một người cần ghi nhớ và cung cấp cho máy tính khi cần thiết
(như để đăng nhập vào máy tính, truy cập tài nguyên trên mạng…).
Thật không may, các mật khẩu mà quá phức tạp để ghi nhớ đối với con
người thì lại dễ dàng bị dò ra bởi các công cụ “pasword cracking” trong một
khoảng thời gian ngắn đến kinh ngạc. Các kiểu tấn công như “dictionary
attack”, “brute fore attack” và “hybrid attack” thường được sử dụng để đoán
và bẻ khóa mật khẩu.
Phương thức bảo vệ duy nhất chống lại những “threat” như vậy là tạo ra
các mật khẩu mạnh “strong password” (độ dài của mật khẩu thường từ 8 ký
tự trở lên, trong đó bao gồm cả chữ cái in thường/in hoa, chữ số, ký tự đặc
biệt) và sử dụng thêm các yếu tố khác (vân tay, smart card, võng mạc mắt,…)
cho việc chứng thực.

9

Nhưng ngay cả khi người ta có thể nhớ được các “strong password” (tất
nhiên độ phức tạp của “password” này cần ở mức vừa phải) như dài từ 12 đến
16 ký tự, thì vẫn còn các vấn đề khác mà các hệ thống chứng thực chỉ dựa vào
“password” phải đối mặt.
1.2.2. HTTP Response Splitting
Lỗi HTTP Response Splitting tấn công vào ứng dụng web và diễn ra khi
nó không thể xử lý đúng các thông tin đầu vào người dùng nhập.
Kẻ tấn công từ xa có thể gửi một yêu cầu HTTP đặc biệt làm cho máy
chủ web định dạng yêu cầu nhầm tưởng rằng nó chứa 2 yêu cầu HTTP chứ
không phải một. Chỉ yêu cầu thứ nhất được xử lý bởi người sử dụng. HTTP
Response Splitting cho phép tiến hành một lượng lớn các cuộc tấn công kiểu
như web cache positioning, deface, “cross-user defacement”, chặn và ăn cắp
thông tin người dùng và Cross site Scripting.
1.2.3. File Inclusion Attacks
Khi một trang web sử dụng các lệnh include, require,… để gọi đến một
file khác, sơ ý để người dùng có thể thay đổi file cần gọi đến. Như vậy
Website đó đang đứng trước nguy cơ bị tấn công File Inclusion. Tùy vào mức
độ bảo mật của Server, hacker có thể include đến file trên Server đó hoặc
include đến file trên Server khác (remote include). Với từng mức độ hacker có
thể có nhiều cách để up shell. Nếu server kém bảo mật thì kẻ tấn công có thể
đọc được file của toàn bộ hệ thống, file của các Website khác trên cùng máy
chủ đó.
Lỗi này dùng để tấn công local kiểu tấn công máy chủ, website qua một
site bị lỗi trên máy chủ. Nếu có quyền ghi, tất cả các file có thể bị thay đổi:
deface trang chủ, chèn mã độc để thu thập thông tin đăng nhập, ẩn dấu
backdoor để lần sau vào tiếp,…Có thể lấy thông tin truy nhập cơ sở dữ liệu

10

(database) qua file cấu hình của website, sau đó truy nhập vào cơ sở dữ liệu:
xem dữ liệu, xóa, thay đổi dữ liệu,… Trong trường hợp này, cơ sở dữ liệu là
MySql cho phép sử dụng hàm load_file(). Phòng chống File Inclusion
Attacks.
1.2.4. Cross-Site Scripting
Cross-Site Scripting (XSS) là một kĩ thuật tấn công bằng cách chèn vào
các website động (ASP, PHP, CGI, JSP …) những thẻ HTML hay những
đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác.
Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng
các Client-Site Script như JavaScript, JScript, HTML. Kỹ thuật tấn công XSS
đã nhanh chóng trở thành một trong những lỗi phổ biến nhất của Web
Applications và mối đe doạ của chúng đối với người sử dụng ngày càng lớn.
XSS thường được sử dụng với các mục đích như đánh cắp thông tin giúp
hacker có thể truy cập được vào những thông tin nhạy cảm, lấy được quyền
truy cập miễn phí vào những nội dung đúng ra phải trả tiền mới có được.
Dò xét sở thích của người sử dụng mạng, thay đổi diện mạo một trang web
nào đó Tấn công từ chối dịch vụ (DoS) Mã JavaScript độc có thể truy cập bất
cứ thông tin nào sau đây:
- Cookie cố định được duy trì bởi trình duyệt;
- RAM Cookie;
- Tên của tất cả các cửa sổ được mở từ site bị lỗi XSS
- Bất cứ thông tin mà có thể truy cập được từ DOM hiện tại (như value,
mã HTML…)
Những người phát triển web có thể bảo vệ website của mình khỏi bị lợi
dụng thông qua tấn công XSS, bằng cách đảm bảo những trang phát sinh
động không chứa các tag của script bằng cách lọc và xác nhận hợp lý các dữ

11

liệu đầu vào từ phía người dùng hoặc mã hóa và lọc các giá trị xuất cho người
dùng.
1.2.5. SQL injection
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ
hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web, thông báo lỗi
của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh
SQL bất hợp pháp.
Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực
hiện các thao tác xóa, sửa, … do có toàn quyền trên cơ sở dữ liệu của ứng
dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra
trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ
liệu như SQL Server, MySQL, Oracle, DB2, Sysbase.
Có bốn dạng gồm: vượt qua kiểm tra lúc đăng nhập (authorization
bypass), sử dụng câu lện SELECT, sử dụng câu lệnh INSERT, sử dụng các
stored-procedures. Để phòng tránh, ta có thể thực hiện ở hai mức:
Kiểm soát chặt chẽ dữ liệu nhập vào hãy bảo vệ các câu lệnh SQL là
bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng
Request (Request, Request.QueryString, Request.Form, Request.Cookies, and
Request.ServerVariables).
Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu Cần có cơ
chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người
dùng mà ứng dụng web đang sử dụng. Quyền càng bị hạn chế, thiệt hại càng
ít.
Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ
bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người
dùng khi ứng dụng có lỗi. Các thông báo lỗi thường tiết lộ các điểm yếu của
hệ thống.

12

1.2.6. Tấn công từ chối dịch vụ (DOS)
DoS (Denial of Service) có thể mô tả như hành động ngăn cản những
người dùng hợp pháp của một dịch vụ nào đó truy cập và sử dụng dịch vụ đó.
DoS là kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng
thông, bộ nhớ…làm mất khả năng xử lý các yêu cầu dịch vụ đến từ các client
khác. Gồm có các kiểu tấng công sau:
Kiểu tấn công SYN flood
Lợi dụng cách thức hoạt động của kết nối TCP/IP, hacker bắt đầu quá
trình thiết lập một kết nối TPC/IP tới mục tiêu muốn tấn công mà không gửi
trả gói tin ACK, khiến cho mục tiêu luôn rơi vào trạng thái chờ (đợi gói tin
ACK từ phía yêu cầu thiết lập kết nối) và liên tục gửi gói tin SYN ACK để
thiết lập kết nối. Một cách khác là giả mạo địa chỉ IP nguồn của gói tin yêu
cầu thiết lập kết nối SYN và cũng như trường hợp trên, máy tính đích cũng
rơi vào trạng thái chờ vì các gói tin SYN ACK không thể đi đến đích do địa
chỉ IP nguồn là không có thật. Kiểu tấn công SYN flood được các hacker áp
dụng để tấn công một hệ thống mạng có băng thông lớn hơn hệ thống của
hacker.
Kiểu tấn công Land Attack
Kiểu tấn công Land Attack cũng tương tự như SYN flood, nhưng hacker
sử dụng chính IP của mục tiêu cần tấn công để dùng làm địa chỉ IP nguồn
trong gói tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng thiết lập kết
nối với chính nó.
Kiểu tấn công UDP flood
Hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của
chính mục tiêu cần tấn công hoặc của một máy tính trong cùng mạng. Với
mục tiêu sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận các
gói tin echo trên 2 máy tính (hoặc giữa mục tiêu với chính nó nếu mục tiêu có

13

cấu hình cổng loopback), khiến cho 2 máy tính này dần dần sử dụng hết băng
thông của chúng, và cản trở hoạt động chia sẻ tài nguyên mạng của các máy
tính khác trong mạng.
Tấn công kiểu DDoS (Distributed Denial of Service)

Hình 1.4 Mô hình tấn công web server kiểu DDoS
Đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ
thống máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ kích hoạt
đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công
vào một mục tiêu. Với DDoS, các hacker có thể huy động tới hàng trăm thậm
chí hàng ngàn máy tính cùng tham gia tấn công cùng một thời điểm (tùy vào
sự chuẩn bị trước đó của hacker) và có thể "ngốn" hết băng thông của mục
tiêu trong nháy mắt.
Tấn công kiểu Smurf Attack
Kiểu tấn công này cần một hệ thống rất quan trọng, đó là mạng khuyếch
đại. Hacker dùng địa chỉ của máy tính cần tấn công bằng cách gửi gói tin
ICMP echo cho toàn bộ mạng (broadcast). Các máy tính trong mạng sẽ đồng
loạt gửi gói tin ICMP reply cho máy tính mà hacker muốn tấn công. Kết quả
là máy tính này sẽ không thể xử lý kịp thời một lượng lớn thông tin và dẫn tới
bị treo máy.

14

Hậu quả mà DoS gây ra không chỉ tiêu tốn nhiều tiền bạc, và công sức
mà còn mất rất nhiều thời gian để khắc phục. Vì vậy, cần sử dụng các biện
pháp sau để phòng chống DoS:
- Mô hình hệ thống cần phải được xây dựng hợp lý, tránh phụ thuộc lẫn
nhau quá mức.
- Thiết lập mật khẩu mạnh (strong password) để bảo vệ các thiết bị mạng
và các nguồn tài nguyên quan trọng khác.
- Thiết lập các mức xác thực đối với người sử dụng cũng như các nguồn
tin trên mạng. Đặc biệt, nên thiết lập chế độ xác thực khi cập nhật các thông
tin định tuyến giữa các router.
- Xây dựng hệ thống lọc thông tin trên router, firewall… và hệ thống bảo
vệ chống lại SYN flood.
- Liên tục cập nhật, nghiên cứu, kiểm tra để phát hiện các lỗ hổng bảo
mật và có biện pháp khắc phục kịp thời.
1.3. Một số giải pháp bảo mật cho web server
Các Web server luôn là những vùng đất màu mỡ cho các hacker tìm
kiếm các thông tin giá trị hay gây rối vì một mục đích nào đó. Hiểm hoạ có
thể là bất cứ cái gì từ kiểu tấn công từ chối dịch vụ, quảng cáo các website có
nội dung không lành mạnh, xoá, thay đổi nội dung các file hay phần mềm
chứa mã nguy hiểm. Vì vậy để bảo vệ Web Server cần triển khai những vấn
đề sau:
+ Kết nối bên ngoài bao gồm các thiết bị định tuyến kết nối ADSL,
Lease-line… cùng các thiết bị cân bằng tải.
+ Kết nối bảo mật: Các thiết bị tường lửa (Firewall), các hệ thống phòng
chống tấn công IDS/IPS... và phần mềm giám sát hệ thống.
+ Các Web Server cài đặt hệ điều hành Windows, Linux… và các giải
pháp phòng chống virus, chống thư rác (spam mail)...