1
MỞ ĐẦU
Với sự phát triển nhanh của mạng Internet, bảo mật thông tin trở lên vô cùng
cấp bách để có được những thông tin giá trị và tin cậy. Người quản lý nhận thấy việc
đầu tư cho an ninh không chỉ là lợi lớn mà còn là rất cần thiết. Các công ty nhận ra sự
cần thiết của việc tạo ra và tuân theo chính sách bảo mật thông tin, bởi vậy, người IT
chuyên nghiệp luôn luôn bị thách thức để bảo vệ mạng của họ với firewall và tạo mạng
riêng ảo VPN để cung cấp sự an toàn cho các giao dịch được mã hóa qua hạ tầng
Internet công cộng dễ bị tấn công.
Firewall đã trở thành một trong những công nghệ đầu tiên bảo vệ mạng và
chống lại truy nhập trái phép. Kế hoạch bảo mật yêu cầu sự kết hợp hài hòa của con
người, xử lý, và công nghệ để giảm rủi ro. Và firewall cũng là một công cụ bảo mật giá
trị để thực hiện nhiệm vụ này. Ngày nay, khi thiết kế và xây dựng mạng sử dụng
firewall là tất yếu cho nhiều mô hình ở giai đoạn cuối. Nhận ra điều này, nhiều công ty
bảo mật đã phát triển và tiếp tục cải thiện các sản phẩm firewall.
Với mục tiêu chính là tìm hiểu công nghệ phòng chống tấn công Sql injection và Dos,
giải thuật Boyer-Moore, Cusum để phát hiện và ngăn chặn tấn công. Đề tài đặt ra một
số mục tiêu, xác định phạm vi, bố cục của luận văn như sau:
Mục tiêu của đề tài
Xây dựng một firewall có khả năng phát hiện và giảm thiểu các tấn công Sql
Injection và Dos vào webserver. Đồng thời cung cấp một giao diện quản lý người dùng
trực quan thân thiện, giúp hệ thống vận hành tốt và không bị trục trặc.
Phạm vi nghiên cứu của đề tài
Phạm vi nghiên cứu của đề tài thuộc lĩnh vực bảo mật mạng máy tính, chỉ áp
dụng để phát hiện sql injection và Dos. Các khả năng có thể xử lý được:
- Phát hiện và giảm thiểu những cuộc tấn công sql injection đơn giản.
- Phát hiện một số kiểu tấn công DOS.
- Không ngăn chặn được triệt để tấn công DOS.
Kết quả dự kiến đạt đƣợc
3
CHƢƠNG 1. TỔNG QUAN VỀ AN NINH MẠNG
1.1 Hiện trạng về an ninh mạng
Trong những năm gần đây với sự phát triễn mạnh mẽ của internet đã đem lại cho
người dùng rất nhiều lợi ích. Ngoài lợi ích thì cũng có rất nhiều vấn đề về an ninh
mạng xảy ra trong năm 2011.
Theo thống kê từ hệ thống giám sát của BKAV thì có 64,2 triệu lượt máy tính tại
Việt Nam bị nhiễm virus là tổng kết năm 2011 từ Hệ thống giám sát virus của Bkav.
Trung bình một ngày đã có hơn 175 nghìn máy tính bị nhiễm virus.
Năm 2011, đã có 38.961 dòng virus xuất hiện mới, lây lan nhiều nhất là virus
W32.Sality.PE. Virus này đã lây nhiễm trên 4,2 triệu lượt máy tính.
Danh sách 15 virus lây lan nhiều nhất trong năm 2011:
Hình 1.1 Danh sách virus 2011
4
Cũng trong năm 2011, đã có 2.245 website của các cơ quan, doanh nghiệp tại Việt
Nam bị tấn công. Trung bình mỗi tháng có 187 website bị tấn công.
Mạng lƣới "nằm vùng" nguy hiểm W32.Sality.PE
Hơn 4,2 triệu lượt máy tính tại Việt Nam đã bị nhiễm virus siêu đa hình W32.Sality.PE
trong năm 2011, như vậy trung bình mỗi ngày có thêm 11.000 máy tính bị nhiễm loại
virus này. Virus Sality đã len lỏi vào mọi ngóc ngách trong các hệ thống mạng máy
tính tại Việt Nam. Trong thực tế, khi kiểm tra bất kỳ hệ thống nào, các chuyên gia của
Bkav hầu như đều phát hiện sự tồn tại của Sality. Không chỉ là virus lây lan nhiều nhất
hơn, đã xuất hiện nhiều cuộc tấn công âm thầm, cài đặt các virus gián điệp đánh cắp tài
liệu của các cơ quan quan trọng.
Các vụ tấn công xảy ra phần lớn có nguyên nhân từ nhận thức của lãnh đạo các cơ
quan, doanh nghiệp về tầm quan trọng của an ninh mạng, dẫn đến sự đầu tư dàn trải,
thiếu một giải pháp tổng thể cho an toàn an ninh hệ thống.
Đáng chú ý trong năm 2011 là sự việc hơn 85.000 máy tính tại Việt Nam bị cài virus
Ramnit để lấy cắp dữ liệu quan trọng. Điều này cho thấy các cuộc tấn công còn có thể
gây ảnh hưởng đến an ninh quốc gia. Không chỉ tại Việt Nam, hệ thống botnet này còn
được hacker điều khiển thông qua nhiều máy chủ đặt ở Mỹ, Nga, Đức và Trung Quốc
để lấy cắp thông tin trên toàn cầu. Đây là tình trạng phổ biến trên thế giới trong năm
2011.
1.2 Cách giải quyết vấn đề
6
Để chống lại các cuộc tấn công, nhất thiết cần áp dụng Hệ thống quản lý an ninh
thông tin ISO 27001. Quy trình ISO sẽ bắt buộc các website phải được đánh giá
độc lập về an ninh trước khi đưa vào vận hành, hạ tầng mạng phải được thiết kế
tổng thể ngay từ khi xây dựng. Ngoài ra, để bảo vệ các hệ thống website, chống
bị đánh cắp dữ liệu, việc áp dụng một giải pháp tổng thể phòng chống virus là
điều tối quan trọng. Khi thực hiện được tất cả các việc này, hệ thống mạng mới
có thể được đảm bảo ở mức cao nhất.
Sử dụng firewall phần cứng và phần mềm.
các nguồn thông tin nội bộ và hạn chế sự xâm nhập không mong muốn vào hệ thống.
Cũng có thể hiểu Firewall là một cơ chế (mechanism) để bảo vệ mạng tin tưởng
(Trusted network) khỏi các mạng không tin tưởng (Untrusted network).
Internet Firewall là một thiết bị (Phần cứng + Phần mềm) giữa mạng của một tổ
chức, một công ty, một quốc gia (Intranet) và Internet. Nó thực hiện vai trò bảo mật các
thông tin Intranet từ thế giới Internet bên ngoài.
2.2 Phân loại và đặc điểm Firewall
2.2.1. Firewall cứng
Là những firewall được tích hợp trên Router.
Hình 2.1: Minh họa Firewall cứng
Đặc điểm của Firewall cứng:
Không được linh hoạt như Firewall mềm: (Không thể thêm chức năng,
thêm quy tắc như firewall mềm)
Firewall cứng hoạt động ở tầng thấp hơn Firewall mềm (Tầng Network
và tầng Transport).
Firewall cứng không thể kiểm tra được nột dung của gói tin.
Ví dụ :Firewall cứng: NAT (Network Address Translate).
2.2.2. Firewall mềm
Là những Firewall được cài đặt trên Server.
8
Hình 2.2: Minh họa Firewall mềm
Đặc điểm của Firewall mềm:
Tính linh hoạt cao: Có thể thêm, bớt các quy tắc, các chức năng.
Firewall mềm hoạt động ở tầng cao hơn Firewall cứng (tầng ứng dụng).
Firewal mềm có thể kiểm tra được nội dung của gói tin (thông qua các từ khóa).
Ví dụ về Firewall mềm: Zone Alarm, Norton Firewall, Internet security acceleration …
2.2.3. Vì sao cần Firewall
2.2.6. Những hạn chế của firewall
Firewall không đủ thông minh như con người để có thể đọc hiểu từng loại thông
tin và phân tích nội dung tốt hay xấu của nó. Firewall chỉ có thể ngăn chặn sự xâm
nhập của những nguồn thông tin không mong muốn nhưng phải xác định rõ các thông
số địa chỉ.
Firewall không thể ngăn chặn một cuộc tấn công nếu cuộc tấn công này không
"đi qua" nó. Một cách cụ thể, firewall không thể chống lại một cuộc tấn công từ một
đường dial-up, hoặc sự dò rỉ thông tin do dữ liệu bị sao chép bất hợp pháp lên đĩa
mềm.
Firewall cũng không thể chống lại các cuộc tấn công bằng dữ liệu (data-driven
attack). Khi có một số chương trình được chuyển theo thư điện tử, vượt qua firewall
vào trong mạng được bảo vệ và bắt đầu hoạt động ở đây.
Một ví dụ là các virus máy tính. Firewall không thể làm nhiệm vụ rà quét virus
trên các dữ liệu được chuyển qua nó, do tốc độ làm việc, sự xuất hiện liên tục của các
virus mới và do có rất nhiều cách để mã hóa dữ liệu, thoát khỏi khả năng kiểm soát của
firewall.
Tuy nhiên, Firewall vẫn là giải pháp hữu hiệu được áp dụng rộng rãi.
2.2.7. Các thành phần của Firewall và nguyên lý hoạt động
10
Firewall chuẩn bao gồm một hay nhiều các thành phần sau đây:
Bộ lọc packet (packet-filtering router).
Cổng ứng dụng (application-level gateway hay proxy server).
Cổng mạch (circuite level gateway).
2.2.7.1. Bộ lọc gói (Packet Filtering)
a. Nguyên lý hoạt động.
Khi nói đến việc lưu thông dữ liệu giữa các mạng với nhau thông qua Firewall
thì điều đó có nghĩa rằng Firewall hoạt động chặt chẽ với giao thức TCP/IP. Vì giao
thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các ứng dụng trên
mạng, hay nói chính xác hơn là các dịch vụ chạy trên các giao thức (Telnet, SMTP,
người sử dụng và các ứng dụng, vì vậy nó không yêu cầu sự huấn luyện đặc biệt nào
cả.
Hạn chế
Việc định nghĩa các chế độ lọc packet là một việc khá phức tạp; đòi hỏi ngời
quản trị mạng cần có hiểu biết chi tiết về các dịch vụ Internet, các dạng packet header,
và các giá trị cụ thể có thể nhận trên mỗi trường. Khi đòi hỏi về sự lọc càng lớn, các
luật lệ về lọc càng trở nên dài và phức tạp, rất khó để quản lý và điều khiển. Do làm
việc dựa trên header của các packet, rõ ràng là bộ lọc packet không kiểm soát được nội
dung thông tin của packet. Các packet chuyển qua vẫn có thể mang theo những hành
động với ý đồ ăn cắp thông tin hay phá hoại của kẻ xấu.
2.2.7.2. Cổng ứng dụng (Application-Level Gateway)
a.Nguyên lý hoạt động
Đây là một loại Firewall được thiết kế để tăng cường chức năng kiểm soát các
loại dịch vụ, giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động
của nó dựa trên cách thức gọi là Proxy service. Proxy service là các bộ code đặc biệt
cài đặt trên gateway cho từng ứng dụng. Nếu người quản trị mạng không cài đặt proxy
code cho một ứng dụng nào đó, dịch vụ tương ứng sẽ không được cung cấp và do đó
không thể chuyển thông tin qua firewall. Ngoài ra, proxy code có thể được định cấu
hình để hỗ trợ chỉ một số đặc điểm trong ứng dụng mà người quản trị mạng cho là chấp
nhận được trong khi từ chối những đặc điểm khác.
12
Một cổng ứng dụng thường được coi như là một pháo đài (bastion host), bởi vì
nó được thiết kế đặt biệt để chống lại sự tấn công từ bên ngoài. Những biện pháp đảm
bảo an ninh của một bastion host là bastion host luôn chạy các version an toàn (secure
version) của các phần mềm hệ thống (Operating system). Các version an toàn này được
thiết kế chuyên cho mục đích chống lại sự tấn công vào Operating System, cũng như là
đảm bảo sự tích hợp firewall. Chỉ những dịch vụ mà người quản trị mạng cho là cần
thiết mới được cài đặt trên bastion host, đơn giản chỉ vì nếu một dịch vụ không được
cài đặt, nó không thể bị tấn công. Thông thường, chỉ một số giới hạn các ứng dụng cho
dụng. Cổng vòng đơn giản chỉ chuyển tiếp (relay) các kết nối TCP mà không thực hiện
bất kỳ một hành động xử lý hay lọc packet nào.
Hình dưới đây minh hoạ một hành động sử dụng nối telnet qua cổng vòng. Cổng
vòng đơn giản chuyển tiếp kết nối telnet qua firewall mà không thực hiện một sự kiểm
tra, lọc hay điều khiển các thủ tục Telnet nào.Cổng vòng làm việc như một sợi dây,sao
chép các byte giữa kết nối bên trong (inside connection) và các kết nối bên ngoài
(outside connection). Tuy nhiên, vì sự kết nối này xuất hiện từ hệ thống firewall, nó
che dấu thông tin về mạng nội bộ.
Hình 2.4: Minh họa nối Telnet qua cổng vòng đơn giản
Cổng vòng thường được sử dụng cho những kết nối ra ngoài, nơi mà các quản
trị mạng thật sự tin tưởng những người dùng bên trong. Ưu điểm lớn nhất là một
bastion host có thể được cấu hình như là một hỗn hợp cung cấp. Cổng ứng dụng cho
những kết nối đến, và cổng vòng cho các kết nối đi. Điều này làm cho hệ thống bức
tường lửa dễ dàng sử dụng cho những người trong mạng nội bộ muốn trực tiếp truy
nhập tới các dịch vụ Internet, trong khi vẫn cung cấp chức năng bức tường lửa để bảo
vệ mạng nội bộ từ những sự tấn công bên ngoài.
out
out
out
in
in
in
outside host
Inside host
Circuit-level Gateway
14
2.2.8. Kiến trúc cơ bản của Firewall
2.2.8.1. Dual homed host
15
Không đáp ứng được những yêu cầu bảo mật ngày càng phức tạp, cũng như
những hệ phần mềm mới được tung ra thị trường.
Không có khả năng chống đỡ những cuộc tấn công nhằm vào chính bản thân nó,
và khi Dual–homed Host đó bị đột nhập, nó sẽ trở thành đầu cầu lý tưởng để tấn
công vào mạng nội bộ.
Đánh giá về kiến trúc Dual–homed Host:
Để cung cấp dịch vụ cho những người sử dụng internal network có một số giải
pháp như sau:
Kết hợp với các Proxy Server cung cấp những Proxy Service
Cấp các account cho user trên máy dual–homed host này và khi mà người sử
dụng muốn sử dụng dịch vụ từ Internet hay dịch vụ từ external network thì họ
phải logging in vào máy này.
Nếu dùng phương pháp cấp account cho user trên máy dual– homed host thì
user không thích sử dụng dịch vụ phiền phức như vậy, vì mỗi lần họ muốn sử dụng
dịch vụ thì phải loging in vào máy khác (dual homed host) khác với máy của họ đây là
vấn đề rất là không trong suốt với người sử dụng.
Nếu dùng Proxy Server : Khó có thể cung cấp được nhiều dịch vụ cho người sử
dụng vì phần mềm Proxy Server và Proxy Client không phải loại dịch vụ nào cũng có
sẵn. Hoặc khi số dịch vụ cung cấp nhiều thì khả năng đáp ứng của hệ thống có thể
giảm xuống vì tất cả các Proxy Server đều đặt trên cùng một máy.
Một khuyết điểm cơ bản của hai mô hình trên nữa là: khi mà máy dual –homed
host nói chung cũng như các Proxy Server bị đột nhập vào. Người tấn công (attacker)
đột nhập vào được qua nó thì lưu thông bên trong internal network bị attacker này thấy
hết điều này thì hết sức nguy hiểm . Trong các hệ thống mạng dùng Ethernet hoặc
Token Ring thì dữ liệu lưu thông trong hệ thống có thể bị bất kỳ máy nào nối vào mạng
đánh cắp dữ liệu cho nên kiến trúc trên chỉ thích hợp với một số mạng nhỏ .
2.2.8.2. Screened Host
Kiến trúc này kết hợp 2 kỹ thuật đó là Packet Filtering và Proxy Services.
Screened Host: Đã tách chức năng lọc các gói IP và các Proxy Server ở hai máy
riêng biệt. Packet Filtering chỉ giữ chức năng lọc gói nên có thể kiểm soát, cũng
như khó xảy ra lỗi (tuân thủ qui tắc ít chức năng). Proxy Servers được đặt ở máy
khác nên khả năng phục vụ (tốc độ đáp ứng) cũng cao.
Nhƣợc điểm
Cũng tương tự như kiến trúc Dual–Homed Host khi mà Packet Filtering system
cũng như Bastion Host chứa các Proxy Server bị đột nhập vào (người tấn công
đột nhập được qua các hàng rào này) thì lưu thông của internal network bị người
tấn công thấy.
Từ khuyết điểm chính của 2 kiến trúc trên ta có kiến trúc thứ 3 sau đây khắc phục
được phần nào khuyết điểm trên .
2.2.8.3. Screened Subnet
INTERNET
Internal
Network
Bastion Host
Firewall
Exterior Router
Interior Router
Perimeter Network
Deny
Permit
Hình 2.7: Sơ đồ kiến trúc Screened Subnet Host
Với kiến trúc này, hệ thống này bao gồm hai Packet–Filtering Router và một
Bastion Host (hình 2.7). Kiến trúc này có độ an toàn cao nhất vì nó cung cấp cả mức
bảo mật Network và Application trong khi định nghĩa một mạng perimeter network.
Mạng trung gian (DMZ) đóng vai trò như một mạng nhỏ, cô lập đặt giữa Internet và
18
19
Sử dụng 2 Screening Router : Exterior Router và Interior Router.
Áp dụng qui tắc dư thừa có thể bổ sung thêm nhiều mạng trung gian (DMZ hay
perimeter network) càng tăng khả năng bảo vệ càng cao.
Ngoài ra, còn có những kiến trúc biến thể khác như: sử dụng nhiều Bastion
Host, ghép chung Router trong và Router ngoài, ghép chung Bastion Host và Router
ngoài.
2.2.8.4. Demilitarized Zone (DMZ)
DMZ (khu vực phi quân sự) là một vùng mạng trung lập giữa mạng nội bộ và
mạng internet, là nơi chứa các thông tin cho phép người dùng từ internet truy xuất vào
và chấp nhận các rủi ro tấn công từ internet. Hệ thống firewall này có độ an toàn cao
nhất vì nó cung cấp cả mức bảo mật network và application.
Hình 2.8: Vùng DMZ được tách riêng với mạng nội bộ
Ƣu điểm:
Kẻ tấn công cần phá vỡ ba tầng bảo vệ: router ngoài, bastion host và router
trong.
Router ngoài chỉ quảng cáo DMZ network tới Internet, hệ thống mạng nội bộ là
không thể nhìn thấy (invisible). Chỉ có một số hệ thống đã được chọn ra trên
DMZ là được biết đến bởi Internet qua routing table và DNS information
exchange (Domain Name Server).
20
Router trong chỉ quảng cáo DMZ network tới mạng nội bộ, các hệ thống trong
mạng nội bộ không thể truy nhập trực tiếp vào Internet. Điều nay đảm bảo rằng
những user bên trong bắt buộc phải truy nhập Internet qua dịch vụ proxy.
2.3 Khái niệm về tấn công SQL Injection
SQL Injection là một kỹ thuật cho phép những kẻ tấn công thi hành các câu lệnh
thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho
phép hay từ chối thực hiện tiếp.
Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị
form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng. Ví
dụ:
Trang HTML.
Trang Asp.
22 Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất cứ một lỗ
hổng về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và
mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một
lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được
dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép những kẻ tấn công
có thể điều khiển câu truy vấn sẽ được thực hiện.
Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password
của trang login.htm là: ' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là.
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''.
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã
tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập
hợp lệ.
2.4.2 Dạng tấn công sử dụng câu lệnh SELECT.
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn
24
Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ
như: ' + (SELECT TOP 1 FieldName FROM TableName) + '. Lúc này câu truy vấn
sẽ là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName
FROM TableName) + ' ', 'abc', 'def'). Khi đó, lúc thực hiện lệnh xem thông tin, xem
như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName
FROM TableName.
2.4.4 Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi
với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ;EXEC
xp_cmdshell „cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên
ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau
cmd.exe.
2.5 Các phƣơng thức ngăn chặn tấn công SQL Injection
Kiểm soát chặt chẽ dữ liệu nhập vào:
Để phòng tránh các nguy cơ có thể xảy ra, 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,Request.ServerVariables). Ví dụ,
có thể giới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm EscapeQuotes để
thay thế các dấu nháy đơn bằng hai dấu nháy đơn như:
25