Tải bản đầy đủ (.pdf) (38 trang)

Hệ thống firewall xây dựng bởi CSE

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 (203.42 KB, 38 trang )

3. H thng Firewall xây dng bi CSE
B chng trình Firewall 1.0 ca CSE c a ra vào
tháng 6/1998. B chng trình này g)m hai thành phn:
 B l c gói tin – IP Filtering
 B chng trình cng ng dng – proxy servers
Hai thành phn này có th hot ng mt cách riêng r0.
Chúng c#ng có th kt hp li vi nhau  tr thành mt h
th(ng firewall hoàn ch"nh.
Trong tp tài liu này, chúng tôi ch"  cp n b chng
trình cng ng dng ã c cài &t ti VPCP.


38
3.1 Tng quan
B chng trình proxy ca CSE (phiên bn 1.0) c phát
trin da trên b công c xây dng Internet Firewall TIS
(Trusted Information System) phiên bn 1.3. TIS bao g)m
mt b các chng trình và s &t li cu hình h th(ng 
nh!m mc ích xây dng mt Firewall. B chng trình
c thit k  chy trên h UNIX s dng TCP/IP vi
giao din socket Berkeley.
Vic cài &t b chng trình proxy òi h%i kinh nghim
qun lý h th(ng UNIX, và TCP/IP networking. T(i thiu,
ngi qun tr mng firewall phi quen thuc vi:
 vic qun tr và duy trì h th(ng UNIX hot ng
 vic xây dng các package cho h th(ng
S khác nhau khi &t cu hình cho h th(ng quyt nh mc
 an toàn mng khác nhau. Ngi cài &t firewall phi
hiu rõ yêu cu v  an toàn ca mng cn bo v, nm
chc nhng ri ro nào là chp nhn c và không chp
nhn c, thu lm và phân tích chúng t- nhng òi h%i


ca ngi dùng.
B chng trình proxy c thit k cho mt s( cu hình
firewall, trong ó các dng c bn nht 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 ã bit,
trong nhng cu trúc firewall này, yu t( cn bn nht là
bastion host, óng vai trò nh mt ngi chuyn tip thông
tin (forwarder), ghi nht ký truyn thông, và cung cp các
dch v. Duy trì  an toàn trên bastion host là cc k+ quan
tr ng, bi vì ó là ni tp trung hu ht các c( gng cài &t
mt h th(ng firewall.


39


3.2 Các thành phn ca b chng trình proxy:
B chng trình proxy g)m nhng chng trình bc ng
dng (application-level programs), ho&c là  thay th ho&c
là c cng thêm vào phn mm h th(ng ã có. B
chng trình proxy có nhng thành phn chính bao g)m:
 Smap: dch v SMTP(Simple Mail Tranfer Protocol)
 Netacl: dch v Telnet, finger, và danh mc các iêu
khin truy nhp mng
 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
kt n(i tc thi dùng th tc TCP)
3.2.1 Smap: Dch v SMTP

SMTP c xây dng b!ng cách s dng c&p công c phn
mm smap và smapd. Có th nói r!ng SMTP ch(ng li s
e do ti h th(ng, bi vì các chng trình mail chy 
mc  h th(ng  phân phát mail ti các hp th ca user.
Smap và smapd thc hin iu ó b!ng cách cô lp chng
trình mail, bt nó chy trên mt th mc dành riêng
(restricted directory) qua chroot (thay i th mc g(c),
nh mt user không có quyn u tiên. Mc ích ca smap
là cô lp chng trình mail v(n ã gây ra rt nhiu l*i trên
h th(ng. Phn ln các công vic x lý mail thng c


40
thc hin bi chng trình sendmail. Sendmail không yêu
cu mt s thay i hay &t li cu hình gì c. Khi mt h
th(ng  xa n(i ti mt cng SMTP, h iu hành khi ng
smap. Smap lp tc chroot ti th mc dành riêng và &t
user-id  mc bình thng (không có quyn u tiên). Bi vì
smap không yêu cu h* tr bi mt file h th(ng nào c, th
mc dành riêng ch" cha các file do smap to ra. Do vy,
bn không cn phi lo s là smap s0 thay i file h th(ng
khi nó chroot. Mc ích duy nht ca smap là (i thoi
SMTP vi các h th(ng khác, thu lm thông báo mail, ghi
vào a, ghi nht ký, và thoát.
Smapd có trách nhim thng xuyên quét th mc kho ca
smap và a ra các thông báo ã c xp theo th t
(queued messages) ti sendmail  cu(i cùng phân phát.
Chú ý r!ng nu sendmail c &t cu hình  mc bình
thng, và smap chy vi uucp user-id (?), mail có th c
phân phát bình thng mà không cn smapd chy vi mc

u tiên cao. Khi smapd phân phát mt thông báo, nó xoá
file cha thông báo ó trong kho.
Theo ý ngha này, sendmail b cô lp, và do ó mt user l
trên mng không th kt n(i vi sendmail mà không qua
smap. Tuy nhiên, smap và smapd không th gii quyt vn
 gi mo th ho&c các loi tn công khác qua mail. Smap
có kích thc rt nh% so vi sendmail (700 dòng so vi
20,000 dòng) nên vic phân tích file ngu)n  tìm ra l*i n
gin hn nhiu.
3.2.2 Netacl: công c iu khin truy nhp mng
Chúng ta ã bit r!ng inetd không cung cp mt s iu
khin truy nhp mng nào c: nó cho phép bt k+ mt h


41
th(ng nào trên mng c#ng có th n(i ti các dch v lit kê
trong file inetd.conf.
Netacl là mt công c  iu khin truy nhp mng, da
trên a ch" network ca máy client, và dch v c yêu
cu. Vì vy mt client (xác nh bi a ch" IP ho&c
hostname) có th khi ng telnetd (mt version khác ca
telnet) khi nó n(i vi cng dch v telnet trên firewall.
Thng thng trong các cu hình firewall, netacl c s
dng  cm tt c các máy tr- mt vài host c quyn
login ti firewall qua ho&c là telnet ho&c là rlogin, và 
khoá các truy nhp t- nhng k tn công.
 an toàn ca netacl da trên a ch" IP và/ho&c hostname.
Vi các h th(ng cn  an toàn cao, nên dng a ch" IP 
tránh s gi mo DNS. Netacl không ch(ng li c s gi
a ch" IP qua chuyn ngu)n (source routing) ho&c nhng

phng tin khác. Nu có các loi tn công nh vy, cn
phi s dng mt router có kh nng soi nhng packet ã
c chuyn ngu)n (screening source routed packages).
Chú ý là netacl không cung cp iu khin truy nhp UDP,
bi vì công ngh hin nay không m bo s xác thc ca
UDP. An toàn cho các dch v UDP  ây )ng ngha vi
s không cho phép tt c các dch v UDP.
Netacl ch" bao g)m 240 dòng mã C (c gii thích) cho nên
rt d1 dàng kim tra và hiu ch"nh. Tuy nhiên v$n cn phi
c,n thn khi cu hình nó.
3.2.3 Ftp-Gw: Proxy server cho Ftp
Ftp-Gw là mt proxy server cung cp iu khin truy nhp
mng da trên a ch" IP và/ho&c hostname, và cung cp


42
iu khin truy nhp th cp cho phép tu+ ch n khoá ho&c
ghi nht ký bt k+ lnh ftp nào. ích cho dch v này c#ng
có th tu+ ch n c phép hay khoá. Tt c các s kt n(i
và byte d liu chuyn qua u b ghi nht kí li.

Ftp-Gw t bn thân nó không e do an toàn ca h th(ng
firewall, bi vì nó chy chroot ti mt th mc r*ng, không
thc hin mt th tc vào ra file nào c ngoài vic  c file
cu hình ca nó. Kích thc ca Ftp-gw là khong 1,300
dòng. Ftp gateway ch" cung cp dch v ftp, mà không
quan tâm n ai có quyn hay không có quyn kt xut
(export) file. Do vy, vic xác nh quyn phi c thit
lp trên gateway và phi thc hin trc khi thc hin kt
xut (export) hay nhp (import) file. Ftp gateway nên c

cài &t da theo chính sách an toàn ca mng. B chng
trình ngu)n cho phép ngi qun tr mng cung cp c dch
v ftp và ftp proxy trên cùng mt h th(ng.
3.2.4 Telnet-Gw: Proxy server cho Telnet
Telnet-Gw là mt proxy server cung cp iu khin truy
nhp mng da trên a ch" IP và/ho&c hostname, và cung
cp s iu khin truy nhp th cp cho phép tu+ ch n khoá
bt k+ ích nào. Tt c các s kt n(i và byte d liu
chuyn qua u b ghi nht ký li. M*i mt ln user n(i ti
telnet-gw, s0 có mt menu n gin ca các ch n la  n(i
ti mt host  xa.
Telnet-gw không phng hi ti an toàn h th(ng, vì nó
chy chroot n môt th mc dành riêng (restricted
directory). File ngu)n bao g)m ch" 1,000 dòng lnh. Vic
x lý menu là hoàn toàn di1n ra  trong b nh, và không


43
có môt subsell hay chng trình nào tham d. C#ng không
có vic vào ra file ngoài vic  c cu hình file. Vì vy,
telnet-gw không th cung cp truy nhp ti bn thân h
th(ng firewall.
3.2.5 Rlogin-Gw: Proxy server cho rlogin
Các terminal truy nhp qua th tc BSD rlogin có th c
cung cp qua rlogin proxy. rlogin cho phép kim tra và iêu
khin truy nhp mng tng t nh telnet gateway. Rlogin
client có th ch" ra mt h th(ng  xa ngay khi bt u n(i
vào proxy, cho phép hn ch yêu cu tng tác ca user vi
máy (trong trng hp không yêu cu xác thc).
3.2.6 Sql-Gw: Proxy Server cho Oracle Sql-net

Thông thng, vic khai thác thông tin t- CSDL Oracle
c tin hành thông qua dch v WWW. Tuy nhiên  h*
tr ngi s dng dùng chng trình plus33 n(i vào máy
ch Oracle, b firewall ca CSE c a kèm vào chng
trình Sql-net proxy. Vic kim soát truy nhp c thc
hiu qua tên máy hay a ch" IP ca máy ngu)n và máy
ích.
3.2.7 Plug-Gw: TCP Plug-Board Connection server
Firewall cung cp các dch v thông thng nh Usernet
news. Ngi qun tr mng có th ch n ho&c là chy dch
v này trên bn thân firewall, ho&c là cài &t mt proxy
server. Do chy news trc tip trên firewall d1 gây l*i h
th(ng trên phn mm này, cách an toàn hn là s dng
proxy. Plug-gw c thit k cho Usernet News.


44
Plug-gw có th c &t cu hình  cho phép hay t- ch(i
mt s kt n(i da trên a ch" IP ho&c là hostname. Tt c
s kt n(i và các byte d liu chuyn qua u c ghi nht
ký li.


45
3.3 Cài t
B cài &t g)m 2 a mm 1.44 Mb, R1 và R2. M*i b cài
&t u có mt s( Serial number khác nhau và ch" hot
ng c trên máy có hostname ã xác nh trc. Vic
cài &t c tin hành bình thng b!ng cách dùng lnh
custom.

Khi cài &t, mt ngi s dng có tên là proxy c ng
ký vi h th(ng  thc hin các chc nng qun lý proxy.
Ngi cài &t phi &t mt kh,u cho user này.
Mt th mc /usr/proxy c t ng thit lp, trong ó có
các th mc con:
 bin  cha các chng trình thc hin
 etc  cha các tp cu hình Firewall và mt s( ví d
các file cu hình ca h th(ng khi chy vi Firewall nh
inetd.conf, services, syslog.conf
 log  cha các tp nht ký
 report  cha các tp báo cáo sau này.
Vic &t cu hình và qun tr CSE Firewall u thông qua
các chc nng trên menu khi login vào máy Firewall b!ng
tên ngi s dng là proxy. Sau khi cài &t nên i tên
nhng tp h th(ng và lu li trc khi &t cu hình:
 /etc/inetd.conf
 /etc/services
 /etc/syslog.conf.




46
3.4 Thit lp cu hình:
3.4.1 Cu hình mng ban u
Vi Firewall host-base Chúng ta có th chc chn vào vic
mng c cài &t theo mt chính sách an toàn c la
ch n nh!m ngn cn m i lu)ng thông tin không mong mu(n
gia mng c bo v và mng bên ngoài. iu này có th
c thc hin bi screening router hay dual-home

gateway. Thông thng, các thit b mng u s dng c
ch an toàn cài &t trên router ni mà m i liên kt u phi
i qua.
Mt iu cn quan tâm là trong khi ang cài &t, nhng máy
ch công khai (Firewall bastion host) có th b tn công
trc khi c ch an toàn ca nó c cu hình hoàn ch"nh
 có th chy c. Do ó, nên cu hình tp inetd.conf 
cm tt c các dch v mng t- ngoài vào và s dng thit
b u cu(i  cài &t.
Ti thi im ó, chúng ta có th quy nh nhng truy nhp
gia mng c bo v và mng bên ngoài nào s0 b khoá.
Tu+ theo mc ích, chúng ta có th ngn các truy nhp tu+
theo hng ca chúng. Chng trình c#ng cn c th
nghim k càng trc khi s dng. Nu cn thit có th
dùng chng trình /usr/proxy/bin/netscan  th kt n(i ti
tt c máy tính trong mng con  kim tra. Nó s0 c( gng
th l t qua Firewall theo m i hng  chc chn r!ng các
truy nhp bt hp pháp là không th xy ra. Ngn cm truy
nhp vào ra là cái ch(t trong c ch an toàn ca Firewall
không nên s dng nu nó cha c cài &t và th nghim
k l4ng.


47
3.4.2 Cu hình cho Bastion Host
Mt nguyên nhân c bn ca vic xây dng Firewall là 
ngn ch&n các dch v không cn thit và các dch v không
nm rõ. Ngn ch&n các dch v không cn thit òi h%i
ngi cài &t phi có hiu bit v cu hình h th(ng. Các
bc thc hin nh sau:

 Sa i tp /etc/inetd.conf, /etc/services,
/etc/syslog.conf, /etc/sockd.conf.
 Sa i cu hình h diu hành, loi b% nhng dch v có
th gây l*i nh NFS, sau ó rebuild kernel.
Vic này c thc hin cho ti khi h th(ng cung cp dch
v t(i thiu mà ngi qun tr tin tng. Vic cu hình này
có th làm )ng thi vi vic kim tra dch v nào chy
chính xác b!ng cách dùng các lnh ps và netstat. Phn ln
các server c cu hình cùng vi mt s( dng bo mt
khác, các cu hình này s0 mô t  phn sau. Mt công c
chung  thm dò các dch v TCP/IP là
/usr/proxy/bin/portscan có th dùng  xem dch v nào
ang c cung cp. Nu không có yêu cu &c bit có th
dùng các file cu hình nói trên ã c to s/n và &t ti
/usr/proxy/etc khi cài &t, ngc li có th tham kho  sa
i theo yêu cu.
Toàn b các thành phn ca b Firewall òi h%i c cu
hình chung (m&c nh là /usr/proxy/etc/netperms). Phn ln
các thành phn ca b Firewall c g i bi dch v ca h
th(ng là inetd, khai báo trong /etc/inetd.conf tng 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
Chng trình netacl là mt v% b c TCP (TCP Wrapper)
cung cp kh nng iu khin truy cp cho nhng dch v
TCP và c#ng s dng mt tp cu hình vi Firewall.
Bc u tiên  cu hình netacl là cho phép mng ni b
truy nhp có gii hn vào Firewall, nu nh nó cn thit cho
nhu cu qun tr. Tu+ thuc vào TELNET gateway tn-gw có
c cài &t hay không, qun tr có th truy cp vào
Firewall qua cng khác vi cng chu,n ca telnet (23). Bi
vì telnet thng không cho phép chng trình truy cp ti
mt cng không phi là cng chu,n ca nó. Dch v proxy
s0 chy trên cng 23 và telnet thc s s0 chy trên cng
khác ví d dch v có tên là telnet-a  trên (Xem file
inetd.conf  trên). Có th kim tra tính úng n ca netacl
b!ng cách cu hình cho phép ho&c cm mt s( host r)i th
truy cp các dch v t- chúng.
M*i khi netacl c cu hình, TELNET và FTP gateway
cn phi c cu hình theo. Cu hình TELNET gateway
ch" n gin là coi nó nh mt dch v và trong netacl.conf
vit mt s( miêu t h th(ng nào có th s dng nó. Tr
giúp có th c cung cp cho ngi s dng khi cn thit.
Vic cu hình FTP proxy c#ng nh vy. Tuy nhiên, FTP có


49
th s dng cng khác không gi(ng TELNET. Rt nhiu
các FTP client h* tr cho vic s dng cng không chu,n.
Dch v rlogin là mt tu+ ch n có th dùng và phi c cài

&t trên cng ng dng ca bastion host (cng 512) giao
thc rlogin òi h%i mt cng &c bit, mt quá trình òi h%i
s cho phép ca h th(ng UNIX. Ngi qun tr mu(n s
dng c ch an toàn phi cài &t th mc cho proxy  nó
gii hn nó trong th mc ó.
Smap và smapd là các tin trình l c th có th c cài &t
s dng th mc riêng ca proxy  x lý ho&c s dng mt
th mc nào ó trong h th(ng. Smap và smapd không thay
th sendmail do ó v$n cn cu hình sendmail cho Firewall.
Vic này không mô t trong tài liu này.
3.4.3 Thit lp tp hp quy tc
Khi cu hình cho proxy server và chng trình iu khin
truy cp mng iu cn thit là thit lp chính xác tp quy
tc  th hin úng vi mô hình an toàn mong mu(n. Mt
cách t(t  bt u cu hình Firewall là  m i ngi trong
mng s dng t do các dch v )ng thi cm tt c m i
ngi bên ngoài. Vic &t cu hình cho firewall không quá
rc r(i, vì nó c thit k  h* tr cho m i hoàn cnh.
Tp tin /usr/proxy/etc/netperms là CSDL cu hình và quyn
truy nhp (configuration/permissions) cho các thành phn
ca Firewall: netacl, smap, smapd, ftp-gw, tn-gw, http-gw,
và plug-gw. Khi mt trong các ng dng này khi ng, nó
 c cu hình và quyn truy nhp ca nó t- netperms và lu
tr vào mt CSDL trong b nh.
File configuration/permissions c thit lp thành nhng
quy tc, m*i quy tc cha trên mt dòng. Phn u tiên ca


50
m*i quy tc là tên ca ng dng, tip theo là du hai chm

(“:”). Nhiu ng dng có th dùng chung mt quy tc vi
tên ngn cách bi du phy. Dòng chú thích có th chèn vào
file cu hình b!ng cách thêm vào u dòng ký t ‘#’.
3.4.3.1 Thit lp tp hp các quy tc cho dch v HTTP,
FTP
Vic thit lp cu hình cho các dch v HTTP, FTP là tng
t nh nhau. Chúng tôi ch" a ra chi tit v thit lp cu
hình và quy tc cho dch 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, mng 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 cp khác u b cm. Nu mt mng khác mu(n
truy cp proxy, nó nhn c mt thông báo t- ch(i trong
/usr/proxy/etc/ftp-deny.txt và sau ó liên kt b ngt. Nu
mng c bo v phát trin thêm ch" cn 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 phn ca Firewall có mt tp các tu+ ch n và c
c mô t trong manual page riêng ca phn ó. Trong ví
d trên, Tu+ ch n -log {retr stor} cho phép FTP proxy ghi
li nht ký vi tu+ ch n retr và stor.
3.4.3.2 Anonymous FTP
Anonymous FTP server ã c s dng trong h iu
hành UNIX t- lâu. Các l* hng trong vic bo m an toàn
(Security hole) thng xuyên sinh ra do các chc nng mi
c thêm vào, s xut hin ca bug và do cu hình sai.
Mt cách tip cn vi vic m bo an toàn cho anonymous
FTP là s dng netacl  chc chn FTP server b hn ch
trong th mc ca nó trc khi c g i. Vi cu hinh nh
vy, khó khn cho anonymous FTP làm tn hi n h
th(ng bên ngoài khu vc ca FTP.
Di ây là mt ví d s dng netacl  quyt nh gii hn
hay không gii hn vùng s dng ca FTP (i vi m*i liên
kt. Gi s là mng c bo 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, ngi dùng n(i vi dch v FTP t- mng
c bo v có kh nng FTP bình thng. Ngi dùng kt
n(i t- h th(ng khác domain nhn c mt thông báo r!ng
h không có quyn s dng FTP. M i h th(ng khác kt n(i
vào FTP u s dng vi vùng file FTP. iu này có mt

×