LI M U
Các máy ch Web (Webserver) luôn là nh t màu m cho các
hacker tìm kim các thông tin giá tr hay gây ri vì mt mm ho
có th là bt c cái gì t kiu tn công t chi dch v, qung cáo các website có
ni dung không lành mi ni dung các file hay phn mm cha mã
nguy him.Các nhà qun tr luôn phu, lo l bo
v máy ch web và an toàn thông tin cho toàn b h thng. Vì vy, tôi quynh
ch tài o M tìm hi v quan trng này.
Trong lu, tôi xin trình bày nhng phn chính sau :
ng quan web server
t s c tn công web server
t s gii pháp bo mt web server
Thông qua nh tài, tôi mong rng nhng v mà
c trình bày có th làm rõ phn nào v bo mt web server hin nay. Mc du
c g lý lun, thi gian có h tài yêu cu hiu
bit v thc t cao, nên không th c nhng thiu sót, rc s
thông cm, ch dn a thy giáo và các bn.
Em xin chân thành c
Thành phố Hồ Chí Minh, ngày 27 tháng 10 năm 2012
4
4
5
1.2.1.Internet Information Services (IIS) 6
1.2.2.Apache Web Server 7
9
1.3.1.SSL là gì? 9
1.3.2. Giao thc SSL 10
1.3.3.Các thut toán mã hoá dùng trong SSL 12
14
2.1. SQL injection 14
2.1.1. SQL Injection là gì? 14
2.1.2. Các dng tn công bng SQL Injection 14
2.1.3. Cách phòng tránh 20
phòng tránh, ta có th thc hin hai mc: 20
2.2 Tn công Cross-Site 21
2.2.1 Cross-Site Scripting hay XSS là gì? 21
2.2.2 Cách hong ca XSS. 21
2.2.3 Cách phòng chng. 22
2.3. Tn công t chi dch v (DOS) 25
2.3.1.Khái nim : 25
2.3.2. Các cách thc tn công: 25
2.3.3.Các cách phòng chng 28
30
31
31
3.2.1.Gii thiu v Mod_security 31
t và cu hình 32
3.3. Secure Web Server (HTTPS) 34
36
Kt Lun 37
Web Server là máy ch ng ln, t tr
t ngân hàng d liu, cha nhc thit k cùng vi
nh
Multimedia).
Web Server có kh n máy khách nhng trang Web thông qua môi
ng Internet (hoc Intranet) qua giao thc HTTP - giao thc thit k gi
n trình duyt Web (Web Browser), và các giao thc khác.
Tt c u có ma ch IP (IP Address) ho
có mt Domain Name. Gi s khi bánh vào thanh Address trên trình duyt ca
bn mn s gi mt yêu cu
n mt Server có Domain Name là www.abc.com. Server này s tìm trang Web có
tên là index.htm ri gn trình duyt ca bn.Bt k m
có th tr thành mt Web Server bi vit lên nó mn
mt ni vào Internet.
Khi máy tính ca bn kt nn mt Web Server và gn yêu cu truy
cp các thông tin t mt trang We nhn yêu cu
và gi li cho bn nhng thông tin mà bn mong mun.
Ging ng phn mm khác mà bt trên máy tính ca
là mt ng dng phn mt,
và chy trên máy tính dùng làm Web Server, nh i s
dng có th truy cn các thông tin ca trang Web t mt máy tính khác trên
mng (Internet, Intranet).
Web Server Software còn có th c tích hp vi CSDL (Database), hay
u khin vic kt n có th truy cp và kt xut thông tin t CSDL
lên các trang Web và truyn ti dùng.Server phi hong liên
tc 24/24 gi, 7 ngày mt tun và 365 ngày m phc v cho vic cung cp
thông tin trc tuyn. V ng trong chng và
t n thông tin t server và máy tính truy cp.
1.2.
Có khá nhiu sn phm web server khác nhau, vic la chn mt web server
phù hp s da c vi h u hành và
các ng dng khác, kh t lng dng phía server, kh
o mt d liu, kh t bn trang web, các công c h tr khi xây
d Internet
Information Services (IIS), Apache Web Server
web
1.2.1.Internet Information Services (IIS)
IIS là dch v thông tin Internet do Microsoft phát trin, sn phc
tích hp cùng vi h u hành Windows. Phiên bn mi nht hin nay là IIS 7.5
c chy trên h u hành Windows server 2008 (hay windows 7). Trong IIS
bao gm nhiu dch v dch v ch v Web Server, dch v
cn dch v Web Server. IIS Web Server (gi tng mi
yêu cu ch yu ca m tin cy, hi
giám sát (qun tr), tính bo mt và tính kh thi trong vic phát trin các dch v
ng dng. Tt c các ci tin này là kt qu là s kt hp cht ch cùng vi các tính
c cung cp trong h u hành Windows.
1.2.2.Apache Web Server
t s n lc rt ln trong vic phát
trin và duy trì mt Web Server mã ngun m cho các h u hành, bao gm
Unix, Linux và t Web Server hi t tt c
bo mt, hiu sut, m rng và phát trin cung cp các dch v ng b
trong các chun Web hin hành.
m ni bt ca Apache:
Ngày nay Apache có th chy kt hp (hybrid) gia ch lý và ch
lnh.
H tr nhiu giao thc phát tri có th phc v trên nhiu
giao thc khác nhau.
Ngày càng h tr t h
BeOS,OS/2vàWindows.
Ngày càng phát trin và hoàn thin các API (Application Program
Interface).
H tr IPv6.
H tr nhi lc (Filtering) các dòng d lin ho
server.
H tr nhiu ngôn ng hin th các thông báo li.
n và d dàng thit lp các tham s cho Web Server qua
các file cu hình.
1.3.1.SSL là gì?
Vic kt ni gia mt Web browser ti bt k m nào trên m
qua rt nhiu các h thc lp mà không có bt k s bo v nào vi các thông
ng truyn. Không mt ai k c i s dng ln Web server có bt k
s kii va d liu hay có th kic liu có ai
ng truy bo v nhng thông tin mt trên
mng Internet hay bt k mt hp nhng yu t
thit lc mt giao dch an toàn:
Xác thc: m bo tính xác thc ca trang mà bn s làm vic u kia ca
kt ny, các trang Wen phi kim tra tính xác thc
ci s dng.
Mã hoá: m bo thông tin không th b truy cp bng th
loi tr vic nghe trm nhy cc truyn qua
Internet, d liu ph không th b c bi nhng
i gi nhn.
Toàn vn d liu: m bo thông tin không b sai lch và nó phi th hin
chính xác thông tin gc gn.
Vi vic s dng SSL, các Web site có th cung cp kh o mt thông tin,
xác thc và toàn vn d li c tích hp sn vào các
i s dng làm vic vi các trang Web ch
an toàn. Khi Web browser s dng kt ni SSL ti server, bing khóa s
xut hin trên thanh trng thái ca ca s p nhp
a ch URL s t phiên giao dch HTTPS s dng cng 443
thay vì s dng c.
1.3.2. G
c phát trin bi Netscape, ngày nay giao thc Secure Socket Layer
c s dng rng rãi trên World Wide Web trong vic xác thc và mã
hoá thông tin gia client và server. T chc IETF (Internet Engineering Task Force
t li tên là TLS (Transport Layer Security). Mc dù là có
s thai v là mt phiên bn mi ca SSL. Phiên bn TSL
i phiên bn SSL 3.1. Tuy nhiên SSL là thut ng c s dng
r
Cu trúc ca SSL và giao thc SSL
c thit k t giao thc riêng cho v bo mt có th h
tr cho rt nhiu ng dng. Giao thc SSL hoi
các giao thc ng dng t
Protocol), IMAP ( Internet Messaging Access Protocol) và FTP (File Transport
Protocol). Trong khi SSL có th s d h tr các giao dch an toàn cho rt
nhiu ng dng khác nhau trên Internet, thì hic s dng chính cho
các giao dch trên Web.
SSL không phi là mt giao th, mà là mt tp các th tc chun
hoá thc hin các nhim v bo mt sau:
Xác thc server: i s dng xác thc server mun kt ni.
Lúc này, phía browser s dng các k thu chc chn
rng certificate và public ID ca server là có giá tr c cp phát bi mt
y cu
này rt quan tri vi dùng. Ví d i mã s credit card qua
mi dùng thc s mun kim tra liu server s nhn thông tin này
à server mà h nh gn không.
Xác thc Client: Cho phép phía server xác thi s dng mun kt
n dng các k thu kim tra xem
certificate và public ID ca server có giá tr c cp phát bi
my ca server
u này rt quan tri vi các nhà cung cp. Ví d t
nh gi các thông tin tài chính mang tính bo mt ti khách hàng thì
h rt mun kinh danh ci nhn.
Mã hoá kt ni: Tt c i gic mã hoá
ng truyn nhm nâng cao kh o mu này rt quan trng
i vi c hai bên khi có các giao dtt c các
d lic gt kt nc bo v nh
t ng phát hin các xáo tri trong d li
thu hash algorithm).
Giao thc SSL bao gm 2 giao thc con: giao thc SSL record và giao thc SSL
handshake. Giao thnh d truyn d liu.
Giao thc SSL handshake (gi là giao thc bt tay) s s dng SSL record protocol
i mt s thông tin gia server và client vào lu tiên thit lp kt ni
SSL.
1.3.3
Các thut toán mã hoá (cryptographic algorithm hay còn gi là cipher) là các
hàm toán hc s d mã hoá và gii mã thông tin. Giao thc SSL h tr
rt nhiu các thuc s d thc hin các công vic trong quá
trình xác thc server và client, truyn ti các certificates và thit lp các khoá ca
tng phiên giao dch (sesion key). Client và server có th h tr các b mt mã
(cipher suite) khác nhau tu thuc vào nhiu yu t
chính sách ca công ty v dài khoá mà h cm thy chp nhc - u này
n m bo mt c
Các thut toán:
DES (Data Encryption Standard): Là mt thut toán mã hoá có chiu dài
khoá là 56 bit.
3-DES (Triple-DES): Là thu dài khoá gp 3 l dài
khoá trong mã hoá DES.
DSA (Digital Signature Algorithm): Là mt phn trong chun v xác thc
s c chính ph M s dng.
KEA (Key Exchange Algorithm): Là mt thu
c chính ph M s dng.
MD5 (Message Digest algorithm): c phát thin bi Rivest.
RSA: là thut toán mã hoá công khai dùng cho c quá trình xác thc và mã
hoá d lic Rivest, Shamir, and Adleman phát trin.
RSA key exchange: là thu i khoá dùng trong SSL da trên
thut toán RSA.
RC2 and RC4: là các thuc phát trin bi Rivest dùng cho
RSA Data Security.
SHA-1 (Secure Hash Algorithm): là mt thu.
Các phiên bn SSL 2.0 và SSL 3.0 h tr cho hu ht các b i
qun tr có th tu chn b mã hoá s dùng cho c client và server. Khi mt
n bt tay (handshake), h s
nh b mã hoá mnh nht có th và s dng chúng trong phiên giao
dch SSL.
2.1. SQL injection
2.1.1. SQL Injection là gì?
SQL injection là mt cho phép nhng k tn công li dng l hng
trong vic kim tra d liu nhp trong các ng dng web và các thông báo li ca
h qun tr d li "tiêm vào" (inject) và thi hành các câu lnh SQL bt
hi phát trin ng dc). Hu qu ca nó rt
tai hi vì nó cho phép nhng k tn công có th thc hin các thao tác xóa, hiu
ch d liu ca ng dng, thm chí là server mà
ng dy. Lng xy ra trên các ng dng web có d liu
c qun lí bng các h qun tr d li
DB2, Sysbase.
2.1.2. Các dng tn công bng SQL Injection
Có bn d ng bao g t qua ki p
(authorization bypass), s dng câu ln SELECT, s dng câu lnh INSERT, s
dng các stored-procedures [2], [3].
a. Dng tt qua kip
Vi dng tn công này, tin tc có th d p
nh vào li khi dùng các câu l d liu ca ng dng
web.
Xét mt ví d i dùng truy cp vào
c bo mt, h thng xây d yêu cu
i dùng nhp thông tin v p và mt khi dùng nhp
thông tin vào, h thng s kip và mt khu có hp l hay không
quyt nh cho phép hay t chi thc hin tip.
ng hi ta có th dùng hai trang, m
hin th form nhp liu và m x lí thông tin nhp t phía
i dùng.
Ví d:
login.htm
execlogin.asp
Thot nhìna bt c mt
l hng v i dùng không th
<form action="ExecLogin.asp" method="post">
Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br>
<input type="submit">
</form>
<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
Set objRS = Nothing
%>
nhp và mt khu hp ln mã này thc s không an toàn và là tin
cho mt lc bit, ch nm ch d liu nhp vào t
xây dng trc tip câu lu này cho
phép nhng k tn công có th u khin câu truy vn s c thc hin. Ví d,
ni dùng nhp chui sau vào trong c 2 ô nhp liu username/password ca
trang login.htm là: ' OR ' ' = ' '.
Lúc này, câu truy vn s c gi thc hin là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''
Câu truy vn này là hp l và s tr v tt c các bn ghi cn mã
tip theo x p bt h
nhp hp l.
b. Dng tn công s dng câu lnh SELECT
Dng tn công này phc t thc hic kiu tn công này, k
tn công phi có kh g hiu và li d trong các thông báo li t h
th m yu khu cho vic tn công.
Xét mt ví d rng gp trong các website v tin tng, s có mt
trang nhn ID ca tin cn hin th rn ni dung ca tin có ID này.
Ví d: Mã ngun cho ch
c vin theo dng sau:
Trong các tình hun mã này hin th ni dung ca tin có ID
trùng v nh và hy có li. Tuy nhiên, gi
p l cho mt li SQL injection khác. K tn
công có th thay th mt ID hp l bng cách gán ID cho mt giá tr khác, và t
khi
u cho mt cuc tn công bt hp pháp, ví d
or 1=1).
Câu truy vn SQL lúc này s tr v tt c các article t bng d liu vì nó s thc
hin câu lnh:
SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1
Mng hp khác, ví d i dùng
nhp vào các thông tin tìm king gp là:
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID 3
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
c có th li d trong câu truy v
nhng tên tác gi bng chui giá tr:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '='
(*)
Lúc này, ngoài câu truy v thc hin thêm
lnh tip theo sau t khóa UNION na.
Tt nhiên các ví d gì nguy hinu k tn
công có th xóa toàn b d liu bn lnh nguy him
nh DROP TABLE. Ví d
bic ng dng web b li dc. hãy nhp vào chu
trên, nu h thng báo li v cú pháp d
có th bit chc là h thc hin câu SELECT sau t
vy mi có th tr v l tình to ra trong câu lnh SELECT.
bic tên ca các bng d liu mà thc hin các thao tác phá hoi khi ng
dng web b li SQL injection ta ch cn chnh li câu lnh SELECT, ví d
' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là có th lit kê
c tên tt c các bng d liu.
c. Dng tn công s dng câu lnh INSERT
<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " &
_
vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Ch thii dùng có th
xem và hiu chnh thông tin ca mình. SQL injection có th c dùng khi h
thng không kim tra tính hp l ca thông tin nhp vào.
Ví d, mt câu lnh INSERT có th có cú pháp d
Nn mã xây dng câu lnh SQL có dng :
ng các ng dt tài kho
tham
Thì chc chn s b li SQL injection, bi vì nu ta nhng th nht
ví d
truy vn s là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1
lúc thc hin lnh xem
u thc hin thêm mt lnh n
TOP 1 FieldName FROM TableName
d. Dng tn công s dng stored-procedures
Vic tn công bng stored-procedures s gây tác hi rt ln nu ng dng
c thc thi vi quyn qun tr h thng 'root'. Ví d, nn mã tiêm
vào d thng s thc hin
lnh lic trên \ t server. Vic phá hoi kiu nào tu thuc
vào câu lng sau cmd.exe.
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
2.1.3. Cách phòng tránh
phòng tránh, ta có th thc hin hai mc:
a. Kim soát cht ch d liu nhp vào
xy ra, hãy bo v các câu lnh SQL là
bng cách kim soát cht ch tt c các d liu nhp nhc t ng
Request (Request, Request.QueryString, Request.Form, Request.Cookies, and
Request.ServerVariables).
Ví d, có th gii hn chiu dài ca chui nhp liu, hoc xây dng hàm
thay th các dng 2 d
ng hp d liu nhp vào là s, li xut phát t vic thay th mt
giá tr liu s bng chui cha câu lnh SQL bt hp pháp.
n hãy kim tra d liu hay không bng
hàm IsNumeric().
Ngoài ra có th xây dng hàm loi b mt s kí t và t khóa nguy him
: ;, ,select, i chui d liu nhp t
hn ch các tn công dng này:
b. Thit lp cu hình an toàn cho h qun tr d liu
C kim soát cht ch và gii hn quyn x lí d lin tài
khoi dùng mà ng d dng. Các ng dng
n các quyn càng b hn ch, thit hi
càng ít.
<%
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput 5
End Function
%>
SQL Injection attack, nên chú ý loi b bt kì
t nào chp chuyn xui dùng khi ng
dng có li. Các thông báo lng tit l các chi tit có th cho
phép k tn công bim yu ca h thng.
2.2 -Site
2.2.1 Cross-Site Scripting hay XSS là gì?
Cross-Site Scripting hay
-
-
t t thành mt trong nhng li ph bin nht
ca Web Applications và m ci vi s dng ngày càng
li chin thng trong cu
XSS mi.
2.2.2 Cách XSS.
V
yêu cc gi t các máy client ti server nh
t quá tm kim soát ca server. Nó có th là mc gi t các
form d liu ho :
was found
!');</script>
Và rt có th trình duyt ca bn s hin lên mt thông báo "XSS was found !".
n mã trong th script không h b gii hn bi chúng hoàn toàn có th
thay th bng mt file ngun trên mt server khác thông qua thuc tính src ca th
ng h nguy him ca
các li XSS. t tn công khác có th c
d liu ngun ca web server (mã ngun, c d liu) thì XSS ch gây
tn hi vi website phía client mà nn nhân trc tip là nhi khách
duy d deface các
n ch tn công vào b mt ca website. Tht vy, XSS là
nhng Client-Side Script, nh n mã này s ch chy bi trình duyt phía
n h thng website nm trên server.
Mc tiêu tn công ca XSS không ai khác chính là nhi s dng khác
ca website, khi h vô tình vào các trang có chn mã nguy him do các
li h có th b chuyn tt li homepage, hay nng
t mt khu, mt cookie thm chí máy tính bn có th s b cài các loi
virus, backdoor, worm
Có nhiu li khuyn cáo dc ra ,tuy nhiên cho n nay vn có bin p
háp
nào có th phòng chng trit CSRF.Sau là mt vài thut s dng.
a. H gian session (session timeout)
Tùy theo ngôn ng hoc web server dc s dng mà các thc hin có th rt khác
nhau.Vi PHP,thông s "session.gc_maxlifetime" trong file php.ini qui nh thi
gian hiu lc ca session.
Nu lp trình viên s dng ngôn ng k h tr chc này và h phi qun lý
session bng CSDL (ví d bng session ) hay bng các file tm (ví
d /tmp/session/) thì h s vit các trình h tr vic xóa các session này
(cron job,scheduler )
b. S get và post lí
thc GET dc dùng truy vn d liui vi các thao tác to ra s thay
i h thng thì các thc khác POST hay PUT s dc s dng (theo
khuyn cáo ca W3C-t chc to ra chun http)
c. S các thông báo xác
Captcha dc s dng nhn bit i ng thao tác vi h thng là con
i hay k?Các thao tác quan trng nhp" hay là " chuyn
khon" ,"thanh toán" ng là hay s dng captcha.Tuy nhiên ,vic s dng
captcha có th gây khó cho mt vài i ng i dùng và làm h khó
chu.
Các thông báo xác nhn ng dc s dng,ví d vic hin th mt thông
báo xác nhn "bn có mun xóa hay k" làm hn ch các thut
d. S token
To ra mt token ng vi mi form,token này s là duy nht i vi moit6
4
form và ng thì hàm to ra token này s nhn i s là"session".Khi nhn lnh
http post v,h thng s thc hiên so khp giá tr token này quyt nh có thc
hin hay k.
Mt s framework hin nay h tr to token là: aspnet webform,ruby on
rails,django
là mt n mã Ruby to token session ca i dùng.Token này dc to t
1 sesstion và 1 "secretekey" ( khóa bí mt-do i xây ng dng to ra )
n mã trên s dng thc POST thc hin thao tác xóa ng th
i nó
hin th thông b hi i dùng phi xác nhn.Nó còn s dng thêm 1
"authenticity_token".
Bên phía máy chc khi thc hin thc "xóa" theo 1 n mã trên thì
trình s kim tra xem câu lnh http gi n có phi là post k
f. S cookie riêng cho quan
Mt cookie k th dùng chung cho các domain khác nhau,chính vì vy vic s d
ng
"admin.site.com" thay vì s dng" site.com/admin" là an toàn
g. log và k tra ip
Mt vài framework ghi tt c thông tin,d liu x lý vào các file log.
u này rt
nguy him nu là các thông tin nhy cm mt khu ,s tài khon.
Mt s h thng quan trng ch cho truy cp t nhng IP dc thit lp sn
2.3.
2.3.1
DoS (Denial of Service) có th mô t n nhi
dùng hp pháp ca mt dch v p và s dng dch v
gm c vic làm tràn ngp mng, làm mt kt ni vi dch vi
cùng là làm cho server không th c các yêu cu s dng dch v t các
client. DoS có th ng ca mt máy tính, mt mng ni b, thm
chí c mt h thng mng rt ln. Thc cht ca DoS là k tn công s chim dng
mng ln tài nguyên m nht kh
lý các yêu cu dch v n t các client khác.
2.3.2. :
Phá hoi da trên tính gii hn hoc không th phc hi ca tài nguyên
mng
a. Thông qua kt ni ( Tn công kiu SYN flood )