Tải bản đầy đủ (.doc) (45 trang)

S0808J g8 bảo mật web server ngày 22 tháng1 năm 2011

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (802.16 KB, 45 trang )

X
Bùi Vân Nam
Bảo mật Web server

LỜI MỞ ĐẦU

Các máy chủ Web (Webserver) 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.Các nhà quản trị luôn
phải đau đầu, lo lắng tìm các phương pháp để bảo vệ máy chủ web và an toàn thông tin
cho toàn bộ hệ thống.Vì vậy, chúng em quyết định chọn đề tài”Bảo Mật Web Server” để
tìm hiểu rõ hơn về vấn đề quan trọng này.
Trong đề tài, chúng em trình bày những phần chính sau :
Chương 1: Tổng quan web server
Chương 2: Một số phương thức tấn công web server
Chương 3: Một số giải pháp bảo mật web server
Thông qua những phân tích trong đề tài, chúng em mong rằng những vấn đề mà mình
trình bày có thể làm rõ phần nào về bảo mật web server hiện nay.Mặc dầu đã cố gắng
nhưng do trình độ lý luận,thời gian có hạn, hơn nữa đề tài yêu cầu hiểu biết về thực tế
cao, nên không thể tránh được những thiếu sót, rất mong được sự thông cảm, chỉ dẫn và
góp ý của các thầy.
Chúng em xin chân thành cảm ơn thầy Vũ Quý Hòa đã hướng dẫn, chỉ bảo tận tình và
đóng góp nhiều ý kiến quý báu giúp chúng em có thể hoàn thành đề tài.
Chúng em xin chân thành cảm ơn!

Hà Nội, ngày21 tháng 1 năm 2011
Sinh Viên

S0808J-G8-Bảo Mật Web Server


1


Bùi Vân Nam

Mục Lục
Chương 1. Tổng quan về web server.................................................5
1.1.Web server là gì?........................................................................................5
1.2.Các loại web server thông dụng................................................................7
1.2.1.Internet Information Services (IIS).....................................................................7
1.2.2.Apache Web Server.............................................................................................8

1.3.Giao thức SSL............................................................................................9
1.3.1.SSL là gì?............................................................................................................9
1.3.2. Giao thức SSL..................................................................................................10
1.3.3.Các thuật toán mã hoá dùng trong SSL.............................................................12

1.4. Tệp tin .htacceess....................................................................................14
1.4.1.Khái niệm:.........................................................................................................14
1.4.2.Các chức năng cơ bản và hữu dụng của tập tin .htaccess.................................15

Chương 2. Một số phương thức tấn công web server......................20
2.1. Local attacking........................................................................................20
2.3. Tấn công từ chối dịch vụ (DOS)............................................................30
2.3.1.Khái niệm :........................................................................................................30
2.3.2. Các cách thức tấn công:...................................................................................30

Chương 3. Một số giải pháp bảo mật cho web server......................35
3.1. Thiết lập firewall mềm............................................................................36


S0808J-G8-Bảo Mật Web Server

1


3.2. Sử dụng mod_security............................................................................37
3.3. Secure Web Server (HTTPS).................................................................41
3.4. Backup (Sao lưu định kỳ).......................................................................43

Kết Luận.........................................................................................44
Việc kiện toàn bảo mật cho một web server liên quan đến nhiều thủ
thuật ở nhiều mức độ khác nhau. Chúng ta phải xác định rõ chức
năng cần thiết nào của server sẽ được sử dụng như : Web server có
thể truy cập từ Internet và chỉ những trang web tĩnh (hay web động)
sẽ được phục vụ, server hỗ trợ tên miền cho cơ chế dịch vụ ảo, các
trang web đã ấn định chỉ có thể truy cập từ các cụm IP addresses
hoặc người dùng (khai báo căn bản), server sẽ tường trình trọn bộ các
thỉnh cầu (bao gồm những thông tin về các web browsers). Các trù bị
bảo mật cho web server thì cần: hệ điều hành phải được kiện toàn
càng chặt chẽ càng tốt, bao gồm việc phòng bị cho những tấn công từ
bên ngoài lẫn bên trong, server không được cung cấp bất cứ dịch vụ
nào khác ngoại trừ http (80/TCP) hay https(443/TCP), truy cập từ xa
đến server phải được điều khiển bởi tường lửa, thiết bị này chặn trọn
bộ những tiếp nối cho lối ra và cho phép những tiếp nối cho lối vào
đến cổng 80/TCP của web server mà thôi, server nên giảm thiểu tối
đa vấn đề tiết lộ những thông tin của chính server...........................44
Với những phân tích của mình, chúng em mong rằng đã phần nào
làm rõ hơn về việc bảo mật web server hiện nay.Tuy nhiên, do trình
độ lý luận, hiểu biết về thực tế chưa nhiều, nên vẫn còn nhiều thiếu
sót, rất mong được sự thong cảm,góp ý và chỉ dẫn của các thầy......44


