Security On Linux System
Power by: N.X.Bi O==(=========> ^($)^ Supporter Of VTF)
(E-mail: binhnx2000@yahoo.com | Home: http://www.vieteam.com/)
M đầu: Tôi là mt Fan ca Linux, mt người yêu thích Security. Tôi rt thích Linux, đặc bit là
kh năng tuyt vi ca nó. Tôi viết tài liu này ch vi mc đích mun chia s vi mi người mt
chút hiu biết ít i ca tôi v Security Linux...Không h có bt c mc đích nào khác. Nhng gì
tôi chia s trong tài liu này đều có ngun gc t các: Magazine, Book, Site, Forum, List...v
Linux Security trên thế gii. Nhng gì tôi cm thy hay và thc s có ích, tôi đã thc hành th
tìm cách ghi li mt cách ngn gn d hiu nht trong tài liu này. Thiếu xót là điu không th
tránh khi, rt mong nhn được s góp ý và ch bo thng thn t phía các bn. Đây ch
Version Demo ca tài liu. Nếu nhn được s ng h, đón nhn nhit tình cũng như s góp ý và
giúp đỡ thng thn t phía các bn. Tôi s tiếp tc hoàn thin tài liu này để phc v mi người
mt cách tt hơn.
Bn có th tham gia din đàn trao đổi, tho lun v Unix/Linux vi chúng tôi :
http://www.vieteam.com/vtf (Unix/Linux Section)
Lưu ý: Bài viết này ch mang tính cht hc hi và trao đổi kinh nghim…Các bn có th t do s
dng nó, nhưng mong các bn tôn trng Copright mt chút. Khi cn trích dn ch nào trong tài
liu. Vui lòng ghi rõ ngun và tên người viết…Rt cm ơn bn đã quan tâm đến bài viết ca tôi.
1) V s phân cp, quyn hn, s hu cho File
S phân cp, quyn và s s hu rõ ràng đơn gin đã to lên sc mnh bo mt ca
Unix/Linux. Vn đề đầu tiên mà chúng ta cn kim tra có l là s phân cp, quyn hn, s hu
các File trên h thng ca bn. Nếu không được cu hình mt cách chính xác điu này hết sc
nguy him. Cho lý do này bn lên thường xuyên kim toán h thng File trên Server ca bn.
Đặc bit lên chú ý đến ID ca root. Có mt s chương trình cho phép người s dng trên h
thng ca bn có th t do Set UID mà không cn root. Chc tôi không cn nói, bn cũng biết là
phi làm gì vi các chương trình loi này ri ch ? Bây gi chúng ta tìm các File có s phân cp,
quyn hn không n định trên h thng ca bn và sau đó điu chnh li giá tr an toàn cho
chúng:
root@localhotst# find / -type f -perm +6000 -ls
59520 30 -rwsr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
59560 16 -r-sr-sr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
root@localhotst# chmod -s /usr/bin/chage /usr/bin/lpq
root@localhotst# ls -l /usr/bin/lpq /usr/bin/chage
-rwxr-xr-x 1 root root 30560 Apr 15 1999 /usr/bin/chage
-r-xr-xr-x 1 root lp 15816 Jan 6 2000 /usr/bin/lpq
Các dòng lnh trên tìm các File có UID root hay tương đương root. Tiếp đó gán thuc tính ch
cho phép root mi có quyn thc thi nó.
Chúng ta tiếp tc tìm nhng File cho phép ghi li trên h thng ca bn. Điu gì s xy ra nếu k
tn công có th t do thay đổi ni dung các File ?
root@localhost# find / -perm -2 ! -type l -ls
Trong các thao tác bình thường vic ghi, thay đổi ni dung File thường được thc hin các thư
mc như /dev /tmp...Nếu bn thy các thư mc khác mà các File li có th t do ghi li
được thì có l là có vn đề ny sinh ri đó.
Bn cũng lên quan tâm đến các File không có ch s hu (không thuc bt c User hay Group
nào). Tt nhiên là không ai s hu chúng thì k tn công rt có th s s hu chúng ;-( Để tìm
các File không có ch s hu bn dùng lnh:
root@localhost# find / -nouser -o -nogroup
Vi vic s dng lnh "lsattr" và "chattr" bn có th thay đổi đặc tính cho các File và thư mc
dưới cp độ cao cp ca mt qun tr h thng như kh năng điu khin quá trình xoá File, thay
đổi File và vi nhng tính năng khác mà lnh "chmod" không th thc hin được.
Vic cp phát quyn hn s hu cho File theo mt quy tc thng nht, trong sut, không thay
đổi...T ra có hiu qu đặc bit trong vic ngăn chn quá trình xoá, thay đổi các tp tin Log ca
k tn công, hay vic cài đặt Trojan vào nhng File nh phân Binnary trên h thng ca bn.
Lnh "chattr" được s dng để gán hay g b quyn hn s hu cho File, thì lnh "lsattr" được
s dng để lit kê chúng.
Các File Log cn phi được bo v mt cách hp lý. Khi d liu được ghi vào File Log mt ln,
nó s không th được phép chnh sa hay thay đổi. S d có nhu cu này, bi hin ti có rt
nhiu Script cho phép k tn công tn công xoá b, chnh sa ni dung trên File Log. Để xiết
cht hơn an toàn cho File Log chúng ta cn s dng lnh "chattr" và "lsattr" vi mt vài đối
tượng:
root@localhost# chattr +i /bin/login
root@localhost# chattr +a /var/log/messages
root@localhost# lsattr /bin/login /var/log/messages
----i--- /bin/login
-----a-- /var/log/messages
Tóm li! sau phn này bn lên chú ý: Không bao gi cho phép người s dng được phép chy
các chương trình Set UID, hay nhng chương trình khác có đặc quyn như root trên Home
Directory ca bn. Luôn kim toán và quan tâm đến h thng File trên Server ca bn, đặc bit là
vi nhng loi File có nguy cơ cao đã nêu trên.
- Bn lên s dng tu chn nouid trong /etc/fstab để cho phép s chnh sa ghi li các khu
vc đã định vi tng người s dng.
- Tính năng noexec nodev cho các File trong Home Directory ca người dùng để không cho
phép h t động thc thi các chương trình hay to các thiết b Block.
2) Vô hiu hoá các Service không s dng
Để tránh tình trng "đêm dài lm mng" bn lên vô hiu hoá và g b nhng chương trình,
Service không dùng đến trên h thng ca mình. Bn có th s dng các công c qun lý để
hin th danh sách nhng gói phn mm nào đã được cài đặt để thc hin vic này (Redhat
Package Manager - Linux )
V cơ bn! các Service được định nghĩa hot động bi inetd (trên mt s h thng Linux mi nó
có thxinetd). Ni dung Service được định nghĩa hot động bi inetd được cha
/etc/inetd.conf . Mi Service được định nghĩa đằng sau ký t "#"...Bn có th vô hiu hoá
Service không s dng.
Thư mc /etc/rc*.d/etc/rc.d/rc* là nơi cha các Shell Script và các thông s để điu khin s
thc hin ca Network và Service trong sut thi gian nó hot động. Bn có th xoá b hết
nhng th liên quan đến nhng Service mà bn không cn s dng. Đối vi h thng Redhat,
SuSE, Mandrake...bn có th s dng lnh:
root@localhost#chkconfig --list
root@localhost#chkconfig --del <name>
Để hin th nhng Service nào đang hot động và xoá b Service nào mà bn mun. Bn mun
kim tra xem Service nào đó thc s đã được gõ b khi h thng chưa ?
/bin/netstat -a -p --inet
Trên Redhat, SuSE, Mandrake...chương trình được s dng để qun lý các gói phn mm là
/bin/rpm (Redhat Package Manager). Trên Debian là /usr/bin/dpkg (Debian Package ). Dưới
đây là mt s dòng lnh cơ bn được dùng để qun lý các gói phn mm. Dòng đầu srpm
và dòng th hai sdpkg:
G b mt gói phn mm:
root@localhost# rpm -e <package-name>
root@localhost# dpkg -r <package-name>
Lit kê danh sách nhng gói đã được cài đặt:
root@localhost# rpm -qvl <package-name.rpm>
root@localhost# dpkg -c <package-name.deb>
Lit kê danh sách nhng gói đã được cài đặt vi thông tin chi tiết cho mi gói:
root@localhost# rpm -qvia
root@localhost# dpkg -l
Lit kê thông tin chính xác các File ca gói đã được ch định:
root@localhost# rpm -qvpl <package-name.rpm>
root@localhost# dpkg -c <package-name.deb>
Hin th thông tin v mt gói phn mm:
root@localhost# rpm -qpi <package-name.rpm>
root@localhost# dpkg -I <package-name.deb>
Kim tra tính toàn vn cho mt gói phn mm:
root@localhost# rpm -Va
root@localhost# debsums -a
Cài đặt mt gói phn mm mi:
root@localhost# rpm -Uvh <package-name.rpm>
root@localhost# dpkg -i <package-name.deb>
3) S kim tra tính toàn vn ca các gói phn mm
Lnh "md5sum" s dng thut toán 128 bit để xác định chui Finger Print ca mt gói phn
mm. Vi mc đích đảm bo s toàn vn ca các gói phn mm t nhà cung cp đến người s
dng. Nó có th cho ta biết v s thay đổi ca các gói phn mm trên h thng ca bn.
root@localhost# md5sum package-name
995d4f40cda13eacd2beaf35c1c4d5c2 package-name
Có l bn vn chưa hiu được li ích thc s ca "md5sum" trong thế gii bo mt. Tôi s ly
mt ví d đơn gin. Khi k tn công đã đột nhp được vào h thng ca bn, chúng s cài đặt và
s dng các Rootkit. Thc cht là các chương trình thông dng ca Admin như: netstat, ps,
ls...đã được chnh sa để cho ra thông tin sai che mt bn. Vy làm thế nào để biết được điu
này ?
Chng hn như chui MD5 mc định ca "netstat" khi cài đặt h thng SuSE Linux ca tôi là
"995d4f40cda13eacd2beaf35c1c4d5c2"
Bây gi khi tôi chy "md5sum" vi "netstat" :
root@localhost# md5sum /usr/bin/netstat
995d4f40cda13eacd2beaf35c1c7d8c1 /usr/bin/netstat
Thông tin v chui không khp nhau, điu gì đã xy ra vy ? Câu tr li này dành cho bn.
4) S dng Tripwire
Tripwire mt chương trình theo dõi nhm đảm bo tính toàn vn ca File bi vic duy trì s hot
động ca mt cơ s d liu nhng File được cài đặt trên h thng...Cũng như s cnh báo khi
chúng có s thay đổi.
Khi cài đặt Tripwire s đọc, thu thp thông tin v trng thái các File trên h thng ca bn và ghi
chúng vào mt cơ s d liu. Sau này khi Tripwire chy nó s đối chiếu các FIle trên h thng
ca bn vi cơ s d liu chun. Nếu có s thay đổi nó s thông báo cho bn.
Có mt File chính được s dng để cu hình hot động tng th cho Tripwire. Thông thường vi
thông s mc định nó cũng đã t ra khá hiu qu. Nếu như bn không rành v Tripwire, bn lên
s dng thông s mc định ca nó. Dưới đây là mt s dòng lnh thông dng
To File ni quy t mt Text File
root@localhost#: /usr/TSS/bin/twadmin -m P policy.txt
Khi to cơ s d liu theo File ni quy chính:
root@localhost#: /usr/TSS/bin/tripwire -init
Hin th cơ s d liu:
root@localhost#: /usr/TSS/bin/twprint -m d
To thông báo kết qu theo ngày:
root@localhost#: /usr/TSS/bin/tripwire -m c -t 1 -M
Cp nht cơ s d liu theo File ni quy và báo cáo hàng ngày:
root@localhost#: /usr/TSS/bin/tripwire --update --polfile policy/tw.pol \
--twrfile report/<hostname>-<date>.twr
5) S dng giao thc SSH
Nếu có th tôi khuyên bn lên cho Service "Telnet" ngh hưu và thay vào đó bng Service "SSH".
Mc dù Telnet rt tuyt nhưng nó li không cung cp kh năng mã hoá d liu trên đường
truyn, điu gì s xy ra khi có mt Sniffer đặt đâu đó trên đường truyn.
Để cài đặt OpenSSH bn cn Down gói *.rpm t Site ca hãng cung cp phin bn Linux mà bn
đang dùng v. Vic cài đặt t gói *.rpm khá đơn gin, tôi không đề cp đến.
Lưu ý: Nh Down và cài thêm OpenSSL, bi để hot động OpenSSH cn mt s Lib ca
OpenSSL.
Chi tiết v vic s dng OpenSSH bn có th tham kho bài viết "Open SSH" ca tôi
http://www.polarhome.com/~vicki
V căn bn OpenSSH s dng nhng Public Key để đảm bo s an toàn. Public Key được cp
phát cho bt c h thng nào mà bn mun truyn thông an toàn:
host2$ ssh-keygen
Generating RSA keys: ...ooooooO....ooooooO
Key generation complete.
Enter file in which to save the key (/home/binhnx2000/.ssh/identity):
Created directory '/home/binhnx2000/.ssh'.
Enter passphrase (empty for no passphrase): <passphrase>
Enter same passphrase again: <passphrase>
Your identification has been saved in /home/binhnx2000/.ssh/identity.
Your public key has been saved in /home/binhnx2000/.ssh/identity.pub.
The key fingerprint is:
ac:42:11:c8:0d:b6:7e:b4:06:6a:a3:a7:e8:2c:b0:12 binhnx2000@host2
Tiếp đến Copy các Key để s dng:
host2$ mkdir -m 700 ~dave/.ssh
host2$ cp /mnt/floppy/identity.pub ~binhnx2000/.ssh/authorized_keys
Bây gi t h thng ca bn, nếu mun Login vào h thng này ch vic phát lnh:
root@localhost$ ssh host2
Enter passphrase for RSA key 'binhnx2000@localhost': <passphrase>