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
tồ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
Kh i đ ng h th ng t
b CDROM:
b đĩa CD cài đ t ( CD s 1), và nh n Enter t
đ m c đ nh cài đ t theo ch đ đ ho . Chương trình cài đ t s t
d u nh c kh i đ ng
đ 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 q 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 q 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 q 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 hồ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
nh t là /dev/had,
c ng th
hai là /dev/hdb. Trong cùng m t
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 thì đĩa c ng th
dĩa, các h th ng file đư c
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
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 q 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
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
ho c
n u b n v n chưa hi n th đư c tiêng Vi t 100%
.fontconfig homepage t i .
.ttmkfdir có th t i v t
/>
.mkfontdir n m trong gói XFree86-3x (ho c XFree86-4x)
. Viet Unicode có nhi u fonts />
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 tồn cho m t h
minh ho
th ng Linux (đ
d
kinh nghi m nh m nâng cao
theo dõi cho b n đ c, chúng tôi s
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
Microsoft Windows là do tính
thành m t đ i th
n đ nh, đ
ti m nǎng c a h
linh ho t và kh
nh ng đ c đi m quan tr ng hàng đ u c a m t h
đi u hành
nǎng ch u t i l n: đây là
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
c n ph i n m đư c m t s
gi i thi u m t s
Linux (đ
d
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
kinh nghi m nh m nâng cao tính an toàn cho m t h
theo dõi cho b n đ c, chúng tôi s
b n Linux r t ph
bi n
1.1. Lo i b
b ng RedHat, m t phiên
các account và nhóm đ c bi t
t tc
Vi t Nam và trên th
minh ho
th ng
gi i).
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
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 xố)
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
xố account lp như
sau:
# userdel lp
Tương t
như v y, có th
th c hi n vi c xố 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
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 khá d
dàng, đ c bi t vì cơ ch
và ngày nay kh
nǎng tính tốn và x
các account
th c hi n đư c (và có th
mã hỗ 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
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
3.3. T
d ng r ng rãi hi n nay)
đ 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
đó: K
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
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 thố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
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ó
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
nh t là đ t nó vào file /etc/profile dòng l nh sau: (gi
là 600 giây)
th ng v n duy trì d u
s
th ng, cách đơn gi n
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
đ 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
d ch v
(và đa s
là các d ch v
nên nhi u nguy cơ 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
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
ph n m m/d ch v
RedHat) ho c s
không s
d ng (qua công c
d ng công c
ntsysv đ
đ t r i vơ hi u hố nh ng d ch v
d ch v
không s
D ch v
h
y u đã bi t.
duy t xem t t c
các d ch v
không c n thi t (b ng cách b
không mong mu n s
thông tin v
cho phép truy xu t h
th ng, d
qu n tr gói ph n m m rpm c a
đang cài
đánh d u các
d ng v i phím Space). Sau khi thốt ra kh i ntsysv thì kh i
đ ng l i máy: các d ch v
5.5. Khơng ti t l
các gói
h
th ng qua telnet
th ng t
xa telnet có kh
t o đi u ki n cho nh ng k
i u này r t d
không ch y n a.
nǎng ti t l
phá ho i t n công d a vào nh ng đi m
nh n th y: M i ngư i dùng k t n i t
telnet đ u nh n đư c thông tin v
thông tin v
xa vào d ch 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
"Login:" cho nh ng ngư i k t n i t
các thông tin và ch in ra d u nh c
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
cách c u hình l i telnetd s
khác nhau tuỳ theo phiên b n RedHat đang 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
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
M c dù
d ng các d ch v
khơng mã hố thơng tin trên đư ng truy n
trên chúng tơi đã trình bày cách ngǎn d ch v
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
telnet ti t l
thông tin,
d ng nh ng d ch v
ftp anonymous) vì nh ng d ch v
mã hoá m t kh u khi truy n qua m ng. B t kỳ m t k
ki u
này hoàn toàn khơng
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 (Secure Shell) dùng cơ ch
thông tin, th c hi n mã hoá c
Hi n đang đư c s
ssh thay th
cho c
mã hố cơng khai đ
ftp và
b om t
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
d ng hồn tồn mi n phí. (B n đ c có th
www.openssh.org v
có
tham kh o website
s n ph m này).
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ã hố 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
Có th
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
c a máy truy xu t d ch v
7. 7. C m s
phá ho i s
h pl .
d ng account root t
consoles
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
account thư ng m i có th
telnet trên h
th ng (ch nh ng
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à
HISTSIZE: Bi n môi trư ng HISTFILESIZE xác đ nh s
s
l nh (gõ t i d u nh c shell)
đư 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
HISTSIZE và đ t b ng 0 giá tr HISTFILESIZE đ
gi m giá tr c a
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
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. Xố b
nh ng chương trình SUID/SGID khơng s
Thông thư ng, nh ng
hi n
m ts
d ng
ng d ng đư c th c hi n dư i quy n c a account g i th c
ng d ng. Tuy nhiên, Unix và Linux s
d ng m t k thu t đ c bi t cho phép
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
đ i m t kh u c a mình trong khi khơng h
m i user trong 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
đư c cài đ t c
t it
tình b i nh ng k
đ u có th
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
mà khơng có quy n root đư c th c hi n nh
nào đó t o đư c m t shell (ví d
k thu t này: k
th ng
phá ho i b ng cách
bash) đư c qu n lý b i root, có thu c tính SUID.
Sau đó m i truy xu t phá ho t s
hi n trong shell s
t i ho c do
đư 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
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
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
ch t ch : khá nhi u l
th ng. Do đó, vi c s
h ng có th
d ng m t h
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
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
B n đ c có th
v i các tính nǎng b o m t th t
h
là r t quan
đi u hành - đư c thi t k
t t thì
gi m đi r t nhi u.
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
đ c có th
b o m t t i đ a ch www.grsecurity.net. T i đây b n
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.
sung cho h
www.nhipsongcongnghe.net
B om th
1.
th ng *nix v i PAM
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 –
+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
+limits.conf – thi t l p các gi i h n tài nguyên h th ng, đư c s
+pam_env –
i u khi n kh năng thay đ i các bi n môi trư ng, s
d ng b i pam_limits.so.
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ó ln 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.
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 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ì q 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 đốn đư c q 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 hồn thành ngay q 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
password ), n u các thông tin này không đáp
deny quy n truy c p.
#/etc/pam.d/other
ng ( username,
ng thì PAM s g i /etc/pam.d/other ra đ
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: />Mã ngu n module:
/>
www.nhipsongcongnghe.net
Cách biên d ch nhân (kernel)
1. L y kernel v :
Kernel source có th
t iv
t
. 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
nên xài --dry-run trư c khi apply đ
phịng h
chưa làm gì h t. B n
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
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
khơng bi t cái ph n c ng c a mình s
l i N, tr
xài
l i M (module)
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 đ
3d. $make bzImage s
b ns
b t đ u th t s
quên và t o các source tree.
compile kernel. N u m i chuy n sn s
có bzImage n m trong thư m c /usr/src/linux/arch/i386/boot
3e. $make modules s
menuconfig
compile các modules b n ch n trong lúc ch y $make
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ơ ln 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