S0808J-G8-Bảo Mật Web Server

1


Chúng em xin chân thành cảm ơn thầy Nguyễn Quý Hòa đã hướng
dẫn, chỉ bảo tận tình và đóng góp nhiều ý kiến quý báu để chúng em
có thể hoàn thành đề tài...................................................................44
Chúng em xin chân thành cảm ơn!..................................................44
Hà Nội , Ngày 21 tháng 01 năm 2011............................................45
Sinh Viên.......................................................................................45
Bùi vân Nam – Nguyễn Ngọc Phú.................................................45
Tài Liệu Tham Khảo......................................................................................45

S0808J-G8-Bảo Mật Web Server

1


Chương 1. Tổng quan về web server
1.1.Web server là gì?
Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ 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 có khả năng gửi đến máy khách những trang Web thông qua môi trường
Internet (hoặc Intranet) qua giao thức HTTP - giao thức được thiết kế để gửi các file đến
trình duyệt Web (Web Browser), và các giao thức khác.


S0808J-G8-Bảo Mật Web Server

1


Tất cả các Web Server đều có một địa chỉ IP (IP Address) hoặc cũng có thể có một
Domain Name. Giả sử khi bạn đánh vào thanh Address trên trình duyệt của bạn một dòng
sau đó gõ phím Enter bạn sẽ gửi một yêu cầu đến một Server có
Domain Name là www.abc.com. Server này sẽ tìm trang Web có tên là index.htm rồi gửi
nó đến trình duyệt của bạn.Bất kỳ một máy tính nào cũng có thể trở thành một Web
Server bởi việc cài đặt lên nó một chương trình phần mềm Server Software và sau đó kết
nối vào Internet.
Khi máy tính của bạn kết nối đến một Web Server và gửi đến yêu cầu truy cập các
thông tin từ một trang Web nào đó, Web Server Software sẽ nhận yêu cầu và gửi lại cho
bạn những thông tin mà bạn mong muốn.
Giống như những phần mềm khác mà bạn đã từng cài đặt trên máy tính của mình, Web
Server Software cũng chỉ là một ứng dụng phần mềm. Nó được cài đặt, và chạy trên máy
tính dùng làm Web Server, nhờ có chương trình này mà người sử dụng có thể truy cập
đến các thông tin của trang Web từ một máy tính khác ở trên mạng (Internet, Intranet).

S0808J-G8-Bảo Mật Web Server

1


Web Server Software còn có thể được tích hợp với CSDL (Database), hay điều khiển
việc kết nối vào CSDL để có thể truy cập và kết xuất thông tin từ CSDL lên các trang
Web và truyền tải chúng đến người dùng.Server phải hoạt độ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. Vị trí
đặt server đóng vai trò quan trọng trong chất lượng và tốc độ lưu chuyển thông tin từ

server và máy tính truy cập.

1.2.Các loại web server thông dụng
Có khá nhiều sản phẩm 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 và các ứng dụng khác,
khả năng thiết lập các chương trình ứng dụng phía server, khả năng bảo mật dữ liệu, khả
năng 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.Trong đó , Apache Web Server chiếm giữ trên 60% thị trường web thế giới.

1.2.1.Internet Information Services (IIS)

S0808J-G8-Bảo Mật Web Server

1


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.5 được chạy trên
hệ điều hành Windows server 2008 (hay windows 7). 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 (gọi tắt là IIS) đá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 (quản trị), 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.

1.2.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

NT. Đâ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:

S0808J-G8-Bảo Mật Web Server

1


