Cai dat redhat linux 8.0

Document Sample
Cai dat redhat linux 8.0 Powered By Docstoc
					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.   ơn gi n, b n có th dùng Partition Magic đ phân chia
đĩa.


§ 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   d ng b
nh     o, làm không gian trao đ i. Thông thư ng, dung lư ng b nh      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    b c c a Linux, cao nh t là “/”, dư i đó là /boot, /etc, /root, /mnt
.v.v.


   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           c ng thì đĩa c ng th
nh t là /dev/had,     c ng th   hai là /dev/hdb. Trong cùng m t    dĩa, các h th ng file đư c
chia thành các phân vùng khác nhau. M t        c ng có 4 phân vùng chính (primary) đư c
đánh s th    t   t   1 đ n 4. tương   ng v i   c ng đ u tiên s là hda1, hda2 .v.v, phân vùng
thu c ph n m r ng (extended) đư c đánh s b t đ u t          s 5: ví d hda5, hda6 …


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.
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.         ây chính là
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                               n ti ng Vi t trên
                                         Linux


Có 2 cách cài đ t Unicode fonts cho X Window.
1. S   d ng ttmkfdir (cách cũ)
2. S   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   đây
thì m i xem và in đư c ti ng Vi t.


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          kinh nghi m nh m nâng cao
tính an toàn cho m t h        th ng Linux (đ    d     theo dõi cho b n đ c, chúng tôi s
minh ho     b ng RedHat, m t phiên b n Linux r t ph              bi n    Vi t Nam và trên th
gi i).




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            thành m t đ i th       ti m n ng c a h    đi u hành
Microsoft Windows là do tí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
c n ph i n m đư c m t s         k n ng nh t đ nh. Trong bài vi t này, chúng tôi xin
gi i thi u m t s       kinh nghi m nh m nâng cao tính an toàn cho m t h              th ng
Linux (đ    d   theo dõi cho b n đ c, chúng tôi s        minh ho        b ng RedHat, m t phiên
b n Linux r t ph       bi n   Vi t Nam và trên th       gi i).


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               t tc    các account và nhóm
(group) đã đư c t o s n trong h           th ng nhưng không có nhu c u s           d ng, ví d
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                    th ng
c a mình r i hãy xoá)


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        in    n trên h    th ng, có th      xoá account lp như
sau:


# 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 lưu ngay trong file /etc/password, file có quy n đ c b i t t c            các account
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
đ u đư c mã hoá, nhưng vi c gi i mã ngư c là có th              th c hi n đư c (và có th
th c hi n khá d       dàng, đ c bi t vì cơ ch      mã hoã m t kh u không ph i là khó phá
và ngày nay kh        n ng tính toán và x       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              d ng phương
pháp này, đ      đ 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        d ng các phiên b n RedHat g n đây (ví d          RedHat 6.x hay
7.x) thì nh     ch n l a Enable the shadow password khi cài đ t RedHat đ            s   d ng
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      đi vì m t s    công vi c khác. Th t nguy hi m n u lúc đó có
m tk      phá ho i     đó: K   này có th    d    dàng có quy n truy xu t h     th ng    m c
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             đ ng thoát ra kh i
shell khi không có s      truy xu t nào trong m t kho ng th i gian đ nh trư c b ng
cách đ t m t tham s        quy đ nh kho ng th i gian h        th ng v n duy trì d u nh c
shell.


Mu n cài đ t tham s        này, ngư i s     d ng bi n môi trư ng TMOUT và gán cho nó
m t giá tr s     th   hi n kho ng th i gian tính b ng giây h         th ng v n duy trì d u
nh c.        th c hi n đi u này cho t t c       các account trong h    th ng, cách đơn gi n
nh t là đ t nó vào file /etc/profile dòng l nh sau: (gi          s   ta đ t kho ng th i gian
là 600 giây)
www.nhipsongcongnghe.net

TMOUT=600


Như v y là n u trong kho ng 10 phút ngư i s             d ng không truy xu t shell, shell
s   t   đ ng thoát ra. Tuy nhiên c n chú ý: M o này s            không " n" n u lúc đó ngư i
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          không ph i v i b t kỳ m t chương trình
nào khác.


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           th ng t     đ ng b t ch y khá nhi u
d ch v    (và đa s    là các d ch v    không mong mu n), d n t i t n tài nguyên và gây
nên nhi u nguy cơ v         b o m t. Ngư i qu n tr nên lo i b        ngay l p t c các d ch v
không dùng t i ngay sau khi cài máy. Ho c đơn gi n b ng cách xoá b                  các gói
ph n m m/d ch v         không s     d ng (qua công c      qu n tr gói ph n m m rpm c a
RedHat) ho c s       d ng công c      ntsysv đ     duy t xem t t c    các d ch v    đang cài
đ t r i vô hi u hoá nh ng d ch v          không c n thi t (b ng cách b       đánh d u các
d ch v    không s     d ng v i phím Space). Sau khi thoát ra kh i ntsysv thì kh i
đ ng l i máy: các d ch v        không mong mu n s        không ch y n a.


5.5. Không ti t l     thông tin v     h   th ng qua telnet


D ch v    cho phép truy xu t h        th ng t    xa telnet có kh    n ng ti t l   thông tin v
h   th ng, d   t o đi u ki n cho nh ng k           phá ho i t n công d a vào nh ng đi m
y u đã bi t.    i u này r t d     nh n th y: M i ngư i dùng k t n i t         xa vào d ch v
telnet đ u nh n đư c thông tin v          tên máy, phiên b n Linux và phiên b n c a
nhân (kernel) c a máy ch .


    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               d ng inetd n a (mà
s   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
cách c u hình l i telnetd s       khác nhau tuỳ theo phiên b n RedHat đang s            d ng.


+ 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,
nhưng chúng tôi xin có l i khuyên: Tuy t đ i tránh s     d ng nh ng d ch v      ki u
như telnet, ftp (ngo i tr   ftp anonymous) vì nh ng d ch v    này hoàn toàn không
h   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       d ng d ch v       ssh thay th   cho c   ftp và
telnet: d ch v    SSH (Secure Shell) dùng cơ ch         mã hoá công khai đ      b om t
thông tin, th c hi n mã hoá c     m t kh u l n thông tin chuy n trên đư ng truy n.
Hi n đang đư c s      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    7.0 tr   lên m c đ nh đ u cài OpenSSH, m t s n ph m mã ngu n m               có
th   s   d ng hoàn toàn mi n phí. (B n đ c có th          tham kh o website
www.openssh.org v        s n ph m này).


Ngoài ra, nh ng d ch v      "r" ki u như rsh, rcp hay rlogin chúng tôi cũng khuyên
nên tuy t đ i tránh s     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        phá ho i s    d ng k thu t spoofing
đ u có th    d    dàng đánh l a đư c cách ki m tra này khi "làm gi " đư c đ a ch
c a máy truy xu t d ch v      h pl .


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
không có quy n k t n i telnet vào d ch v      telnet trên h      th ng (ch nh ng
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           qua nh ng k t
n i qua m ng. D ch v      ftp cũng s   b h n ch     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           đi nh ng
console b n không mu n root truy nh p t           đó.


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à
HISTSIZE: Bi n môi trư ng HISTFILESIZE xác đ nh s        l nh (gõ t i d u nh c shell)
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
l 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
HISTSIZE và đ t b ng 0 giá tr HISTFILESIZE đ        gi m t i đa nh ng nguy hi m đã
nêu trên.


     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   đư c
th c hi n.      tránh nh ng s   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       ng d ng đư c th c hi n dư i quy n c a account g i th c
hi n     ng d ng. Tuy nhiên, Unix và Linux s   d ng m t k thu t đ c bi t cho phép
m ts      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).          ây chính là lý do t i sao t t c   m i user trong h
th ng đ u có th       đ i m t kh u c a mình trong khi không h           có quy n truy xu t
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
chương trình có tính n ng th c thi đư c qu n lý b i root, do thi t k           t i ho c do
đư c cài đ t c      tình b i nh ng k    phá ho i mà l i có thu c tính SUID thì m i đi u
t it    đ u có th    x y ra. Th c t    cho th y, khá nhi u k thu t xâm nh p h         th ng
mà không có quy n root đư c th c hi n nh            k thu t này: k      phá ho i b ng cách
nào đó t o đư c m t shell (ví d         bash) đư c qu n lý b i root, có thu c tính SUID.
Sau đó m i truy xu t phá ho t s         đư c th c hi n qua shell này vì m i l nh th c
hi n trong shell s     đư 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
hi n v i quy n nhóm là nhóm qu n lý chương trình ch             không ph i nhóm c a
ngư i ch y chương trình.


Như v y, ngư i qu n tr s       ph i thư ng xuyên ki m tra xem trong h           th ng có
nh ng     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         v i các tính n ng b o m t th t
ch t ch : khá nhi u l      h ng có th     b l i d ng b i nh ng tin t c thông th o v        h
th ng. Do đó, vi c s      d ng m t h      đi u hành v i nhân đư c c ng c       là r t quan
tr ng: M t khi nhân - ph n c t lõi nh t c a h         đi u hành - đư c thi t k     t t thì
nguy cơ b phá ho i s       gi m đi r t nhi u.


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
đ c có th   tìm hi u thông tin h u ích và t i xu ng các mi ng vá b   sung cho h
th ng Linux c a mình.
www.nhipsongcongnghe.net

            B om th                    th ng *nix v i PAM

1.      tv nđ


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 –     i u khi n quy n truy c p, đư c s   d ng cho thư vi n pam_access.so.
+group.conf –     i u khi n nhóm ngư i dùng, s    d ng b i pam_group.so
+limits.conf – thi t l p các gi i h n tài nguyên h th ng, đư c s     d ng b i pam_limits.so.
+pam_env –       i u khi n kh năng thay đ i các bi n môi trư ng, s    d ng cho thư vi n
pam_env.so .
+time – Thi t l p h n ch th i gian cho d ch v và quy n ngư i dùng, s        d ng cho thư
vi n pam_time.so.


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
ngư i dùng truy c p d ch v t    m t host và trong th i gian cho phép hay không.
www.nhipsongcongnghe.net


Password: thi t l p password. Thông thư ng, nó luôn có s         tương   ng gi a m t module
auth và m t module password..


Session: đi u khi n các nhi m v qu n lý session.         ư cs    d ng đ đ m b o r ng ngư i
dùng s   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          giai đo n
nào.


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     d ng các t     khóa ALL=t t c ,
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.
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         ng ( username,
password ), n u các thông tin này không đáp      ng thì PAM s g i /etc/pam.d/other ra đ
deny quy n truy c p.


#/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    t n t i hay không c a các nhân t như
username, host, groups, …


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          s   b nv at iv    linux-2.4.21.tar.bz2, sau khi
ch y các dòng l nh dư i b n s          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             b ns     c n apply
m t patch nào đó thì có th          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       chưa làm gì h t. B n
nên xài --dry-run trư c khi apply đ        phòng h    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    th t s   apply patch b ng l nh $patch -p1 < /đ a đi m/và
tên/c a patch


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
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               xài
m t ch c năng nào đó thì nên tr          l i Y còn không thì tr   l i N, tr   l i M (module)
n u b n lư ng l     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   ng. Sau đó ch y l nh $make oldconfig thay vì $make menuconfig như
trên.


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 t đ u th t s   compile kernel. N u m i chuy n suôn s
b ns    có bzImage n m trong thư m c /usr/src/linux/arch/i386/boot


3e. $make modules s      compile các modules b n ch n trong lúc ch y $make
menuconfig    trên.


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            cp
kernel image b n m i compile vô thư m c /boot.


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
menuconfig. Lưu ý: $make mrproper s      xóa đi /usr/src/linux/.config file và d n
d p s ch s   các .o files và symlinks (ln -s command). B n s   không th   dùng
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ê_compile_kernel@vnlinux.org
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. -8-

Ph 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$   wget http://www.tux.org/pub/net/apache/dist/htt...d-2.0.54.tar.gz
localhost$   wget http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz
localhost$   tar -xzf httpd-2.0.54.tar.gz -C /usr/local/src
localhost$   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$   cd /usr/local/src
localhost$   mkdir -p httpd-2.0.54/modules/security
localhost$   cp modsecurity-1.8.7/apache2/mod_security.c httpd-2.0.54/modules/security
localhost$   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 hnd@diendantinhoc.org). 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   ng d ng đ làm
reverse proxy mà đáng k nh t là pound. Thao kh o thêm t i đ a ch
http://www.apsis.ch/pound/.

-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   d ng Apache 2.x thì nh ng lu t c n l c OUTPUT c a mod_security m i có
tác d ng.

-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   -   Authorization Required (c n password đ truy nh p)
-   400   -   Bad request (L i do yêu c u)
-   403   -   Forbidden (không đư c vào)
-   500   -   Internal Server Error (l i server)
-   404   -   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      liên h
v i nhà cung c p dich v hosting.

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

				
DOCUMENT INFO
Shared By:
Tags: Unix, Linux, ebook, learn
Stats:
views:244
posted:8/27/2010
language:Vietnamese
pages:33
Description: Unix, Linux, ebook, learn