3. H thng Firewall xây dng bi CSE
B chng trình Firewall 1.0 ca CSE c a ra vào
tháng 6/1998. B chng trình này g)m hai thành phn:
B l c gói tin – IP Filtering
B chng trình cng ng dng – proxy servers
Hai thành phn này có th hot ng mt cách riêng r0.
Chúng c#ng có th kt hp li vi nhau tr thành mt h
th(ng firewall hoàn ch"nh.
Trong tp tài liu này, chúng tôi ch" cp n b chng
trình cng ng dng ã c cài &t ti VPCP.
38
3.1 Tng quan
B chng trình proxy ca CSE (phiên bn 1.0) c phát
trin da trên b công c xây dng Internet Firewall TIS
(Trusted Information System) phiên bn 1.3. TIS bao g)m
mt b các chng trình và s &t li cu hình h th(ng
nh!m mc ích xây dng mt Firewall. B chng trình
c thit k chy trên h UNIX s dng TCP/IP vi
giao din socket Berkeley.
Vic cài &t b chng trình proxy òi h%i kinh nghim
qun lý h th(ng UNIX, và TCP/IP networking. T(i thiu,
ngi qun tr mng firewall phi quen thuc vi:
vic qun tr và duy trì h th(ng UNIX hot ng
vic xây dng các package cho h th(ng
S khác nhau khi &t cu hình cho h th(ng quyt nh mc
an toàn mng khác nhau. Ngi cài &t firewall phi
hiu rõ yêu cu v an toàn ca mng cn bo v, nm
chc nhng ri ro nào là chp nhn c và không chp
nhn c, thu lm và phân tích chúng t- nhng òi h%i
ca ngi dùng.
B chng trình proxy c thit k cho mt s( cu hình
firewall, trong ó các dng c bn nht là dual-home
gateway (hình 2.4), screened host gateway(hình 2.5), và
screened subnet gateway(hình 2.6). Nh chúng ta ã bit,
trong nhng cu trúc firewall này, yu t( cn bn nht là
bastion host, óng vai trò nh mt ngi chuyn tip thông
tin (forwarder), ghi nht ký truyn thông, và cung cp các
dch v. Duy trì an toàn trên bastion host là cc k+ quan
tr ng, bi vì ó là ni tp trung hu ht các c( gng cài &t
mt h th(ng firewall.
39
3.2 Các thành phn ca b chng trình proxy:
B chng trình proxy g)m nhng chng trình bc ng
dng (application-level programs), ho&c là thay th ho&c
là c cng thêm vào phn mm h th(ng ã có. B
chng trình proxy có nhng thành phn chính bao g)m:
Smap: dch v SMTP(Simple Mail Tranfer Protocol)
Netacl: dch v Telnet, finger, và danh mc các iêu
khin truy nhp mng
Ftp-Gw: Proxy server cho Ftp
Telnet-Gw: Proxy server cho Telnet
Rlogin-Gw: Proxy server cho rlogin
Plug-Gw: TCP Plug-Board Connection server (server
kt n(i tc thi dùng th tc TCP)
3.2.1 Smap: Dch v SMTP
SMTP c xây dng b!ng cách s dng c&p công c phn
mm smap và smapd. Có th nói r!ng SMTP ch(ng li s
e do ti h th(ng, bi vì các chng trình mail chy
mc h th(ng phân phát mail ti các hp th ca user.
Smap và smapd thc hin iu ó b!ng cách cô lp chng
trình mail, bt nó chy trên mt th mc dành riêng
(restricted directory) qua chroot (thay i th mc g(c),
nh mt user không có quyn u tiên. Mc ích ca smap
là cô lp chng trình mail v(n ã gây ra rt nhiu l*i trên
h th(ng. Phn ln các công vic x lý mail thng c
40
thc hin bi chng trình sendmail. Sendmail không yêu
cu mt s thay i hay &t li cu hình gì c. Khi mt h
th(ng xa n(i ti mt cng SMTP, h iu hành khi ng
smap. Smap lp tc chroot ti th mc dành riêng và &t
user-id mc bình thng (không có quyn u tiên). Bi vì
smap không yêu cu h* tr bi mt file h th(ng nào c, th
mc dành riêng ch" cha các file do smap to ra. Do vy,
bn không cn phi lo s là smap s0 thay i file h th(ng
khi nó chroot. Mc ích duy nht ca smap là (i thoi
SMTP vi các h th(ng khác, thu lm thông báo mail, ghi
vào a, ghi nht ký, và thoát.
Smapd có trách nhim thng xuyên quét th mc kho ca
smap và a ra các thông báo ã c xp theo th t
(queued messages) ti sendmail cu(i cùng phân phát.
Chú ý r!ng nu sendmail c &t cu hình mc bình
thng, và smap chy vi uucp user-id (?), mail có th c
phân phát bình thng mà không cn smapd chy vi mc
u tiên cao. Khi smapd phân phát mt thông báo, nó xoá
file cha thông báo ó trong kho.
Theo ý ngha này, sendmail b cô lp, và do ó mt user l
trên mng không th kt n(i vi sendmail mà không qua
smap. Tuy nhiên, smap và smapd không th gii quyt vn
gi mo th ho&c các loi tn công khác qua mail. Smap
có kích thc rt nh% so vi sendmail (700 dòng so vi
20,000 dòng) nên vic phân tích file ngu)n tìm ra l*i n
gin hn nhiu.
3.2.2 Netacl: công c iu khin truy nhp mng
Chúng ta ã bit r!ng inetd không cung cp mt s iu
khin truy nhp mng nào c: nó cho phép bt k+ mt h
41
th(ng nào trên mng c#ng có th n(i ti các dch v lit kê
trong file inetd.conf.
Netacl là mt công c iu khin truy nhp mng, da
trên a ch" network ca máy client, và dch v c yêu
cu. Vì vy mt client (xác nh bi a ch" IP ho&c
hostname) có th khi ng telnetd (mt version khác ca
telnet) khi nó n(i vi cng dch v telnet trên firewall.
Thng thng trong các cu hình firewall, netacl c s
dng cm tt c các máy tr- mt vài host c quyn
login ti firewall qua ho&c là telnet ho&c là rlogin, và
khoá các truy nhp t- nhng k tn công.
an toàn ca netacl da trên a ch" IP và/ho&c hostname.
Vi các h th(ng cn an toàn cao, nên dng a ch" IP
tránh s gi mo DNS. Netacl không ch(ng li c s gi
a ch" IP qua chuyn ngu)n (source routing) ho&c nhng
phng tin khác. Nu có các loi tn công nh vy, cn
phi s dng mt router có kh nng soi nhng packet ã
c chuyn ngu)n (screening source routed packages).
Chú ý là netacl không cung cp iu khin truy nhp UDP,
bi vì công ngh hin nay không m bo s xác thc ca
UDP. An toàn cho các dch v UDP ây )ng ngha vi
s không cho phép tt c các dch v UDP.
Netacl ch" bao g)m 240 dòng mã C (c gii thích) cho nên
rt d1 dàng kim tra và hiu ch"nh. Tuy nhiên v$n cn phi
c,n thn khi cu hình nó.
3.2.3 Ftp-Gw: Proxy server cho Ftp
Ftp-Gw là mt proxy server cung cp iu khin truy nhp
mng da trên a ch" IP và/ho&c hostname, và cung cp
42
iu khin truy nhp th cp cho phép tu+ ch n khoá ho&c
ghi nht ký bt k+ lnh ftp nào. ích cho dch v này c#ng
có th tu+ ch n c phép hay khoá. Tt c các s kt n(i
và byte d liu chuyn qua u b ghi nht kí li.
Ftp-Gw t bn thân nó không e do an toàn ca h th(ng
firewall, bi vì nó chy chroot ti mt th mc r*ng, không
thc hin mt th tc vào ra file nào c ngoài vic c file
cu hình ca nó. Kích thc ca Ftp-gw là khong 1,300
dòng. Ftp gateway ch" cung cp dch v ftp, mà không
quan tâm n ai có quyn hay không có quyn kt xut
(export) file. Do vy, vic xác nh quyn phi c thit
lp trên gateway và phi thc hin trc khi thc hin kt
xut (export) hay nhp (import) file. Ftp gateway nên c
cài &t da theo chính sách an toàn ca mng. B chng
trình ngu)n cho phép ngi qun tr mng cung cp c dch
v ftp và ftp proxy trên cùng mt h th(ng.
3.2.4 Telnet-Gw: Proxy server cho Telnet
Telnet-Gw là mt proxy server cung cp iu khin truy
nhp mng da trên a ch" IP và/ho&c hostname, và cung
cp s iu khin truy nhp th cp cho phép tu+ ch n khoá
bt k+ ích nào. Tt c các s kt n(i và byte d liu
chuyn qua u b ghi nht ký li. M*i mt ln user n(i ti
telnet-gw, s0 có mt menu n gin ca các ch n la n(i
ti mt host xa.
Telnet-gw không phng hi ti an toàn h th(ng, vì nó
chy chroot n môt th mc dành riêng (restricted
directory). File ngu)n bao g)m ch" 1,000 dòng lnh. Vic
x lý menu là hoàn toàn di1n ra trong b nh, và không
43
có môt subsell hay chng trình nào tham d. C#ng không
có vic vào ra file ngoài vic c cu hình file. Vì vy,
telnet-gw không th cung cp truy nhp ti bn thân h
th(ng firewall.
3.2.5 Rlogin-Gw: Proxy server cho rlogin
Các terminal truy nhp qua th tc BSD rlogin có th c
cung cp qua rlogin proxy. rlogin cho phép kim tra và iêu
khin truy nhp mng tng t nh telnet gateway. Rlogin
client có th ch" ra mt h th(ng xa ngay khi bt u n(i
vào proxy, cho phép hn ch yêu cu tng tác ca user vi
máy (trong trng hp không yêu cu xác thc).
3.2.6 Sql-Gw: Proxy Server cho Oracle Sql-net
Thông thng, vic khai thác thông tin t- CSDL Oracle
c tin hành thông qua dch v WWW. Tuy nhiên h*
tr ngi s dng dùng chng trình plus33 n(i vào máy
ch Oracle, b firewall ca CSE c a kèm vào chng
trình Sql-net proxy. Vic kim soát truy nhp c thc
hiu qua tên máy hay a ch" IP ca máy ngu)n và máy
ích.
3.2.7 Plug-Gw: TCP Plug-Board Connection server
Firewall cung cp các dch v thông thng nh Usernet
news. Ngi qun tr mng có th ch n ho&c là chy dch
v này trên bn thân firewall, ho&c là cài &t mt proxy
server. Do chy news trc tip trên firewall d1 gây l*i h
th(ng trên phn mm này, cách an toàn hn là s dng
proxy. Plug-gw c thit k cho Usernet News.
44
Plug-gw có th c &t cu hình cho phép hay t- ch(i
mt s kt n(i da trên a ch" IP ho&c là hostname. Tt c
s kt n(i và các byte d liu chuyn qua u c ghi nht
ký li.
45
3.3 Cài t
B cài &t g)m 2 a mm 1.44 Mb, R1 và R2. M*i b cài
&t u có mt s( Serial number khác nhau và ch" hot
ng c trên máy có hostname ã xác nh trc. Vic
cài &t c tin hành bình thng b!ng cách dùng lnh
custom.
Khi cài &t, mt ngi s dng có tên là proxy c ng
ký vi h th(ng thc hin các chc nng qun lý proxy.
Ngi cài &t phi &t mt kh,u cho user này.
Mt th mc /usr/proxy c t ng thit lp, trong ó có
các th mc con:
bin cha các chng trình thc hin
etc cha các tp cu hình Firewall và mt s( ví d
các file cu hình ca h th(ng khi chy vi Firewall nh
inetd.conf, services, syslog.conf
log cha các tp nht ký
report cha các tp báo cáo sau này.
Vic &t cu hình và qun tr CSE Firewall u thông qua
các chc nng trên menu khi login vào máy Firewall b!ng
tên ngi s dng là proxy. Sau khi cài &t nên i tên
nhng tp h th(ng và lu li trc khi &t cu hình:
/etc/inetd.conf
/etc/services
/etc/syslog.conf.
46
3.4 Thit lp cu hình:
3.4.1 Cu hình mng ban u
Vi Firewall host-base Chúng ta có th chc chn vào vic
mng c cài &t theo mt chính sách an toàn c la
ch n nh!m ngn cn m i lu)ng thông tin không mong mu(n
gia mng c bo v và mng bên ngoài. iu này có th
c thc hin bi screening router hay dual-home
gateway. Thông thng, các thit b mng u s dng c
ch an toàn cài &t trên router ni mà m i liên kt u phi
i qua.
Mt iu cn quan tâm là trong khi ang cài &t, nhng máy
ch công khai (Firewall bastion host) có th b tn công
trc khi c ch an toàn ca nó c cu hình hoàn ch"nh
có th chy c. Do ó, nên cu hình tp inetd.conf
cm tt c các dch v mng t- ngoài vào và s dng thit
b u cu(i cài &t.
Ti thi im ó, chúng ta có th quy nh nhng truy nhp
gia mng c bo v và mng bên ngoài nào s0 b khoá.
Tu+ theo mc ích, chúng ta có th ngn các truy nhp tu+
theo hng ca chúng. Chng trình c#ng cn c th
nghim k càng trc khi s dng. Nu cn thit có th
dùng chng trình /usr/proxy/bin/netscan th kt n(i ti
tt c máy tính trong mng con kim tra. Nó s0 c( gng
th l t qua Firewall theo m i hng chc chn r!ng các
truy nhp bt hp pháp là không th xy ra. Ngn cm truy
nhp vào ra là cái ch(t trong c ch an toàn ca Firewall
không nên s dng nu nó cha c cài &t và th nghim
k l4ng.
47
3.4.2 Cu hình cho Bastion Host
Mt nguyên nhân c bn ca vic xây dng Firewall là
ngn ch&n các dch v không cn thit và các dch v không
nm rõ. Ngn ch&n các dch v không cn thit òi h%i
ngi cài &t phi có hiu bit v cu hình h th(ng. Các
bc thc hin nh sau:
Sa i tp /etc/inetd.conf, /etc/services,
/etc/syslog.conf, /etc/sockd.conf.
Sa i cu hình h diu hành, loi b% nhng dch v có
th gây l*i nh NFS, sau ó rebuild kernel.
Vic này c thc hin cho ti khi h th(ng cung cp dch
v t(i thiu mà ngi qun tr tin tng. Vic cu hình này
có th làm )ng thi vi vic kim tra dch v nào chy
chính xác b!ng cách dùng các lnh ps và netstat. Phn ln
các server c cu hình cùng vi mt s( dng bo mt
khác, các cu hình này s0 mô t phn sau. Mt công c
chung thm dò các dch v TCP/IP là
/usr/proxy/bin/portscan có th dùng xem dch v nào
ang c cung cp. Nu không có yêu cu &c bit có th
dùng các file cu hình nói trên ã c to s/n và &t ti
/usr/proxy/etc khi cài &t, ngc li có th tham kho sa
i theo yêu cu.
Toàn b các thành phn ca b Firewall òi h%i c cu
hình chung (m&c nh là /usr/proxy/etc/netperms). Phn ln
các thành phn ca b Firewall c g i bi dch v ca h
th(ng là inetd, khai báo trong /etc/inetd.conf tng t nh
sau:
48
ftp stream tcp nowait root /usr/proxy/bin/netacl ftpd
ftp-gw stream tcp nowait root /usr/proxy/bin/ftp-gw ftp-gw
telnet-a stream tcp nowait root /usr/proxy/bin/netacl telnetd
telnet stream tcp nowait root /usr/proxy/bin/tn-gw tn-gw
login stream tcp nowait root /usr/proxy/bin/rlogin-gw rlogin-gw
finger stream tcp nowait nobody /usr/proxy/bin/netacl fingerd
http stream tcp nowait root /usr/proxy/bin/netacl httpd
smtp stream tcp nowait root /usr/proxy/bin/smap smap
Chng trình netacl là mt v% b c TCP (TCP Wrapper)
cung cp kh nng iu khin truy cp cho nhng dch v
TCP và c#ng s dng mt tp cu hình vi Firewall.
Bc u tiên cu hình netacl là cho phép mng ni b
truy nhp có gii hn vào Firewall, nu nh nó cn thit cho
nhu cu qun tr. Tu+ thuc vào TELNET gateway tn-gw có
c cài &t hay không, qun tr có th truy cp vào
Firewall qua cng khác vi cng chu,n ca telnet (23). Bi
vì telnet thng không cho phép chng trình truy cp ti
mt cng không phi là cng chu,n ca nó. Dch v proxy
s0 chy trên cng 23 và telnet thc s s0 chy trên cng
khác ví d dch v có tên là telnet-a trên (Xem file
inetd.conf trên). Có th kim tra tính úng n ca netacl
b!ng cách cu hình cho phép ho&c cm mt s( host r)i th
truy cp các dch v t- chúng.
M*i khi netacl c cu hình, TELNET và FTP gateway
cn phi c cu hình theo. Cu hình TELNET gateway
ch" n gin là coi nó nh mt dch v và trong netacl.conf
vit mt s( miêu t h th(ng nào có th s dng nó. Tr
giúp có th c cung cp cho ngi s dng khi cn thit.
Vic cu hình FTP proxy c#ng nh vy. Tuy nhiên, FTP có
49
th s dng cng khác không gi(ng TELNET. Rt nhiu
các FTP client h* tr cho vic s dng cng không chu,n.
Dch v rlogin là mt tu+ ch n có th dùng và phi c cài
&t trên cng ng dng ca bastion host (cng 512) giao
thc rlogin òi h%i mt cng &c bit, mt quá trình òi h%i
s cho phép ca h th(ng UNIX. Ngi qun tr mu(n s
dng c ch an toàn phi cài &t th mc cho proxy nó
gii hn nó trong th mc ó.
Smap và smapd là các tin trình l c th có th c cài &t
s dng th mc riêng ca proxy x lý ho&c s dng mt
th mc nào ó trong h th(ng. Smap và smapd không thay
th sendmail do ó v$n cn cu hình sendmail cho Firewall.
Vic này không mô t trong tài liu này.
3.4.3 Thit lp tp hp quy tc
Khi cu hình cho proxy server và chng trình iu khin
truy cp mng iu cn thit là thit lp chính xác tp quy
tc th hin úng vi mô hình an toàn mong mu(n. Mt
cách t(t bt u cu hình Firewall là m i ngi trong
mng s dng t do các dch v )ng thi cm tt c m i
ngi bên ngoài. Vic &t cu hình cho firewall không quá
rc r(i, vì nó c thit k h* tr cho m i hoàn cnh.
Tp tin /usr/proxy/etc/netperms là CSDL cu hình và quyn
truy nhp (configuration/permissions) cho các thành phn
ca Firewall: netacl, smap, smapd, ftp-gw, tn-gw, http-gw,
và plug-gw. Khi mt trong các ng dng này khi ng, nó
c cu hình và quyn truy nhp ca nó t- netperms và lu
tr vào mt CSDL trong b nh.
File configuration/permissions c thit lp thành nhng
quy tc, m*i quy tc cha trên mt dòng. Phn u tiên ca
50
m*i quy tc là tên ca ng dng, tip theo là du hai chm
(“:”). Nhiu ng dng có th dùng chung mt quy tc vi
tên ngn cách bi du phy. Dòng chú thích có th chèn vào
file cu hình b!ng cách thêm vào u dòng ký t ‘#’.
3.4.3.1 Thit lp tp hp các quy tc cho dch v HTTP,
FTP
Vic thit lp cu hình cho các dch v HTTP, FTP là tng
t nh nhau. Chúng tôi ch" a ra chi tit v thit lp cu
hình và quy tc cho dch v FTP.
#Example ftp gateway rules:
#---------------------------------
ftp-gw: denial-msg /usr/proxy/etc/ftp-deny.txt
ftp—gw: welcome-msg /usr/proxy/etc/ftp-welcome.txt
ftp-gw: help-msg /usr/proxy/etc/ftp-help.txt
ftp-gw: permit-hosts 10.10.170.* -log {retr stor}
ftp-gw: timeout 3600
Trong ví d trên, mng 10.10.170 c cho phép dùng
proxy trong khi m i host khác không có trong danh sách,
m i truy cp khác u b cm. Nu mt mng khác mu(n
truy cp proxy, nó nhn c mt thông báo t- ch(i trong
/usr/proxy/etc/ftp-deny.txt và sau ó liên kt b ngt. Nu
mng c bo v phát trin thêm ch" cn thêm vào các
dòng cho phép.
ftp-gw: permit-hosts 16.67.32.* -log {retr stor}
or
51
ftp-gw: permit-hosts 16.67.32.* -log {retr stor}
ftp-gw: permit-hosts 10.10.170.* -log {retr stor}
M*i b phn ca Firewall có mt tp các tu+ ch n và c
c mô t trong manual page riêng ca phn ó. Trong ví
d trên, Tu+ ch n -log {retr stor} cho phép FTP proxy ghi
li nht ký vi tu+ ch n retr và stor.
3.4.3.2 Anonymous FTP
Anonymous FTP server ã c s dng trong h iu
hành UNIX t- lâu. Các l* hng trong vic bo m an toàn
(Security hole) thng xuyên sinh ra do các chc nng mi
c thêm vào, s xut hin ca bug và do cu hình sai.
Mt cách tip cn vi vic m bo an toàn cho anonymous
FTP là s dng netacl chc chn FTP server b hn ch
trong th mc ca nó trc khi c g i. Vi cu hinh nh
vy, khó khn cho anonymous FTP làm tn hi n h
th(ng bên ngoài khu vc ca FTP.
Di ây là mt ví d s dng netacl quyt nh gii hn
hay không gii hn vùng s dng ca FTP (i vi m*i liên
kt. Gi s là mng c bo v là 192.5.12
netacl-ftpd: hosts 192.5.12.* -exec /etc/ftpd
netacl-ftpd: hosts unknown -exec /bin/cat /usr/proxy/etc/noftp.txt
netacl-ftpd: hosts * -chroot /ftpdir -exec /etc/ftpd
Trong ví d này, ngi dùng n(i vi dch v FTP t- mng
c bo v có kh nng FTP bình thng. Ngi dùng kt
n(i t- h th(ng khác domain nhn c mt thông báo r!ng
h không có quyn s dng FTP. M i h th(ng khác kt n(i
vào FTP u s dng vi vùng file FTP. iu này có mt