• Ngày nay Apache có thể chạy kết hợp (hybrid) giữa chế độ đa sử 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ư BeOS,OS/2và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 (Filtering) các dòng dữ liệu đến hoặc đi từ server.
• 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.3.Giao thức SSL
1.3.1.SSL là gì?
Việc kết nối giữa một Web browser tới bất kỳ điểm nào trên mạng Internet đi qua rất
nhiều các hệ thống độc lập mà không có bất kỳ sự bảo vệ nào với các thông tin trên
đường truyền. Không một ai kể cả người sử dụng lẫn Web server có bất kỳ sự kiểm soát
nào đối với đường đi của dữ liệu hay có thể kiểm soát được liệu có ai đó thâm nhập vào
thông tin trên đường truyền. Để bảo vệ những thông tin mật trên mạng Internet hay bất
kỳ mạng TCP/IP nào, SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch

an toàn:
• Xác thực: Đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia của kết
nối. Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xác thực của người
sử dụng.

S0808J-G8-Bảo Mật Web Server

1


• Mã hoá: Đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba. Để loại trừ
việc nghe trộm những thông tin “nhạy cảm” khi nó được truyền qua Internet, dữ
liệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoài
người gửi và người nhận.
• Toàn vẹn dữ liệu: Đảm bảo thông tin không bị sai lệch và nó phải thể hiện chính
xác thông tin gốc gửi đến.

Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mật thông tin, xác
thực và toàn vẹn dữ liệu đến người dùng. SSL được tích hợp sẵn vào các browser và Web
server, cho phép người sử dụng làm việc với các trang Web ở chế độ an toàn. Khi Web
browser sử dụng kết nối SSL tới server, biểu tượng ổ khóa sẽ xuất hiện trên thanh trạng
thái của cửa sổ browser và dòng “http” trong hộp nhập địa chỉ URL sẽ đổi thành “https”.
Một phiên giao dịch HTTPS sử dụng cổng 443 thay vì sử dụng cổng 80 như dùng cho
HTTP.

1.3.2. Giao thức SSL
Được phát triển bởi Netscape, ngày nay giao thức Secure Socket Layer (SSL) đã được
sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông tin giữa
client và server. Tổ chức IETF (Internet Engineering Task Force ) đã chuẩn hoá SSL và
đặt lại tên là TLS (Transport Layer Security). Mặc dù là có sự thay đổi về tên nhưng TSL

chỉ là một phiên bản mới của SSL. Phiên bản TSL 1.0 tương đương với phiên bản SSL
3.1. Tuy nhiên SSL là thuật ngữ được sử dụng rộng rãi hơn.

S0808J-G8-Bảo Mật Web Server

1


Cấu trúc của SSL và giao thức SSL
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ cho rất
nhiều ứng dụng. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các giao thức
ứng dụng tầng cao hơn như là HTTP (Hyper Text Transport Protocol), IMAP ( Internet
Messaging Access Protocol) và FTP (File Transport Protocol). Trong khi SSL có thể sử
dụng để hỗ trợ các giao dịch an toàn cho rất nhiều ứng dụng khác nhau trên Internet, thì
hiện nay SSL được sử dụng chính cho các giao dịch trên Web.
SSL không phải là một giao thức đơn lẻ, mà là một tập các thủ tục đã được chuẩn hoá để
thực hiện các nhiệm vụ bảo mật sau:
• Xác thực server: Cho phép người sử dụng xác thực được server muốn kết nối. Lúc
này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắn rằng
certificate và public ID của server là có giá trị và được cấp phát bởi một CA
(certificate authority) trong danh sách các CA đáng tin cậy của client. Điều này rất
quan trọng đối với người dùng. Ví dụ như khi gửi mã số credit card qua mạng thì
người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng là
server mà họ định gửi đến không.

S0808J-G8-Bảo Mật Web Server

1



• Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn kết nối.
Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate
và public ID của server có giá trị hay không và được cấp phát bởi một CA
(certificate authority) trong danh sách các CA đáng tin cậy của server không. Điều
này rất quan trọng đối với các nhà cung cấp. Ví dụ như khi một ngân hàng định gửi
các thông tin tài chính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra
định danh của người nhận.
• Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được mã hoá trên
đường truyền nhằm nâng cao khả năng bảo mật. Điều này rất quan trọng đối với cả
hai bên khi có các giao dịch mang tính riêng tư. Ngoài ra, tất cả các dữ liệu được gửi
đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế tự động phát
hiện các xáo trộn, thay đổi trong dữ liệu. ( đó là các thuật toán băm – hash
algorithm).
Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record và giao thức SSL
handshake. Giao thức SSL record xác định các định dạng dùng để truyền dữ liệu. Giao
thức SSL handshake (gọi là giao thức bắt tay) sẽ sử dụng SSL record protocol để trao đổi
một số thông tin giữa server và client vào lấn đầu tiên thiết lập kết nối SSL.

1.3.3.Các thuật toán mã hoá dùng trong SSL
Các thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là các hàm toán
học được sử dụng để mã hoá và giải mã thông tin. Giao thức SSL hỗ trợ rất nhiều các
thuật toán mã hoá, được sử dụng để thực hiện các công việc trong quá trình xác thực
server và client, truyền tải các certificates và thiết lập các khoá của từng phiên giao dịch
(sesion key). Client và server có thể hỗ trợ các bộ mật mã (cipher suite) khác nhau tuỳ
thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài
khoá mà họ cảm thấy chấp nhận được - điều này liên quan đến mức độ bảo mật của thông
tin, ….

S0808J-G8-Bảo Mật Web Server


1


 Các thuật toán:
• DES (Data Encryption Standard): Là một thuật toán mã hoá có chiều dài khoá là
56 bit.
• 3-DES (Triple-DES): Là thuật toán mã hoá có độ dài khoá gấp 3 lần độ dài khoá
trong mã hoá DES.
• DSA (Digital Signature Algorithm): Là một phần trong chuẩn về xác thực số
đang được được chính phủ Mỹ sử dụng.
• KEA (Key Exchange Algorithm): Là một thuật toán trao đổi khoá đang được
chính phủ Mỹ sử dụng.
• MD5 (Message Digest algorithm): Được phát thiển bởi Rivest.
• RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mã hoá dữ
liệu được Rivest, Shamir, and Adleman phát triển.
• RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật toán
RSA.
• RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng cho RSA
Data Security.
• SHA-1 (Secure Hash Algorithm): là một thuật toán băm .
• Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá. Người quản
trị có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server. Khi một client và
server trao đổi thông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã
hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịch SSL.

S0808J-G8-Bảo Mật Web Server

1



1.4. Tệp tin .htacceess
1.4.1.Khái niệm:
.htaccess là một tệp tin cấu hình đặc biệt, có dấu chấm "." đằng trước tên tập tin, cho
phép bạn thay đổi cách hoạt động của máy chủ Apache ở cấp thư mục.
Tệp tin htaccess gồm các dòng lệnh, được soạn thảo bằng bất kỳ trình soạn thảo nào,
phổ biến nhất vẫn là Notepad.exe. Hoặc ta cũng có thể sử dụng Free htaccess redirector 1 tools online cho phép soạn thảo file htaccess.Được đặt trong mục thư mục nào đó, và sẽ
ảnh hưởng đến tất cả các thư mục con của nó.Ví dụ:
• /www/.htaccess : file htaccess nằm ở thư mục root host sẽ có tác dụng đến toàn bộ
cấp thư mục con của nó.
• /www/admin/.htaccess : chỉ có tác dụng đối với thư mục admin.
 Công dụng: phổ biến nhất vẫn là redirect, đặt pass cho cấp thư mục, bảo vệ ngăn
không cho ăn cắp tài nguyên, block IP .v..v.Tuy nhiên cơ bản nhất, tập tin htaccess làm
ẩn đi cấu trúc thư mục (khi không có file index), tránh được tình trạng săm soi cấu trúc
site nhằm bảo mật.
 Lưu ý khi sử dụng tập tin .htaccess:
Chỉ áp dụng trên máy chủ Apache đã bật chế độ .htaccess nếu chưa bạn hãy thử liên
hệ với nhà cung cấp dich vụ hosting.Tại localhost chỉ một số phần mềm tạo local mới
chạy được chức năng này.
.htaccess chỉ có tác dụng đối với những tập tin ngang hàng (trong cùng thư mục với
nó) hoặc thư mục con. Với thư mục nó chỉ có tác dụng trong thư mục chứa nó và
[separator]thư mục con còn vô tác dụng với thư mục mẹ (parent directory).

