Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Mục Lục
Mục Lục 1
Internet 4
Máy chủ và máy khách 5
Địa chỉ IP (IPaddress) 6
Các máy chủ tên miền (Name servers) 7
Cổng (Ports) 8
Giaothức (Protocols) 9
II. Các phương pháp tấn công webiste 11
Chương 2: Modsecurity 20
I. Các khả năng của mod_security 21
II. Cài đặt 23
III. Cấu hình cơ bản 24
IV. Rules 25
V. Logging 31
VI. Xây dựng chính sách trên Modsecurity chống lại một số tấn công 33
VII. Tài liệu tham khảo 36
Chương 1: Hoạt động của ứng dụng web và cá kiểu tấn công web
I. HTTP và Web Server
1. HTTP là gì ?
HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải
siêu văn bản). Nó là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác
định cách các thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video,
1
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
và các file multimedia khác) được định dạng và truyền tải ra sao, và những
hành động nào mà các Web server (máy chủ Web) và các trình duyệt Web
(browser) phải làm để đáp ứng các lệnh rất đa dạng. Chẳng hạn, khi bạn gõ
một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ được gửi tới Web
server để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu và kéo về
mở trên trình duyệt Web. Nói nôm na hơn, HTTP là giao thức truyền tải các file
từ một Web server vào một trình duyệt Web để người dùng có thể xem một
trang Web đang hiện diện trên Internet.HTTP là một giao thức ứng dụng của
bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).
Có một tiêu chuẩn chính khác cũng điều khiển cách thức World Wide Web
làm việc là HTML (HyperText Markup Language, ngôn ngữ đánh dấu siêu văn
bản), có chức năng quản lý cách thức mà các trang Web được định dạng và
hiển thị.
người ta gọi HTTP là một giao thức “phi trạng thái” (stateless) bởi vì mỗi
lệnh đều được thực thi một cách độc lập, lệnh sau không biết bất cứ điều gì về
các lệnh đã đến trước mình. Đây chính là một hạn chế, khiếm khuyết của HTTP.
Nó là nguyên nhân chính của tình trạng rất khó thực thi các trang Web có khả
năng phản ứng thông minh đối với lệnh mà người dùng nạp vào. Và sự hạn chế
này đang được các nhà phát triển khắc phục trong các công nghệ mới như
ActiveX, Java, JavaScript và cookies.
Phiên bản mới nhất của HTTP là 1.1. So với phiên bản nguyên thủy (HTTP
1.0), phiên bản mới này truyền tải các trang Web nhanh hơn và giảm tình trạng
tắc nghẽn giao thông Web.
2. Web Server
Các tiến trình cơ bản
Khi bạn ngồi trước máy tính và đang duyệt web trên Internet. Có một
người bạn của bạn gọi điện thoại cho bạn và nói “Tôi vừa đọc một bài viết rất
2
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
hay! Bạn hãy đánh vào địa chỉ sau và xem thử nhé, địa chỉ trang web đó là
“. Khi bạn gõ vào địa chỉ
trang web đó trên trình duyệt web và ấn Enter, và thật là kỳ diệu, trang web đó
đã hiển thị trên màn hình của bạn.
Vậy, làm thế nào mà trang web có thể hiện thị được trên màn hình của
bạn, cơ chế hoạt động của máy chủ Web như thế nào?. Chúng tôi sẽ giúp bạn
hiểu rõ hơn bằng bài viết dưới đây.
Các bước cơ bản trong tiến trình truyền tải trang web đến màn hình của
bạn được thể hiện theo mô hình sau:
Theo mô hình trên, trình duyệt web thực hiện một kết nối tới máy chủ
web, yêu cầu một trang web và nhận lại nó. Sau đây, là thứ tự từng bước cơ
bản xảy đến đằng sau màn hình của bạn:
• Trình duyệt web tách địa chỉ website làm 3 phần:
1. Phần giao thức: (“http”)
2. Máy chủ tên miền: (www.howstuffworks.com)
3. Tên tệp: (“web-server.htm”)
• Trình duyệt liên hệ với máy chủ tên miền để chuyển đổi tên miền
"www.howstuffworks.com" ra địa chỉ IP (Internet Protcol).
• Sau đó, trình duyệt sẽ gửi tiếp một kết nối tới máy chủ có địa chỉ IP
tương ứng qua cổng 80.
3
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
• Dựa trên giao thức HTTP, trình duyệt gửi yêu cầu GET đến máy chủ, yêu
cầu tệp " (Bạn chú ý,
cookies cũng sẽ được gửi kèm theo từ trình duyệt web đến máy chủ)
• Tiếp đến, máy chủ sẽ gửi đoạn text dạng HTML đến trình duyệt web của
bạn. (cookies cũng được gửi kèm theo từ máy chủ tới trình duyệt web, cookies
được ghi trên đầu trang của mỗi trang web)
• Trình duyệt web đọc các thẻ HTML, định dạng trang web và kết xuất ra
màn hình của bạn.
Nếu bạn chưa từng bao giờ khám phá tiến trình trên, bạn sẽ gặp phải rất
nhiều thuật ngữ mới. Để hiểu hiểu một cách chi tiết, bạn cần biết thêm về các
khái niệm như địa chỉ internet (địa chỉ IP), các cổng (ports), các giao thức
(protocol)… Đoạn viết sau sẽ giúp bạn hiểu rõ hơn.
Internet
Internet là gì? Internet là tập hợp khổng lồ của hàng triệu máy tính,
được nối với nhau trên một mạng máy tính. Mạng máy tính này cho phép tất
cả các máy tính trao đổi thông tin cho nhau. Một máy tính đặt ở nhà có thể
tham gia vào mạng Internet thông qua đường điện thoại, đường thuê bao số
hoặc cáp modem kết nối đến nhà cung cấp dịch vụ Internet (Internet service
provider - ISP). Máy tính trong các công ty, trường học thường có 01 card
mạng (Network interface Card - NIC) để kết nối trực tiếp vào mạng nội bộ
(Local Area Network) của công ty hoặc trường học. Mạng nội bộ của công ty,
trường học sẽ được nối tới nhà cung cấp dịch vụ Internet ISP bằng một đường
điện thoại có tốc độ cao, ví dụ như đường T1. Mỗi đường T1 có thể đạt tốc độ
1.5 triệu bit trên 1 giây, trong khi một kết nối điện thoại thông thường chỉ đạt
30.000 đến 50.000 bít trên giây.Những nhà cung cấp dịch vụ ISP sẽ nối tới nhà
cung cấp dịch vụ Internet lớn hơn…Đối với các đường kết nối chính trong một
quốc gia hay khu vực, nhà cung cấp dịch vụ Internet thường sử dụng sợi cáp
4
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
quang. Hệ thống đường cáp chính trên toàn thế giới được kết nối bằng các loại
đường sợi cáp quang, cáp đi ngầm dưới biển hoặc bằng hệ thống vệ tinh
(satellite). Bằng cách như vậy, thì mỗi một máy tính trên Internet đều được kết
nối với nhau trên Internet.
Máy chủ và máy khách
Nhìn chung, máy tính trên Internet có thể được chia làm loại: Máy chủ
và máy khách. Máy chủ là loại máy tính cung cấp dịch vụ (máy chủ dịch vụ web,
máy chủ dịch vụ thư điện tử) đến các máy khác. Máy khách là những máy tính
được sử dụng để kết nối tới các dịch vụ trên các máy chủ. Khi bạn kết nối tới
Yahoo! tại địa chỉ www.yahoo.com để xem trang web, trong trường hợp này,
Yahoo! đang sử dụng một máy tính, được gọi là máy chủ (cũng có thể là một
nhóm các máy chủ có cấu hình lớn) được kết nối trên Internet, nhằm cung cấp
dịch vụ cho bạn. Ngược lại, máy tính của bạn có thể không cung cấp dịch vụ
nào trên Internet để người khác truy cập, do đó nó chỉ được coi là máy tính sử
dụng thông thường, hay còn gọi là máy khách.
5
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Một máy chủ có thể cung cấp một hay nhiều dịch vụ trên Internet. Ví dụ,
một máy chủ thì có thể có nhiều phần mềm chạy trên nó, cho phép nó hoạt
động như là máy chủ web, máy chủ email hoặc máy chủ FTP. Các máy trạm kết
nối tới máy chủ thường với “mục đĩch” cụ thể, nó hướng yêu cầu của mình tới
một máy chủ có ứng dụng phù hợp với “mục đích” đó, ví dụ nếu bạn đang chạy
chương trình duyệt web trên máy tính của bạn, có nghĩa máy tính của bạn đã
kết nối tới máy chủ dịch vụ web. Tương tự, chạy ứng dụng Telnet trên máy tính
của bạn sẽ kết nối tới máy chủ dịch vụ Telnet, chạy ứng dụng email sẽ kết nối
tới máy chủ dịch vụ email…
Địa chỉ IP (IPaddress)
Để tất cả máy tính trên Internet có thể liên hệ với nhau, mỗi máy tính
được cung cấp một địa chỉ duy nhất trên Internet, gọi là IP. Địa chỉ IP là viết tắt
của từ Internet Protocol. IP là một số 32 bít và được thể hiện dưới dạng con số
thập phân gồm có 4 “octet”, ví dụ 216.27.61.137. 4 con số trong một địa chỉ
IP được gọi là các “octet”, vì mỗi số có thể có giá trị từ 0 đến 255, có nghĩa mỗi
“octet” có đến 28 giá trị khác nhau.
Địa chỉ IP là duy nhất đối với mỗi máy tính khi tham gia Internet .Đối với
máy chủ, địa chỉ IP là cố định. Một máy tính, khi được kết nối Internet bằng
đường line điện thoại thông qua modem, thì được cung cấp địa chỉ IP bởi nhà
cung cấp dịch vụ Internet (ISP). Địa chỉ IP này là duy nhất cho mỗi lần kết nối,
cũng đồng nghĩa nó sẽ thay đổi địa chỉ IP khác khi kết nối lần tiếp theo. Theo
cách này, thay vi phải cung cấp địa chỉ IP cho từng khách hàng truy cập, nhà
cung cấp dịch vụ Internet ISP chỉ cần một địa chỉ IP cho một modem.
Nếu bạn làm việc trên hệ điều hành windows, bạn có thể xem rất nhiều
thông tin liên quan Internet được ghi vào cấu hình máy tính của bạn, bao gồm
địa chỉ IP hiện tại, tên máy bằng cách sử dụng lệnh WINIPCFG.EXE
(IPCONFIG.EXE trên Windows 2000/XP). Trên máy Unix,để hiển thị địa chỉ IP,
6
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
tên của máy tính, bạn chỉ gõ dòng lệnh nslookup tại dấu nhắc.
Khi máy tính được kết nối Internet, thông số địa chỉ IP là quan trọng nhất giúp
bạn kết nối tới máy chủ. Ví dụ, trên trình duyệt web, bạn có thể gõ địa chỉ kết
nối http://209.116.69.66, lúc này, bạn đang kết nối kết máy chủ có địa chỉ IP
là 209.116.69.66 và máy chủ đó có dịch vụ Web server cho website
HowStuffWorks.
Các máy chủ tên miền (Name servers)
Thông thường, người dùng Internet không thể nhớ hết các con số trên
địa chỉ IP, và một lý do nào đó địa chỉ IP cũng có thể thay đổi. Vì vậy, tất cả các
máy chủ trên Internet đều phải có một tên sao cho dễ đọc, thường được gọi là
“tên miền” – Domain names. Ví dụ, tên miền www.howstuffworks.com là tên
cố định, dễ đọc hơn so với việc phải nhớ địa chỉ IP 209.116.69.66.
Tên miền www.howstuffworks.com gồm có 3 phần:
1. Tên máy ("www")
2. Tên miền ("howstuffworks")
3. Tên miền cấp một ("com")
Tên miền được quản lý bởi một công ty, tên là VeriSign. VeriSign tạo ra các tên
miền “cấp một” và đảm bảo tất cả tên miền khác trong tên miền cấp một là
duy nhất. VeriSign cũng duy trì các thông tin liên quan đến mỗi địa chỉ tên
miền trên cơ sở dữ liệu “whois”.
Tên máy được tạo bởi công ty cung cấp dịch vụ lưu trữ tên miền. “www” là
tên máy phổ biến, nhưng nhiều nơi nó có thể được thay thế bởi tên khác, ví dụ
tên máy thể hiện một khu vực địa lý, ví dụ như “encarta.msn.com”, tên miền
của Microsoft's Encarta encyclopedia, tên máy "encarta" được thay thế cho
www.
Tập hợp các máy chủ tên miền (domain name servers - DNS) ánh xạ các tên
miền dễ đọc tới các địa chỉ IP tương ứng. Những máy chủ này lưu trữ cơ sở dữ
7
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
liệu tên miền ánh xạ đến địa chỉ IP, và chúng được bố trí nhiều nơi trên mạng
Internet. Các công ty, các nhà cung cấp dịch vụ Internet hoặc các trường đại
học đều duy trì máy chủ tên miền cỡ nhỏ để ánh xạ các tên máy tới các địa chỉ
IP tương ứng. Tại VeriSign, cũng có các máy chủ tên miền trung tâm sử dụng
dữ liệu được cung cấp bởi VeriSign để ánh xạ các tên miền đến địa chỉ IP.
Nếu bạn gõ địa chỉ
vào trình duyệt web, trình duyệt sẽ tách tên miền www.howstuffworks.com và
gửi nó tới máy chủ tên miền, sau đó máy chủ tên miền sẽ gửi ngược lại địa chỉ
IP đúng với tên miền www.howstuffworks.com.
Trên máy chủ UNIX, bạn có thể biết các thông tin tương tự bằng cách sử
dụng lệnh nslookup và đơn giản chỉ cần gõ vào một cái tên
www.howstuffworks.com trên dòng lệnh, câu lệnh sẽ tìm kiếm tên máy chủ và
chuyển địa chỉ IP tương ứng cho bạn.
Như vậy, Internet được tạo thành bởi hàng triệu máy tính, mỗi máy sẽ có
địa chỉ IP duy nhất. Trong số đó, rất nhiều các máy tính là các máy chủ cung
cấp dịch vụ cho các máy khác trên Internet, ví dụ như máy chủ e-mail, máy chủ
web, máy chủ FTP, máy chủ Gopher, máy chủ Telnet…
Cổng (Ports)
Bất kỳ máy chủ khi cung cấp các dịch vụ trên Internet, đều sử dụng cổng
được đánh số. Ví dụ, máy chủ chạy dịch vụ web và dịch vụ FTP, dịch vụ WEB
thường dùng cổng 80, dịch vụ FTP dùng cổng 21. Các máy khách khi kết nối tới
một dịch vụ, thường chỉ rõ địa chỉ IP và kết nối qua một cổng cụ thể.
Trên Internet, mỗi dịch vụ đều có sẵn cổng tương ứng. dưới đây là danh sách
các dịch cụ và các cổng tương ứng:
• Echo : 7
• daytime : 13
• qotd : 17 (Quote of the Day)
8
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
• ftp : 21
• telnet : 23
• smtp : 25 (Simple Mail Transfer, meaning e-mail)
• time : 37
• nameserver : 42
• nicname : 43 (Who Is)
• gopher : 70
• finger : 79
• www : 80
Khi máy chủ chấp nhận các kết nối từ bên ngoài qua một cổng nào đó và
nếu bức tường lửa không chặn cổng đó, bạn có thể kết nối cổng đó từ bất kỳ
nơi nào trên Internet và sử dụng dịch vụ tương ứng. Tuy nhiên, không bắt
buộc phải đặt chính xác số cổng với dịch vụ tương ứng, ví dụ với dịch vụ web
thường là cổng 80. Nhưng nếu bạn cài đặt máy chủ và phần mềm Web server
trên máy chủ đó, bạn có thể đặt dịch vụ web trên một cổng bất kỳ không sử
dụng, ví dụ cổng 918.
Sau đó, nếu máy chủ của bạn được đặt tên là xxx.yyy.com, một người duyệt
web nào đó trên Internet sẽ kết nối tới máy chủ của bạn với địa chỉ là
:918 “:918” thể hiện số cổng, và luôn đi kèm với địa chỉ kết
nối tới máy chủ của bạn. Nếu không có số cổng, trình duyệt web sẽ hiểu máy
chủ cung cấp dịch vụ web qua cổng 80.
Giaothức (Protocols)
Khi máy khách kết nối tới một dịch vụ trên một cổng nào đó, nó thường
truy cập dịch vụ thông qua một giao thức cụ thể. Giao thức là sự định nghĩa
sẵn cách thức mà đối tượng như phần mềm máy tính, trình duyệt web dùng để
“giao tiếp” với các dịch vụ mà chúng muốn sử dụng. Giao thức thường là các
9
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
đoạn text và đơn giản là mô tả cách thức máy khách và máy chủ “đàm thoại
với nhau”
Giao thức đơn giản nhất là daytime protocol. Nếu bạn kết nối tới cổng 13
trên máy chủ có dịch vụ daytime, máy chủ sẽ gửi tới máy tính của bạn thông
tin ngày tháng và sau đó tự động ngắt kết nối.
Trên hệ thống UNIX hỗ trợ dịch vụ trên, nếu bạn muốn thử, bạn có thể kết
nối bằng ứng dụng Telnet. Ví dụ
%telnet web67.ntx.net 13
Trying 216.27.61.137
Connected to web67.ntx.net.
Escape character is '^]'.
Sun Oct 25 08:34:06 1998
Connection closed by foreign host.
Trên hệ thống máy chủ Windows, bạn có thể truy cập dịch vụ trên bằng
cách gõ "telnet web67.ntx.net 13" tại dấu nhắc của MSDOS.
Trong ví dụ này, “web67.ntx.net” là tên máy chủ UNIX, và số 13 là số cổng
cho dịch vụ daytime. Ứng dụng Telnet kết nối tới cổng 13, sau đó máy chủ gửi
trả lại thông tin ngày tháng và ngắt kết nối.
Hầu hết các giao thức khác đều phức tạp hơn so với giao thức Daytime.
Danh mục các giao thức được nêu trong tài liệu Request for Comment (RFC) tại
website />Mỗi máy chủ Web trên Internet đều phải hỗ trợ giao thức HTTP. Hình thức
cơ bản nhất của giao thức này được biểu diễn qua câu lệnh: GET. Nếu bạn kết
nối tới máy chủ hỗ trợ giao thức HTTP và yêu cầu “GET tên tệp”, máy chủ sẽ trả
lời bạn bằng việc gửi nội dung của tệp và sau đó ngắt kết nối. Ví dụ như sau:
%telnet www.howstuffworks.com 80
Trying 216.27.61.137
10
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Connected to howstuffworks.com.
Escape character is '^]'.
GET /><html>
<head>
<title>Welcome to How Stuff Works</title>
</body>
</html>
Connection closed by foreign host.
Trong giao thức HTTP nguyên bản, bạn sẽ cung cấp đầy đủ đường dẫn của
tên tệp, ví dụ như “/” hoặc “/tên tệp.htm”. Sau đó, giao thức sẽ tự điều chỉnh
để có thể đưa ra một địa chỉ URL đầy đủ. Điều này cho phép các công ty kinh
doanh dịch vụ lưu trữ có thể lưu trữ nhiều virtual domains (tên miền ảo), có
nghĩa nhiều tên miền cùng tồn tại trên một máy chủ và sử dụng cùng một địa
chỉ IP duy nhất. Ví dụ, trên máy chủ của HowStuffWorks, địa chỉ IP là
209.116.69.66, nhưng nó có hàng trăm tên miền khác nhau cùng tồn tại.
II. Các phương pháp tấn công webiste.
1. Tấn công từ chối dịch vụ
Tấn công từ chối dịch vụ là gì? : Tấn công bằng từ chối dịch vụ 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
khả năng truy cập và sử dụng vào một dịch vụ nào đó. Nó bao gồm làm tràn
ngập mạng, mất kết nối với dịch vụ… mà mục đích cuối cùng là máy chủ
(Server) không thể đáp ứng được các yêu cầu sử dụng dịch vụ từ các máy trạm
(Client).
11
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
DoS có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm
chí cả một hệ thống mạng rất lớn. Về bản chất thực sự của DoS, 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ớ… và làm
mất khả năng xử lý các yêu cầu dịch vụ từ các client khác.
Tùy theo phương thức thực hiện mà nó được biết dưới nhiều tên gọi khác
nhau. Khởi thủy là lợi dụng sự yếu kém của giao thức TCP (Transmision Control
Protocol) để thực hiện tấn công từ chối dịch vụ cổ điển DoS (Denial of Service),
sau đó là tấn công từ chối dịch vụ phân tán DdoS (Distributed Denial of Service)
và mới nhất là tấn công từ chối dịch vụ theo phương pháp phản xạ DRDoS
(Distributed Reflection Denial of Service). Theo thời gian, xuất hiện nhiều biến
thể tấn công DoS như: Broadcast Storms, SYN, Finger, Ping, Flooding,… với mục
tiêu nhằm chiếm dụng các tài nguyên của hệ thống (máy chủ) như: Bandwidth,
Kernel Table, Swap Space, Cache, Hardisk, RAM, CPU,… làm hoạt động của hệ
thống bị quá tải dẫn đến không thể đáp ứng được các yêu cầu (request) hợp lệ
nữa. Tấn công DoS nói chung không nguy hiểm như các kiểu tấn công khác ở
chỗ nó không cho phép kẻ tấn công chiếm quyền truy cập hệ thống hay có
quyền thay đổi hệ thống. Tuy nhiên, nếu một máy chủ tồn tại mà không thể
cung cấp thông tin, dịch vụ cho người sử dụng, sự tồn tại là không có ý nghĩa
nên thiệt hại do các cuộc tấn công DoS do máy chủ bị đinh trệ hoạt động là vô
cùng lớn, đặc biệt là các hệ thống phụ vụ các giao dịch điện tử. Đối với các hệ
thống máy chủ được bảo mật tốt, rất khó để thâm nhập vào thì tấn công từ
chối dịch vụ được các hacker sử dụng như là “cú chót” để triệt hạ hệ thống
đó.
a. Các cách thức tấn công từ chối dịch vụ:
• Tấn công từ chối dịch vụ cổ điển DoS (Denial of Service):
Là phương thức xuất hiện đầu tiên, giản đơn nhất trong kiểu tấn công từ chối
dịch vụ.
12
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
• Tấn công từ chối dịch vụ kiểu phân tán – DdoS:
Xuất hiện vào mùa thu 1999, so với tấn công DoS cổ điển, sức mạnh của DDoS
cao hơn gấp nhiều lần. Hầu hết các cuộc tấn công DDoS nhằm vào việc chiếm
dụng băng thông (bandwidth) gây nghẽn mạch hệ thống dẫn đến hệ thống
ngưng hoạt động. Để thực hiện thì kẻ tấn công tìm cách chiếm dụng và điều
khiển nhiều máy tính/mạng máy tính trung gian (đóng vai trò zombie) từ nhiều
nơi để đồng loạt gửi ào ạt các gói tin (packet) với số lượng rất lớn nhằm chiếm
dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu xác định nào
đó.
13
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
• Tấn công từ chối dịch vụ phản xạ nhiều vùng RDDoS:
Về cơ bản, DRDoS là sự phối hợp giữa hai kiểu DoS và DDoS. Nó có kiểu tấn
công SYN với một máy tính đơn, vừa có sự kết hợp giữa nhiều máy tính để
chiếm dụng băng thông như kiểu DDoS. Kẻ tấn công thực hiện bằng cách giả
mạo địa chỉ của server mục tiêu rồi gửi yêu cầu SYN đến các server lớn như
Yahoo, Micorosoft,… chẳng hạn để các server này gửi các gói tin SYN/ACK đến
server mục tiêu. Các server lớn, đường truyền mạnh đó đa vô tình đóng vai trò
zoombies cho kẻ tấn công như trong DdoS
14
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
2. Tấn công Phishing:
Tấn công Phishing là gì?
Nói môt cách đơn giản, phising là một thủ đoạn đánh cắp thông tin cá
nhân của người dùng như: tên đăng nhập, mật khẩu, thông tin thẻ tín dụng và
một số thông tin nhạy cảm khác có giá trị đối với chúng.
Hacker thường đánh cắp thông tin người dùng bằng cách giả danh để
giao tiếp với họ. Ví dụ như email giả danh một mạng xã hội ảo ,giả danh yêu
cầu thanh toán trực tuyến hay như trong trường hợp xảy ra trong tuần rồi: giả
danh nhà cung cấp dịch vụ mail.
Các email này thường chuyển nạn nhân đến một trang web giả mạo
giống hệt với trang web thật,làm cho họ nhầm lẫn và điền các thông tin nhạy
cảm vào, kết quả là các thông tin đó rơi vào tay các hacker.
Do cách tấn công đơn giản nhưng lại hiệu quả cao nên phising nhanh
chóng trở thành một trong những kiểu tấn công phổ biến nhất trên mạng.Các
cuộc lừa đảo được tạo ra hàng ngày bởi với mục đích chung là đánh cắp thông
tin nhạy cảm của người dùng Internet
3. Tấn công CROSS-SITE SCRIPTING
15
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Tấn công XSS là gì?
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để
tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) 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, DHTML và
cũng có thể là cả các thẻ 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. Người chiến thắng trong cuộc
thi eWeek OpenHack 2002 là người đã tìm ra 2 XSS mới. Phải chăng mối nguy
hiểm từ XSS đã ngày càng được mọi người chú ý hơn
Tấn công XSS như nào?
Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó cũng là
các yêu cầu (request) được gửi từ các máy client tới server nhằm chèn vào đó
các thông tin vượt quá tầm kiểm soát của server. Nó có thể là một request
được gửi từ các form dữ liệu hoặc cũng có thể đó chỉ là các URL như là
Code:
was
found !');</script>
Và rất có thể trình duyệt của bạn sẽ hiện lên một thông báo "XSS was
found !". Các đoạn mã trong thẻ <script> không hề bị giới hạn bởi chúng hoàn
toàn có thể thay thế bằng một file nguồn trên một server khác thông qua
thuộc tính src của thẻ <script>. Cũng chính vì lẽ đó mà chúng ta chưa thể lường
hết được độ nguy hiểm của các lỗi XSS. Nhưng nếu như các kĩ thuật tấn công
khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu
trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn
16
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
nhân trực tiếp là những người khách duyệt site đó. Tất nhiên đôi khi các hacker
cũng sử dụng kĩ thuật này đề deface các website nhưng đó vẫn chỉ tấn công
vào bề mặt của website. Thật vậy, XSS là những Client-Side Script, những đoạn
mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hưởng
đến hệ thống website nằm trên server. Mục tiêu tấn công của XSS không ai
khác chính là những người sử dụng khác của website, khi họ vô tình vào các
trang có chứa các đoạn mã nguy hiểm do các hacker để lại họ có thể bị chuyển
tới các website khác, đặt lại homepage, hay nặng hơn là mất mật khẩu, mất
cookie thậm chí máy tính bạn có thể sẽ bị cài các loại virus, backdoor, worm
4. Tấn công SQL-injection
Tấn công SQL-injection là gì?
SQL Injection là một trong những kiểu hack web đang dần trở nên phổ
biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước
khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username
17
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
và password, remote execution, dump data và lấy root của SQL server. Công cụ
dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet
Explorer, Netscape, Lynx,
Tấn công SQL-injection như nào?
1. Dựa trên lỗi của cơ dở dữ liệu, qua đó Attacker tiến
hành khai thác lỗi trên website. Thông thường, các cơ sở dữ liệu bị truy vấn
qua đó, attacker có thể lấy được tài khoản của người dung.
2. Thi hành lệnh bằng SQL injection. Đây là một ví dụ:
‘; exec master xp_cmdshell ‘ping 10.10.1.2′–
5. Tấn công Session Hijacking
Tấn công Session Hijacking là gì?
Session Hijacking là quá trình chiếm lấy một session đang hoạt động, nhằm
mục đích vượt quaquá trình chứng thực truy cập bất hợp lệ vào thông tin hoặc
dịch vụ của một hệ thống máy tính Khi một user thực hiện kết nối tới server
qua quá trình xác thực, bằng cách cung cấp ID người dùng và mật khẩu của
18
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
mình. Sau khi người dùng xác thực, họ có quyền truy cập đến máy chủ vàhoạt
động bình thường.Trong quá trình hoạt động, người dùng không cần phải
chứng thực lại. Kẻ tấn công lợi dụng điều này để cướp session đang hoạt động
của người dùng và làm cho người dùng không kết nối được với hệ thống. Sau
đó kẻ tấn công mạo danh người dùng bằng session vừa cướp được, truy cập
đến máy chủ mà không cần phải đăng nhập vào hệ thống.Khi cướp được
session của người dùng, kẻ tấn công có thể vượt qua quá trình chứng thực
dùng,có thể ghi lại phiên làm việc và xem lại mọi thứ đã diễn ra. Đối với cơ
quan pháp lý, có thể dùnglàm bằng chứng để truy tố, đối với kẻ tấn công, có
thể dùng thu thập thông tin như ID ngườidùng và mật khẩu. Điều này gây
nhiều nguy hại đến người dung
Phương pháp tấn công:
Kẻ tấn công chiếm session sau khi người dùng đã chứng thực với hệ thốngmay
tính. Bằng cách này, kẻ tấn công có thể truy cập vào hệ thống một cách hợp lệ,
sử dụngphiên làm việc của người dùng hợp lệ để giao tiếp với server
6. Tấn công Social Engineering
Tấn công Social Enginneering là gì?
Social Engineering là kiểu tấn công rất đơn giản, thường được hacker sử dụng.
Kiểu tấn công này có thể hòan tòan phi kỹ thuật hoặc kết hợp một ít kỹ thuật
đơn giản nhằm đánh lừa người sử dụng để ăn cắp mật khẩu và các thông tin cá
nhân khác.
19
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Các phương pháp tấn công:
Google Hack: ví dụ
7. Tấn công dựa trên các lỗ hổng của website.
Ngày nay các lỗ hổng website thường xuyên được công bố trên các chuyên
trang về An toàn thông tin cũng như các trang của Hacker. Điều này có tác
động không nhỏ đến việc tấn công website. Các webmaster không updates các
lỗ hổng hoặc chưa kịp updates, từ đó kẻ tấn công có thể dễ dàng lợi dụng các
lỗi này để tấn công website.
Việc cộng đồng nguồn mở phát triển mạnh dẫn đến việc các extensions của các
mã nguồn đó phát triển theo. Các nhà sản xuất ứng dụng thứ 3 chính là nguyên
nhân gây ra các lỗ hổng lớn.
Các hình thức khai thác lỗ hổng website có 4 dạng:
1. Lỗ hổng về phần quyền files và thư mục
2. Lỗ hổng về lỗi upload files của website
3. Lỗ hổng về các ứng dụng nhỏ của lập trình hướng đối tượng
4. Lỗ hổng trực tiếp từ webserver
Chương 2: Modsecurity
Mod_security là một opensource web application firewall được Ivan
Ristic phát triển dành cho Apache Web Server. Ivan Ristic là tác giả quyển
sách.Ông là một người có rất nhiều kinh nghiệm trong bảo vệ Apache Web
20
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Server. Ông đã có nhiều thời gian nghiên cứu Web Application Security, Web
Intrusion Detection, và Security Patterns. Trước khi chuyển sang lĩnh vực
security, Ivan đã có nhiều năm làm việc như một developer, system architect,
technical director trong phát triển phần mềm. Ông là người sáng lập ra công ty
ThinkingStone làm các dịch vụ liên quan đến web application security.
Hiện tại mod_security sử dụng giấy phép GPL, hoàn toàn miễn phí. Ngoài
ra nếu muốn có sự hỗ trợ thì bạn có thể mua nó tại công ty ThinkingStone của
ông ()
I. Các khả năng của mod_security
- Request filtering : tất cả các request gửi đến web server đều được phân
tích và cản lọc (filter) trước khi chúng được đưa đến các modules khác
để xử lý.
- Anti-evasion techniques : paths và parameters được chuẩn hoá trước khi
phân tích để chống evasion techniques. Kỹ thuật này sẽ được thảo luận
ở phần sau.
- Understanding of the HTTP protocol : mod_security là web application
firewall nên nó có khả năng hiểu được HTTP protocol. Mod_security có
khả năng cản lọc dựa trên các thông tin ở HTTP Header hay có thể xem
xét đến từng parameters hay cookies của các requests vvV
- POST payload analysis: ngoài việc cản lọc dựa trên HTTP Header,
mod_security có thể dựa trên nội dung (payload) của POST requests.
- Audit logging : mọi requests đều có thể được ghi lại (bao gồm cả POST )
để chúng ta có thể xem xét sau nếu cần.
- HTTPS filtering: mod_security có thể phân tích HTTPS.
- Compressed content filtering: mod_security sẽ phân tích sau khi đã
decompress các request data.
Quá trình xử lý các request của Apache và mod_security
21
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Modsecurity cho phép bạn đặt rule tại một trong năm thời điểm trong
chu kỳ xử lý của Apache như sau
Phase Request Header: rule được đặt tại đây sẽ được thực hiện ngay say khi
Apache đọc request header, lúc này phần request bod vẫn chưa được đọc.
Phase Request Body: đây là thời điểm các thông tin chức năng chung đưa vào
vào được phân tích và xem xét, các rule mang tính application-oriented thương
được đặt ở đây. Ở thời điểm này bạn đã nhận đủ các request argument và
phần request body đã được đọc.Modsecurity hỗ trợ ba loại mã hoá request
body
+ application/x-www-form-urlencoded dùng để truyền form dữ liệu
+ multipart/form-data dùng để truyền file
+ text/xml dùng để phân tich dữ liệu XML
22
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
Phase Response Header: đây là thời điểm ngay sau khi phần response header
được gửi trả về cho client. Bạn đặt rule ở đây nếu muốn giám sát quá trình sau
khi phần response được gửi đi.
Phase Response Body: đây là thời điểm bạn muốn kiểm tra những dữ liệu
HTML gửi trả về
Phase logging: đây là thời điểm các hoạt động log được thực hiện, các rules
đặt ở đây sẽ định rõ việc log sẽ như thế nào, nó sẽ kiểm tra các error message
log của Apache. Đây cung là thời điểm cuối cùng để bạn chặn các connection
không mong muốn, kiểm tra các response header mà bạn không thể kiểm tra ở
phase 3 và phase 4.
II. Cài đặt
1. Download mod_security:
#wget
/>2. Trước khi cài đặt
Cần các thư viện apxs, libxml2 và cần file mod_unique_id.so
Cài đặt thư viện
#yum install httpd-devel (cài apxs)
#yum install libxml2
Thêm dòng sau vào file http.conf (file nằm trong /etc/httpd/conf) dòng
sau
LoadModule unique_id_module modules/mod_unique_id.so
(Chú ý: thêm vào đoạn có nhiều LoadModule đầu dòng)
3. Giải nén
#tar xzvf modsecurity-apache_2.5.13.tar.gz
4. Biên dịch
Tại thư mục apache2 gõ các lệnh sau
23
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
#./configure
#make
5. Tích hợp modsecurity vào apache
Thêm dòng sau vào file httpd.conf
LoadModule security2_module modules/mod_security2.so
6. Khởi động lại apache
#service httpd restart
III. Cấu hình cơ bản
1. File cấu hình
Modsecurity là application firewall thuộc loại rules-based, nghĩa chúng
ta cần thiết lập các luật (rules) để mod_security hoạt động. Các rules này
được thể hiện dưới dạng các chỉ thị (directives) và có thể đặt trực tiếp trong
file cấu hình Apache (thông thường là httpd.conf).
Ngoài ra có thể đặt các cấu hình này vào một file riêng, chẳng hạn
modsecurity.conf trong thư mục conf.d và sau đó chúng ta cần thêm vào
httpd.conf
Include conf.d/modsecurity.conf
(mặc định trong httpd.conf đã có dòng include conf.d/*.conf với dòng này
nó sẽ thực hiện tất cả các file có phần mở rộng là .conf)
2. Turning Rule on and off
Theo mặc định thì rule engine bị disable. Để kích hoạt modsecurity ta
cần thêm chỉ thị sau vào file cấu hình
SecRuleEngine On
Directive này dùng để điều khiển rule engine, chúng ta có thể sử dụng
các tuỳ chọn là On, Off hoặc DynamicOnly.
Off : Vô hiệu hoá modsecurity
24
Khoa ATTT – Học viện KT Mật Mã Tìm hiểu Modsecurity
DetectionOnly : Khi nó phù hợp một luật nào đó thì nó cũng không
thực hiện bất kì action nào. (nó rất có ích trong trường hợp muốn test một
luật nào đó mà không muốn nó block bất kì request nào có vấn đề với luật)
On : Các rules của modsecurity được áp dụng cho tất cả các nội dung
3. SecDefaultAction
Dùng để tạo các action mặc định. Khi tạo 1 luật mà không chỉ rõ hành
động cho luật đó nó sẽ thực hiện hành động mặc định
Ví dụ: SecDefaultAction "phase:2,deny,log,status:403"
IV. Rules
1. Xây dựng rules như thế nào?
HTTP request
GET /documentation/index.html HTTP/1.1
Host: www.modsecurity.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1)
ecko/20060124 Firefox/1.5.0.1
Accept:
text/xml,application/xml,application/xhtml+xml,
text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: />25