Squid sử dụng cơ chế chứng thực HTTP Digest để chứng thực người dùng trong mạng. Đây là kiểu chứng thực có mức độ bảo mật cao hơn kiểu chứng thực Basic.
# Mail server
$IPT -A remote-tcp-int -p tcp --dport 25 \ -d $INTMAIL -m state --state NEW -j ACCEPT # Web server access (public web)
$IPT -A remote-tcp-int -p tcp -m multiport \ --dport 80,443 -d $INTWEB -m state \ --state NEW -j ACCEPT
# Redirect internal web access to proxy
$IPT –t nat –A PREROUTING –i $LANIF –p tcp -m multiport \ -–dport 80,443 –j REDIRECT –to-port $SQUIDPORT
Trang 114
Phân quyền truy cập vào một số địa chỉ không an toàn đối với người dùng.
Chỉ cho phép người dùng trong mạng truy cập web vào khoảng thời gian làm hành chính trong ngày. Đồng thời trong khoảng thời gian này, người dùng chỉ được phép truy cập vào một số trang web và không được phép truy cập vào một số trang web khác.
Vì Squid là server proxy duy nhất trong mạng nên mọi truy cập đến những server proxy khác là không được phép. Vì thế mọi cấu hình giao tiếp với proxy khác sẽ không được đề cập trong mô hình thử nghiệm này.
Ngoài ra Squid có thể cho phép cấu hình thành một transparent proxy. Ta biết rằng chức năng chứng thực sẽ không thực hiện được khi cấu hình Squid thành một transparent proxy, vì thế ta cần phải chỉ có thể chọn một trong hai. Nếu lựa chọn cấu hình Squid là một transaprent proxy thì cần phải loại bỏ những chỉ thị cấu hình chứng thực và ngược lại. Squid sẽ đưa ra cảnh báo nếu kiểm tra file squid.conf và thấy nội dung không phù hợp.
Người dùng trong mạng không những bị giới hạn về một số trang web truy cập bằng ACL mà còn cấm truy cập ở những trang web được cấu hình bởi bộ chuyển hướng. Trong mô hình thử nghiệm này tôi đã sử dụng bộ chuyển hướng SquidGuard là một bộ chuyển hướng được sử dụng rất nhiều khi kết
http_port 3128 transparent
acl NotWorkSite dstdomain "etc/squid3/etc/notworksites" acl WorkingHours time D 08:00-17:30
http_access deny !WorkingHours NotWorkSite acl PornSites url_regex "/etc/squid3/pornlist" http_access deny PornSites
auth_param digest program /usr/lib/squid3/digest_pw_auth \ -c /etc/squid3/zdigestpass
auth_param digest children 5
auth_param digest realm Squid proxy-caching web server auth_param digest nonce_garbage_interval 5 minutes auth_param digest nonce_max_duration 30 minutes auth_param digest nonce_max_count 50
Trang 115
hợp với proxy Squid. Việc cấu hình cho SquidGuard sẽ không được đề cập ở đây. Như vậy trong tập tin cấu hình squid.conf cần thêm vào chỉ thị sau:
4.4. Chia sẽ tập tin và máy in
Để thử nghiệm chia sẽ file bằng Samba server giữa người dùng Window và Linux, tôi đã tổ chức lại mô hình như sau:
Hình 4.3 Mô hình chia sẽ tập tin và máy in
4.4.1. Phân quyền chia sẽ tập tin bằng Samba
Trong mô hình trên, ta giả sử có những yêu cầu đối với hệ thống mạng như sau. Mỗi người dùng trong mạng đều có một thư mục riêng trên server chia sẽ. Khi người dùng login vào thì người dùng đó sẽ có một thư mục tên private sẽ lưu những nội dung riêng tư của người dùng đó. Trong những thư mục này không được lưu trữ những tập tin thực thi (.exe). Ngoài ra, mỗi người dùng là thành viên của một trong ba nhóm: root, accounting, marketing. Trong đó, nhóm accounting và marketing có hai thư mục cho người dùng trong nhóm dùng chung. Người dùng trong nhóm root sẽ toàn quyền quản lý và truy cập
url_redirect_program /usr/bin/squidGuard \ –c /etc/squid/squidGuard.conf
Trang 116
vào tất cả các thư mục khác kể cả thư mục private của những người dùng khác. Cuối cùng, mọi người dùng trong mạng đều có thể truy cập một thư mục chung cho toàn mạng là public.
User Login-ID Password Directory Group
Root root 123 /data root
Alan Meany alan 123 /data/alan accounting
Peter Pan peter 123 /data/peter acounting
Dale Roland dale 123 /data/dale marketing
Russell Lewis russell 123 /data/russell marketing Bảng 4.1 Người dùng trong mạng thử nghiệm
Để đáp ứng yêu cầu trên ta thực hiện những công việc sau:
Thêm mới 2 nhóm là acounting, và marketing bằng lệnh groupadd.
Tạo một thư mục /data thuộc quyền sở hữu của người dùng root. Trong thư mục này, tạo những thư mục con trùng với tên người dùng (xem bảng 25).
Tạo 2 thư mục con là accounting, marketing trong thư mục /data thuộc quyền sở hữu của nhóm tương ứng. Ngoài ra còn tạo thêm một thư mục chia sẽ chung là public cũng trong thư mục này và thuộc quyền sở hữu của nhóm nogroup, người dùng là nobody.
root# mkdir /data
root# mkdir /data/{public,accounting,marketing} root# for i in alan peter dale russll
>do
> mkdir –p /data/$i > chown $i /data/$i >done
root@zserver-desktop:~# groupadd accounting root@zserver-desktop:~# groupadd marketing
Trang 117
Gán quyền truy xuất tập tin và thư mục cho người dùng và nhóm. Những người dùng không thuộc nhóm sẽ không thể truy xuất được. Riêng với thư mục public, nhằm cho phép mọi người đều sử dụng ta cũng cho phép mọi người dùng của nhóm khác cũng được phép truy xuất.
Thực hiện cấu hình tập tin smb.conf như sau:
root# chmod –R ug+rxws,o-r+x /data root# chmod –R ugo+rxws /data/public
root# mkdir /data/{public,accounting,marketing}
root# chgrp accounting /data/accounting root# chgrp marketing /data/marketing
root# chgrp nogroup /data/public root# chowm nobody /data/public
Trang 118
4.4.2. Phân quyền chia sẽ máy in
Trong mô hình thử nghiệm, ngoài yêu cầu chia sẽ tập tin, người dùng còn chia sẽ máy in. Mọi máy in trong hệ thống mạng đều được quản lý bởi một chương trình. CUPS là một server quản lý được sử dụng rất phổ biến và được tích match sẵn trong hệ điều hành Ubuntu. Trình quản lý này có thể quản lý máy in được đặt tại một địa chỉ IP hay đang kết nối vào máy server bằng một giao tiếp nào đó. Ngoài ra, CUPS còn cho phép nhóm nhiều máy in cùng mục đích thành một class. Như vậy, những yêu cầu gởi đến một class sẽ được server chọn ra máy in còn rỗi trong class để thực hiện công việc.
[global]
workgroup = WORKGROUP
username map = /etc/samba/smbusers wins support = Yes
[accounting]
comment = Accounting Files path = /data/accounting
valid users = @accounting root force group = accounting
read only = No
[marketing]
comment = Marketing Files path = /data/marketing
valid users = @marketing root force group = marketing
read only = No
[master]
comment = Administrator directory path = /data
valid users = root read only = No
[public]
comment = Share for all users path = /data/public
guest ok = Yes read only = No
[private]
comment = Your private folder path = /data/%U
valid users = %U veto files = *.exe read only = No
Trang 119
Để quản lý máy in bằng CUPS ta có thể dùng trình quản lý bằng giao diện trong Ubuntu bằng cách vào System->Administration->Printing hoặc bằng dòng lệnh sudo system-config-printer. Ngoài ra ta có thể quản lý máy in bằng lệnh lpadmin. Chẳng hạn, để thêm mới một máy in tại địa chỉ 10.10.10.190 và một máy in kết nối trực tiếp với máy chủ thông qua cổng song song lp0 ta dùng lệnh sau:
Để thực hiện phân quyền chỉ có cho người dùng alan và peter được phép sử dụng máy in PRIQ như sau:
Người dùng Linux và Window đều sử dụng được những máy in được chia sẽ thông qua server CUPS. Đối với người dùng Window, để kết nối để một máy in tại một server CUPS ta sẽ thêm một máy in tại địa chỉ http://zserver- desktop:631/printers/PRIQ. Trong đó zserver-desktop là tên máy chủ chạy CUPS và PRIQ là tên máy in.
Ngoài ra CUPS còn có thể tích match vào Samba để chia sẽ cho người dùng trong mạng. Với cấu hình sau, người dùng trong nhóm accounting sẽ được phép sử dụng máy in Canon-PIXMA-iP8500.
4.4.3. Phân tích log của Squid bằng Webalizer
Sau một thời gian sử dụng Squid, quản trị viên có thể thống kê hoạt động của Squid như như thế nào. Có rất nhiều chương trình bổ trợ có thể thực hiện
[global]
printcap name = CUPS
show add printer wizard = No printing = CUPS
[Canon-PIXMA-iP8500]
comment = Canon Printer for accounting group printable = Yes
printer = Canon-PIXMA-iP8500 path = /var/tmp
valid users = @accounting
root# lpadmin -p PRIQ –u allow:alan, peter
root# lpadmin -p PRIQ -v socket://10.10.10.190:9100 –E root# lpadmin -p hplj -v parallel:/dev/lp0 -E
Trang 120
việc này. Webalizer là một trong số các chương trình đó. Webalizer hoạt động bằng cách dựa vào tập tin log, cụ thể là access.log để phân tích xem quá trình hoạt động của Squid như thế nào. Webalizer cung cấp một số chức năng sau:
Căn cứ vào thông tin trong file log để tạo thành các thống kê dạng HTML.
Thống kê tình hình sử dụng được thể hiện theo các chu kì hàng năm, tháng, ngày, giờ.
Thống kê tình hình truy cập các site, URL, dung lượng truy xuất, …. Trong quá trình thực tập, tôi đã thống kê được một số kết quả như sau: 1. Thông tin tổng kết lưu lượng truy xuất dạng biểu đồ cột theo từng tháng
Hình 4.4 Thống kê dạng biểu đồ cột theo từng tháng
2. Thông tin tổng kết lưu lượng truy xuất dạng bảng theo từng tháng
Trang 121 3. Thống kê trong một tháng
Hình 4.6 Thống kê chi tiết trong tháng
4. Thống kê theo các ngày sử dụng trong tháng
Trang 122 5. Thống kê theo URL
Hình 4.8 Thống kê top url
Webalizer còn cung cấp một số thống kê khác, khóa luận này xin không đề cập ở đây. Ngoài Webalizer còn có nhiều chương trình khác cũng có thể phân tích file log của Squid.
Trang 123
Chƣơng 5
TỔNG KẾT
5.1. Kết quả đạt đƣợc
Theo yêu cầu đặt ra ban đầu là tìm hiểu Firewall iptables trên linux kết match với proxy squid nhằm bảo vệ tốt hơn cho mạng bên trong, đồng thời cũng tìm hiểu việc trao đôi thông tin giữa người dùng Window và Linux, cho đến thời điểm hiện tại tôi đã thu được một số kết quả sau:
Tìm hiểu được các mô hình Firewall.
Tìm hiểu Firewall iptables.
Cấu trúc module của iptables.
Các bảng và chain trong iptables.
Quy trình các gói tin đi qua các chain của các bảng
Cú pháp viết luật cho iptables.
Tìm hiểu được và biết được proxy là gì. Mục đích cũng như ứng dụng của nó.
Tìm hiểu về proxy Squid.
Một số loại luật trong Squid.
Chứng thực người dùng.
Kết match với iptables để tạo thành một transparent proxy.
Tìm hiểu hệ điều hành Ubuntu Linux.
Tìm hiểu Samba server và cách chia sẽ file với người dùng Window, đồng thời phân quyền chia sẽ.
Tìm hiểu CUPS và chia sẽ máy in. Kết match CUPS và Samba để chia sẽ máy in.
Tìm hiểu cơ chế hoạt động mạng của phần mềm máy ảo VMware.
Trang 124
Mặc dù tôi đã cố gắng hết sức để hoàn thành đề tài nhưng với khoảng thời gian nghiên cứu không được lâu và sự thiếu hụt về mặc thiết bị, không có điều kiện tốt để làm thí nghiệm nên vẫn tồn tại những hạn chế sau:
Chưa thực hiện được mô hình lab trên máy thực mà chỉ sử dụng mô hình ảo hóa bằng công cụ máy ảo VMware.
Một số chức năng chứng thực trong Squid chưa được thử nghiệm. Nhất là những trình hỗ trợ chứng thực có liên quan đến miền Window.
Chưa có điều kiện tổ chức mô hình mạng nhiều proxy Squid với cấu trúc phân cấp và thử nghiệm sự giao tiếp giữa các proxy này.
Chưa có điều kiện cho phép người dùng Linux tham gia vào miền do hệ điều hành Window quản lý.
5.3. Hƣớng nghiên cứu
Mã nguồn mở là một hướng phát triển mà nhiều người quan tâm. Để mở rộng hơn nữa tính thực tiễn của đề tài, cần phải nghiên cứu thêm và thực hiện được mô hình mạng doanh nghiệp vừa và nhỏ. Cần phải đưa thêm các dịch vụ mạng cần thiết khác như email, quản lý người dùng, dịch vụ thư mục, và những dịch vụ khác cũng như yêu cầu bảo mật khác.
Hiện nay, những phần mềm nguồn mở và hệ điều hành mạng nguồn mở đã có thể đủ sức để thực hiện quản lý một mạng hoàn thiện. Người dùng có thể lựa chọn nhiều phát hành dựa trên nhân Linux để sử dụng. Bằng cách sử dụng phần mềm nguồn mở, các công ty, tổ chức có thể tiết kiệm được một khoảng đầu tư khá lớn cho vấn đề bản quyền phần mềm.
Cùng với sự phát hành phiên bản 4.0 của Samba server và hệ điều hành Ubuntu Linux 9.10, người dùng Linux đã có thể thực hiện xây dựng được máy quản lý miền cũng như sử dụng máy tính với giao diện thân thiện và thoải mái hơn. Người dùng hoàn toàn có thể dùng Linux thay thế cho Window. Những phần mềm nguồn mở hiện nay rất phong phú và cũng ngày càng dể sử dụng hơn.
Trang 125
TÀI LIỆU THAM KHẢO Sách tham khảo
[1]. Stain Reimer, Orin Thomas
MCSA/MCSE Self-Paced Training Kit (Exam 70-350): Implementing Microsoft Internet Security and Acceleration Server 2004, Microsoft Press, 2005
[2]. Christopher Negus
Linux® Bible 2008 Edition: Boot Up to Ubuntu®, Fedora®, KNOPPIX, Debian®, openSUSE®, and 11 Other Distributions, Wiley Publishing, Inc, 2008
[3]. Michael Jang
Ubuntu ® Server Administration, McGraw-Hill, 11/2008 [4]. William von Hagen
Ubuntu® Linux® Bible, Wiley Publishing, Inc, 2007 [5]. Sander van Vugt
Beginning Ubuntu Server Administration From Novice to Professional, Apress, 2007
[6]. Keir Thomas, Andy Channelle, Jaime Sicam
Beginning Ubuntu Linux: From Novice to Professional, Fourth Edition, Apress, 2009
[7]. Steve Suehring, Robert Ziegler
Linux Firewalls, Third Edition, Sams Publishing, September 14, 2005 [8]. Roderick W. Smith
Advanced Linux Networking, Addison Wesley, June 11, 2002 [9]. John H. Terpstra
Samba-3 by Example: Practical Exercises to Successful Deployment, Second Edition, Prentice Hall PTR, August 08, 2005
Trang 126
Designing and Implementing Linux Firewalls and QoS using netflter, iproute2, NAT, and L7-flter, Packt Publishing, 2006
[11].Duane Wessels
Web Caching, O'Reilly & Associates, Inc, 2001 [12].Duane Wessels
Squid: The Definitive Guide, O'Reilly, January 2004
Websites [1]. http://squid-cache.org [2]. http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_ Ch14_:_Linux_Firewalls_Using_iptables [3]. http://iptables-tutorial.frozentux.net/iptables-tutorial.html [4]. http://www.kmasecurity.net/xforce/showthread.php?t=4877 [5]. http://www.linuxlinks.com/article/20080429140249467/Security.html [6]. http://www.asianuxvietnam.vn/forum/viewtopic.php?f=23&p=47 [7]. http://www.cyberciti.biz/tips/linux-unix-squid-proxy-server- authentication.html [8]. http://patchlog.com/security/squid-digest-authentication/