S0808J-G8-Bảo Mật Web Server

1


1.4.2.Các chức năng cơ bản và hữu dụng của tập tin .htaccess
1. Chống hotlink:
Hotlink nghĩa là một tập tin của ta được đọc trực tiếp từ trang khác. Thí dụ: bạn có một

ảnh JPEG rất đẹp 200KB ở máy chủ của bạn, nhưng người khác lại dùng thẻ <IMG> để
hiển thị hình ảnh này ở trang web của họ. Đây là hành vi ăn cắp băng thông của bạn,
vì mọi người xem không ai biêt rằng cái ảnh đó của bạn, và bạn đã mất băng thông một
cách vô ích.
Trong hầu hết các trình duyệt khi yêu cầu một tập tin đều có gửi kèm một thông số cho
biết nó được yêu cầu từ trang web nào. Nên bạn chỉ cần đơn giản một câu kiểm tra là
xong.
“RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yoursite\.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://your-ip.*$ [NC]
RewriteRule .*\.(jpg|gif)$ [NC] ”
Trong đó hotlink.jpg là ảnh sẽ thay thể các ảnh kia (bạn có thể ghi một câu thông báo
chẳng hạn vào tấm ảnh đó). Và tất cả ảnh được link đến từ trang khác sẽ không hiện ra,
mà được thay bằng ảnh hotlink.jpg. Ta cũng có thể sửa lại để ngăn các tập tin khác ngoài
GIF và JPG.
Đôi khi, ta muốn chống hotlink trong thư mục gallery thôi chẳng hạn, thì dòng cuối cần
sửa lại thành:
“RewriteRule .*gallery.*\.(jpg|gif)$ ”

S0808J-G8-Bảo Mật Web Server

1


2. Trang báo lỗi:
Bình thường, khi gặp lỗi, bạn sẽ nhận được một thông báo ngắn từ Apache. Tuy nhiên,
với .htaccess bạn có thể tuỳ biến trang thông báo này. Thí dụ sau tạo thông báo lỗi tuỳ
biến cho các lỗi 403 (cấm truy cập) và 404 (trang không tồn tại), trong đó nội dung file
error_forbidden.htm và error_notfound.htm do bạn quyết định, ví dụ như đưa ra một form

tìm kiếm nội dung trong trang, cấu hình lại đúng đối số trên trang …:
“ ErrorDocument 403 /error_forbidden.htm
ErrorDocument 404 /error_notfound.htm ”
3. Chọn trang web theo thời điểm:
Đoạn mã sau đây sẽ hiển thị trang sleep.htm nếu ai đó truy cập vào trang của bạn trong
khoảng 1 đến 4 giờ sáng:
“RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100
RewriteCond %{TIME_HOUR}%{TIME_MIN} <0400
RewriteRule ^.*$ ”
4. Nhắc nhở bật cookie:
Bạn bắt buộc người dùng phải chấp nhận cookie, và muốn kiểm tra cookie đã được
thiết lập hay chưa. Rất đơn giản, đoạn sau sẽ thay tất cả các ảnh một một tấm ảnh kêu
người dùng bất cookie (cookies/enable.gif là hình báo nhắc nhở bật cookie).

“RewriteEngine on
RewriteCond %{HTTP_COOKIE} !^.*cookies=true.*$
RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$ /cookies/enable.gif”

S0808J-G8-Bảo Mật Web Server

1


5. Chặn ip của ai đó:
Đôi khi bạn muốn giới hạn một trang nào đó chỉ cho phép 1 vài người truy cập (như
khu vực Admin), hoặc cho tất cả trừ một vài người không được phép truy cập vào (ngăn
những ip đang flood). Cả hai trường hợp này có thể giải quyết nhẹ nhàng nhờ .htaccess
a.Chỉ cho phép một số ip truy cập
Đầu tiên ta cấm tất cả, sau đó cho phép một số:

