Nghiên cứu, triển khai dịch vụ squid proxy server trên centos
Trang 1Th.S Phạm Văn HưởngBùi Huy Đức
Trang 2MỤC LỤC
Trang
MỤC LỤC 1
DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT 4
DANH MỤC CÁC HÌNH 5
LỜI MỞ ĐẦU 7
Chương I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH CENTOS 9
1.1 Lịch sử phát triển Linux 9
1.2 Giới thiệu về hệ điều hành Linux CentOS 5.x 10
1.3 Cấu trúc tập tin trên Linux CentOS 11
1.3.1 Cấu trúc tập tin 11
1.3.2 Loại tập tin 11
1.3.3 Cấu trúc cây thư mục 12
1.4 Quyền hạn của người dùng với tập tin 13
1.5 Một số câu lệnh cơ bản trên Linux CentOS 14
Chương II: PROXY SERVER 16
2.1 Tổng quan về Proxy Server 16
2.1.1 Định nghĩa Proxy 16
2.1.2 Proxy Server 16
2.1.3 Sự cần thiết của Proxy Server 17
2.1.4 Hoạt động của Proxy Server 18
2.1.5 Khuyết điểm của Proxy Server 20
2.2 Tìm hiểu về dịch vụ Squid Proxy 20
2.2.1 Giới thiệu về Squid Proxy 20
2.2.2 Cài đặt Squid Proxy 21
2.3 Cấu hình Squid Proxy 22
2.3.1 Tập tin cấu hình 22
2.3.2 Một số tùy chọn cơ bản 23
2.3.2.1 http_port 23
Trang 32.3.2.2 ACL (Danh sách điều khiển truy cập) 23
2.3.2.3 Kiểm soát truy nhập tới Proxy Server 24
2.3.2.4 cache_peer 26
2.3.2.5 Bộ nhớ Cache 26
2.4 Khởi động Squid 27
2.4.1 Danh sách các tùy chọn 27
2.4.2 Một số tùy chọn quan trọng 28
2.4.2.1 Tìm phiên bản của Squid 28
2.4.2.2 Tạo thư mục swap 28
2.4.2.3 Kiểm tra lỗi của tập tin cấu hình 29
2.4.2.4 Tải lại tập tin cấu hình 29
2.4.2.5 Kiểm tra trạng thái của một quá trình chạy Squid 30
2.5 Tập tin log và định dạng log 30
2.5.1 Tập tin log 30
2.5.1.1 cache.log 30
2.5.1.2 access.log 32
2.5.1.3 referer.log 33
2.5.2 Định dạng log 34
2.6 Quản lý Squid và giám sát lưu lượng 37
2.6.1 Cache Manager 37
2.6.1.1 Cài đặt Apache Web server 37
2.6.1.2 Cấu hình Apache 37
2.6.1.3 Truy cập giao diện web cache manager 38
2.6.1.4 Một số liên kết quan trọng 40
2.6.2 Phân tích log 45
2.6.2.1 Cài đặt Calamaris 45
2.6.2.2 Sử dụng Calamaris tạo số liệu thống kê 45
2.7 Xác thực bảo vệ Proxy Server 47
2.7.1 Xác thực Bacsic 48
2.7.2 Xác thực Digest 49
Trang 42.7.3 Xác thực NTLM 51
2.7.4 Xác thực Negotiate 52
2.8 Kết hợp Squid với Firewall 53
Chương III: CÀI ĐẶT VÀ CẤU HÌNH DỊCH VỤ SQUID PROXY CHO HỆ THỐNG MẠNG NỘI BỘ 54
3.1 Mô hình ứng dụng 54
3.2 Cài đặt Squid 55
3.3 Cấu hình Squid 56
3.3 Cấu hình Client truy cập Internet thông qua Proxy Server 58
3.4 Access List Control điều khiển truy cập Internet người dùng 60
3.4.1 Cấm các máy client truy cập một số trang website không cho phép .60 3.4.2 Cho phép truy cập internet ngoài giờ hành chính 61
3.5 Dùng NCSA kiểm định Password cho quá trình truy cập Internet 61
3.6 Giới hạn nội dung Download 62
3.7 Một số giới hạn cấu hình trên Squid Proxy 63
3.7.1 Giới hạn truy cập theo IP 63
3.7.2 Giới hạn truy cập theo giao thức 64
3.7.3 Giới hạn truy cập theo cổng 64
3.8 Dùng Sarg theo dõi log 64
3.9 Kết hợp Squid và Firewall 70
3.9.1 Cài đặt gói iptables 70
3.9.2 Cấu hình NAT OUT trên Firewall 72
3.9.3 Sự quản lý của Squid sau khi đã cấu hình Firewall 72
KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 75
Trang 5DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
văn bản
Internet
Interface
Giao diện hệ thống máy tính nhỏ
trên mạng
Protocol/Internet Protocol
Giao thức tầng mạng và tầng giao vận
Hình 1.1: Cấu trúc cây thư mục 14
Hình 1.2: Cấu trúc logic hệ thống tập tin 14
Hình 1.3: Mô tả quyền và ký tự trên tập tin 15
Hình 2.1: Kết nối giữa Clien với Server qua Proxy Server 19
Trang 6Hình 2.2: Danh sách tùy chọn của Squid 30
Hình 2.3: Phiên bản của squid 30
Hình 2.4: Kết quả câu lệnh tạo swap 31
Hình 2.5: Hiển thị lỗi cấu hình trước khi chạy squid 31
Hình 2.6: Hiển thị của câu lệnh kiểm tra trạng thái 32
Hình 2.7: Phiên bản, một số thông tin về nền tảng, tiến trình của squid 32
Hình 2.8: Số lượng tập tin mô tả để squid hoạt động 33
Hình 2.9: Thông tin về hệ thống DNS squid sẽ khởi tạo 33
Hình 2.10: Trạng thái modules được kích hoạt khi biên dịch squid 33
Hình 2.11 : Hiển thị thông tin về logfile, unlink, local cache digest, store log 33
Hình 2.12: Hiển thị thông báo lỗi và cách sửa chữa 34
Hình 2.13: Thông điệp access.log 35
Hình 2.14: Thông điệp access.log sau khi chuyển đổi 35
Hình 2.15: Thông điệp referrer.log 36
Hình 2.16: Thông số cần chỉnh trong tập tin conf.d của Apache 40
Hình 2.17: Giao diện đăng nhập của Cache manager 41
Hình 2.18: Danh sách menu của cache manager 42
Hình 2.19: Nội dung thông tin của General Runtime information 42
Hình 2.20: Nội dung thông tin của IP cache stats and Content 43
Hình 2.21: Nội dung thông tin của FQDN Cache Statistics 44
Hình 2.22: Nội dung thông tin của HTTP Header Statistics 44
Hình 2.23: Nội dung thông tin của Traffic and Resource Counters 45
Hình 2.24: Nội dung thông tin của Cache Client List 46
Hình 2.25 : Nội dung thông tin của Memory Utilization 47
Hình 2.26: Số liệu thống kê theo định dang văn bản 48
Hình 2.27: Số liệu thống kê theo dạng đồ thị 49
Hình 3.1: Mô hình triển khai Squid Proxy Server cho mạng nội bộ 57
Hình 3.2: Kiểm tra Squid đã cài đặt hay chưa 57
Hình 3.3: Mount ổ đĩa 57
Hình 3.4: Cài đặt Squid 58
Trang 7Hình 3.5: File cấu hình squid.conf 58
Hình 3.6: Chỉnh sửa thông số Port 59
Hình 3.7: Chỉnh sửa thông số cache_mem 59
Hình 3.8: Chỉnh sửa thông số cache_dir 59
Hình 3.9: Kiểm tra tên máy 60
Hình 3.10: Chỉnh sửa thông số visible_hostname 60
Hình 3.11: Khai báo thông số ra Internet 60
Hình 3.12: Restart lại dịch vụ Squid 60
Hình 3.13: Khởi tạo thư mục Swat 60
Hình 3.14: Cấu hình Client ra ngoài Internet 61
Hình 3.15: Kết quả kiểm tra sau khi cấu hình Client ra Internet 61
Hình 3.16: Tạo danh sách trang web 62
Hình 3.17: Khai báo thông số chặn truy cấp tới một số trang web 62
Hình 3.18: Kết quả kiểm tra sau khi thực hiện chặn một số trang web 62
Hình 3.19: Khai báo thông số cho phép truy cập vào giờ quy định 63
Hình 3.20: Tạo người dùng huyduc 63
Hình 3.21: Tạo người dùng bằng câu lệnh htpasswd 63
Hình 3.22: Khai báo thông số xác thực auth_param basic program 63
Hình 3.23: Khai báo thông số chứng thực 64
Hình 3.24: kết quả kiểm tra sau khi cấu hình chứng thực 64
Hình 3.25: Tạo giới hạn các file 65
Hình 3.26: Khai báo thông số giới hạn nội dung download 65
Hình 3.27: Kết quả kiểm tra sau khi giới hạn nội dung download 65
Hình 3.28: Khai báo thống số giới hạn theo IP 66
Hình 3.29: Khai báo thống số giới hạn theo giao thức 66
Hình 3.30: Khai báo thống số giới hạn theo Port 66
Hình 3.31: Cài đặt gói gd-devel 66
Hình 3.32: Cài đặt gói Sarg 66
Hình 3.33: Cài đặt gói webmin 67
Hình 3.34: Đăng nhập vào webmin 67
Trang 8Hình 3.35: Giao diện chính của webmin 68
Hình 3.36: Giao diện quản lý log squid bằng Sarg khi chưa cấu hình 68
Hình 3.37: Cấu hình log squid 69
Hình 3.38: Giao diện quản lý log squid bằng Sarg sau khi cấu hình 69
Hình 3.39: Cập nhật log của Squid 70
Hình 3.40: Quá trình cập nhật log của Squid 70
Hình 3.41: log của Squid sau khi cập nhật thành công 70
Hình 3.42: Chi tiết log của Squid 71
Hình 3.43: Chi tiết log của Squid 71
Hình 3.44: Khởi động dịch vụ Iptables 72
Hình 3.45: Giao diện cấu hình xác thực 72
Hình 3.46: Cấu hình Firewall 73
Hình 3.47: Tùy chọn cấu hình Firewall 73
Hình 3.48: Cấu hình chuyển giao thông tin giữa 2 card mạng 74
Hình 3.49: Cấu hình cho Client ra bên ngoài mạng 74
Hình 3.50: Khởi động lại dịch vụ Iptables 74
Hình 3.51: Khai báo thống số chức năng transparent 74
Hình 3.52: Cấu hình kết hợp Firewall Iptables với Squid Proxy 75
LỜI MỞ ĐẦU
Chúng ta đang được sống trong một thời đại tri thức, thời đại của sự biến đổi
và phát triển không ngừng của công nghệ Công nghệ đã làm thay đổi về tất cả mọi mặt của đời sống như quản lý, điều khiển công việc, phục vụ công việc, giải trí, viễn thông, trao đổi… Và hơn nữa nền công nghệ đó đang ngày càng phát
Trang 9triển và hoàn thiện hơn Nhưng bên cạnh những lợi ích mà công nghệ mang lạithì cũng có những khó khăn được đặt ra đó chính là an toàn và bảo mật thông tin.Trong thực tế hiện nay an toàn và bảo mật thông tin đang đóng một vai trò thiếtyếu chứ không còn là “thứ yếu” trong mọi hoạt động liên quan đến việc ứngdụng công nghệ thông tin.
Internet cho phép truy cập tới mọi nơi trên thế giới thông qua một số dịch vụ.Ngồi trước máy tính ta có thể biết được thông tin trên toàn cầu, nhưng cũngchính vì thế mà hệ thống máy tính có thể bị xâm nhập vào bất kỳ lúc nào màkhông hề được biết trước Do vậy việc bảo vệ hệ thống là một vấn đề đáng phảiquan tâm
Chính vì vậy mà em đã lựa chọn đề tài “Nghiên cứu, triển khai dịnh vụ Squid Proxy Server trên CentOS ” Nội dung chính của đề tài bao gồm:
Chương I: Tổng quan về hệ điều hành CentOS
Chương II: Tổng quan về dịch vụ Proxy Server và đi vào nghiên cứu góiphần mềm Squid Proxy
Chương III: Triển khai cài đặt và cấu hình cơ bản Squid Proxy Servercho hệ thống mạng nội bộ
Do thời gian nghiên cứu chưa được nhiều và trình độ bản thân còn hạn chế,nên đồ án không tránh khỏi những khiếm khuyết Em rất mong nhận được sựhướng dẫn, chỉ bảo của các thầy, cô giáo và sự đóng góp nhiệt tình của các bạn
để giúp em bổ sung vốn kiến thức và có thể tiếp tục nghiên cứu đề tài nêu trênmột cách tốt hơn, hoàn chỉnh hơn
Cuối cùng, em xin chân thành cảm ơn thầy Phạm Văn Hưởng đã hướng dẫn,chỉ bảo tận tình em hoàn thành đồ án của mình
Em xin chân thành cảm ơn !
Hà Nội, Tháng 6 năm 2011
Sinh viên thực hiện
Bùi Huy Đức
Trang 10Chương I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH CENTOS
1.1 Lịch sử phát triển Linux
Năm 1991 Linus Torvalds, sinh viên của đại học tổng hợp Helsinki, PhầnLan, bắt đầu xem xét Minix, một phiên bản của Unix, làm ra với mục đíchnghiên cứu cách tạo ra một hệ điều hành Unix chạy trên PC với bộ xử lý Intel80386
Ngày 25/8/1991, Linus cho ra đời Verision 0.01 và thông báo trêncomp.os.minix về chương trình của mình
Trang 11Tháng 1/1992, Linus cho ra đời phiên bản version 0.02 với Shell và trìnhbiên dịch C Linux không cần Minix nữa để biên dịch lại hệ điều hành của mình.Linus đặt tên hệ điều hành của mình là Linux.
Năm 1994 phiên bản chính thức 1.0 được phát hành
Linux là một hệ điều hành dạng UNIX (Unix-like Operating System) chạytrên máy PC với bộ điều khiển trung tâm CPU Intel 80386 trở lên, hay các bộ xử
lý trung tâm tương thích AMD, Cyrix Linux ngày nay còn có thể chạy trên cácmáy Macintosh hoặc SUN Space
Linux được viết lại từ đầu, tức là không sử dụng một lệnh nào của Unix đểtránh về vấn đề bản quyền Tuy nhiên hoạt động của Linux lại hoàn toàn dựa trênnguyên tắc hoạt động của Unix Vì vậy nếu một người nắm vững được Linux thì
sẽ nắm vững được Unix
Linux là một hệ điều hành mã nguồn mở được nhiều người sử dụng và pháttriển nhanh chóng, phổ biến trong một thời gian ngắn bởi tính miễn phí, hỗ trợnhiều chức năng cũng như công cụ do được cộng đồng IT phát triển rộng rãi trênmạng Internet
Linux là một hệ điều hành có hiệu năng cao, chạy được trên cả máy cấu hìnhcao và cấu hình thấp Hệ điều hành này hỗ trợ các máy tính tính sử dụng 32 cũngnhư 64 bits và rất nhiều phần mềm khác nhau Quá trình phát triển của Linuxđược tăng tốc bởi sự trợ giúp của GNU là chương trình hỗ trợ phát triển Unixchạy trên nhiều nền tảng khác nhau Phiên bản mới nhất của Linux Kernel là2.6.11.3 ra đời vào năm 2001 có khả năng điều khiển các máy đa bộ xử lý vànhiều tính năng khác nhau
1.2 Giới thiệu về hệ điều hành Linux CentOS 5.x
Khi Linux ra đời và phát triển thì có nhiều phiên bản phát triển khác nhaunhưng đều dựa trên hạt nhân (Kernel) của Linux Hiện nay trên thị trường và trênInternet có rất nhiều bản cho người dùng như bản thương mại, bản miễn phí Cómột số bản như Ubuntu, Fedora, Redhat Enterpri, CentOS… Mỗi bản đều có một
số tính năng riêng phù hợp với người dùng Trong quá trình phát triển Linux
Trang 12cũng tách ra làm hai dòng chính là bản phục vụ cho cá nhân với nhiều ứng dụng
cá nhân và hỗ trợ người dùng Xu hướng phát triển thứ hai của Linux đó chính làphục vụ cho máy chủ với nhiều tính năng ứng dụng mang tầm rộng hơn và hỗ trợngười dùng không lớn như các bản cá nhân khác
CentOS (Community ENTerprise Operating System) là một bản phân phốiLinux tập trung vào lớp doanh nghiệp xây dựng máy chủ, được xây dựng từnhiều nguồn miễn phí (theo GPL và một số bản quyền tương tự) của Red Hat.Hiện tại CentOS có phiên bản mới nhất là 5.5 dựa trên nền tảng Red HatEnterprise Linux 5, hỗ trợ dòng x86 (i386 và i686), dòng x86_64(AMD64 vàIntel EMT64) các cấu trúc IA64, Alpha, S390 và S390x Và có Kernel 2.6 củaLinux CentOS là bản miễn phí và được phát triển mạnh mẽ của cộng đồng ITtrên mạng Internet
CentOS 5.5 hỗ trợ và được cài đặt trên cả Client và Server đồng thời sử dụngcác phiên bản phần mềm mới nhất Ngoài những chức năng của một máy chủchuyên biệt, CentOS còn hỗ trợ rất nhiều tính năng và ứng dụng cho người dùng
cá nhân
CentOS có hai bộ cài, có thể download từ Internet tại trang webhttp://www.centos.vn Bộ cài thứ nhất gồm một đĩa CD, bộ cài này chỉ hỗ trợ cáctính năng cơ bản của máy chủ ngoại trừ GUI (giao diện đồ họa người dùng) phùhợp với những ai muốn cài đặt nhanh chóng Bộ cài thứ hai đó chính là bộ càiđầy đủ với dung lượng 3.8GB, bộ cài này hỗ trợ tất cả các tính năng và ứng dụngcủa một Server cũng như người dùng cá nhân
1.3 Cấu trúc tập tin trên Linux CentOS
1.3.1 Cấu trúc tập tin
Mỗi hệ điều hành có cách tổ chức lưu trữ dữ liệu riêng Ở mức vật lý, đĩađược định dạng từ các thành phần sector, track, cylinder Ở mức logic, mỗi hệthống sử dụng cấu trúc riêng, có thể dùng chỉ mục hay phân cấp có thể xác địnhđược dữ liệu từ mức logic tới mức vật lý Cách tổ chức đó gọi là tổ chức hệthống tập tin
Trang 13Giống như các phiên bản Linux khác, CentOS hỗ trợ nhiều loại hệ thống tậptin như ext2, ext3, MS-DOS, proc Hệ thống tập tin cơ bản của CentOS là ext2
và ext3 Hệ thống tập tin này cho phép đặt tên tập tin tối đa 256 ký tự và kíchthước tối đa là 4 terabytes Bên cạnh đó CentOS còn hỗ trợ vfat cho phép đặt têntập tin dài đối với tập tin MS-DOS và những partition FAT32 Proc là hệ thốngtập tin ảo nghĩa là không dùng dung lượng đĩa cứng phân phối cho nó
1.3.2 Loại tập tin
Trong CentOS tập tin dùng cho việc lưu trữ dữ liệu Tập tin bao gồm cả thưmục và thiết bị lưu trữ Ngay cả bộ nhớ chính cũng được coi là một tập tin, trongCentOS các tập tin được chia làm ba loại chính như sau:
- Tập tin dữ liệu: Đây là tập tin theo định nghĩa truyền thống Có thể lưu trữbất cứ loại dữ liệu nào lên đây
- Tập tin thư mục: Thư mục không chứa dữ liệu mà chỉ chứa các thông tin
về các tập tin lưu trong nó Thư mục chứa hai trường của một tập tin là tên tậptin và inode number
- Tập tin thiết bị: Hệ thống Linux xem các thiết bị như các tập tin Ra vào
dữ liệu cho các tập tin trên tập tin này chính là ra vào dữ liệu cho thiết bị
Trang 141.3.3 Cấu trúc cây thư mục
Hình 1.1: Cấu trúc cây thư mục
Hệ thống tập tin CentOS có cấu trúc như hình 1.11 Trong CentOS cũng nhưtrong các phiên bản của Linux không có khái niệm ổ đĩa như trong Windows, tất
cả các tập tin và thư mục được bắt đầu từ thư mục gốc (/) CentOS sử dụng dấu
“.” Để chỉ thư mục hiện hành và sử dụng dấu “ ” để chỉ định thư mục cha hiệnhành
Hình 1.2: Cấu trúc logic hệ thống tập tin
Trang 15Như hình vẽ 1.12, thư mục gốc được mount vào partition thứ nhất, /usr đượcmount vào partition thứ 2 Những dữ liệu ghi vào thư mục /home sẽ ghi vàopartition thứ 3 Tương tự, dữ liệu của thư mục /usr/local ghi vào partition 4, dữliệu của thư mục /usr không phải thư mục con /usr/local thì ghi vào partion 2
1.4 Quyền hạn của người dùng với tập tin
Giống như hệ thống các phiên bản của Linux, CentOS là một hệ điều hành đangười dùng vì vậy quá trình quy định quyền hạn trên các tập tin đòi hỏi phải chặtchẽ và linh hoạt
CentOS xác định ba quyền trên các tập tin là read (đọc), write (viết), execute(thực thi) đối với ba đối tượng là người sở hữu (the owner), nhóm sở hữu (thegroup owner), người dùng khác (other users)
CentOS quy định quyền read cho phép đọc nội dung tập tin với thư mục cho
ta xem các tập tin con trong đó Quyền write bao gồm các quyền viết lên tập tin,tạo tập tin trong thư mục, xóa hay thay đổi tập tin Quyền excute cho phép gọichương trình lên bộ nhớ để thực thi và chạy chương trình
Hình 1.3: Mô tả quyền và ký tự trên tập tin
Hình 1.13 mô tả quyền và ký hiệu trên tập tin:
- Ký tự: Cho phép xác định loại tập tin Nếu “-“ là tập tin bình thường Nếu
“c” là tập tin bàn phím, “b” là tập tin block, ”d” là thư mục
- Owner: Cho phép xác định chủ sở hữu của tập tin Thường là người tạo ratập tin cũng bao gồm ba quyền
- Group owner: Là quyền cho phép nhóm nào được quản lý tập tin với 3quyền đọc, ghi, thực thi
- Other users: Là quyền cho phép những người dùng khác với tập tin
Trang 161.5 Một số câu lệnh cơ bản trên Linux CentOS
Ta có: - Nhóm người dùng : u-user, g-group, o-other, a-all
- Thao tác: + :thêm quyền, - :bớt quyền, = :gán ngang quyền
- Quyền hạn: r- read, w- write, x- excute
c, Lệnh chown
Dùng để xác định người sở hữu của tập tin
Cú pháp: chown thư-mục>
Trang 17Lệnh này tổng kết việc sử dụng đĩa Nếu xác định một thư mục, lệnh du sẽbáo cáo việc sử dụng đĩa cho chính các thư mục đó
Để xoá thư mục hoặc file, sử dụng câu lệnh rm Có thể xoá nhiều file sử dụng
ký tự đại diện hoặc gõ vào tên các file
Cú pháp: rm [-rif] thư_mục/file
Trang 18Chương II: PROXY SERVER
2.1 Tổng quan về Proxy Server
2.1.1 Định nghĩa Proxy
Proxy là chỉ một hệ thống computer hoặc một router tách biệt kết nối, giữangười gửi và người nhận Proxy đóng vai trò là một hệ thống chuyển tiếp giữa 2đối tượng là Client (muốn truy cập tài nguyên) và Server (cung cấp tài nguyên
mà client cần)
Nhờ chức năng chuyển tiếp (trung chuyển có kiểm soát) này, các hệ thốngđược sử dụng để giúp ngăn chặn attacker xâm nhập vào mạng nội bộ và cácProxy cũng là một trong những công cụ được sử dụng để xây dựng Firewalltrong mạng của các tổ chức có nhu cầu truy cập Internet
Tất cả các yêu cầu từ Client ra Internet trước hết phải đến Proxy, Proxy kiểmtra xem yêu cầu nếu được cho phép, sẽ chuyển tiếp có kiểm soát yêu cầu raInternet đến Server cung cấp dịch vụ Và cũng tương tự sẽ phản hồi hoặc khởihoạt các yêu cầu đã được kiểm tra từ Internet và chuyển yêu cầu này đến Client
Cả Client và Server nghĩ rằng chúng kết nối trực tiếp với nhau nhưng thực sự chỉkết nối trực tiếp với Proxy
2.1.2 Proxy Server
Proxy Server là một Server đóng vai trò cài đặt Proxy làm trung gian giữangười dùng trạm và Internet [4] Với Proxy Server, các máy Client tạo ra các kếtnối đến các địa chỉ mạng một cách gián tiếp Những chương trình Client củangười sử dụng sẽ qua trung gian Proxy Server thay thế cho Server thật sự màngười sử dụng cần giao tiếp
Proxy Server xác định những yêu cầu từ Client và quyết định đáp ứng haykhông đáp ứng, nếu yêu cầu được đáp ứng, Proxy Server sẽ kết nối với Serverthật thay cho Client và tiếp tục chuyển tiếp đến những yêu cầu từ Client đếnServer, cũng như đáp ứng những yêu cầu của Server đến Client Vì vậy ProxyServer giống cầu nối trung gian giữa Server và Client
Trang 19Hình 2.1: Kết nối giữa Clien với Server qua Proxy Server
2.1.3 Sự cần thiết của Proxy Server
Do mọi thông tin truy xuất phải thông qua Proxy nên ta có thể quản lý đượcmọi thông tin ra và vào Ví dụ mọi yêu cầu của Client phải qua Proxy Server,nếu địa chỉ IP có trên Proxy, nghĩa là website này được lưu trữ cục bộ, trang này
sẽ được truy cập mà không cần phải kết nối Internet, nếu không có trên ProxyServer và trang này không bị cấm, yêu cầu sẽ được chuyển đến Server thật, DNSserver và ra Internet
Các dịch vụ Proxy đều có lợi trong việc logging Vì các Proxy Server hiểucác giao thức cơ bản và cho phép logging đạt hiệu quả Ví dụ thay vì logging tất
cả những dữ liệu đã truyền, một FTP Proxy Server chỉ ghi lại những lệnh đã tạo
và những đáp ứng của Remote Server, điều này giúp việc logging ít và hữu dụnghơn
Đáp ứng được nhu cầu truy xuất của cá nhân và vừa đảm bảo an toàn cho hệthống cục bộ do sử dụng địa chỉ ẩn danh, và mọi truy xuất đều thông qua Proxynên thông tin cục bộ không trực tiếp tương tác với bên ngoài
Các dịch vụ Proxy cho phép người dùng truy cập các dịch vụ Internet "trựctiếp" Với các dịch vụ Proxy, các người dùng luôn nghĩ rằng họ đang tương táctrực tiếp với các dịch vụ Internet Ví dụ các người dùng chỉ cần gõ vào địa chỉ
Trang 20của một trang web nào đó thì trang web được trình duyệt hiển thị lên cho ngườidùng Dĩ nhiên là có nhiều công việc phải làm ở bên trong nhưng nó là trong suốtđối với người dùng Người dùng truy cập các dịch vụ Internet từ chính những hệthống riêng của họ, mà không cần cho phép các gói tin truyền trực tiếp giữa hệthống của người dùng và Internet đảm bảo an toàn cho hệ thống.
Proxy Server tích lũy và cứu file, những file mà thường được yêu cầu bởingàn người dùng Do đó, Proxy server có thể tăng tốc độ truy nhập Internet.Cache của Proxy Server có thể đã sẵn chứa thông tin cần trong thời gian yêu cầu,làm cho Proxy Server có thể phân phối thông tin ngay lập tức mà không cần phảitruy tìm thông tin ngoài Internet
Một Proxy Server thường nằm bên trong tường lửa, giữa trình duyệt web vàServer thật, làm chức năng tạm giữ những yêu cầu Internet của các máy khách đểchúng không giao tiếp trực tiếp Internet Người dùng sẽ không truy cập đượcnhững trang web không cho phép (bị công ty cấm) Ví dụ admin không muốnnhân viên của mình đọc báo hay chơi game online trong giờ làm việc, bằng cáchdùng Proxy Server admin có thể khóa một số site được chỉ định
Proxy Server làm cho việc sử dụng băng thông có hiệu quả do chúng ta quản
lý được các hoạt động của người dùng Nên có thể giới hạn thông tin nào đượcdùng và không dùng tránh được việc nghẽn băng thông
2.1.4 Hoạt động của Proxy Server
Nguyên tắc hoạt động cơ bản của Proxy Server là xác định những yêu cầu từphía Client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đápứng, Proxy Server sẽ kết nối tới Server thật thay cho Client và tiếp tục chuyểntiếp đến những yêu cầu từ Client đến Server, cũng như đáp ứng những yêu cầucủa Server đến Client
Để hiểu rõ hơn cơ chế hoạt động của Proxy Server cần tìm hiểu về phân loạicác hệ thống proxy
a, Dạng kết nối trực tiếp
Phương pháp đầu tiên được sử dụng trong kỹ thuật Proxy là cho người sửdụng kết nối trực tiếp đến Firewall Proxy, sử dụng địa chỉ của Firewall và số
Trang 21cổng của Proxy (ví dụ Proxy 221.7.197.130:3128 cổng của Proxy là 3128), sau
đó Proxy hỏi người sử dụng cho địa chỉ của host hướng đến, đó là một phươngpháp brute force (vét cạn) sử dụng bởi Firewall một cách dễ dàng.Và đó cũng làmột vài nguyên nhân tại sao nó là phương pháp ít thích hợp
Trước tiên, yêu cầu người sử dụng biết địa chỉ của Firewall, kế tiếp Proxyyêu cầu người sử dụng nhập vào hai địa chỉ cho mỗi sự kết nối là địa chỉ củaFirewall và địa chỉ của đích hướng đến Cuối cùng Proxy ngăn cản những ứngdụng hoặc những nguyên bản trên máy tính của người sử dụng điều đó tạo ra sựkết nối cho người sử dụng, bởi vì chúng sẽ không biết như thế nào điều khiểnnhững yêu cầu đặc biệt cho sự truyền thông với Proxy
b, Dạng thay đổi client
Phương pháp kế tiếp sử dụng Proxy setup phải thêm vào những ứng dụng tạimáy tính của người sử dụng Người sử dụng thực thi những ứng dụng đặc biệt đóvới việc tạo ra sự kết nối thông qua Firewall Người sử dụng với ứng dụng đóhành động chỉ như những ứng dụng không sửa đổi Người sử dụng cho địa chỉcủa host đích hướng tới Những ứng dụng thêm vào biết được địa chỉ Firewall từfile config (file thiết lập) cục bộ, cài đặt sự kết nối đến ứng dụng Proxy trênFirewall, và truyền cho Proxy địa chỉ cung cấp bởi người sử dụng Phương phápnày rất có hiệu quả và có khả năng che dấu người sử dụng, tuy nhiên, cần có mộtứng dụng Client thêm vào cho mỗi dịch vụ mạng là một đặc tính trở ngại
c, Proxy vô hình
Một số phương pháp phát triển gần đây cho phép truy xuất đến Proxy, trongvài hệ thống Firewall được biết như Proxy vô hình Trong mô hình này, khôngcần phải có những ứng dụng thêm vào với người sử dụng và không phải kết nốitrực tiếp đến Firewall hoặc biết rằng Firewall có tồn tại Sử dụng sự điều khiểnđường đi cơ bản, tất cả sự kết nối đến mạng bên ngoài được chỉ đường thông quaFirewall Như những Packet nhập vào Firewall, tự động chúng được đổi hướngđến ứng dụng Proxy đang chờ Theo hướng này, Firewall thực hiện rất tốt trongviệc giả như host đích Khi kết nối được tạo ra Firewall Proxy, ClientApplication nghĩ rằng được kết nối với Server thật nếu được phép, Proxy
Trang 22Application sau đó thực hiện hàm Proxy chuẩn trong việc tạo kết nối thứ hai đếnServer thật.
2.1.5 Khuyết điểm của Proxy Server
Khuyết điểm đầu tiên là không truy xuất trực tiếp ra bên ngoài mà phảikhông qua một Proxy Server nên tốc độ truy xuất chậm hơn so với thực tế
Đôi khi cần một Proxy khác nhau cho mỗi nghi thức, bởi vì Proxy Serverphải hiểu nghi thức đó để xác định những gì được phép và không được phép Đểthực hiện nhiệm vụ như là Client đến Server thật và Server thật đến ProxyClient, sự kết hợp, install và config tất cả những Server khác nhau đó có thể rấtkhó khăn
Mặc dù phần mềm Proxy có hiệu quả rộng rãi những dịch vụ lâu đời và đơngiản như FTP và Telnet, những phần mềm mới và ít được sử dụng rộng rãi thìhiếm khi thấy Thường đó chính là sự chậm trễ giữa thời gian xuất hiện một dịch
vụ mới và Proxy cho dịch vụ đó, khoảng thời gian phụ thuộc vào phương phápthiết kế Proxy cho dịch vụ đó, điều này cho thấy khá khó khăn khi đưa dịch vụmới vào hệ thống khi chưa có Proxy cho nó thì nên đặt bên ngoài Firewall, bởi vìnếu đặt bên trong hệ thống thì đó chính là yếu điểm
Nếu bỏ qua những khuyết điểm của Proxy Server thì những hiệu quả củaProxy Server mang lại sẽ là một lá chắn tốt cho hệ thống
2.2 Tìm hiểu về dịch vụ Squid Proxy
2.2.1 Giới thiệu về Squid Proxy
Squid là một chương trình Internet Proxy Caching chạy trên nền tảng Unix vàLinux, có vai trò tiếp nhận các yêu cầu từ các Client và chuyển cho InternetServer thích hợp và đồng thời Squid cũng sẽ lưu lên đĩa những dữ liệu được trả
Proxy Server Vì vậy ưu điểm của Squid là khi một dữ liệu mà được yêu cầunhiều lần thì Proxy Server sẽ lấy thông tin từ Cache trả về cho Client Điều nàylàm cho tốc độ truy xuất Internet nhanh hơn và tiết kiệm băng thông
Cùng với Caching, Squid còn có các đặc tính như chia tải bằng cách liên kết
Trang 23các Proxy Server, định nghĩa chặt chẽ các danh sách điều khiển truy cập chocác Client truy cập Proxy, cho phép hay từ chối truy cập tới các trang web đặcbiệt Squid dựa trên những đặc tả của giao thức HTTP nên nó chỉ là một HTTPProxy Do đó Squid chỉ có thể là một Proxy cho những chương trình mà chúngdùng giao thức này để truy cập Internet Squid cũng hỗ trợ các giao thức FTP,Gopher , SSL và WAIS nhưng lại không hỗ trợ các giao thức Internet khác nhưReal Auidio… hoặc hội thảo trực tuyến bởi vì Squid chỉ hỗ trợ giao thức UDP đểliên kết giữa các Cache Nhiều chương trình multimedia khác cũng không được hỗtrợ.
2.2.2 Cài đặt Squid Proxy
Một số khái niệm về phần cứng của một Proxy Server
- Tốc độ truy cập đĩa cứng: rất quan trọng vì Squid thường xuyên phải đọc
và ghi dữ liệu trên ổ cứng Một ổ đĩa SCSI với tốc độ truyền dữ liệu lớn là một lựa chọn tốt cho nhiệm vụ này
- Dung lượng đĩa dành cho Cache phụ thuộc vào kích cỡ của mạng màSquid phục vụ Từ 1 đến 2 Gb cho một mạng trung bình khoảng 100 máy Tuynhiên đây chỉ là một con số có tính chất tham khảo vì nhu cầu truy cập Internetmới là yếu tố quyết định sự cần thiết độ lớn của đĩa cứng
- RAM: rất quan trọng, ít RAM thì Squid cũng chậm hơn một cách rõ ràng
- CPU: không cần mạnh lắm, khoảng 133 MHz là cũng có thể chạy tốt vớitải là 7 requests/second
Squid có thể được cài đặt bằng souce hoặc rpm từ đĩa nguồn cài đặt Ta cóthể vào trang www.squid-cache.org để load souce squid về máy
Sử dụng lệnh sau đây để cài đặt squid:
rpm -i squid-version.i386.rpm
Sau khi cài đặt sẽ có các thư mục liên quan:
/usr/bin: Lưu những thư viện của Squid
/ect/squid: Lưu trữ file cấu hình Squid
/var/log/squid: Lưu trữ các tập tin log của Squid
Trang 242.3 Cấu hình Squid Proxy
2.3.1 Tập tin cấu hình
Tất cả tập tin cấu hình chính của Squid được lưu trữ trong thư mục/etc/squid Một tập tin cấu hình quan trọng quyết định sự hoạt động của Squid làsquid.conf Để chạy Squid lần đầu tiên thì không cần phải thay đổi nội dung củatập tin này nhưng tất cả các yêu cầu của Client bên ngoài sẽ bị từ chối theo mặcđịnh Trong tập tin cấu hình này có khoảng 125 Tag tùy chọn, nhưng chỉ có một
số tùy chọn được cấu hình, và những dòng chú thích bắt đầu bằng dấu “ # ” Ví
vì dòng lệnh thứ hai ghi đè lên
connect_timeout 2 minutes
connect_timeout 1 hour
Có thể đặt nhiều giá trị trên cùng một dòng lệnh
extension_methods UNGET UNPUT UNPOST
Một số dòng lệnh đề cập đến kích thước của một số tập tin hoặc bộ nhớ Vớiđiều này, có thể viết kích thước tập tin như bytes, Kb, Mb, Gb Ví dụ:
Trang 25Acl Foo src 1.2.3.4
http_access deny Foo
Trong squid.conf phân biệt sự khác nhau giữa chữ hoa và chữ thường, chẳnghạn như tên dòng lệnh Không thế viết HTTP_port thay vì http_port
Có rất nhiều cách để cấu hình cổng trong squid.conf:
- Cấu hình đơn giản nhất là có thể ghi trực tiếp số cổng mà muốn phíaClient kết nối vào Ví dụ:
http_port 8080
- Có thể chỉ định địa chỉ IP cụ thể kết hợp với cổng mà muốn Squid lắngnghe Phương pháp này thường được sử dụng trong trường hợp có nhiều giaodiện trên máy và chỉ muốn Squid lắng nghe trên giao diện kết nối yêu cầu Ví dụ: http_port 192.0.0.35:3128
- Một cách khác nữa để cấu hình http_port là có thể sử dụng tên máy(hostname) và tên cổng Tên máy sẽ phân giải sang địa chỉ IP và Squid sẽ sửdụng IP đó với số cổng để lắng nghe kết nối Ví dụ:
http_port myproxy.example.com.vn:8080
- Squid có thể lắng nghe yêu cầu trên nhiều giao diện Điều này hữu ích khi
có nhiều Client trong mạng LAN khác nhau, được cấu hình để sử dụng các cổngkhác nhau cho các máy chủ proxy Ví dụ:
http_port 192.0.2.25:8080
http_port lan1.example.com:3128
http_port lan2.example.com:8081
2.3.2.2 ACL (Danh sách điều khiển truy cập)
Access control lists (ACL) dùng để kiểm soát truy nhập dựa vào tên miền,địa chỉ IP đích (IP máy hoặc mạng) và thường được sử dụng kết hợp với các
Trang 26dòng lệnh khác như http_access, icp_access … ALC sẽ xác định một giao dịchweb và các dòng lệnh như http_access, cache… sẽ quyết định xem giao dịch đóđược phép hay không Chú ý các dòng lệnh liên quan tới truy nhập thường kếtthúc với _access Ví dụ:
acl MyNetwork src 192.168.0.0/16
http_access allow MyNetwork
Cú pháp của ACL phải có tên, loại hình và các giá trị cụ thể cho ACL:
acl ACL_NAME ACL_TYPE value
acl ACL_NAME ACL_TYPE "/path/to/filename"
Có thể xây dựng một ACL bao gồm rất nhiều các trang web Có ba cách sauđây có thể làm:
- Xác định tất cả các giá trị ghi trên một dòng Ví dụ:
Acl example_sites dstdomain exam.com exam.net
- Trường hợp danh sách các giá trị xác định nhiều, có thể chia danh sách giátrị đó thành nhiều dòng Ví dụ:
acl example_sites dstdomain exam.com exam.net
acl example_sites dstdomain exam.org
- Nếu trường hợp số lượng các giá trị mà muốn xác định quá lớn Có thể đặtcác giá trị đó vào một tập tin chuyên dụng và sau đó cấu hình Squid đến tập tin
cụ thể đó Ví dụ:
acl example_sites dstdomain '/etc/example.txt'
2.3.2.3 Kiểm soát truy nhập tới Proxy Server
Squid cung cấp các dòng lệnh khác nhau để kiểm soát truy cập đến các tàinguyên khác nhau
a, http_access
Đây là một trong những dòng lệnh được sử dụng cho việc cấp quyền truy cập
để thực hiện các giao dịch thông qua Squid HTTP
Cú pháp: http_access allow|deny[!]ACL_NAME
Sử dụng http_access có thể cho phép hoặc từ chối truy cập đến các giao dịchHTTP thông qua Squid Nếu có tiền tố [!] trước ACL_NAME thì truy cập sẽ
Trang 27được phép hoặc từ chối cho tất các yêu cầu mà không cần phải xác định bởiACL_NAME Ví dụ:
Acl my_machines src 192.0.2.21 198.51.100.86
http_access allow my_machines
Cấu hình trên có nghĩa là cho phép các máy chủ 192.0.2.21 và 198.51.100.86truy cập vào máy chủ Proxy
b, http_reply_access
HTTP reply là sự đáp lại được nhận từ các máy chủ web tương ứng với mộtyêu cầu của một Client Sử dụng dòng lệnh http_reply_access có thể kiểm soáttruy cập tới những reply nhận được
Cú pháp: http_reply_access allow|deny[!]ACL_NAME
Dòng lệnh này thường được sử dụng để từ chối truy cập cho các loại nộidung như video, âm thanh … ngăn chặn người dùng truy cập nội dung truyềnthông
c, icp_access
Dòng lệnh này được sử dụng để kiểm soát truy cập truy vấn bởi các Cachelân cận sử dụng Internet Cache Protocol (ICP) Cơ bản cho phép hoặc từ chốitruy cập tới cổng ICP và mặc định là từ chối tất cả các truy vấn ICP
Cú pháp: icp_access allow|deny [!] ACL_NAME
d, htcp_access
Sử dụng dòng lệnh này có thể kiểm soát xem Squid sẽ đáp ứng một số yêucầu HTCP hay không Cú pháp này tương tự http_access và mặc định là từ chốitất cả các truy vấn
e, htcp_clr_access
Các Cache lân cận có thể có những yêu cầu lọc hoặc loại bỏ các đối tượngdạng yêu cầu HTCP CLR Dòng lệnh htcp_clr_access có thể được sử dụng đểcấp quyền truy cập tới các cache ngang hàng tin cậy
Trang 282.3.2.4 cache_peer
Chúng ta thường triển khai nhiều máy Proxy Server trong cùng mạng để chia
sẻ tải cho hiệu suất tốt hơn so với một máy Proxy Server duy nhất Các ProxyServer có thể sử dụng bộ nhớ Cache của nhau để cải thiện hiệu suất
Dòng lệnh cache_peer được cấu hình trong Squid sử dụng để thêm các PorxyServer trong mạng
Cú pháp: cache_peer HOSTNAME_OR_IP_ADDRESS TYPE
PROXY_PORT ICP_PORT [OPTIONS]
Trong cú pháp trên, HOSTNAME_OR_IP_ADDRESS là tên máy hay địa chỉ
IP của Proxy Server ngang hàng TYPE quy định các loại của Proxy Server Cácloại Proxy Server được sử dụng như là Proxy cha (parent), Proxy ngang hàng(sibling), thành viên của 1 nhóm multicast Ví dụ như sau:
cache_peer parent.example.com parent 3128 3130 default proxy-only
3130 là cổng ICP chuẩn, nếu Proxy Server khác không sử dụng cổng ICPchuẩn thì nên thay đổi cổng khác cho phù hợp Cấu hình trên sẽ trực tiếp sử dụngmột máy tên parent.example.com như một Proxy Server để đáp ứng các yêu cầucủa Client Tùy chọn default này quy định các Cache ngang hàng nên được sửdụng như một phương án cuối cùng khi các Cache khác không thể liên lạc được.Tùy chọn Proxy-only chỉ định nội dung lấy bằng cách sử dụng ngang hàng nàykhông nên là Cache cục bộ
2.3.2.5 Bộ nhớ Cache
a, Sử dụng bộ nhớ RAM cho caching
Các tài liệu web được lưu trữ trong bộ nhớ RAM sẽ truy xuất nhanh so vớiviệc lưu trữ trên ổ đĩa cứng Tuy nhiên, bộ nhớ trong RAM dành cho Cache cũngnhỏ hơn bộ nhớ Cache có sẵn trên ổ đĩa cứng Chỉ có các đối tượng thườngxuyên được truy xuất hoặc các tài liệu có xác suất cao được yêu cầu một lần nữathì mới nên lưu trữ tại bộ nhớ Cache trong RAM
Trang 29Khoảng trống bộ nhớ Cache trong RAM vô cùng nhỏ do vậy các tài liệuđược lưu trữ trong Cache dựa trên cơ sở ưu tiên Ta xem xét các đối tượng có thểđược lưu trữ:
- Đối tượng truy vấn hiện thời: đây là đối tượng liên quan đến các yêu cầuhiện tại và có độ ưu tiên cao nhất Các đối tượng này phải được lưu trữ trong bộnhớ Cache trên RAM Trong trường hợp có nhiều yêu cầu truy vấn đến cùng lúc
sẽ xảy ra tình trạng tràn bộ nhớ Cache trong RAM thì lúc đó Squid sẽ cố gắnggửi một phần (phần đã được gửi tới Client) lên trên ổ đĩa để tạo không gian trốngtrong RAM
- Đối tượng phổ biến: đây là các đối tượng hay các tài liệu web được yêucầu khá thường xuyên Những đối tượng này thường bị đẩy vào ổ đĩa khi cầnphải tạo ra nhiều khoảng trống bộ nhớ Cache trong RAM cho các đối tượng đangđược chuyển tiếp
- Đối tượng lỗi: đây là những thông điệp lỗi mà Squid gặp phải trong quátrình lấy tài liệu web cho Client
Để xác định kích thước bộ nhớ Cache trong RAM, dùng lệnh cache_mem
Bộ nhớ Cache được xác định kích thước theo byte, KB, MB hay GB Ví dụ:cache_mem 2500 MB Kích thước được quy định với cache_mem là MB
b, Sử dụng ổ đĩa cho caching
Không gian bộ nhớ trong RAM có kích thước nhỏ, không thể đầu tư nhiềuRAM vì giá thành khá đắt Trái ngược với điều này, ổ đĩa vật lý có không gianlưu trữ lớn mà có thể được sử dụng cho bộ nhớ Cache
Dòng lệnh cache_dir được dùng để cấu hình cho không gian lưu trữ cachetrên đĩa cứng
Trang 30Lệnh trên sẽ cho kết quả sau:
Hình 2.2: Danh sách tùy chọn của Squid
2.4.2 Một số tùy chọn quan trọng
2.4.2.1 Tìm phiên bản của Squid
Nếu muốn kiểm tra phiên bản của Squid, có thể sử dụng tùy chon -v Câulệnh như sau:
squid -v
Nếu dùng câu lệnh trên tại thiết bị đầu cuối thì sẽ cho ta kết quả sau :
Hình 2.3: Phiên bản của squid 2.4.2.2 Tạo thư mục swap
Squid cung cấp tùy chọn -z để tạo ra các thư mục swap Câu lệnh như sau:squid -z
Trang 31Nếu tùy chọn này được sử dụng nhưng trên máy thư mục swap không tồn tạithì sẽ cho ta kết quả
Hình 2.4: Kết quả câu lệnh tạo swap
Tùy chọn này được sử dụng khi chúng ta muốn thêm các thư mục swap vàotrong file cấu hình Squid
2.4.2.3 Kiểm tra lỗi của tập tin cấu hình
Trước khi chạy Squid, ta nên kiểm tra file squid.conf đã đúng hay chưa Chỉcần chạy tùy chọn sau:
squid -k parse
Nếu màn hình không xuất hiện ra gì thì file cấu hình đó không bị lỗi và cóthể tiến hành bước tiếp theo Tuy nhiên, nếu tập tin cấu cấu hình bị lỗi, Squid sẽhiển thị trên màn hình
Hình 2.5: Hiển thị lỗi cấu hình trước khi chạy squid 2.4.2.4 Tải lại tập tin cấu hình
Đôi khi cần phải thay đổi tập tin cấu hình Squid Sau khi thực hiện thay đổi,không muốn phải khởi động lại Squid Proxy Server Trong trường hợp này cóthể sử dụng tùy chọn -k như sau:
squid -k reconfigure
Khi thực hiện câu lệnh trên Squid sẽ phải chạy lại tập tin cấu hình mà trongkhi đó vẫn phục vụ các yêu cầu bình thường khác và không chấm dứt bất kỳ kếtnối đang hoạt động nào
Trang 322.4.2.5 Kiểm tra trạng thái của một quá trình chạy Squid
Để biết Squid có chạy hay không, có thể kiểm tra trạng thái tiến trình chạycủa Squid Squid sẽ kiểm tra tập tin cấu hình và báo cáo cho ta biết bất kỳ vấn đề
gì khiến Squid không chạy được Sử dụng tùy chọn -k Nếu Squid chạy tốt thì sẽkhông hiện ra kết quả gì, ngược lại sẽ hiện ra kết quả
squid -k check
Hình 2.6: Hiển thị của câu lệnh kiểm tra trạng thái
2.5 Tập tin log và định dạng log
2.5.1 Tập tin log
Thông điệp log của bất kỳ một ứng dụng nào để truyền tải về hành động hiệntại của nó cho người dùng biết Squid cũng có các tập tin log khác nhau cho mỗihành động khác nhau ở các giai đoạn khác nhau Khi Squid gặp bất kỳ lỗi nàotrước khi bắt đầu, Squid sẽ ghi chúng vào một tập tin là cache.log Tương tự nhưvậy, khi Client truy cập vào Proxy Server, một thông báo đăng nhập sẽ ghi vàotập tin tên là access.log
Squid sử dụng định dạng khác nhau cho các tập tin log Các tập tin log rấtquan trọng, ta có thể sử dụng chúng để có thể phân tích sử dụng tài nguyên hayhiệu suất của Proxy Server
2.5.1.1 cache.log
Squid log ghi lại tất cả các lỗi và các thông điệp gỡ lỗi vào tập tin cache.log
Ví dụ kiểm tra thử một vài thông tin log và xem chúng có ý nghĩa gì
Hình 2.7: Phiên bản, một số thông tin về nền tảng, tiến trình của squid
Ví dụ trên cho thấy, dòng đầu tiên hiển thị phiên bản của Squid và cung cấpmột số thông tin về nền tảng Dòng tiếp theo cho biết ID tiến trình của Squid
Trang 33Hình 2.8: Số lượng tập tin mô tả để squid hoạt động
Dòng trên cho thấy số lượng các tập tin mô tả có sẵn để cho Squid hoạt động
Hình 2.9: Thông tin về hệ thống DNS squid sẽ khởi tạo
Khi Squid bắt đầu, Squid sẽ khởi tạo hệ thống DNS bắt đầu với IP Cache nhưthể hiện ở dòng đầu tiên trên hình Các dòng thứ hai và thứ ba hiển thị thông tin
về cấu hình DNS Squid thêm 192.0.2.86 như một máy chủ DNS từ tập tin/etc/resolv.conf, đó là vị trí mặc định để chỉ định máy chủ DNS trên hệ thống.Nếu có nhiều hơn một máy chủ DNS trong tập tin /etc/resolv.conf, sẽ có nhiềudòng tương tự như dòng cuối cùng
Hình 2.10: Trạng thái modules được kích hoạt khi biên dịch squid
Ở dòng trên, Squid hiển thị trạng thái của các modules mà đã được kích hoạttrong khi biên dịch Squid Kết quả trên cho thấy User-Agent và Referer bị vôhiệu hóa cho hoạt động này
Hình 2.11: Hiển thị thông tin về logfile, unlink, local cache digest, store log
Trong thông báo trên, dòng đầu tiên cho thấy Squid sẽ sử dụng tập tin/opt/squid/var/logs/access.log như là một tập tin access log Nó cũng cho thấyUnlink đang được sử dụng như một chương trình lọc các đối tượng Cache Ngoài
ra Cache Digest được kích hoạt và sẽ được xây dựng, viết lại mỗi giờ Dòng cuốicùng cho thấy các log của tất cả các hoạt động liên quan đến lưu trữ bị vô hiệuhóa
Trang 34Hình 2.12: Hiển thị thông báo lỗi và cách sửa chữa
Ở ví dụ trên có thể thấy Squid thông báo “Permission denied” trên thư mụcCache Bất kỳ lúc nào có vấn đề, Squid sẽ cố gắng mô tả nguyên nhân và đưa rahành động thích hợp để có thể sửa chữa vấn đề
2.5.1.2 access.log
Khi Squid bị lỗi thì cache.log rất quan trọng cho việc sửa lỗi Nhưng tập tinlog quan trọng nhất là access.log Access.log được Squid lưu các thông tin vềngười dùng truy câp vào máy chủ Proxy, và các thông tin liên quan đến tìnhtrạng requests và replies Vị trí của tập tin access.log được xác định bởi dònglệnh access_log trong file cấu hình Squid Mặc định được thiết lập cấu hình là ${prefix}/var/logs/access.log
Những thông điệp được ghi trong tập tin access.log không phải dễ đọc đượcnhư trong cache.log, nhưng một khi hiểu được ý nghĩa các trường trongaccess.log thì lại rất dễ dàng giải thích các thông điệp trong đó Có rất nhiều địnhdạng trong thông điệp của access.log Xét ví dụ sau :
Hình 2.13: Thông điệp access.log
Trang 35Cột đầu tiên đại diện cho các giây trôi qua kể từ một kỷ nguyên Unix Nhưngkhông thể hiểu được, có thể sử dụng perl để chuyển đổi sang nhãn thời gian
perl –p –e 's/^([0-9]*)/"[".localtime($1)."]"/e'
<access.log> access.log.h
Bây giờ thông điệp access.log sẽ chuyển đổi thành nhãn thời gian bìnhthường
Hình 2.14: Thông điệp access.log sau khi chuyển đổi
Cột thứ hai đại cho thời gian đáp ứng được tính bằng milliseconds Cột thứ
ba là địa chỉ IP của Client Cột thứ 4 là sự kết hợp trạng thái requests của Squid
và mã trạng thái HTTP Cột thứ năm đại diện cho kích thước reply bao gồm cảtiêu đề HTTP Cột thứ sáu trong thông điệp log đại diện cho phương thức yêucầu của HTTP là GET Ở đây cũng có thể có giá trị là POST, PUT, DELETE…Cột thứ bảy đại diện cho yêu cầu của URL Cột tám là tên người dùng, nhưng ởđây trống vì yêu cầu không được chứng thực Cột chín là sự kết hợp của tìnhtrạng hệ thống Squid phân cấp và địa chỉ IP hoặc tên của các Cache ngang hàng.Cột cuối cùng đại diện cho các kiểu nội dung của reply
2.5.1.3 referer.log
Khi Client kích chuột vào một liên kết đến other.example.com trên trang webexample.com, một referrer HTTP header được gửi tới Squid có khả năng ghi lạireferrer HTTP header để sau này có thể sử dụng để phân tích mẫu lưu lượng.Mặc định không có referrer.log Để tạo ra các referrer.log trước hết cần phảitạo ra một định dạng log như sau:
Trang 36logformat referer %ts.%03tu %>a %{Referer}>h %ruCấu hình này định nghĩa một định dạng log mới là referrer, trong đó có mộtrequest timestamp, địa chỉ IP của Client, referer URL và request URL Bây giờcần phải sử dụng dòng lệnh access_log với định dạng trên
access_log /opt/squid/var/logs/referer.log
referrer
Xét một vài dòng từ tập tin referrer.log:
Hình 2.15: Thông điệp referrer.log
2.5.2 Định dạng log
Định dạng log được định nghĩa bằng cách sử dụng dòng lệnh logformat cósẵn trong tập tin cấu hình Squid Cú pháp sử dụng logformat như sau :
logformat <name> <format specification>
< format specification > là một loạt các mã định dạng được mô tả trong dưới đây:
Mã định
dạng
Ý nghĩa
định nghĩa
Trang 37<A Địa chỉ IP của máy chủ hoặc tên ngang hàng
[http::]>h Bản gốc yêu cầu tiêu đề Tên tham số tiêu đề định dạng headeheade [:[separator]element]
[http::]<h Tiêu đề reply
[http::]<bs
Số lượng các thông điệp HTTP tính bằng bytes nhận được từcác bước truyền kế tiếp, không bao gồm mã chuyển chunk vàthông điệp điều khiển
Trang 38[http::]Sh Trạng thái hệ thống phân cấp của squid (
DEFAULT_PARENT…)
[http::]ru
Yêu cầu URL
[http::]>st
Nhận được kích thước yêu cầu bao gồm tiêu đề HTTP Trongtrường hợp chunked yêu cầu, các dữ liệu mà hóa chunkedkhông được bao gồm
[http::]<sh Gửi kích cỡ trả lời của tiêu đề HTTP
[http::]<pt
Thời gian đáp ứng ngang hàng tính bằng milliseconds Thờigian bắt đầu khi các byte yêu cầu cuối cùng được gửi tới cácbước truyền kế tiếp và dừng lại khi các byte đáp ứng cuốicùng nhận được
2.6 Quản lý Squid và giám sát lưu lượng
2.6.1 Cache Manager
Cache Manger sử dụng giao diện web để quản lý các máy chủ Squid Proxy
Ta không cần phải cài đặt thêm bất kỳ một module, phần mềm nào để có đượcgiao diện web để quản lý các máy chủ Squid Proxy Ngoài ra Cache Managercòn cung cấp số liệu thống kê khác nhau về cách sử dụng các nguồn tài nguyên,điều đó giúp việc giám sát các máy chủ Squid Proxy từ một giao diện web