www.nhipsongcongnghe.net
CÀI
TH
I U HÀNH LINUX REDHAT 8.0
1. M t s đi u lưu ý trư c khi cài:
cài RedHat 8.0 ch y trơn tru tho i mái, b n c n có h th ng PII, 64MB Ram tr lên, và phân vùng c ng dành đ cài Linux c n kho ng 2GB tr lên. Tuy nhiên không có gì c n
tr b n cài Linux trên m t h th ng có c u hình th p hơn, nhưng khi đó b n ch có th ch y v i các ng d ng h n ch trên h th ng.
Nên tìm hi u thông s c u hình c a h th ng trư c khi cài đ t.
i u này r t quan tr ng,
giúp b n thu n l i trong quá trình c u hình h th ng sau khi cài đ t. B n s ph i l a ch n cho đúng thông s c a các linh ki n ph n c ng trong quá trình c u hình h th ng như: lo i card màn hình, lo i màn hình( t n s quét ngang, d c), card m ng, card âm thanh. v.v.
C n chu n b phân vùng đĩa còn tr ng đ cài Linux. Linux c n t i thi u hai phân vùng là Linux Native (ext3) và Linux swap. đĩa. ơn gi n, b n có th dùng Partition Magic đ phân chia
§ M t partition là Linux native ext3. C n kho ng 2GB tr lên đ cài Linux, bao g m c KDE và Gnome, các ti n ích đ h a, multimedia, và l p trình. T i thi u b n c n 400MB và cài toàn b là 4,5GB.
§ M t partition là Linux swap, là phân vùng tráo đ i c a Linux dành cho vi c s nh o, làm không gian trao đ i. Thông thư ng, dung lư ng b nh
d ng b
o t i ưu s g p đôi
dung lư ng b nh RAM c a h th ng.
2. B t đ u cài đ t:
Cách đơn gi n và thông d ng nh t đ cài Redhat Linux là cài đ t t
b CDROM:
Kh i đ ng h th ng t
b đĩa CD cài đ t ( CD s 1), và nh n Enter t
d u nh c kh i đ ng
đ m c đ nh cài đ t theo ch đ đ ho . Chương trình cài đ t s t
đ ng dò thông s c a
bàn phím, chu t, card màn hình, màn hình và sau đó đi vào quá trình cài đ t. Thông qua t ng bư c wizard đ b n ch n các thông s v h th ng như bàn phím, chu t, ngôn ng trong quá trình cài đ t, gi h th ng.
a. Ch n ki u cài đ t:
www.nhipsongcongnghe.net
- Personal Desktop: dành cho ngư i m i b t đ u v i Linux ho c cho nh ng h th ng desktop cá nhân. Chương trình cài đ t s ch n l a nh ng gói ph n m m c n thi t nh t cho c u hình này. Dung lư ng đĩa c n cho ki u cài đ t này chi m kho ng 1,5GB, bao g m c môi trư ng đ ho .
- WorkStation: dành cho nh ng tr m làm vi c v i ch c năng đ ho cao c p và các công c phát tri n.
- Server: cài đ t h th ng đóng vai trò máy ch như webserver, ftpsever, SQL server.v.v.
- Custom: đây là l a ch n linh ho t cho b n trong quá trình cài đ t. B n có th ch n các gói ph n m m, các môi trư ng làm vi c, boot loader tuỳ theo ý b n.
b. Thi t l p phân vùng cài Linux:
ây là quá trình nh y c m nh t và nguy hi m nh t trong quá trình cài đ t, vì ch c n b t c n ch n sai thì d li u trên c ng c a b n có th b m t s ch.
Ch c năng “automatic partition” s giúp b n t
đ ng t o các phân vùng cho Linux. Hãy
c n th n n u b n ch n option “remove all partition on this system”, vì như th t t c các phân vùng trên c ng c a b n đ u b xoá. Option “remove all Linux partition on this
system” s ch xoá các phân vùng c a Linux mà thôi
đây, đ thu n ti n thì b n có th dùng Partition Magic đ phân chia đĩa trư c. T i giai đo n này ch là công vi c t o đ nh d ng cho phân vùng cài đ t mà thôi. Tuy nhiên b n v n có th thao tác phân chia phân vùng cài đ t d dàng v i Disk Druid.
Thông thư ng, b n nên ch n “ Manually partition with Disk Druid ” đ t o các phân vùng:
M t phân vùng ch a mount point là “/”, có ki u file h th ng là Linux Native ext3.
M t phân vùng swap cho Linux, ki u c a phân vùng này là Linux swap, kích thư c t i ưu là g p đôi dung lư ng RAM c a h th ng hi n t i.
Các button trên màn hình giao di n cho phép b n thao tác phân chia và đ nh d ng phân
www.nhipsongcongnghe.net
vùng. Nút New, Delete đ t o m i hay xoá m t phân vùng. Nút Edit đ đ nh d ng phân vùng đó, có ki u là gì (ext3, swap, fvat…), qui đ nh l i kích thư c, là thư m c gì trong h th ng phân c p b nh .
B n có th Reset quá trình thao tác n u chưa tho mãn yêu c u c a mình, chưa có m t thay đ i nào đư c th c hi n cho đ n khi b n hoàn thành công vi c v i Disk Druid.
c. Cách qu n lý đĩa trong Linux:
Trong c u trúc cây th .v.v.
b c c a Linux, cao nh t là “/”, dư i đó là /boot, /etc, /root, /mnt
i v i Linux, m i thi t b ph n c ng đ u đư c coi như file ho c thư m c n m trong h th ng phân c p cây thư m c. Ch ng h n h th ng c a b n có hai nh t là /dev/had, c ng th hai là /dev/hdb. Trong cùng m t c ng thì đĩa c ng th
dĩa, các h th ng file đư c
chia thành các phân vùng khác nhau. M t đánh s th t t 1 đ n 4. tương ng v i
c ng có 4 phân vùng chính (primary) đư c c ng đ u tiên s là hda1, hda2 .v.v, phân vùng s 5: ví d hda5, hda6 …
thu c ph n m r ng (extended) đư c đánh s b t đ u t
d. Cài đ t boot loader
ây là chương trình dùng đ kh i đ ng Linux cũng như các h đi u hành khác (dual boot) khi b n có nhi u hơn m t h đi u hành đư c cài trên h th ng. Grub là boot loader m c đ nh khi cài RedHat 8.0. ây là chương trình r t m nh và uy n chuy n. Grub t đ ng dò
các h đi u hành hi n có trên h th ng và thêm vào trong danh sách kh i đ ng. Các tuỳ ch n trên màn hình tương đ i d hi u.
V i tuỳ ch n “ configure advance boot loader option” cho phép b n ch n vi c cài grub lên đâu trong c ng:
N u ch n Grub đ kh i đ ng h th ng , grub s đư c cài lên Master boot record ( /dev/hda).
N u ch n m t chương trình khác đ kh i đ ng như system commander ch ng h n, b n hãy ch n cài grub lên “first sector of boot partition”. Như v y, system commander s t đ ng nh n ra Linux và thêm vào m c nh p kh i đ ng cho Linux.
e. C u hình account:
www.nhipsongcongnghe.net
Vi c c u hình acount dùng đ thi t l p m t kh u root và có th t o thêm các account khác đ log in vào h th ng khi vi c cài đ t hoàn t t.
Tài kho n root là tài kho n có quy n cao nh t trong h th ng. B n có th cài đ t, c u hình h th ng hay làm m i chuy n m t khi đăng nh p vào h th ng v i tài kho n này.
f. Các lưu ý l a ch n gói ph n m m cài đ t:
V i Redhat 8.0, vi c ch n các gói ph n m m đ cài đ t đư c th c hi n r t thu n tiên khi các gói ph n m m đư c gom l i thành nhóm. Có th ch n cài các gói ph n m m ngay lúc này các gói c n thi t ho c có th cài thêm sau khi hoàn t t cài đ t.
B n ch n m c “select individual package” đ cài thêm các gói mà m c đ nh s không cài cho b n. Ví d như mc (Midnight Commander, tương t NC trong DOS). Sau khi l a ch n
xong, chương trình cài đ t s duy t các gói ph thu c đ b n cài thêm.
Trong su t quá trình ch n gói ph n m m cài đ t, b n đư c thông báo dung lư ng c n đ cài đ t. Nên chú ý đ không vư t quá dung lư ng phân vùng mà b n đã dành cho Linux trong quá trình ch n l a. M t đi u chú ý là b n nên cài các programming develop và kernerl source, các thư vi n l p trình đ thu n ti n cho vi c sau này c n biên d ch l i nhân h đi u hành ho c cài đ t và biên d ch ph n m m và driver cho h th ng.
g. C u hình X
làm vi c đư c v i giao di n đ ho , b n c n c u hình cho X Window. N u may m n, card đ ho và màn hình c a b n s n m trong danh sách đư c Linux h tr . Còn n u không, cách ch c ch n v i lo i card đ h a đ ch y đư c là ch n lo i vesa. V màn hình, Linux s t dò cho b n ho c b n s c u hình b ng tay vi c ch n t n s quét cho màn hình. ây chính là
Hãy c n th n vì quá trình này d làm h ng màn hình và card đ ho c a b n. lý do b n c n n m v ng thông s c a các linh ki n ph n c ng.
N u không c n Linux t
dò tìm và c u hình dùm b n, b n có th m file
/etc/X11/XF86Config (ho c XF86Config-4) đ c u hình b ng tay.
Sau khi nh n nút test đ ki m tra h th ng có ch y t t v i ch đ đ h a chưa, n u m i vi c suôn s , chúc m ng b n đã hoàn t t quá trình cài đ t Linux.
Lưu ý v card đ h a
www.nhipsongcongnghe.net
M c dù Linux nh n d ng và h tr đúng nhi u lo i card đ ho đư c s n xu t trong 2 năm g n đây, sau khi c u hình, card đ ho v n ch y v i bus PCI cho dù card đ h a c a b n là lo i AGP, và b n v n chưa t n d ng đư c các ch ng năng đ ho 3D cao c p c a nó. Lý do là các nhà s n xu t linh ki n vì lý do b o m t và b n quy n nên chưa h tr cho các nhà phát tri n Linux. Tuy nhiên, hi n nay nhi u nhà s n xu t ph n c ng đã b t đ u h tr driver cho các linh ki n c a mình trên các h th ng Linux. Ch ng h n v i nhà s n xu t Nvidia, b n có th t i driver c a nó thông qua www.nvidia.com ho c ftp://download.nvidia.com/XFree86_40/1.0-3123. Các game 3D ch y v i hình nh r t m n màng không thua kém gì trên MS Window sau khi b n đã cài driver cho h th ng.
www.nhipsongcongnghe.net
Cách cài đ t font và in Linux
n ti ng Vi t trên
Có 2 cách cài đ t Unicode fonts cho X Window. 1. S 2. S d ng ttmkfdir (cách cũ) d ng fontconfig (cách m i cho Mandrake-9.0, RedHat-8.0)
1. S
d ng ttmkfdir (cách cũ):
a. T o /usr/share/fonts, n u chưa có, b ng l nh: mkdir /usr/share/fonts
b. M utf8.tar.gz trong thư m c /usr/share/fonts b ng l nh: cd /usr/share/fonts && tar xvzf utf8.tar.gz
c. T o danh sách ch a fonts b ng l nh: cd utf8 && ttmkfdir > fonts.scale && mkfontdir
d. Báo cho fonts server bi t đ a đi m c a Unicode fonts b ng l nh: chkfontpath --add /usr/share/fonts/utf8
e. Kh i đ ng l i X font server b ng l nh: /etc/rc.d/init.d/xfs restart
2. S
d ng fontconfig (cách m i cho Mandrake-9.0, RedHat-8.0):
a. B utf8.tar.gz vô /usr/share/fonts và m nó ra b ng l nh: cp utf8.tar.gz /usr/share/fonts && cd /usr/share/fonts && tar xvzf utf8.tar.gz
b. C p nh t danh sánch fonts b ng l nh: fc-cache
Ch v y thôi không c n kh i đ ng l i xfs hay X.
B n cũng có th b arial font (t i v đ a ch
dư i) vô trong ~/.fonts và không ph i restart
cái chi h t n u b n xài fontconfig (Red Hat 8 ho c 9 ho c Mandrake-9.1).
www.nhipsongcongnghe.net
Ví d :
cd ~
mkdir ~/.fonts (n u chưa có)
tar xvjf arial.tar.bz2
cp arialuni.ttf ~/.fonts
Xem trang web ti ng Vi t và cách in ti ng Vi t:
Thông thư ng n u b n xem trang web b ng Mozilla thì không c n ph i set font gì c . N u b n xài Konqueror trên Red Hat 8.0 thì b n ph i set fonts trong Konqueror như hình thì m i xem và in đư c ti ng Vi t. đây
N u b n xài b n Mandrake m i nh t (9.1) thì b n s không c n làm gì h t. Vi c hi n th và in n ti ng Vi t đư c h tr r t t t.
Thêm chi ti t:
.Unicode fonts: có th t i v t
http://www.vnlinux.org/fonts/utf8.tar.gz ho c
http://www.vnlinux.org/arial.tar.bz2 n u b n v n chưa hi n th đư c tiêng Vi t 100% .fontconfig homepage t i http://www.fontconfig.org. .ttmkfdir có th t i v t http://www.joerg-pommnitz.de/TrueType/xfsft.html
.mkfontdir n m trong gói XFree86-3x (ho c XFree86-4x) . Viet Unicode có nhi u fonts http://sourceforge.net/project/showfiles.p...lease_id=132517
www.nhipsongcongnghe.net
Th
thu t b o m t cho Linux
Trong bài vi t này, chúng tôi xin gi i thi u m t s tính an toàn cho m t h minh ho gi i). th ng Linux (đ d
kinh nghi m nh m nâng cao
theo dõi cho b n đ c, chúng tôi s bi n Vi t Nam và trên th
b ng RedHat, m t phiên b n Linux r t ph
Hi n nay, trên môi trư ng máy ch , Linux ngày càng chi m m t v trí quan tr ng. Nguyên nhân khi n Linux d n tr Microsoft Windows là do tính thành m t đ i th ti m n ng c a h đi u hành
n đ nh, đ
linh ho t và kh
n ng ch u t i l n: đây là
nh ng đ c đi m quan tr ng hàng đ u c a m t h
th ng máy ph c v .
Tính b o m t t t cũng là m t trong nh ng đi m n i b t c a Linux. Tuy nhiên, đ m th th ng Linux có kh n ng ch ng l i các cu c t n công, ngư i qu n tr cũng k n ng nh t đ nh. Trong bài vi t này, chúng tôi xin th ng
c n ph i n m đư c m t s gi i thi u m t s Linux (đ d
kinh nghi m nh m nâng cao tính an toàn cho m t h minh ho gi i).
theo dõi cho b n đ c, chúng tôi s bi n Vi t Nam và trên th
b ng RedHat, m t phiên
b n Linux r t ph
1.1. Lo i b
t tc
các account và nhóm đ c bi t
Ngay sau khi cài đ t Linux, ngư i qu n tr nên xoá b (group) đã đư c t o s n trong h
t tc
các account và nhóm d ng, ví d
th ng nhưng không có nhu c u s
như lp, sync, shutdown, halt, news, uucp, operator, games, gopher, v.v... (Tuy nhiên b n đ c c n bi t rõ nh ng account và nhóm nào không c n cho h c a mình r i hãy xoá) th ng
Th c hi n vi c xoá b
account v i l nh :
# userdel
Ví d , n u không có nhu c u v sau:
in
n trên h
th ng, có th
xoá account lp như
# userdel lp
Tương t
như v y, có th
th c hi n vi c xoá b
các nhóm không c n thi t v i l nh
www.nhipsongcongnghe.net
# groupdel
2.2. Che gi u file ch a m t kh u
T
l ch s
xa xưa c a Unix và c
Linux, m t kh u c a toàn b
các account đã t ng các account
đư c lưu ngay trong file /etc/password, file có quy n đ c b i t t c trong h th ng! ây là m t k h l n cho các k
phá ho i: M c dù các m t kh u th c hi n đư c (và có th
đ u đư c mã hoá, nhưng vi c gi i mã ngư c là có th th c hi n khá d và ngày nay kh dàng, đ c bi t vì cơ ch n ng tính toán và x
mã hoã m t kh u không ph i là khó phá
lý c a máy tính r t m nh). Vì lí do trên, g n
đây các nhà phát tri n Unix và Linux đã ph i đ t riêng m t kh u mã hoá vào m t file mà ch có account root m i đ c đư c: file /etc/shadow. (Khi s pháp này, đ d ng phương
đ m b o tính tương thích, nơi v n đ t m t kh u trong file
/etc/password ngư i ta đánh d u "x")
N u b n đ c đang s 7.x) thì nh
d ng các phiên b n RedHat g n đây (ví d
RedHat 6.x hay s d ng
ch n l a Enable the shadow password khi cài đ t RedHat đ
tính n ng che gi u m t kh u này (Cũng th t may vì ch n l a này là m c đ nh trong h u h t các phiên b n Linux đang s d ng r ng rãi hi n nay)
3.3. T
đ ng thoát kh i shell
Ngư i qu n tr h
th ng r t hay quên thoát ra kh i d u nh c shell khi k t thúc
công vi c. B n thân tôi cũng đã t ng nhi u l n khi đang th c hi n vi c qu n tr v i account root thì b m tk phá ho i đi vì m t s này có th công vi c khác. Th t nguy hi m n u lúc đó có d dàng có quy n truy xu t h th ng m c
đó: K
cao nh t mà ch ng c n t n m t chút công s c nào c .
gi m nguy cơ này, ngư i qu n tr nên cài đ t tính n ng t shell khi không có s cách đ t m t tham s shell.
đ ng thoát ra kh i
truy xu t nào trong m t kho ng th i gian đ nh trư c b ng quy đ nh kho ng th i gian h th ng v n duy trì d u nh c
Mu n cài đ t tham s m t giá tr s nh c. th
này, ngư i s
d ng bi n môi trư ng TMOUT và gán cho nó th ng v n duy trì d u th ng, cách đơn gi n
hi n kho ng th i gian tính b ng giây h
th c hi n đi u này cho t t c
các account trong h s
nh t là đ t nó vào file /etc/profile dòng l nh sau: (gi là 600 giây)
ta đ t kho ng th i gian
www.nhipsongcongnghe.net
TMOUT=600
Như v y là n u trong kho ng 10 phút ngư i s s t
d ng không truy xu t shell, shell không " n" n u lúc đó ngư i
đ ng thoát ra. Tuy nhiên c n chú ý: M o này s
dùng đang ch y m t chương trình nào đó như vi hay mc,... Có nghĩa là ngư i dùng ph i đang làm vi c tr c ti p v i shell ch nào khác. không ph i v i b t kỳ m t chương trình
4.4. Lo i b
các d ch v
không s
d ng
M t đi u khá nguy hi m là sau khi cài đ t, h d ch v (và đa s là các d ch v
th ng t
đ ng b t ch y khá nhi u
không mong mu n), d n t i t n tài nguyên và gây ngay l p t c các d ch v các gói
nên nhi u nguy cơ v
b o m t. Ngư i qu n tr nên lo i b
không dùng t i ngay sau khi cài máy. Ho c đơn gi n b ng cách xoá b ph n m m/d ch v RedHat) ho c s không s d ng (qua công c ntsysv đ
qu n tr gói ph n m m rpm c a các d ch v đang cài
d ng công c
duy t xem t t c
đ t r i vô hi u hoá nh ng d ch v d ch v không s
không c n thi t (b ng cách b
đánh d u các
d ng v i phím Space). Sau khi thoát ra kh i ntsysv thì kh i không mong mu n s không ch y n a.
đ ng l i máy: các d ch v
5.5. Không ti t l
thông tin v
h
th ng qua telnet
D ch v h
cho phép truy xu t h
th ng t
xa telnet có kh
n ng ti t l
thông tin v
th ng, d
t o đi u ki n cho nh ng k i u này r t d
phá ho i t n công d a vào nh ng đi m xa vào d ch v
y u đã bi t.
nh n th y: M i ngư i dùng k t n i t
telnet đ u nh n đư c thông tin v nhân (kernel) c a máy ch .
tên máy, phiên b n Linux và phiên b n c a
tránh đi u này, ta c n th c hi n vi c kích ho t telnetd (telnet server) v i tham s -h. (Tham s -h s ng n telnet ti t l các thông tin và ch in ra d u nh c
"Login:" cho nh ng ngư i k t n i t
xa).
Do các phiên b n RedHat 7.x khi ch y telnetd không còn s s
d ng inetd n a (mà
d ng xinetd - m t phiên b n nâng c p và có nhi u c i ti n so v i inetd) nên khác nhau tuỳ theo phiên b n RedHat đang s d ng.
cách c u hình l i telnetd s
+ V i các phiên b n RedHat 6.x và trư c đó, th c hi n các bư c sau:
Trong file /etc/inetd.conf, thay đ i dòng
www.nhipsongcongnghe.net
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
chuy n thành :
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
Ti p theo, kh i đ ng l i inetd b ng câu l nh:
# /etc/rc.d/init.d/inetd restart
+ V i các phiên b n RedHat 7.x, th c hi n bư c sau:
Trong file /etc/xinetd.d/telnet , thêm ch n l a:
server_args = -h
File trên s
có d ng như sau;
service telnet { disable = yes flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID server_args = -h }
Ti p theo, kh i đ ng l i xinetd b ng câu l nh:
# /etc/rc.d/init.d/xinetd restart
6.6. Tránh s
d ng các d ch v
không mã hoá thông tin trên đư ng truy n
M c dù
trên chúng tôi đã trình bày cách ng n d ch v
telnet ti t l
thông tin, ki u
nhưng chúng tôi xin có l i khuyên: Tuy t đ i tránh s như telnet, ftp (ngo i tr h
d ng nh ng d ch v
ftp anonymous) vì nh ng d ch v
này hoàn toàn không
mã hoá m t kh u khi truy n qua m ng. B t kỳ m t k
phá ho i nào cũng có
www.nhipsongcongnghe.net
th d dàng "tóm" đư c m t kh u c a b n b ng nh ng công c nghe lén ki u như
sniffer.
Ơ' nh ng trư ng h p có th , nên s telnet: d ch v
d ng d ch v
ssh thay th
cho c
ftp và b om t
SSH (Secure Shell) dùng cơ ch
mã hoá công khai đ
thông tin, th c hi n mã hoá c Hi n đang đư c s
m t kh u l n thông tin chuy n trên đư ng truy n.
d ng khá r ng rãi, gói ph n m m c a SSH cũng đư c đóng
kèm trong h u h t các phiên b n g n đây c a Linux. Ch ng h n, các phiên b n RedHat t th s 7.0 tr lên m c đ nh đ u cài OpenSSH, m t s n ph m mã ngu n m tham kh o website có
d ng hoàn toàn mi n phí. (B n đ c có th s n ph m này).
www.openssh.org v
Ngoài ra, nh ng d ch v nên tuy t đ i tránh s
"r" ki u như rsh, rcp hay rlogin chúng tôi cũng khuyên d ng. Lý do là các d ch v này ngoài vi c truy n m t kh u
không mã hoá còn th c hi n vi c ki m tra quy n truy xu t d a trên đ a ch máy k t n i, là m t đi u c c kỳ nguy hi m. Các k đ u có th d phá ho i s d ng k thu t spoofing
dàng đánh l a đư c cách ki m tra này khi "làm gi " đư c đ a ch h pl .
c a máy truy xu t d ch v
7. 7. C m s
d ng account root t
consoles
Có th
b n đ c đ u nh n th y, ngay sau khi cài đ t RedHat, account root s telnet trên h th ng (ch nh ng
không có quy n k t n i telnet vào d ch v account thư ng m i có th
k t n i). Nguyên nhân là do file /etc/securetty quy
đ nh nh ng console đư c phép truy nh p b i root ch li t kê nh ng console "v t lý" (t c là ch truy xu t đư c khi ng i tr c ti p t i máy ch ) mà b n i qua m ng. D ch v ftp cũng s b h n ch qua nh ng k t
này: account root không đư c phép
truy xu t ftp qua m ng.
t ng tính b o m t hơn n a, so n th o file /etc/securetty và b console b n không mu n root truy nh p t đó.
đi nh ng
8.8. C m "su" lên root
Trong Linux, l nh su (Substitute User) cho phép ngư i dùng chuy n sang m t account khác. N u không mu n m t ngư i b t kỳ "su" thành root, thêm hai dòng sau vào n i dung file /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/Pam_wheel.so group=wheel
www.nhipsongcongnghe.net
Như v y, ch có nh ng ngư i có đ ng ký là thành viên c a nhóm wheel m i có quy n "su" thành root. cho phép m t ngư i dùng có quy n này, ngư i qu n tr
ch vi c gán account c a ngư i này vào nhóm wheel (qua file /etc/group)
9.9. H n ch
các thông tin ghi b i bash shell
Thông thư ng, t t c
các l nh đư c th c hi n t i d u nh c shell c a các account
đ u đư c ghi vào file ".bash_history" n m trong thư m c cá nhân c a các account. i u này cũng gây nên nh ng nguy hi m ti m n, đ c bi t v i nh ng
ng d ng đòi h i ph i gõ các thông m t như m t kh u trên dòng l nh. Ngư i qu n tr nên h n ch nguy cơ này d a trên 2 bi n môi trư ng HISTFILESIZE và l nh (gõ t i d u nh c shell)
HISTSIZE: Bi n môi trư ng HISTFILESIZE xác đ nh s s
đư c lưu l i cho l n truy nh p sau, còn bi n môi trư ng HISTSIZE xác đ nh s đư c ghi nh trong phiên làm vi c hi n th i. Ta có th gi m giá tr c a
l nh s
HISTSIZE và đ t b ng 0 giá tr HISTFILESIZE đ nêu trên.
gi m t i đa nh ng nguy hi m đã
th c hi n vi c này, ch c n đơn gi n thay đ i giá tr hai bi n này trong file /etc/profile như sau:
HISTFILESIZE=0 HISTSIZE=20
Như v y, t i phiên làm vi c hi n th i, shell ch ghi nh
20 l nh g n nh t, đ ng
th i không ghi l i các l nh ngư i dùng đã gõ khi ngư i dùng thoát ra kh i shell.
10.10. C m nhòm ngó t i nh ng file script kh i đ ng Linux
Khi kh i đ ng Linux, các file script đư c đ t t i thư m c /etc/rc.d/init.d s th c hi n. tránh nh ng s
đư c
tò mò không c n thi t, ngư i qu n tr nên h n ch
quy n truy xu t t i nh ng file này ch cho account root b ng l nh sau:
# chmod -R 700 /etc/rc.d/init.d/*
11.11. Xoá b
nh ng chương trình SUID/SGID không s
d ng
Thông thư ng, nh ng hi n m ts
ng d ng đư c th c hi n dư i quy n c a account g i th c d ng m t k thu t đ c bi t cho phép
ng d ng. Tuy nhiên, Unix và Linux s
chương trình th c hi n dư i quy n c a ngư i qu n lý chương trình (ch
www.nhipsongcongnghe.net
không ph i ngư i th c hi n). th ng đ u có th ây chính là lý do t i sao t t c m i user trong h có quy n truy xu t
đ i m t kh u c a mình trong khi không h
lên file /etc/shadow: Nguyên nhân vì l nh passwd có gán thu c tính SUID và đư c qu n lý b i root, mà ch có root m i có quy n truy xu t /etc/shadow.
Tuy nhiên, kh
n ng này có th
gây nên nh ng nguy cơ ti m tàng: N u m t t i ho c do
chương trình có tính n ng th c thi đư c qu n lý b i root, do thi t k đư c cài đ t c t it đ u có th tình b i nh ng k x y ra. Th c t
phá ho i mà l i có thu c tính SUID thì m i đi u cho th y, khá nhi u k thu t xâm nh p h k thu t này: k th ng
mà không có quy n root đư c th c hi n nh nào đó t o đư c m t shell (ví d Sau đó m i truy xu t phá ho t s hi n trong shell s
phá ho i b ng cách
bash) đư c qu n lý b i root, có thu c tính SUID. đư c th c hi n qua shell này vì m i l nh th c
đư c th c hi n dư i quy n c a root.
Thu c tính SGID cũng tương t
như thu c tính SUID: các chương trình đư c th c không ph i nhóm c a
hi n v i quy n nhóm là nhóm qu n lý chương trình ch ngư i ch y chương trình.
Như v y, ngư i qu n tr s nh ng
ph i thư ng xuyên ki m tra xem trong h
th ng có
ng d ng nào có thu c tính SUID ho c SGID mà không đư c phép không?
tìm t t c
các file có thu c tính SUID/SGID, s
d ng l nh find như sau:
# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls ưlg {} \;
N u phát hi n đư c m t file có thu c tính SUID/SGID m t cách không c n thi t, có th lo i b các thu c tính này b ng l nh:
# chmod a-s
12.12. T ng tính b o m t cho nhân (kernel) c a Linux
Th c t
cho th y, Linux không h n đư c thi t k h ng có th d ng m t h
v i các tính n ng b o m t th t h
ch t ch : khá nhi u l th ng. Do đó, vi c s
b l i d ng b i nh ng tin t c thông th o v đi u hành v i nhân đư c c ng c
là r t quan t t thì
tr ng: M t khi nhân - ph n c t lõi nh t c a h nguy cơ b phá ho i s gi m đi r t nhi u.
đi u hành - đư c thi t k
B n đ c có th
xem xét vi c c ng c
nhân Linux thông qua các mi ng vá (patch).
Tôi xin gi i thi u m t trong nh ng website t t nh t chuyên cung c p các mi ng
www.nhipsongcongnghe.net
vá b sung cho nhân Linux v b o m t t i đ a ch www.grsecurity.net. T i đây b n sung cho h
đ c có th
tìm hi u thông tin h u ích và t i xu ng các mi ng vá b
th ng Linux c a mình.
www.nhipsongcongnghe.net
B om th
1. tv nđ
th ng *nix v i PAM
Ch c h n b n đã t ng t
h i t i sao các chương trình ftp, su, login, passwd, sshd, rlogin …
l i có th hi u và làm vi c v i shadow password; hay t i sao các chương trình su, rlogin l i đòi hòi password; t i sao m t s h th ng ch cho m t nhóm nào đó có quy n su, hay sudo, hay h th ng ch cho phép m t s ngư i dùng, nhóm ngư i dùng đ n t các host xác
đ nh và các thi t l p gi i h n cho nh ng ngư i dùng đó, …T t c đ u có th lý gi i v i PAM. ng d ng c a PAM còn nhi u hơn nh ng gì tôi v a nêu nhi u, và nó bao g m các module đ ti n cho ngư i qu n tr l a ch n.
2. C u trúc PAM
- Các
ng d ng PAM đư c thi t l p trong thư m c /etc/pam.d hay trong file /etc/pam.conf
( login, passwd, sshd, vsftp, …) - Thư vi n các module đư c lưu trong /lib/security ( pam_chroot.so, pam_access.so, pam_rootok.so, pam_deny.so, … ) - Các file c u hình đư c lưu trong /etc/security ( access.conf, chroot.conf, group.conf ,… ) +access.conf – +group.conf – i u khi n quy n truy c p, đư c s i u khi n nhóm ngư i dùng, s d ng cho thư vi n pam_access.so.
d ng b i pam_group.so d ng b i pam_limits.so. d ng cho thư vi n
+limits.conf – thi t l p các gi i h n tài nguyên h th ng, đư c s +pam_env – pam_env.so . i u khi n kh năng thay đ i các bi n môi trư ng, s
+time – Thi t l p h n ch th i gian cho d ch v và quy n ngư i dùng, s vi n pam_time.so.
d ng cho thư
3. Cách ho t đ ng c a PAM
Thu t ng - Các chương trình login, pass, su, sudo, … trên đư c g i là privilege-granting application ( chương trình trao đ c quy n ).
- PAM-aware application: là chương trình giúp các privile-granting application làm vi c v i thư vi n PAM.
Các bư c ho t đ ng:
1. Ngư i dùng ch y m t
ng d ng đ truy c p vào d ch v mong mu n, vd login.
www.nhipsongcongnghe.net
2. PAM-aware application g i thư vi n PAM đ th c hi n nhi m v xác th c. 3. PAM library s d a vào file c u hình c a chương trình đó trong /etc/pam.d ( vd đây là
login -> file c u hình /etc/pam.d/login ) xác đ nh lo i xác th c nào đư c yêu c u cho chương trình trên. Trong trư ng h p không có file c u hình, thì file /etc/pam.d/other s đư c s d ng.
4. PAM library s load các module yêu c u cho xác th c trên. 5. Các modules này s t o m t liên k t t i các hàm chuy n đ i ( conversation functions ) trên chương trình. 6. Các hàm này d a vào các modules mà đưa ra các yêu c u v i ngư i dùng, vd chúng yêu c u ngư i dùng nh p password. 7. Ngư i dùng nh p thông tin vào theo yêu c u. 8. Sau khi quá trình xác th c k t thúc, chương trình này s d a vào k t qu mà đáp ng
yêu c u ngư i dùng ( vd cho phép login vào h th ng ) hay thông báo th t b i v i ngư i dùng.
4. Bây gi chúng ta s nghiên c u file config
Listing 10-1: The /etc/pam.d/rlogin file #%PAM-1.0 auth required /lib/security/pam_securetty.so auth sufficient /lib/security/pam_rhosts_auth.so auth required /lib/security/pam_stack.so service=system-auth auth required /lib/security/pam_nologin.so account required /lib/security/pam_stack.so service=system-auth password required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth
Các dòng trong file config có d ng sau:
module-type control-flag module-path module-args
----MODULE TYPE auth: th c hi n xác th c. Thông thư ng, m t auth module s yêu c u password đ ki m tra, hay thi t l p các đ nh danh như nhóm ngư i dùng, hay th kerberos.
Account đi u khi n s
ki m tra “b m t” v i yêu c u xác th c. Ví d , nó có th ki m tra m t host và trong th i gian cho phép hay không.
ngư i dùng truy c p d ch v t
www.nhipsongcongnghe.net
Password: thi t l p password. Thông thư ng, nó luôn có s auth và m t module password..
tương
ng gi a m t module
Session: đi u khi n các nhi m v qu n lý session. dùng s
ư cs
d ng đ đ m b o r ng ngư i
d ng tài kho n c a h khi đã đư c xác th c..
----PAM MODULE CONTROL FLAGS
Require: c đi u khi n này nói v i PAM library yêu c u s
thành công c a modules tương
ng, vd “auth required /lib/security/pam_securetty.so” à module pam_securetty.so ph i thành công. N u module đó không đư c th c hi n thành công thì quá trình xác th c th t b i. Nhưng lúc đó, PAM v n ti p t c v i các module khác, tuy nhiên nó ch có tác d ng nh m tránh kh i vi c ngư i dùng có th đoán đư c quá trình này đã b th t b i nào. giai đo n
Sufficient: c này khác v i c trên
ch , khi có m t module th c hi n thành công nó s
thông báo hoàn thành ngay quá trình xác th c, mà không duy t các module khác n a.
Requisite: c này có ý nói PAM library lo i b ngay quá trình xác th c khi g p b t kỳ thông báo th t b i c a module nào.
Optional: c này ít khi đư c s
d ng, nó có ý nghĩa là module này đư c th c hi n thành
công hay th t b i cũng không quan tr ng, không nh hư ng quá trình xác th c.
----MODULE-PATH –
ư ng d n đên thư vi n PAM.
----ARGUMENTS – Các bi n tùy ch n cho các module.
Các module ( auth, account, password, session ) đư c th c hi n trong stack và chúng đư c th c hi n theo th t xu t hi n trong file config.
Các chương trình yêu c u xác th c đ u có th s
d ng PAM.
5.Sau đây tôi xin gi i thi u ch c năng c a m t s module
_ pam_access.so:
- Support module type :account - Module này s d ng file thi t l p trong etc/security/access.conf .
www.nhipsongcongnghe.net
File c u hình này có d ng như sau: < + or - > : : + : grant permission - : deny permission V i username list là ngư i dùng hay nhóm ngư i dùng, tty list là login qua console, host list xác đ nh các host hay domain. Chúng ta có th s EXCEPT=tr , LOCAL=c c b . Ví d sau cho c m osg login t t t c , và cho phép linet login t xa. d ng các t khóa ALL=t t c ,
account required pam_access.so -:osg:ALL +:linet:ALL EXCEPT LOCAL
pam_chroot.so: Support module type :account; session; authentication
Dùng đ chroot cho các user thi t l p trong /etc/security/chroot.conf Ví d , tôi th c hi n chroot cho sshd đ ngư i dùng linet ch có quy n truy c p trong /home/osg mà không có quy n truy c p đ n các thư m c home c a ngư i dùng khác Thêm dòng sau trong /etc/pam.d/sshd ( lưu ý trong /etc/sshd/sshd_config ph i thi t l p UsePAM = yes ) session required pam_chroot.so
_ pam_deny.so:
Support module type: account; authentication; password; session Module này luôn tr v giá tr false. Vd nó đư c dùng trong /etc/pam.d/other đ t ch i
m i truy c p c a ngư i dùng khi truy c p vào các PAM-aware program mà không có file c u hình PAM
- Acount module type: T
ch i ngư i dùng quy n truy c p vào h th ng
#add this line to your other login entries to disable all accounts login account required pam_deny.so
- Authentication module type: t
ch i truy c p, thi t l p giá tr m c đ nh. vd trong
/etc/pam.d/other. Khi ngư i dùng login vào h th ng, đ u tiên s g i các module trong /etc/pam.d/login ra và yêu c u ngư i dùng nh p thông tin tương password ), n u các thông tin này không đáp deny quy n truy c p. ng ( username,
ng thì PAM s g i /etc/pam.d/other ra đ
#/etc/pam.d/other
www.nhipsongcongnghe.net
auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_deny.so password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_deny.so
- Password module type: Không cho phép change password
ví d không cho phép ngư i dùng đ i passwd Thêm dòng sau vào /etc/pam.d/passwd password required pam_deny.so
_ pam_limits.so - Support module type: session Thi t l p các gi i h n tài nguyên trong /etc/security/limit
username|@groupname type resource limit.
A resource can be one of these keywords: core - Limits the size of a core file (KB). data - Maximum data size (KB). fsize - Maximum file size (KB). memlock - Maximum locked-in memory address space (KB). nofile - Maximum number of open files. rss - Maximum resident set size (KB). stack - Maximum stack size (KB). cpu - Maximum CPU time in minutes. nproc - Maximum number of processes. as - Address space limit. maxlogins - Maximum number of logins allowed for this user.
Thông tin chi ti t
trong /etc/security/limits.conf
Vd dư i đây, t t c user gi i h n 10 MB m i session và cho phép max là 4 logins đ ng th i. ftp đư c cho phép 10 login đ ng th i ( h u ích cho anonymous ftp ); thành viên c a nhóm manager gi i h n 40 process, nhóm developers gi i h n 64MB b nh , và các user thu c wwwusers không th t o files l n hơn 50 MB = 500000 KB.
Listing 3. Setting quotas and limits
www.nhipsongcongnghe.net
* hard rss 10000 * hard maxlogins 4 * hard core 0 bin ftp hard maxlogins 10 @managers hard nproc 40 @developers hard memlock 64000 @wwwusers hard fsize 50000
active các limits này, b n c n thêm dòng sau vào cu i /etc/pam.d/login:
session required /lib/security/pam_limits.so.
_ pam_listfile.so
Module này đ c thông tin trong file và th c hi n hành đ ng đư c thi t l p ( như cho phép hay không cho phép truy c p ) d a vào s username, host, groups, … t n t i hay không c a các nhân t như
Ví d trong vsftpd auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/ftpusers onerr=succeed
Yêu c u PAM load pam_listfile module và đ c trong /etc/ftpusers, n u /etc/ftpusers ch a các dòng username, thì PAM s s d ng sense=deny đ quy t đ nh ngăn c n các user này
truy c p vào. V y các user trong /etc/ftpusers s ko có quy n truy c p vào ftp.
_ pam_rootok.so
S
d ng module này đ yêu c u root không c n nh p password khi th c hi n chương
trình, vd nó đư c gán vào su đ chi r ng root không c n gõ passwd khi đánh l nh su
_pam_wheel.so Ch cho phép quy n truy c p root v i group wheel. Ví d ch cho phép nh ng ngư i thu c nhóm wheel có quy n su lên root.
# # root gains access by default (rootok), only wheel members can # become root (wheel) but Unix authenticate non-root applicants.
www.nhipsongcongnghe.net
# auth sufficient pam_rootok.so auth required pam_wheel.so auth required pam_unix_auth.so
-----------------> Tham kh o Document: http://www.kernel.org/pub/linux/libs/pam/pre/doc/ Mã ngu n module: http://cvs.sourceforge.net/viewcvs.py/pam/Linux-PAM/modules/
www.nhipsongcongnghe.net
Cách biên d ch nhân (kernel)
1. L y kernel v :
Kernel source có th
t iv
t
http://www.kernel.org . B n stable hi n t i là
2.4.21 và developer là 2.5.73. N u b n không mu n test nh ng ch c năng m i c a kernel thì nên s d ng 2.4.21 cho công vi c hàng ngày.
2. Bung nén và chu n b kernel: gi ch y các dòng l nh dư i b n s
s
b nv at iv
linux-2.4.21.tar.bz2, sau khi
s n sàng cho vi c compile kernel
2a. $mv linux-2.4.21.tar.bz2 /usr/src/
2b. $cd /usr/src && tar -xvjf linux-2.4.21.tar.bz2
2c. $ln -s linux-2.4.21 linux
n đây b n đã s n sàng cho vi c compile nhưng đôi lúc có l m t patch nào đó thì có th
b ns
c n apply
ch y l nh sau trong thư m c /usr/src/linux
$patch -p1 --dry-run < /đ a đi m/và tên/c a patch
Lưu ý: --dry-run s
'gi
đò' apply cái patch nhưng th c s phòng h
chưa làm gì h t. B n
nên xài --dry-run trư c khi apply đ
cái patch không ph i cho kernel
b n đang xài ho c patch còn b l i. Sau khi ch y --dry-run và không th y báo l i gì thì b n có th tên/c a patch th t s apply patch b ng l nh $patch -p1 < /đ a đi m/và
3. Compile kernel: s
đư c th c hi n v i các l nh sau đây:
3a. $make menuconfig (ho c make config, ho c make xconfig) s
h ib nm t xài
lo t câu h i cho kernel phù h p v i máy c a b n. N u b n bi t ch c mình s m t ch c năng nào đó thì nên tr n u b n lư ng l l i Y còn không thì tr l i N, tr
l i M (module)
không bi t cái ph n c ng c a mình s
xài driver này hay driver
khác, nh t là ph n cho network card hay sound card. N u b n không rõ câu h i này h i cái gì thì gõ h s có ph n gi i thích khá rõ ràng.
www.nhipsongcongnghe.net
B n có th
t iv
m t b n config m u mà mình xài cho máy Pentium3, Tekram
SCSI card, SB Live! sound card, bt848 Haupauge TV card, ext2/ext3/reiserfs/jfs/tmpfs/iso9660/vfat/ntfs và ipsec VPN compiled vô kernel, tulip, intel, realtek modules cho network cards, iptables và wireless modules. N u b n không c n cái nào thì ch vi c comment out (b cái d u #
phía trư c) cái hàng đó. Ch ng h n máy b n là Petium4 thì nên thay đ i v i giá tr tương trên. ng. Sau đó ch y l nh $make oldconfig thay vì $make menuconfig như
3b. $make dep s
chu n b các dependencies c n thi t
3c. $make clean s
d n d p .o files mà developers đ
quên và t o các source tree.
3d. $make bzImage s b ns
b t đ u th t s
compile kernel. N u m i chuy n suôn s
có bzImage n m trong thư m c /usr/src/linux/arch/i386/boot
3e. $make modules s menuconfig trên.
compile các modules b n ch n trong lúc ch y $make
3f. $make modules_install s
cài các modules vào thư m c /lib/modules/2.4.21
3g. $cp /usr/src/linux/arch/i386/boot/bzImage /boot/mykernel-2.4.21 s kernel image b n m i compile vô thư m c /boot.
cp
N u b n có SCSI card và compile SCSI card ho c filesystem (ext3, reiserfs,..v..) mà máy s d ng dư i d ng module thì b n ph i t o initial ramdisk v i l nh
$mkinitrd -o /boot/initrd-2.4.21.img /lib/modules/2.4.21. Còn n u b n đã compile SCSI card và filesytem vô luôn kernel thì bái bai initrd.
:
4. Chu n b boot loader
4a. N u b n dùng GRUB: t o h n m t section m i cho kernel c a b n b ng cách s a menu.lst v i l nh $vi /boot/grub/menu.lst gi s / c a b n n m trên
/dev/hda3 và /boot n m trên /dev/hda1, thêm vào nh ng hàng sau:
title MyKernel-2.4.21
www.nhipsongcongnghe.net
kernel (hd0,0)/boot/mykernel-2.4.21 root=/dev/hda3
initrd (hd0,0)/boot/initrd-2.4.21.img
N u b n không xài initrd thì không c n hàng cu i
trên.
4b. N u b n dùng LILO: t o h n m t section cho kernel c a b n b ng cách s a file lilo.conf v i l nh $vi /etc/lilo.conf thêm vào nh ng hàng sau:
image=/boot/mykernel-2.4.21
label=MyKernel-2.4.21
root=/dev/hda3
initrd=/boot/initrd-2.4.21.img
read-only
Nh
ch y l nh $lilo n u không b n s
không th y kernel m i c a mình khi reboot.
B n nên gi
l i /usr/src/linux/.config đ
mai này n u b n mu n compile 2.4.22
ch ng h n thì có th
xài l i nó b ng cách ch y $make oldconfig thay vì $make xóa đi /usr/src/linux/.config file và d n không th dùng
menuconfig. Lưu ý: $make mrproper s d p s ch s
các .o files và symlinks (ln -s command). B n s
config file c a kernel 2.4 cho kernel 2.5 đư c.
Hy v ng bài vi t này s
giúp b n hi u rõ hơn quá trình c p nh t kernel t
source.
Như thư ng l , cám ơn các bác trên #unixcircle đã cho feedback. M i góp ý xin g iv em_mê
[email protected]
www.nhipsongcongnghe.net
Làm reverse proxy v i Linux + Apache, B o v máy ch
1. Gi i thi u Chào các fan hâm m Linux, Bài vi t này ch y u d a trên hai tài li u là "Web Security Appliance With Apache and mod_security" c a Ivan, tác gi mod_security và "Securing Apache 2: Step-by-Step" c a Artur Maj. Bà con có th xem đây là m t b n d ch ti ng Vi t c a hai tài li u trên, kèm theo nh ng suy nghĩ riêng c a b n thân tôi d a vào kinh nghi m th c t khi tri n khai reverse proxy -0-. Bài vi t này có th xem là m t case study thu c t p tài li u "B o v máy ch an toàn v i ph n m m t do". Nhi m v c a chúng ta là b o v m t hay nhi u content web-server -1- n m trong vùng Internal -2-, các web-server này có th là Apache httpd, ho c Microsoft IIS, ho c có th ch là m t web-server đơn gi n đư c embedded vào m t ng d ng nào đó. hoàn thành nhi m v , chúng ta s t p trung vào xây d ng m t firewall/ids ho t đ ng t ng application, trong tài li u này g i là reverse-proxy, s d ng Apache httpd -3- trên n n Linux. 2. Reverse proxy là gì?
M t proxy, theo đ nh nghĩa, là m t thi t b đ ng gi a server và client, tham gia vào "cu c trò chuy n" gi a hai bên. Khái ni m proxy mà chúng ta thư ng dùng hàng ngày t t hơn nên đư c g i là m t forward proxy: m t thi t b đ ng gi a m t client và t t c server mà client đó mu n truy c p vào. M t reverse proxy làm công vi c hoàn toàn ngư c l i: nó đ ng gi a m t server và t t c client mà server này ph i ph c v . Reverse proxy gi ng như m t nhà ga kiêm m t tr m ki m soát, các request t client, b t bu c ph i ghé vào reverse proxy, t i reverse proxy s ki m soát, l c b các request không h p l , và luân chuy n các request h p l đ n đích cu i cùng là các server. Chú ý là m t reverse proxy có th luân chuy n request cho nhi u server cùng lúc. L i th l n nh t c a vi c s d ng reverse proxy là kh năng qu n lí t p trung. M t khi đã đ y đư c t t c traffic đi qua m t tr m ki m soát duy nh t (là reverse proxy), chúng ta có th áp d ng nhi u "đ ngh " khác đ tăng cư ng an ninh cho h th ng c a mình. Dĩ nhiên, b t kì s n ph m hay công ngh nào cũng có ưu và khuy t đi m c a nó, đi cùng v i single point of access bao gi cũng là "bóng ma" single point of failure. Single point of failure có th đư c gi i quy t b ng cách xây d ng cluster. ây là m t v n đ hoàn toàn vư t qua kh i ph m vi c a bài vi t này, tôi ch xin gi i thi u b nào mu n tìm hi u v cluster trên Linux thì th ghé vào http://www.linux-ha.org. Ngoài ra áp d ng reverse proxy đúng cách s giúp tăng cư ng performance cũng như nâng cao scalability c a các web-application ch y trên các content server. Chút xíu n a, tôi s đi vào chi ti t các ưu đi m c a reverse proxy cũng như làm th nào đ khai thác các ưu đi m đó. 3. Cài đ t máy ch reverse-proxy
www.nhipsongcongnghe.net
3.1. Ch n và cài đ t h đi u hành cho reverse proxy Dĩ nhiên là tôi s d ng linux cho máy ch reverse proxy. Tôi không mô t quá trình cài đ t linux đây b i có r t nhi u tài li u hay trên Internet nói v đ tài này, và hơn n a tôi nghĩ là m t khi đã nghĩ đ n chuy n làm reverse proxy thì ch c ch n chuy n cài đ t Linux không là v n đ .Linux có quá tr i distro, th mrro ch n distro nào? Theo tôi thì distro nào cũng như nhau c thôi, nhưng n u ai đó h i tôi câu h i trên thì câu tr l i s là Trustix -4-. B t k ch n distro nào, nh là sau khi cài đ t xong, hãy dành m t chút th i gian đ secure cái distro c a mình l i trư c khi đ c ti p -5-. Ph n ti p theo chúng ta s bàn v vi c cài đ t Apache httpd cũng như các module kèm theo c a nó. 3.2. 1.3.x hay 2.x? Trư c tiên, tôi nghĩ c n ph i tr l i câu h i là chúng ta s ch n phiên b n Apache nào đ làm reverse proxy đây, 1.3.x hay 2.x? Tôi ch n 2.x vì ba lý do: th nh t là tôi "nghe đ n" là có r t nhi u 0-day trong phiên b n 1.3.x . Lý do th hai là Apache 2.x cung c p m t b filtering API t t hơn so v i phiên b n 1.3.x, cho phép các module có th nhìn th y và tương tác v i n i dung c a các request cũng như các response tương ng t tr l i t server. i u này r t quan tr ng đ i v i m t reverse proxy đóng vai trò là m t application gateway b i vì nó ph i ki m tra t t c thông tin đi xuyên qua nó trư c khi chuy n giao cho bên nh n. -6-. Lý do cu i cùng là Apache httpd 2.x có performance cao hơn h n 1.3.x khi ph c v các static content như file HTML và file hình nh. Tôi quan tâm đ n v n đ này là vì tôi có ý đ nh gi m t i cho các content server bên trong b ng cách tách content ra làm hai lo i là dynamic (các lo i file CGI/Perl, PHP) và static (các file HTML và file hình nh), các content server ch ph c v dynamic content, còn t t c static content thì đưa qua máy ch reverse proxy luôn. Lúc đó khi các request c a client đi vào reverse proxy, n u request đó có đích đ n là m t static content, máy ch reverse proxy s tr l i luôn cho client mà không c n forward request đó đ n content server phía sau, ch nh ng request đ n các dynamic content m i đư c forward đ các content server x lí. Tôi s đi vào chi ti t v n đ này ph n sau, ch lưu ý m t đi u là cu i cùng tôi l i không dùng Apache httpd cho m c đích này mà l i s d ng m t máy ch web khác chuyên tr static content. 3.3. Ch n module cho Apache httpd Ngoài nh ng module mà tài li u "Securing Apache 2: step by step" đ ngh , chúng ta ph i ch n thêm các module sau đây: -mod_rewrite, mod_proxy, mod_proxy_http: các module này s h tr chúng ta trong vi c thi t l p reverse proxy. -mod_security: module này giúp chúng ta c u hình reverse proxy thành m t application firewall đ ch ng l i các d ng t n công thư ng th y vào các web-application ch y trên content server. -7-mod_ssl: module này giúp chúng ta mã hóa d li u c a các k t n i t client đ n server thông qua giao th c SSL và TLS, bi n giao th c HTTP không an toàn thành giao th c HTTPS r t b o m t. -8Ph n quan tr ng ti p theo là ch n m t MPM phù h p v i m c đích làm reverse proxy c a chúng ta. MPM là vi t t t c a c m t Multi-Processing Module, là m t c i thi n đáng k c a Apache httpd 2.x so v i Apache 1.x. Trong ki n trúc c a Apache 2.x, MPM đóng vai trò h t s c quan tr ng, nó ch u trách nhi m l ng nghe trên các c ng m ng, ch p nh n các yêu c u k t n i t phía client, và chuy n các yêu c u đó vào bên trong đ Apache httpd x lí 9-. Trong trư ng h p này tôi ch n MPM worker. MPM worker s d ng thread đ ph c v các request, do đó nó có kh năng ph c v m t lư ng l n các request nhưng l i t n r t ít tài nguyên so v i các process-based MPM khác như prefork. ng th i MPM worker v n khai thác đ c tính n đ nh c a cá process-based MPM b ng cách t o ra nhi u process đ trư c, m i process có nhi u thread đ s n sàng ph c v client -10-. 3.4. Biên d ch và cài đ t Apache httpd Câu h i k ti p là biên d ch các module theo ki u nào. Như chúng ta đ u bi t, có hai cách
www.nhipsongcongnghe.net
biên d ch các module trong Apache httpd. Cách th nh t, g i là phương pháp đ ng, là biên d ch các module thành các thư vi n liên k t chia s (tương t như các thư vi n DLL trên Windows). V i cách này, các module s đư c biên d ch thành các file .so, và s đư c t i lên khi Apache httpd kh i đ ng n u c n (tùy theo các câu l nh LoadModule trong file c u hình conf/httpd.conf). Cách biên d ch th hai, g i là phương pháp tĩnh, là gom t t c module nhét vào trong file bin/httpd luôn (link statically). Khi kh i đ ng và trong quá trình ch y, Apache httpd không c n ph i t i thêm module nào n a. Phương pháp tĩnh đư c xem là l a ch n t t hơn h t. Ch n phương pháp tĩnh, chúng ta không c n dùng đ n module mod_so (module c n thi t đ t i các file .so trong phương pháp đ ng). Hơn n a, theo khuy n cáo c a Apache, s d ng phương pháp tĩnh s giúp tăng 5% v m t performance so v i phương pháp đ ng. Chúng ta t i Apache httpd 2.x http://httpd.apache.org/download.cgi và t i mod_security t i http://www.modsecurity.org s d ng các l nh sau: CODE localhost$ localhost$ localhost$ localhost$
wget http://www.tux.org/pub/net/apache/dist/htt...d-2.0.54.tar.gz wget http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz tar -xzf httpd-2.0.54.tar.gz -C /usr/local/src tar -xzf modsecurity-1.8.7.tar.gz -C /usr/local/src
Tài li u kèm theo c a mod_security ch hư ng d n cách biên d ch mod_security thành m t thư vi n chia s c a Apache httpd, do đó chúng ta c n ph i chu n b đôi ch đ có th biên d ch tĩnh mod_security: CODE localhost$ localhost$ localhost$ localhost$
cd /usr/local/src mkdir -p httpd-2.0.54/modules/security cp modsecurity-1.8.7/apache2/mod_security.c httpd-2.0.54/modules/security cp httpd-2.0.54/modules/echo/Makefile.in httpd-2.0.54/modules/security
Okay, xong xuôi, b t đ u biên d ch như sau: CODE localhost$ cd /usr/local/src/httpd-2.0.54 localhost$ ./configure \ --with-mpm=worker \ --disable-charset-lite \ --disable-include \ --disable-env \ --disable-status \ --disable-autoindex \ --disable-asis \ --disable-cgid \ --disable-cgi \ --disable-negotiation \ --disable-imap \ --disable-actions \ --disable-userdir \ --disable-alias \ --disable-so \ --with-module=security:mod_security.c \ --enable-modules='ssl rewrite proxy proxy_http' N u quá trình biên d ch thành công, chúng ta s ti p t c như sau đ cài Apache httpd vào h th ng (t i thư m c m c đ nh là /usr/local/apache): CODE localhost$ make localhost$ su localhost# umask 022 localhost# make install localhost# chown -R root:sys /usr/local/apache
www.nhipsongcongnghe.net
3.5. i "root" c a server
Ph n này xin vui lòng tham kh o tài li u "Securing Apache 2:Step by Step." -m (còn ti p) Ph n sau: 4. C u hình Apache httpd làm reverse proxy ----------------------0-: Th c t ph n ti ng Vi t c a tài li u "Securing Apache 2: Step-by-Step" tôi sao chép khá nhi u t b n d ch và m r ng tài li u "Securing Apache: Step-by-Step" (http://www.securityfocus.com/infocus/1694) c a hnd aka conmale. Tham kh o thêm v b n d ch và m r ng c a anh conmale t i http://www.hvaonline.net/forum/index.php?a...T&f=161&t=46199 -1-: ngoài web-server ra, gi i pháp reverse proxy (ho c tương t ) có th áp d ng cho các d ch v khác như VNC (xem th http://sourceforge.net/projects/vnc-reflector/), mail (xem th tài li u "Qmail as the mail gateway" c a
[email protected]). Ch duy nh t m t d ch v tui chưa làm đư c reverse proxy là FTP, b nào có thông tin v ftp reverse proxy thì cho tui vài xu. -2-: chúng ta v n có th thi t l p reverse proxy đ b o v cho các web-server n m ngay vùng DMZ, ho c thi t l p m t reverse-proxy đ t ngay trong vùng Internal đ b o v các web-server vùng Internal t các m i hi m h a đ n t bên trong. -3-: Ngoài Apache httpd ra, còn có r t nhi u software khác có th đư c reverse proxy mà đáng k nh t là pound. Thao kh o thêm t i đ a ch http://www.apsis.ch/pound/. ng d ng đ làm
-4-: Trustix là m t distro nh g n (tr n b cài đ t ch có m t CD duy nh t) đư c xây d ng d a trên RedHat v i hai m c tiêu chính là b o m t và n đ nh. Phiên b n stable m i nh t c a Trustix là 2.2, phiên b n unstable là 3.0 RC2. Tham kh o thêm t i www.trustix.org. -5-: Tham kh o tài li u Linux Security HOWTO có t i http://www.tldp.org đ bi t thêm chi ti t. Ph n m m Bastille-Linuxcũng s r t h u d ng trong vi c secure cho các Linux server. -6-: Ch có s tác d ng. d ng Apache 2.x thì nh ng lu t c n l c OUTPUT c a mod_security m i có
-7-: Tham kh o thêm tài li u v mod_security t i đ a ch http://www.modsecurity.org và lo t kí s c a conmale v các v t n công DDoS vào HVA. -8-: K t phiên b n Apache httpd 2.0, mod_ssl đã đư c chính th c đưa vào Apache httpd. Tham kh o thêm tài li u v mod_ssl t i đ a ch http://www.modssl.org. -9-: Ch n l a MPM cho Apache 2.x là m t v n đ c c kì quan tr ng, nh hư ng r t nhi n đ n performance c a server, do đó tôi đ ngh nh ng ai quan tâm đ n Apache 2.x, nên tham kh o thêm tài li u v MPM t i http://httpd.apache.org/docs-2.0/mpm.html -10-: T i sao thread l i "ngon" hơn process v performance? Nh ng ai quan tâm đ n v n đ này xin tìm các tìm đ c các tài li u sau đây: Advanced Linux programming (http://www.advancedlinuxprogramming.com) Understanding the Linux kernel. Tác gi Mrro - Nhóm HVAonline
www.nhipsongcongnghe.net
ng d ng t p tin htaccess trên máy ch Apache
ng d ng t p tin htaccess trên máy ch Apache - 15/11/2004 12h:37 B n đã t ng nghe v t p tin .htaccess trên các máy ch h Unix (FreeBSD, Linux, Solaris, True64...)? B n bi t r ng t p tin này có th đi u khi n đư c khá nhi u th , th m chí thay đ i đư c c thi t l p m c đ nh c a máy ch Apache http://apache.org/. Th nhưng b n đã t n d ng đư c bao nhiêu l nh trong t p tin này đ làm cho website c a mình m nh m , an toàn hơn? Trong bài vi t t ng h p này, tác gi s cùng b n nghiên c u, ng d ng m t s l nh thông d ng nh t đ th c hi n các tác v b o v , đi u khi n website theo ý b n mu n. Nào, xin m i b n! T o trang báo l i mang màu s c cá nhân Trong quá trình làm vi c v i client, n u có l i x y ra (ví d như không tìm th y t p tin) thì Apache s báo l i b ng m t trang có s n hi n th mã s c a l i đó, r t không đ p và khó hi u. V i .haccess thì b n có th t t o các trang báo l i hay hơn. làm đư c đi u này thì trong t p tin .htaccess b n thêm dòng sau: ErrorDocument mã s l i /trangloi.html Trong đó mã s l i là mã s c a l i phát sinh, sau đây là nh ng l i hay g p: 401 400 403 500 404 Authorization Required (c n password đ truy nh p) Bad request (L i do yêu c u) Forbidden (không đư c vào) Internal Server Error (l i server) Wrong page (l i trang, không tìm th y...)
còn trangloi.html là trang web mà b n mu n hi n th khi l i phát sinh, có th đưa vào t p tin này n i dung hay đ ho gì tùy b n, ch ng h n liên k t tr v trang chính c a trang web. Ví d : ErrorDocument 404/trangloi.html ho c: ErrorDocument500/loi/500.html Bây gi b n hãy t i (upload) 2 t p tin .htaccess và trangloi.html lên hosting c a mình. Ch ng ăn c p băng thông (bandwidth) Thông thư ng nh ng d ch v lưu tr web ch cung c p cho b n m t lư ng d li u luân chuy n (data transfer) nh t đ nh hàng tháng và khi b n s d ng h t lư ng d li u này, website c a b n s t đ ng b đóng c a. B n s ph i tr thêm ti n cho lư ng băng thông vư t quá ho c ph i bu c lòng ch đ n tháng sau. N u hình nh, d li u, … c a b n b các website khác “ăn tr m” (b ng các th thu t đơn gi n) làm cho lư ng d li u luân chuy n c a b n tăng lên, thì có nghĩa là b n s ph i tr ti n cho cái mà b n không s d ng. S d ng t p tin .htaccess là m t gi i pháp hoàn h o, đ ngăn ch n vi c s d ng hình nh trái phép trên website c a b n. B n ch vi c đưa vào t p tin .htaccess n i dung sau : RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] đo n mã trên tôi s d ng module Rewrite c a máy ch Apache, b n ch vi c thay đ i trangweb.com thành đ a ch website c a mình. Có th s d ng m t hình nh nào đó c nh cáo nh ng k “ăn tr m” băng thông, b n dùng dòng l nh sau:
www.nhipsongcongnghe.net
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC] RewriteRule \.(gif|jpg)$ http://www.trangweb.com/diehotlinker.jpg [R,L] Không cho hi n danh sách t p tin trong thư m c Trong trư ng h p m t thư m c nào đó không có t p tin index ho c default, 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 ngư i khác th y, hãy thêm l nh sau vào t p tin .htaccess Options –Indexes Thay th trang index Thông thư ng khi truy nh p vào m t trang web, Apache s tìm t p tin index.htm ho c default.htm tr k t qu v cho trình duy t, b n có th dùng .htaccess thay đ i m c đ nh này. DirectoryIndex index.php index .php3 messagebrd.pl 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 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. C m/h n ch IP truy nh p M t s ngư i mu n làm ng p (flood) trang web c a b n, vi c c n làm là ngăn c m nh ng IP c a nh ng ngư i này truy nh p vào trang web, b n thêm đo n mã sau vào .htaccess: deny from 203.262.110.20; cho phép IP truy nh p: allow from 203.262.110.20. N u b n ch vi t IP dư i d ng: 203.262.110 thì s c m t t c IP trong d i t 203.262.110.1 đ n 203.262.110.254. S d ng dòng l nh sau: Deny from all s c m t t c m i truy nh p đ n các trang web trong thư m c, tuy nhiên các t p tin trong đó v n có th đư c s d ng t bên ngoài thông qua các l nh d ng require hay include (trong l p trình PHP), có th xem thêm mã ngu n c a PHPBB forum,IBF... đ hi u rõ hơn. T đ ng chuy n đ n đ a ch m i (Redirection)
B n chuy n trang web c a mình đ n đ a ch m i nhưng không ph i ai cũng bi t đi u này, redirect truy nh p t xa m t cách đơn gi n b ng l nh sau: Redirect/olddirectory http://www.trangwebmoi.com/thumucmoi ; 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: 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 http://www.trangweb.com/in dex.dll Lưu ý khi s d ng t p tin .htaccess:
www.nhipsongcongnghe.net
- Ch áp d ng trên máy ch Apache đã b t ch đ .htaccess, n u chưa b n hãy th v i nhà cung c p dich v hosting. liên h
t o ra t p tin này b n có th s d ng ngay chương trình Notepad c a Windows: ch n ch đ save as v i tên .htaccess, nhưng khi lưu nh b đuôi txt. -.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à thư m c con, còn vô tác d ng v i thư m c m (parent directory). - B n có th dùng m t s chương trình FTP (Leaf FTP, WS FTP, Cute FTP) đ t i t p tin .htaccess lên hosting c a mình v i ch đ ASCII, n u nó không ho t đ ng b n th CHMOD v i giá tr 644.