“ order deny,allow
deny from all
allow from 127.0.0.1
allow from 192.168.0.1”
Chỉ cho phép ip 127.0.0.1 và 192.168.0.1 truy cập vào trang web (nếu bạn đặt .htaccess
ở thư mục gốc). Để cấm thư mục admin, bạn đặt nó vào thư mục admin.
b.Cấm một số ip truy cập
“ order allow,deny
allow from all
deny from 203.113.135.6
deny from 203.162.* ”
Cấm ip 203.113.135.6 và tất cả các ip bắt đầu bằng 203.162
6. Thay thế trang index:

S0808J-G8-Bảo Mật Web Server

1


Thông thường khi truy nhập vào một trang web, Apache sẽ tìm tập tin index.htm(html)
hoặc default.htm(htmll) trả kết quả về cho trình duyệt, ta có thể dùng .htaccess thay đổi
mặc định này.
“ DirectoryIndex index.php tintuc.htm index.html index.htm”
Với dòng lệnh này thì tất cả các tập tin được liệt kê sẽ được tìm theo thứ tự (lần lượt là
index.php, tintuc.htm, rồi đến index.html, index.htm) khi có yêu cầu tới thư mục hiện
hành, trang nào được tìm thấy đầu tiên sẽ thành trang index của thư mục.
Trong trường hợp một thư mục nào đó không có tập tin index, Apache sẽ hiển thị một
danh sách liệt kê những tập tin có trong thư mục đó. Tuy nhiên nếu đây là những tài liệu
nhạy cảm, bạn không muốn cho liệt kê nội dung thì có thể làm bằng nhiều cách sau:
• Cách đầu tiên là đặt vào đó một tập tin index.html mặc định

• Cách khác là không cho hiện nội dung thư mục bằng .htaccess:“Options –Indexes”.
• Cách cuối cùng là đặt index mặc định nếu index.html không tìm thấy:
“DirectoryIndex index.php index.html index.htm /noindex.html”
Trong trường hợp này, ta tạo tập tin /noindex.html, khi đó nếu Apache không tìm thấy
index.*, nó sẽ đọc noindex.html ở thư mục gốc. Nghĩa là ta luôn có tập tin index.
7. Tuỳ biến đuôi tập tin
Thông thường, tuỳ thuộc vào ngôn ngữ lập trình web mà bạn sử dụng tập tin sẽ có phần
mở rộng khác nhau như: html, htm, asp, aspx, php, cgi, …Tuy nhiên nếu sử dụng
.htaccess bạn có thể tác động vào máy chủ Apache, Apache sẽ gọi đến tập tin của bạn và
trả về cho trình duyệt web của người dùng với phần mở rộng do bạn quy định trong
.htaccess. Bạn sử dụng đoạn lệnh sau trong tập tin .htaccess:
Code:

S0808J-G8-Bảo Mật Web Server

1


