CHƯƠNG 1:TỔNG QUAN CÁC GIẢI PHÁP BẢO VỆ WEB SERVER 1.1.Tổng quan Web Server Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưutrữ thông tin như một ngân hàng dữ liệu,
Trang 1MỞ ĐẦU
1 Lý do chọn đề tài: Hiện nay, bảo mật thông tin đang đóng một vai trò
thiết yếu trong mọi hoạt động liên quan đến việc ứng dụng công nghệ thôngtin
Trong đó Web Server luôn là những vùng đất màu mỡ cho các hackertì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à tấn công từ chối dịch vụ, quảng cáo các website có nội dung khônglành mạnh, xoá, thay đổi nội dung các file hay phần mềm chứa mã nguy hiểmvv… Các nhà quản trị mạng luôn phải đau đầu, lo lắng tìm các phương pháp
để bảo vệ Web server và an toàn thông tin cho toàn bộ hệ thống
Xuất phát từ những nhu cầu trên, học viên quyết định lựa chọn đề tài
“Nghiên cứu giải pháp bảo vệ Web Server dựa trên Reverse Proxy” mongmuốn nghiên cứu, đánh giá khả năng bảo vệ Web Server và lựa chọn một sốứng dụng để cấu hình và cài đặt thử nghiệm mô hình cụ thể Ưu điểm của giảipháp này là chi phí để xây dựng hệ thống bảo vệ Web Server là thấp
2 Đối tượng và phạm vi nghiên cứu: Trong những năm vừa qua, hàng
loạt các vụ tấn công vào hệ thống Web Server của các trang mạng xã hội tạo
ra những quan tâm rất lớn trong các nhà quản trị hệ thống mạng thông tin
Sử dụng Reverse Proxy là một cách bảo vệ Web Server Reverse Proxyđứng giữa một Server và tất cả Client mà Server phải phục vụ, hoạt động nhưmột trạm kiểm soát, các request từ Client bắt buộc phải vào Reverse Proxy.Tại Reverse Proxy sẽ kiểm soát, lọc bỏ các request không hợp lệ và luânchuyển các request hợp lệ đến đích cuối cùng là các Server
Việc bảo vệ Web Server có nhiều biện pháp khác nhau, do đó đối tượng
nghiên cứu của luận văn chỉ tập trung vào việc nghiên cứu giải pháp bảo vệ
Trang 2Web Server dựa trên Reverse Proxy Sau đó cấu hình và cài đặt thử nghiệpbằng phần mềm mã nguồn mở NGINX
3 Hướng nghiên cứu của đề tài: Việc nghiên cứu và đánh giá các vấn
đề trong đề tài dựa trên các cơ sở khoa học và phương pháp luận nghiên cứusau:
Hệ thống lý thuyết tổng quan về bảo mật trên Web Server; SSL; HTTPS;Reverse Proxy
Nghiêm cứu mô hình triển khai hệ thống mạng bảo mật cho Web Server
và cấu hình và cài đặt thử nghiệm Reverse Proxy bằng phần mềm NGINX
4 Phương pháp nghiên cứu: Thu nhập hệ thống lý thuyết tổng quan về
bảo mật trên web server; SSL; HTTPS; Reverse Proxy Tham khảo các tàiliệu liên quan ở trong nước, nước ngoài và trên Internet; sử dụng phươngpháp phân tích, liệt kê, thực nghiệm,…
5 Ý nghĩa khoa học của đề tài: Nghiên cứu tìm hiểu giải pháp bảo vệ
Web Server dựa trên Reverse Proxy, cấu hình và cài đặt thử nghiệp bằng phầnmềm mã nguồn mở NGINX
Vì điều kiện thời gian có giới hạn và năng lực của bản thân, mặc dù đã
cố gắng nhưng đề tài chắc có thể chưa đi sâu phân tích hết các khía cạnh, chi tiết có liên quan Kính mong Thầy hướng dẫn và Hội đồng bảo vệ luận văn tốt nghiệp cho ý kiến đóng góp thêm để đề tài được hoàn thiện hơn
Trang 3CHƯƠNG 1:
TỔNG QUAN CÁC GIẢI PHÁP BẢO VỆ WEB SERVER
1.1.Tổng quan Web Server
Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưutrữ thông tin như một ngân hàng dữ liệu, chứa những website đã được thiết kếcùng với những thông tin liên quan khác (các mã Script, các chương trình, vàcác file Multimedia)
Web Server gửi đến Client những trang Web thông qua môi trườngInternet qua giao thức HTTP, HTTPS; giao thức được thiết kế để gửi các fileđến Web Browser và các giao thức khác
Khi máy tính kết nối đến một Web Server và gửi đến yêu cầu truy cậpcác thông tin từ một trang Web nào đó, Web Server sẽ nhận yêu cầu và gửi lạinhững thông tin yêu cầu Giống các phần mềm khác Web Server cũng chỉ làmột ứng dụng phần mềm Nó được cài đặt, chạy trên máy tính dùng làm WebServer, nhờ có chương trình này mà người sử dụng có thể truy cập đến cácthông tin của trang Web từ một máy tính khác ở trên mạng Internet, Intranet
Hình 1.1 Mô hình hoạt động Web Server
Web Server còn có thể được tích hợp với Database hay điều khiển việckết nối vào Database để có thể truy cập và kết xuất thông tin từ Database lêncác trang Web và truyền tải chúng đến người dùng Web Server phải hoạt
Trang 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 InformationServices (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 WindowsServer 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ênnền Windows Server IIS là dịch vụ thông tin Internet do Microsoft pháttriể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ảnmớ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ướidạ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ênkhông có quyền quản trị;
Trang 5Hì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ụngASP 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
Trang 6đá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,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ểncá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 Servervớ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áttriển và duy trì một Web Server mã nguồn mở cho các hệ điều hành, bao gồmUnix, 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ênnhiề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 ProgramInterface)
- 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
Trang 7Hì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 Serverqua 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 truyxuất cho user dựa vào login name mà user nhập vào đã được lưu trong cơ sở
Trang 8Giải pháp tốt hơn cho vấn đề này là sử dụng một vài hình thức
“multi-factor 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àycàng tăng Chúng có khả năng xử lý một lượng lớn dữ liệu chỉ trong mộtkhoảng thời gian ngắn Một “password” chỉ là một chuỗi các ký tự (có trênbà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 conngười thì lại dễ dàng bị dò ra bởi các công cụ “pasword cracking” trong mộtkhoảng thời gian ngắn đến kinh ngạc Các kiểu tấn công như “dictionaryattack”, “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ự đặcbiệ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
Trang 9Nhưng ngay cả khi người ta có thể nhớ được các “strong password” (tấtnhiê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áychủ 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 HTTPResponse Splitting cho phép tiến hành một lượng lớn các cuộc tấn công kiểunhư web cache positioning, deface, “cross-user defacement”, chặn và ăn cắpthô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ộtfile khác, sơ ý để người dùng có thể thay đổi file cần gọi đến Như vậyWebsite đó đ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ặcinclude đế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áychủ đó
Lỗi này dùng để tấn công local kiểu tấn công máy chủ, website qua mộtsite 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ấubackdoor để lần sau vào tiếp,…Có thể lấy thông tin truy nhập cơ sở dữ liệu
Trang 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 InclusionAttacks.
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àocá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ằngcá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 WebApplications 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úphacker có thể truy cập được vào những thông tin nhạy cảm, lấy được quyềntruy 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 webnà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ợidụ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ữ
Trang 11liệ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ườidù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ỗicủa hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnhSQL 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ựchiệ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 ứngdụng, thậm chí là server mà ứng dụng đó đang chạy Lỗi này thường xảy ratrê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 (authorizationbypass), 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ượngRequest (Request, Request.QueryString, Request.Form, Request.Cookies, andRequest.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ườidù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ườidù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
Trang 121.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ữngngườ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ăngthô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 clientkhá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ửitrả 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 tinACK 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êucầ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ũngrơi vào trạng thái chờ vì các gói tin SYN ACK không thể đi đến đích do địachỉ IP nguồn là không có thật Kiểu tấn công SYN flood được các hacker ápdụ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ủahacker
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ồntrong 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ếtnố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ủachí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ớimục tiêu sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận cácgó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ó
Trang 13cấ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ăngthô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áytí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ôngvào một mục tiêu Với DDoS, các hacker có thể huy động tới hàng trăm thậmchí 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ụctiê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 tinICMP echo cho toàn bộ mạng (broadcast) Các máy tính trong mạng sẽ đồngloạ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
Trang 14Hậ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ệnphá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ẫnnhau 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ồntin 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ôngtin đị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ảomậ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ìmkiế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ềmchứa mã nguy hiểm Vì vậy để bảo vệ Web Server cần triển khai những vấn
Trang 15Hình 1.5 Mô hình bảo vệ Web Server
+ Hệ thống lưu trữ: Các thiết bị lưu trữ dữ liệu tích hợp SAN (StorageArea Network)
+ Ngoài việc những động tác kiểm tra của một bức tường lửa thôngthường, WAF sẽ kiểm tra sâu hơn, sẽ kiểm tra các nội dung HTTP ở lớp ứngdụng, Đặt các Web Server của bạn trong vùng DMZ Thiết lập firewall củabạn không cho các kết nối tới Web Server trên toàn bộ các cổng, ngoại trừcổng 80 (http), cổng 443 (https) và các cổng dịch vụ mà bạn sử dụng
+ Đăng ký và cập nhật định kỳ các bản sửa lỗi mới nhất về an toàn, bảomật từ các nhà cung cấp
+ Thực hiện toàn bộ việc cập nhật từ mạng Intranet Duy trì trang Webban đầu trên mỗi Server trên hệ thống mạng Intranet và tạo các thay đổi vàcập nhật ở đây; sau đó mới đẩy các cập nhật này lên Website qua một kết nốiSSL
Trang 16Hình 1.6 Báo cáo rủi ro các cuộc tấn công Web
Ngoài ra để tăng độ bảo mật cho Web Server ta có thể sử dụng một sốgiải pháp sau:
1.3.1 Sử dụng mod_security
Hình 1.7 Mô hình Sử dụng mod_security
Trang 17Mod_Security là một bộ máy phát hiện và phòng chống xâm nhập dànhcho các ứng dụng Web hoặc một Web application firewall Hoạt động nhưmột module của máy chủ web Apache, mục đích của ModSecurity là tăngcường bảo mật cho các ứng dụng web, bảo vệ chúng khỏi các loại tấn công đãbiết và chưa biết Modsecurity có thể :
- Theo dõi HTTP traffic để phát hiện những dấu hiệu bất thường
- Lọc các dữ liệu ra vào Web Server
- Ghi lại các tương tác giữa Client và Web Server
1.3.2 Secure Web Server (HTTPS)
Là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hayTLS cho phép trao đổi thông tin một cách bảo mật trên Internet Các kết nốiHTTPS thường được sử dụng cho các giao dịch thanh toán trên World WideWeb và cho các giao dịch nhạy cảm trong các hệ thống thông tin
HTTPS được sử dụng trong nhiều tình huống, chẳng hạn như các trangđăng nhập cho ngân hàng, các hình thức, ích đăng nhập công ty, và các ứngdụng khác, trong đó dữ liệu cần phải được an toàn
1.3.3 Internet Acceleration and Security (ISA)
Internet Acceleration and Security (ISA) cung cấp một tường lửa linhhoạt, có hiệu quả, và dễ sử dụng Có hai phiên bản ISA 2006 bao gồm:
-Standard Edition
- Enterprise Edition ISA Server 2006 đáp ứng nhu cầu bảo vệ và chia sẻbăng thông, có thể xây dựng firewall để:
- Kiểm soát các luồng dữ liệu vào và ra hệ thống mạng nội bộ
- Kiểm soát quá trình truy cập của người dùng theo giao thức, thời gian
và nội dung nhằm ngăn chặn việc kết nối vào những trang web có nội dungkhông thích hợp
Trang 18- Bên cạnh đó chúng ta còn có thể triển khai hệ thống VPN Site to Sitehay Remote Access hỗ trợ cho việc truy cập từ xa Với Web Server cần đượcbảo vệ chặt chẽ trong một môi trường riêng biệt thì ISA SERVER 2006 chophép triển khai các vùng DMZ ngăn ngừa sự tương tác trực tiếp giữa ngườibên trong và bên ngoài hệ thống.
- Ngoài các tính năng bảo mật thông tin trên, ISA SERVER 2006 còn có
hệ thống đệm (cache) giúp kết nối Internet nhanh hơn do thông tin trang web
có thể được lưu sẵn trên RAM hay đĩa cứng, giúp tiết kiệm đáng kể băngthông
Hình 1.8 Mô hình sử dụng phần mềm ISA
Trang 19CHƯƠNG 2:
GIẢI PHÁP BẢO VỆ WEB SERVER DỰA TRÊN REVERSE PROXY
Ngày nay, cùng với sự phát triển nhanh chóng của Internet, số lượng cácgiao dịch qua mạng ngày càng tăng Việc thực hiện một giao dịch an toàn làmột yêu cầu thiết thực nhất là trong thương mại điện tử và các lĩnh vực nhạycảm khác như ngân hàng, tài chính, an ninh…
Để bảo vệ Web Server không bị các hacker tấn công là vấn đề có tínhcấp bách, hiện nay có rất nhiều biện pháp bảo vệ Web Chương 2 của luậnvăn trình bày về Giải pháp bảo vệ Web Server dựa trên Reverse Proxy
2.1 Giao thức SSL/TLS
2.1.1.Giao thức SSL
2.1.1.1.Giới thiệu giao thức SSL
Giao thức SSL là chữ viết tắt từ Secure Socket Layer, đây là một
tiêu chuẩn an ninh công nghệ toàn cầu tạo ra một liên kết được mã hóa giữamáy chủ web và trình duyệt Liên kết này đảm bảo tất cả các dữ liệu trao đổigiữa máy chủ web và trình duyệt luôn được bảo mật và an toàn
Hoạt động ở giữa giao thức TCP và các giao thức tầng ứng dụng của môhình OSI SSL hoạt động độc lập và trong suốt với các giao thức khác vì vậy
nó có thể làm việc với bất kỳ giao thức nào trên tầng ứng dụng và tầng giaovận trong mô hình OSI
SSL nhận dữ liệu từ các giao thức tầng trên, mã hoá dữ liệu rồi chuyểnxuống cho các giao thức tầng thấp hơn Tại nơi nhận, giao thức tầng dướicung cấp dữ liệu cho giao thức SSL, giao thức SSL giải mã dữ liệu rồi tiếptiếp chuyển cho các giao thức tầng ứng dụng xử lý tiếp
Về cấu trúc, SSL là một bộ gồm các giao thức thành phần được phântầng Giao thức Handshake điều khiển việc thiết lập liên kết, giao thức Alert
Trang 20điều khiển việc thông báo lỗi, giao thức ChangCipher thực hiện kích hoạt cácdịch vụ bảo mật và giao thức Record thực hiện việc đóng gói các thông điệp
do các giao thức tầng trên gửi xuống và chuyển tiếp các thông điệp đến nơinhận Mối quan hệ giữa các giao thức thành phần SSL được mô tả trong hình
Hình 2.1 Sơ đồ quan hệ giữa SSL và các giao thức khác
Các dịch vụ bảo mật trong SSL bao gồm mã hoá, xác thực và kiểm tratính toàn vẹn dữ liệu
2.1.1.2 Cơ chế hoạt động của giao thức SSL
Giao thức SSL là một bộ gồm 4 giao thức được phân thành hai tầng, tầngtrên gồm có giao thức bắt tay SSL (Handshake Protocol), giao thức cảnh báo(Alert Protocol), giao thức Change Cipher Spec Các giao thức này được sửdụng để khởi tạo một phiên, điều khiển lỗi và thực hiện các thay đổi khác khicần thiết Tầng dưới gồm giao thức bản ghi SSL (Record Protocol) quy địnhcách thức vận chuyển dữ liệu giữa bên gửi và bên nhận
Trang 21là kiểu kết nối phổ biến nhất);
2 Kiểu kết nối có xác thực cả máy chủ và máy khách
Mục đích của việc bắt tay trong giao thức SSL nhằm: Giúp máy chủ vàmáy khách thương lượng các thuật toán bảo vệ dữ liệu trong một phiên làmviệc, trao đổi các thông tin cần thiết để tạo khoá phiên và giúp máy khách vàmáy chủ xác thực lẫn nhau
Khởi tạo phiên giao tiếp SSL không xác thực máy khách.
Trong phiên bắt tay, máy chủ và máy khách trao đổi các thông điệp vớinhau, các bước và thông điệp trong quá trình bắt tay
Bảng 2.1 Quá trình bắt tay SSL không xác thực máy khách
3 Máy chủ gửi thông điệp Certificate để máy khách xác thực
4 Máy chủ kết thúc phiên thương lượng của nó với thông điệp
ServerHelloDone gửi cho máy khách
5 Máy khách cung cấp thông tin tạo khoá phiên qua thông điệp
ClientKeyExChange
6 Máy khách gửi thông điệp ChangeCipherSpec để kích hoạt dịch vụ
bảo mật
7 Máy khách gửi thông điệp Finished để máy chủ kiểm tra tính toàn
vẹn của các thông điệp đã gửi
8 Máy chủ gửi thông điệp ChangeCipherSpec để kích hoạt dịch vụ bảo mật
9 Máy chủ gửi thông điệp Finished để máy khách kiểm tra tính toàn
vẹn của các thông điệp đã gửi
Khởi tạo phiên giao tiếp SSL có xác thực máy khách
Xác thực máy khách là một tùy chọn được hỗ trợ trong SSL 3.0 Các bước vàthông điệp khởi tạo phiên SSL có xác thực máy khách được mô tả trong bảng
Trang 22Bảng 2.2 Quá trình bắt tay SSL có xác thực máy khách
Bước Hành động
1 Máy khách gửi thông điệp ClientHello tới máy chủ đề xuất các tuỳ
chọn cho phiên SSL
2 Máy chủ trả lời máy khách bằng thông điệp ServerHello đáp ứng các
tuỳ chọn cho phiên SSL
3 Máy chủ gửi thông điệp Certificate để máy khách xác thực
4 Máy chủ gửi tiếp thông điệp CertificateRequest để yêu cầu xác thực máy
khách
5 Máy chủ kết thúc phiên thương lượng của nó với thông điệp
ServerHelloDone gửi cho máy khách
6 Máy khách gửi thông điệp Certificate để máy chủ xác thực
7 Máy khách gửi tiếp thông điệp CertificateVerify phục vụ cho việc xác
10 Máy khách gửi thông điệp Finished máy chủ kiểm tra tính toàn vẹn
của các thông điệp đã gửi
11 Máy chủ gửi thông điệp ChangeCipherSpec để kích hoạt các dịch vụ
bảo mật
12 Máy chủ gửi thông điệp Finished để máy khách kiểm tra tính toàn vẹn
của các thông điệp đã gửi
Trang 23Hình 2.2 Sơ đồ quá trình bắt tay SSL
Xác thực trong giao thức SSL.
Giao thức SSL sử dụng chứng chỉ số vào việc xác thực các bên tham giagiao tiếp Hai kiểu xác thực được hỗ trợ trong phiên bản SSL 3.0 là xác thựcmáy chủ và xác thực máy khách
Xác thực máy chủ
Máy khách thực hiện các bước sau để xác thực máy chủ:
- Kiểm tra thời hạn sử dụng của chứng chỉ số;
- Kiểm tra CA cung cấp chứng chỉ số có tin cậy hay không;
- Kiểm tra khoá công khai của CA có thích hợp với chữ ký điện tử củangười đưa ra không;
- Kiểm tra xem tên miền trong chứng chỉ số máy chủ có tương ứng vàtên miền của máy chủ hay không
Trang 24Hình 2.3 Sơ đồ xác thực Server
Xác thực máy khách
Máy chủ thực hiện các bước sau đây để xác thực máy khách:
- Kiểm tra xem khoá công khai trong chứng chỉ số của máy khách có phù
hợp với chữ ký điện tử được ký bởi máy khách hay không;
- Kiểm tra xem chứng chỉ số đã hết thời hạn sử dụng chưa;
- Kiểm tra CA cung cấp chứng chỉ số có tin cậy hay không;
- Kiểm tra khoá công khai của CA có thích hợp với chữ ký điện tử củangười đưa ra không;
- Kiểm tra xem chứng chỉ số của người dùng có nằm trong danh sáchLDAP cho người dùng hay không
Giao thức bản ghi SSL
Giao thức bản ghi SSL tiếp nhận các thông điệp từ các tầng trên, phânđoạn dữ liệu, nén dữ liệu nếu nó được hỗ trợ, bổ sung MAC, mã hoá dữ liệu,
Trang 25đóng rồi chuyển xuống tầng dưới Tại nơi nhận, dữ liệu được xử lý ngược lại,
nó được giải mã, kiểm tra tính toàn vẹn dữ liệu, giải nén, ghép đoạn vàchuyển dữ liệu nên tầng trên Quá trình trên được mô tả trong hình vẽ
Hình 2.4 Hoạt động giao thức bản ghi SSL
Khuôn dạng thông điệp của giao thức bản ghi SSL gồm hai phần: phần
tiêu đề và phần nội dung Phần tiêu đề gồm các trường Content type,
Version, Length Phần nội dung là toàn bộ thông điệp của giao thức tầng trênđược đóng gói
Bảo vệ thông điệp bản ghi SSL
Sau khi phân đoạn tại tầng bản ghi dữ liệu được bổ sung mã xác thựcMAC và mã hoá trước khi gửi nên đường truyền
Tính toán mã xác thực thông điệp (MAC)
SSL hỗ trợ hai thuật toán tính toán mã xác thực thông điệp đó là MD5 vàSHA Giá trị băm sau khi tính toán đều được bổ sung vào dữ liệu ban đầu, giátrị độ dài của một bản ghi SSL bao gồm cả độ dài dữ liệu lẫn độ dài MAC
Trang 26Hình 2.5 Bảo vệ thông điệp với MD5 Hình 2.6 Bảo vệ thông điệp với SHA
Mã hoá dữ liệu Cả dữ liệu và mã xác thực MAC được mã hoá để đảm
bảo tính bí mật khi truyền SSL hỗ trợ hai kiểu mã hoá, mã hoá dòng và mãhoá khối
Hình 2.7 Mã hóa dòng Hình 2.8 Mã hóa khối
Giao thức cảnh báo SSL
SSL sử dụng giao thức Alert để chuyển thông báo lỗi giữa các bên thamgia giao tiếp Thông điệp Alert được đóng gói bởi giao thức bản ghi SSL,
Trang 27ngoài phần tiều đề của tầng bản ghi, thông điệp Alert gồm hai trường: trườnglevel và trường description.
Trường Level mô tả mức độ nguy hiểm của lỗi Các lỗi có thể là warning(với giá trị trường Level là 1) hoặc fatal (với giá trị trường Level là 2) Khinhận được thông báo lỗi fatal hệ thống ngay lập tức huỷ bỏ phiên làm việc.Các lỗi warning có mức độ nguy hiểm kém hơn, hệ thống nhận lỗi này vẫn cóthể cho phép tiếp tục phiên hiện tại; tuy nhiên cả hai bên phải làm mất hiệulực của số định danh phiên và không sử dụng cho bất kỳ kết nối tiếp theođược thiết lập
Trường Description mô tả chi tiết lỗi cụ thể Trường này gồm một byte
và có thể nhận một trong các giá trị trong bảng dưới đây:
Bảng 2.3 Giá trị của trường Describtion trong thông điệp Alert
Giá
trị
0 CloseNotify Warning Bên gửi cho biết nó đang đóng kết nối
10
Unexpected-Message
Fatal Bên gửi cho biết nó nhận được một
thông điệp sai; lỗi này luôn luôn là fatal
20 BadRecord-MAC Fatal Bên gửi cho biết nó nhận được một
thông điệp với mã xác thực bị sai
30
Decompression-Failure
Fatal Bên gửi thông báo nó nhận được một
thông điệp, và không giải nén được
40
Handshake-Failure
Fatal Bên gửi chó biết nó không thể thương
lượng được tập dịch vụ an ninh có thểchấp nhận
41 NoCertificate Warning Bên gửi cho biết nó không có chứng chỉ
42 BadCertificate Warning Bên gửi cho biết nó nhận được một
chứng chỉ số nhưng bị hỏng (chẳng hạnchữ ký của nó không thể kiểm tra được)
43
Unsupported-Certificate
Warning Bên gửi cho biết nó nhận được một
chứng chỉ số mà nó không hỗ trợ
Trang 2844
Certificate-Revoked
Warning Bên nhận cho biết nó nhận được một
chứng chỉ số đã bị thu hồi bởi CA
47 IllegalParamater Warning Bên gửi cho biết nó nhận được một
thông điệp bắt tay với một giá trị tham
số không hợp lệ hoặc xung đột với tham
số khác
Giao thức ChangeCipherSpec
ChangeCipherSpec là giao thức đơn giản nhất trong các giao thức thànhphần của SSL và được dùng để kích hoạt các dịch vụ bảo mật trong phiên giaotiếp Thông điệp ChangeCipherSpec báo hiệu sự thay đổi trạng thái các tham sốbảo mật trong phiên SSL
2.1.2 Giao thức TLS.
2.1.2.1 Giới thiệu giao thức TLS
Transport Layer Security (TLS) là một giao thức mật mã cung cấp thôngtin liên lạc an toàn trên Internet được IETF (Internet Engineering Task Force)
tổ chức quy định các tiêu chuẩn trên Internet, chuẩn hóa SSL và tạo ra TLScập nhật lần cuối trong Request for Comments (RFC) 5246 , được dựa trêncác thông số SSL trước đó được phát triển bởi Netscape
Một số phiên bản của giao thức được sử dụng rộng rãi trong các ứngdụng như duyệt web, thư điện tử, fax Internet, tin nhắn tức thời và voice-over-
IP (VoIP) để bảo vệ giao thức lớp ứng dụng như HTTP, FTP và cải thiện tốc
độ truyền dữ liệu hoặc thiết lập phiên làm việc các ứng dụng
Trang 29Ứng dụng nổi bật của TLS là để đảm bảo cho lưu lượng truy cập WorldWide Web thực HTTP để tạo thành HTTPS Các ứng dụng đáng chú ý khác làthương mại điện tử và quản lý tài sản
Simple Mail Transfer Protocol (SMTP) cũng được bảo vệ bởi TLS Cácứng dụng này sử dụng giấy chứng nhận khóa công khai để xác minh danh tínhcủa thiết bị đầu cuối
Nhiều nhà cung cấp dịch vụ an ninh mạng hiện nay kết hợp mã hóa TLSvới khả năng xác thực trong việc hỗ trợ cho các ứng dụng Client / Server TLS có một số lợi thế khi sử dụng tường lửa và NAT traversal làm cho
nó dễ dàng hơn để quản lý truy cập từ xa với số lượng lớn
TLS là một tiêu chuẩn để bảo vệ tín hiệu ứng dụng Session InitiationProtocol (SIP) TLS có thể được sử dụng để cung cấp chứng thực và mã hóacác tín hiệu SIP kết hợp với VoIP và các ứng dụng khác dựa trên SIP
2.1.2.2 Cơ chế hoạt động của giao thức TLS
Handshake Protocol là chịu trách nhiệm cho việc xác thực và trao đổikhóa cần thiết để thiết lập hoặc tiếp tục phiên an toàn Khi thiết lập một phiên
an toàn, quá trình Handshake thực hiện như sau:
Khách hàng xác thực bắt tay TLS
1 Client gửi một thông điệp ClientHello xác định phiên bản TLS giao
thức cao nhất nó hỗ trợ, một số ngẫu nhiên, một danh sách các bộ mã hoá đềxuất và phương pháp nén
2 Server đáp ứng với nhắn ServerHello, có phiên bản giao thức được
lựa chọn, một số ngẫu nhiên, bộ mật mã và phương pháp nén từ các lựa chọn
được cung cấp bởi khách hàng Các Server cũng có thể gửi một phiên như là
một phần của thông điệp để thực hiện một cái bắt tay trở lại
3 Server sẽ gửi tin nhắn Giấy chứng nhận (phụ thuộc vào các bộ mật
Trang 30mã đã chọn, điều này có thể được bỏ qua bởi các máy chủ).
Hình 2.9 Quá trình bắt tay TLS
4 Các Server yêu cầu một giấy chứng nhận Client, để kết nối có thể
được hai bên xác thực, sử dụng tin nhắn CertificateRequest
5 Server gửi một tin nhắn ServerHelloDone, cho thấy nó được thực
hiện với đàm phán bắt tay
6 Client đáp ứng với một thông điệp Giấy chứng nhận, trong đó có
giấy chứng nhận của Client
7 Client sẽ gửi tin nhắn ClientKeyExchange, có thể chứa một phím,
PreMasterSecret công cộng, hoặc không có gì (Một lần nữa, điều này phụ thuộc vào thuật toán mã hóa được lựa chọn.) PreMasterSecret này được mã
hóa bằng cách sử dụng khóa công khai của các chứng chỉ Server
Trang 318 Client sẽ gửi tin nhắn CertificateVerify là một chữ ký trên tin bắt tay
trước đó bằng cách sử dụng khóa riêng của Client Chữ ký này có thể đượcxác minh bằng cách sử dụng khóa công khai chứng chỉ của Client Điều nàycho phép Server biết rằng Client có thể truy cập vào các khóa riêng của giấychứng nhận và do đó sở hữu giấy chứng nhận
9 Client và Server sau đó sử dụng các số ngẫu để tính toán một bí mậtphổ biến, được gọi là "bậc thầy bí mật" Tất cả các dữ liệu quan trọng kháccho kết nối này có nguồn gốc từ bí mật mà Server và Client tạo ra các giá trịngẫu nhiên được thông qua một hàm giả ngẫu nhiên được thiết kế cẩn thận
Cuối cùng, Client sẽ gửi một tin nhắn mã hóa hoàn thành, có chứa một
băm và MAC trong thông báo bắt tay trước
Các Server sẽ cố gắng để giải mã tin nhắn Kết thúc của Client Nếu giải
mã hoặc kiểm tra xác nhận không thành công, những cái bắt tay được coi là
đã thất bại và kết nối nên được dỡ bỏ Server sẽ gửi thông báo Finished mãhóa của riêng mình Client thực hiện các giải mã và xác minh
2.2 Giao thức HTTPS.
2.2.1 Giới thiệu giao thức HTTPS
2.2.1.1 Giới thiệu giao thức HTTP
HTTP là chữ viết tắt từ Hyper Text Transfer Protocol (giao thức truyền
tải siêu văn bản) Được xây dựng dựa vào nền của Internet và sử dụng giaothức TCP/IP để truyền tải thông tin giữa các Web Client và Web Server
HTTP là giao thức Client/Server dùng cho World Wide Web Nó cungcấp cách để Web Browser truy xuất Web server và yêu cầu các văn bảnhypermedia được tạo bởi HTML Các văn bản HTML có thể chứa các siêukiên kết (hyperlink) đến các nơi khác nhau, có thể trong cùng một văn bản,một văn bản khác cùng một Web site hay một văn bản trên một Web site
Trang 32khác HTTP có nhiệm vụ xử lý các liên kết này và cung cấp giao thức truyềntin cho Client/Server.
HTTP là giao thức hướng đối tượng tổng quát, không trạng thái, có thểdùng cho nhiều nhiệm vụ chẳng hạn như đặt tên cho Server và các hệ thốngquản lý đối tượng phân tán, thông qua việc mở rộng các phương thức theo yêucầu các lệnh Khi Client đang chạy Web Browser gõ tên Server hay địa chỉ IPvào trường Address, browser sẽ định vị địa chỉ này trên mạng (mạng intranetnội bộ hay mạng internet tùy thuộc vào sự kết nối) và sự kết nối sẽ được thựchiện đến Web server đã chỉ định HTTP là giao thức lệnh và điều khiển xáclập việc truyền tin giữa Client và Server và chuyển lệnh qua lại giữa hai hệthống
Chẳng hạn, khi bạn gõ một địa chỉ Web URL vào trình duyệt Web, mộtlệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúngtrang Web được yêu cầu và kéo về mở trên trình duyệt Web
Hình 2.10 Giao thức HTTP
HTTP là giao thức truyền tải các file từ một Web server vào một trìnhduyệt Web để người dùng có thể xem một trang Web đang hiện diện trênInternet