1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu, triển khai dịch vụ squid proxy server trên centos

77 2K 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 3,86 MB

Nội dung

Nghiên cứu, triển khai dịch vụ squid proxy server trên centos

Trang 1

Th.S Phạm Văn HưởngBùi Huy Đức

Trang 2

MỤ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 3

2.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 4

2.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 5

DANH 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 6

Hì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 7

Hì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 8

Hì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 9

triể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 10

Chươ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 11

Thá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 12

cũ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 13

Giố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 14

1.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 15

Như 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 16

1.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 17

Lệ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 18

Chươ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 19

Hì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 20

củ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 21

cổ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 22

Application 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 23

cá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 24

2.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 25

Acl 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 26

dò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 28

2.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 29

Khoả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 30

Lệ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 31

Nế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 32

2.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 33

Hì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 34

Hì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 35

Cộ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 36

logformat 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

Ngày đăng: 09/04/2016, 09:47

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] TS.Vũ Quốc Thành - KS.Nguyễn Trung Luận - KS.Phạm Duy Trung - Giáo Trình Bức Tường Lửa - Ban Cơ Yếu Chính Phủ , HV KTMM Khác
[2] TL Hướng dẫn giảng dậy - TT Tin Học, Đại Học KHTN, TP.Hồ Chí Minh Khác
[3] Trịnh Ngọc Minh - Nhập Môn Hệ Điều Hành Linux - Đại Học QG TPHCM Khác
[4] Amos Jeffries - Squid Proxy Server 3.1 Beginners Guide Khác
[5] Duane Wessels – O’Reilly Squid The Definitive Guide Khác
[6] Timothy Boronczyk and Christopher Negus - CentOS Khác
[7] Gerhard Mourani - Securing and Optimizing Linux.Các website tham khảo Khác

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w