“RewriteEngine on
RewriteRule (.*)\.dll$ $1.html”
Html là phần mở rộng thực sự của những tập tin trên website, dll là phần mở rộng do
bạn lựa chọn. Lưu ý trong liên kết trên trang web, bạn phải gọi đúng đường dẫn đến tập
tin với phần mở rộng mới (ở trên là dll), ví dụ dex.dll.
8. 301 redirect
Cách này sẽ giúp cho các WebMaster mong muốn kiếm tiền từ quảng cáo(nhất là GA)
nó sẽ bắt người dùng sử dụng một tên miền nhất định do bạn chọn (một domain sẽ có 2
kiểu địa chỉ (Vd: www.pumamavn.com và pumamavn.com)
Sử dụng cả 2 kiểu địa chỉ sẽ làm giảm traffic của site bạn nên lựa chọn cách sau để tối
ưu hóa link nhằm thân thiện hơn với các hệ thống quảng cáo.
Bạn thêm code sau vào .htaccess:

“ RewriteEngine On
RewriteCond %{HTTP_HOST} !^\.tên trang web\.com$[NC]
RewriteRule ^(.*)$ http://www. tên trang web.com [R=301*L] ”

S0808J-G8-Bảo Mật Web Server

1


Chương 2. Một số phương thức tấn công web
server
2.1. Local attacking
2.1.1.Giới thiệu về local attack:

• Local Attack- tấn công nội bộ từ bên trong, là một khái niệm xuất hiện từ khi các máy chủ
mạnh lên trong thời gian gần đây, để hiểu rõ khái niệm, chúng ta sẽ lấy một số ví dụ:
Vào thập niên trước, các máy chủ chạy web(web server) có cấu hình chỉ ở mức trung bình
và chỉ có thể đảm nhiệm việc gồng gánh một hoặc 2,3 trang web cùng tồn tại. Theo thời
gian, cấu hình các máy chủ ngày càng mạnh hơn, tốc độ bộ vi xử lý và các công nghệ
phân luồng, đa nhân, xử lý song song; đồng bộ với sự phát triển của phần cứng là phần
mềm hệ thống và web server software ngày càng được viết chuyên biệt để xử lý đa tác vụ.
Chính nhờ sự phát triển đó, một máy chủ ngày nay(có thể là chiếc PC của bạn) có thể đặt
được nhiều website trên đó, ví dụ như PC của bạn có thể đặt 3 trang web: của lớp bạn, của
bạn gái bạn và 1 blog của bạn. Và cũng chính nhờ vậy, mà 1 công nghệ khai thác lỗi mới
ra đời? Nó mang tên local attack -tấn công từ nội bộ.
• Ví dụ ta cần tấn công site mục site1.com, nhưng sau khi phân tích tình hình thì thấy rằng
việc tấn công trực tiếp site này là rất khó. Và cũng qua khảo sát ta biết được rằng trên

S0808J-G8-Bảo Mật Web Server


1


server này có rất nhiều site khác. Ý tưởng : tấn công một site khác cùng server sau đó lấy
site này làm bàn đạp tấn công site mục tiêu.

2.1.2Các bước tấn công local attack :

• Bước 1: Xác định các website cần tấn công
• Bước 2: Xác định các website đặt cùng server với mục tiêu
• Bước 3: Tìm cách khai thác một trong các website đặt chung server với mục tiêu . Khai





thác được 1 trong số các website đó .Tìm cách upload webshell hoặc thực thi shell code .
Bước 4:Thành công có webshell, kiểm tra quyền của user hiện tại
Bước 5: Nếu quyền hiện tại đủ đến tấn công mục tiêu. Sang bước 7
Bước 6: Nếu quyền hiện tại không đủ tấn công, tìm cách nâng quyền lên
Bước 7: Đã có đủ quyền, tiến hành đọc file config, tìm user password, deface mục tiêu nếu

có thể
• Bước 8: Kết thúc

2.1.3.Xác định "hàng xóm" của mục tiêu


Chúng ta thực hiện bước thứ 2 trong quá trình local attack, đó là xác định các




site cùng server với victim hay còn gọi là “hàng xóm”.
Đầu tiên bàn về reverse ip, reverse ip hay còn gọi là dịch ngược ip. Như chúng
ta đã biết, mỗi thiết bị kết nối vào mạng, ở đây là máy chủ web, đều được cấp
phát 1 địa chỉ ip (internet protocol address - địa chỉ giao thức mạng internet).
Và chúng ta sẽ dựa trên địa chỉ ip cũa mỗi server để tìm xem trên server đó có


o
o
o
o
o

đặt bao nhiêu site!
Các dịch vụ mà hacker thường sử dụng để xác định các site chung server:

/>

/>
Lưu ý: là do cơ sở dữ liệu từng trang khác nhau, nên kết quả cho ra cũng sẽ khác nhau.

2.1.4.Cách khai thác “Hàng xóm”:

• Cách 1: tìm xem forum/portal thuộc mã nguồn mở nào, phiên bản, tìm xem forum/portal
phiên bản đó có bug hay không.Có thể tham khảo bug của web app tại
milw0rm.com, securityfocus.net. Nếu có bug thì tiến hành exploit, upload shell

S0808J-G8-Bảo Mật Web Server


1


• Cách 2: Tìm kiếm thông tin về tài khoản admin quản trị website, tiến hành brute-force
password.
• Cách 3: Nếu website thuộc mã nguồn đóng, tiến hành scan port, scan các lỗi bảo mật của
website ( có thể làm bằng tay hoặc sử dụng các tool scan Vulnerability).
• Cách 4: dùng tool scan các file nhạy cảm có thể có trên website.Ví dụ như các link :
/phpadmin/, /mysqldumper/, upload.php, database.mdb, password.txt…
• Cách 5: tìm kiếm tài khoản email của các quản trị viên website, tiến hành brute-force
password mail tìm kiếm các weak password.Nếu thành công có khả năng xâm nhập
vào website.…
Sau khi đã có shell trên server, hacker đã hoàn thành 50% công việc.Công việc cuối cùng là
sử dụng shell để tấn công victim.
Việc local attack phụ thuộc vào cấu hình của server.Dựa vào thông tin của server được liệt kê
bởi con shell, attacker có thể sử dụng các chức năng bypass của con shell để tiến hành đọc các
file cấu hình của victim.

2.1.5.Phòng chống local attack
a. Đối với Server :
 Disable hàm Load Data Local Infile bằng cách đặt biến set-variable=local-infi=0
trong file my.cnf để không cho hacker local attack via MySQL
 Bật safe_mode = on, trong php.ini cấm các hàm nhạy cảm + các hàm có thể safe
mode bypass (đòi hỏi admin phải cập nhật thông tin liên lục)
safe-mode = on
display_errors = Off
disable_functions = passthru, system, shell_exec, exec,
dir, readfile,
virtual,socket_accept,socket_bind,socket_clear_error,so

cket_close,socket_connect,socket_create_listen
proc_terminate
log_errors = On

S0808J-G8-Bảo Mật Web Server

1


 Đối với virtual host thì tham số open_basedir là rất quan trọng, cần phải đặt tham số
này đúng với thư mục web của từng site.
 CHMOD kỹ cẩn thận, phân quyền tốt.
 Luôn cập nhật kernel để tránh các bug buffer overflow dẫn đến hacker có thể getroot
chiếm toàn bộ server.
b. Đối với host:
 Thay đổi toàn bộ cấu trúc source code site của bạn. Nên thay đổi toàn bộ cấu trúc thư
mục, đừng bao giờ để cấu trúc mặc định. Ví dụ như: admincp, modcp,..
 Bảo vệ file cấu hình(chứa thông tin database). Cái này rất quan trọng, vì nếu lỡ hacker
có được con shell trên host của bạn rồi thì hacker cũng sẽ chẳng làm gì đuợc đến cái
database của chúng ta trừ khi bị hacker getroot!
 Backup database thường xuyên ,vào Import & Maintenance/ Database Backup để làm.
Khi cần có thể dùng 1 cái script backup nào đó như bigdump chẳng hạn để khôi phục
lại ....
 CHMOD kỹ cho host.Ví dụ: chmod 704 cho file (chỉ cho phép đọc), chmod thư mục
public_html 701(chỉ cho phép thực thi).
 Mã hóa file: nếu server hỗ trợ Zend thì sử dụng zend để mã hóa tất cả các file.
 Ngăn không cho download source: tạo file htaccess nội dung
<Files "config.php">
Order Allow,Deny
Deny from All

</Files>

Mục đích là không cho hacker download source khi php bị overload hay
terminal(nguyên nhân có thể do hacker sử dụng exploit để DOS server)
 Hide path: thông thường khi đăng ký 1 host trên server sử dụng cpanel thì đường dẫn
đến thư mục gốc sẽ là : /home/domain/public_html. Chính sự mặc định này khiến
hacker có thể đoán được vị trí của các file config(chứa thông tin CSDL).Điều gì sẽ
xảy ra nếu hacker đọc được file config và kết nối vào CSDL của ta ???!!!. Để khắc
phục nhược điểm này ta yêu cầu bên hosting tạo host không có tên miền và ta tự gán
lại bằng chức năng addon domain.Khi addon domain ta nên cho trỏ đến các thư mục
càng phức tạp càng tốt.
VD: /home/username/public_html/folder1/folder2/folder3/forum

S0808J-G8-Bảo Mật Web Server

1


2.2. SQL injection
2.2.1. SQL Injection là gì?
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 và các 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 (không được
người phát triển ứng dụng lường trước). 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, hiệu chỉnh, … 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.

2.2.2. Các dạng tấn công bằng SQL Injection

Có bốn dạng thông thường bao 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 storedprocedures [2], [3].
A. Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào
lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web.
Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang
web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng
nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào,
hệ 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ụ:
login.htm

S0808J-G8-Bảo Mật Web Server

1


execlogin.asp

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 ' ' = ' '.


S0808J-G8-Bảo Mật Web Server

1


×