Tải bản đầy đủ (.docx) (66 trang)

Triển khai Squid Proxy Server và quản lý log bằng Sarg

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (982.72 KB, 66 trang )

Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
LỜI MỞ ĐẦU
Công nghệ thông tin ngày nay hầu như đã đi vào tất cả các lĩnh vực trong xã hội:
kinh tế, giáo dục, giải trí và nó đã mang lại những thành quả rất đáng kể. Đối với các
doanh nghiệp, các tổ chức xã hội và các công ty thì công nghệ thông tin đóng một vai
trò hết sức quan trọng trong việc phát triển và mở rộng việc sản xuất, kinh doanh và
điều hành , tạo sự thuận lợi trong việc kinh doanh cũng như trong vấn đề quản lý và
điều hành. Vì thế việc chia sẻ internet cho hệ thống mạng nội bộ, cho nhân viên là cần
thiết cho từng doanh nghiệp. Nhưng với sự chia sẻ toàn cục sẽ dẫn đến nhiều vấn đề
liên quan đến sự an toàn, bảo mật cũng như chính sách của hệ thống. Hệ thống mạng
có thể bị tấn công từ bên ngoài, không thể quản lý được những truy cập của nhân
viên, Để giải quyết vấn đề này, giải pháp được đưa ra là xây dựng một trạm kiểm soát
trên cửa ngõ ra vào của hệ thống với môi trường bên ngoài. Trạm kiểm soát được xây
dựng thường là các Firewall server như ISA, TMG, pfSense,…hay các Proxy server
như Socks, Squid,…Các giải pháp mã nguồn mở luôn là lựa chọn của các nhà quản trị
bởi tính tiện dụng, cũng như vấn đề bản quyền. Trong đó, Squid proxy server là ưu
tiên hàng đầu bởi các tính năng mạnh mẽ của nó.
Nhóm chúng em xin gửi lời cám ơn đến cô Nguyễn Thị Thanh Vân. Với sự giúp
đỡ và hướng dẫn tận tình của cô Vân, nhóm chúng em đã hoàn thành nội dung tiểu
luận về Squid proxy server và quản lý log bằng Sarg. Chúng em đã nắm rõ được nhiều
tính năng và hoạt động của Squid proxy. Qua đó, có thể xây dựng, quản lý tốt một hệ
thống với nhiều Squid proxy server như việc quản lý truy cập của client, quản lý log,
quản lý cache, xây dựng nhiều Squid proxy server với khả năng High Availability và
Load balancing.

MỤC LỤC
Page 1
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg


2012
CHƯƠNG 1. TỔNG QUAN VỀ PROXY
Page 2
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
1.1. Khái niệm Proxy và Proxy server
Proxy là một dịch vụ làm nhiệm vụ chuyển tiếp thông tin và kiểm soát tạo sự an
toàn cho việc truy cập Internet của các client. Proxy hoạt động ở tầng ứng dụng, chen
ngang vào một loại lưu thông giữa client với server. Proxy chen ngang vào loại lưu
thông nào thì sẽ được đặt tên theo loại lưu thông đó. Ví dụ DNS proxy, POP3 proxy,
FTP proxy, Web proxy, v.v. Vì hoạt động ở tầng ứng dụng, Proxy luôn hiểu thấu nội
dung của lưu thông và có nhiều tác dụng hỗ trợ lưu thông: kiểm soát truy nhập, giám
sát lưu thông, cơ chế cache nhằm tiết kiệm băng thông.
Proxy cho phép client truy cập mạng thông qua một máy tính khác với một tài
khoản duy nhất, máy tính này gọi là proxy server.Những yêu cầu của client sẽ phải qua
proxy server vì thế máy tính này có thể kiểm soát được mọi giao tiếp từ trong internal
ra external và ngược lại. Proxy server xác định những yêu cầu từ client và quyết định
cho phép thực hiện hay là chặn yêu cầu. Nếu yêu cầu được chấp nhận, Proxy server sẽ
kết nối với server thật thay cho client và thực hiện chuyển tiếp những yêu cầu từ client
đến server, cũng như chuyển trả lời từ server đến client.
1.2. Khả năng và lợi ích của Proxy server
Hoạt động như cửa ngõ Internet, Proxy server làm cho mạng an toàn hơn. Giúp
nhiều máy tính truy cập Internet thông qua tài khoản truy cập nhất định. Nhờ vậy, khi
một công ty hoặc tổ chức có hệ thống mạng nội bộ gồm nhiều máy trạm nhưng chỉ có
1 kết nối Internet duy nhất (1 IP public), họ có thể sử dụng proxy server để cung cấp
truy cập internet cho hệ thống mạng nội bộ của họ.
Một Proxy server thường nằm bên trong Firewall, giữa client và server. Mọi
yêu cầu, truy cập của client phải qua Proxy server, nên việc bảo mật được thực hiện tốt
hơn. Lọc và ngăn cấm truy cập không được phép.

Proxy server mang cơ chế cache, cơ chế này cho phép lưu trữ cục bộ nội dung
của những website đã được client truy cập, điều này giúp cho tốc độ duyệt web nhanh
Page 3
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
hơn và giảm cước phí. Yêu cầu của client sẽ được đáp ứng tại bộ nhớ cache mà không
phải lấy thông tin trực tiếp từ internet.
Proxy server bảo vệ hệ thống mạng nội bộ khỏi sự xác định từ bên ngoài bằng
cách mang lại cho hệ thống hai định danh: một cho nội bộ, một cho bên ngoài. Điều
này tạo ra một “bí danh” đối với thế giới bên ngoài và gây khó khăn với
các hacker muốn xâm nhập trực tiếp hệ thống mạng nội bộ.
Ngoài ra, đối với các nhà cung cấp dịch vụ internet, do internet có nhiều lượng
thông tin mà theo quan điểm của từng quốc gia, từng chủng tộc hay địa phương thì
không phù hợp. Vì thế các nhà cung cấp dịch vụ internet khu vực đó sẽ thực hiện phối
hợp giữa proxy và firewall để tạo ra bộ lọc, nhằm ngăn chặn các thông tin độc hại hoặc
trái thuần phong mỹ tục đối với quốc gia, chủng tộc hay địa phương đó. Địa chỉ các
website mà client yêu cầu truy cập sẽ được lọc tại bộ lọc này, nếu địa chỉ không bị cấm
thì yêu cầu của client tiếp tục được gửi đi, tới các DNS server của các nhà cung cấp
dịch vụ. Firewall Proxy sẽ lọc tất cả các thông tin từ internet gửi vào máy của client và
ngược lại.
1.3. Cơ chế hoạt động của Proxy server
1.3.1. Forward Proxy
Forward proxy là một proxy đứng giữa một client và tất cả các server mà client
đó muốn truy cập. Forward proxy chỉ thực hiện nhiệm vụ tiếp nhận yêu cầu từ client
và chuyển những yêu cầu đó đến các server. Bản thân Forward proxy server sẽ không
áp đặt bất cứ chính sách nào lên hệ thống, chính điều này sẽ làm tăng tốc độ chia sẻ
Page 4
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg

2012
internet cho các client. Nhưng bên cạnh đó hệ thống mạng sẽ không an toàn, không
bảo mật và dễ bị tấn công từ bên ngoài.
1.3.2. Reverse Proxy
Tương tự Forward proxy, Reverse proxy cũng mang chức năng chuyển tiếp,
chia sẻ internet cho hệ thống mạng bên trong, nhưng cơ chế hoạt động của Reverse
proxy lại hoàn toàn khác với Forward proxy. Reverse proxy trung chuyển yêu cầu của
client thông qua các chính sách của hệ thống dựa vào các rule được thiết lập trên proxy
server. Nếu yêu cầu của client thỏa chính sách của hệ thống thì sẽ được Reverse proxy
server đáp ứng. Ngược lại, yêu cầu của client sẽ không được đáp ứng, đồng nghĩa với
kết nối của client sẽ bị chặn và hủy kết nối.
Page 5
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Không chỉ những kết nối của client được Reverse proxy kiểm soát, mà cả
những trả lời của các server từ internet cũng được kiểm soát chặc chẽ. Với việc kiểm
soát các trả lời từ bên ngoài, Reverse proxy sẽ tăng khả năng tiết kiệm băng thông, độ
ổn định, cũng như sự an toàn và bảo mật cao cho hệ thống mạng nội bộ thông qua các
chính sách được áp đặt trên proxy như: giới hạn dung lượng sử dụng của client, chặn
upload/download theo định dạng file,…
1.4. Phân loại Proxy server
1.4.1. Theo chức năng
Ta có thể phân proxy thành 3 loại theo chức năng :
Page 6
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Anonymous, Hight Anonymity, Transparent.
• Anonymous

_ Đôi khi còn được gọi là web proxy, giúp client ẩn danh (giấu IP), khi lướt Web.
HTTP proxy server không gửi thông số cụ thể biến http_x_forwarded_for tới site đang
truy cập, do vậy có thể che dấu IP của client.
_ Tuy nhiên, điều đó không có nghĩa giúp ẩn dấu hoàn toàn, vì các website có thể sử
dụng các script để thu thập thông tin về việc client đang truy cập site của họ thông qua
một proxy nào đó đang phục vụ cho client.
• High Anonymity
_ Mức độ che dấu tung tích cao hơn Anonymous. High Anonymity hoàn toàn không
gửi đi bất kì thông số nào của các biến http_x_forwarded_for, http_via và
http_proxy_connection. Do vậy các site được truy cập không thể biết client đang dùng
proxy , cũng như không xác định được IP của client.
• Transparent
_ Còn được gọi là proxy trong suốt. Khác với 2 loại trên, transparent là sự kết hợp một
proxy server và một gateway.
_ Đây là phương thức thường được các network admin áp đặt cho client trong internal,
client không nhận thức được mình đang truy cập internet thông qua một proxy (cổng
giám sát).
_ Yêu cầu truy cập của client được chuyển đến qua địa chỉ gateway, sau đó chuyển
sang proxy server xử lý. Khi client dùng loại proxy này, thì họ không biết được rằng
họ đang dùng một proxy và bị kiểm soát. Client chỉ cần thiết lập địa chỉ IP của
gateway do admin cung cấp, mà không phải xác lập các thông số proxy trong trình
duyệt cũng như internet applications khác.
1.4.2.Theo khả năng hỗ trợ:
Chúng ta có thể phân Proxy thành 2 loại theo khả năng hỗ trợ là:
Page 7
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
HTTP/HTTPS proxy và Socks /Sockets .
• HTTP/HTTPS Proxy(proxy thông thường):

_ Các proxy server sẵn sàng cho phép các dịch vụ thông thường trên internet.
Ví dụ:
HTTP Proxy được dùng cho truy cập Web, FTP Proxy được dùng cho truyền file.
_ Những proxy trên, được gọi là application-level proxy, bởi vì chúng được chỉ định
để làm việc với những application, protocol và nhận dạng được nội dung các gói tin
được gửi đến.
• SOCKS hay Sockets:
_ Là một Circuit-level proxy server cho các IP theo định nghĩa từ IETF (Internet
Engineering Task Force - một cộng đồng các chuyên gia về mạng có nhiệm vụ nghiên
cứu, thiết kế, xây dựng kiến trúc internet). Socks được viết bởi David và Michelle
Koblas vào những năm đầu của thập niên 90.
_ Socks đã nhanh chóng được dùng rộng rãi nhưng không được chứng nhận từ những
tổ chức chuyên cung cấp các tiêu chuẩn internet). Mặc dù Socks ra đời sớm và được
dùng phổ biến, nhưng Socks được IETF thông qua lần đầu tiên là Socks5.
_ Socks ban đầu là hệ thống proxy được sử dụng cho các lưu thông như FTP, Telnet,
nhưng không dành cho HTTP. Socks4 kiểm soát các TCP connection (chiếm phần lớn
các application trên Internet). Socks5 còn hỗ trợ thêm UDP, ICMP, xác thực, DNS
service.
_ Socks buộc client phải được cấu hình để chuyển trực tiếp các yêu cầu đến Socks
server, hoặc ngược lại Socks driver sẽ ngăn chặn các yêu cầu từ những client chưa
được cấu hình Socks proxy.
_ Nhiều Web browsers và các internet applications khác hiện nay đã hỗ trợ Socks, vì
thế khá dễ dàng khi làm việc với các Socks server.
Page 8
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
CHƯƠNG 2. SQUID PROXY SERVER
2.1. Tổng quan về Squid proxy
2.1.1. Giới thiệu

Squid proxy một là một giải pháp proxy phần mềm mã nguồn mở. Squid làm
nhiệm vụ chuyển tiếp các yêu cầu từ phía client và đồng thời đóng vai trò kiểm soát
tạo sự an toàn cho việc truy cập internet của các client cũng như hệ thống nội bộ, tiết
kiệm băng thông, cải tiến bảo mật, tăng tốc độ truy cập web cho client.
Hiện nay, trên thị trường có rất nhiều chương trình proxy-server nhưng chúng
lại mang hai nhược điểm. Thứ nhất là phải trả tiền để sử dụng. Thứ hai là hầu hết
không hỗ trợ giao thức ICP (ICP là giao thức được sử dụng để cập nhật những thay
đổi về nội dung của những URL sẵn có trong bộ nhớ cache – là nơi lưu trữ nội dung
những trang web mà client đã từng truy cập). Nhưng không giống những người anh
em khác, Squid lại có đủ khả năng đáp ứng hai yêu cầu trên, sử dụng miễn phí và hỗ
trợ giao thức ICP. Chính vì lẽ đó Squid đã trở thành một trong những proxy phổ biến
được nhiều người biết đến và được sử dụng nhiều nhất trong các giải pháp proxy của
cộng đồng mạng. Squid là sự lựa chọn tốt nhất cho một proxy-cache server.
Squid đưa ra kỹ thuật lưu trữ ở cấp độ cao, đồng thời hỗ trợ các dịch vụ thông
thường như FTP, Gopher và HTTP. Squid lưu trữ thông tin mới nhất của các dịch vụ
trên trong RAM, quản lý một cơ sở dữ liệu lớn các thông tin trên đĩa, hỗ trợ kỹ thuật
điều khiển truy cập (SNMP), hỗ trợ giao thức SSL cho các kết nối bảo mật thông qua
proxy. Hơn nữa, Squid có thể liên kết với các cache của các proxy server khác nhằm
sắp xếp lưu trữ các trang web một cách hợp lý thông qua hai mô hình cache ngang
hàng và cache cha-con.
Chúng ta có thể biết được nhiều thông tin và hỗ trợ về Squid proxy từ trang chủ
của Squid: .
Page 9
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
2.1.2. Tại sao chúng ta cần dùng Squid?
Squid Proxy mang đến nhiều lợi ích không tưởng cho hệ thống :
_ Khả năng cân bằng tải .
_ Hỗ trợ xác thực client theo nhiều hệ thống database khác nhau: LDAP,

MySQL,NCSA,…
_ Không mất chi phí bản quyền vì là phần mềm mã nguồn mở.
_ Được dùng nhiều trong các doanh nghiệp lớn, các trường đại học lớn ở trong và
ngoài nước.
_ Quản lý các chính sách QoS rất tốt (giới hạn download phim/ảnh theo giờ, hạn chế
băng thông từng địa chỉ IP, giới hạn số phiên kết nối đồng thời …).
_ Hỗ trợ rất tốt cho các dịch vụ đa phương tiện (video, audio).
_ Khả năng cache nội dung tốt, tốc độ cao.
_ Cho phép thoải mái tùy biến và có khả năng tích hợp với các phần mềm hỗ trợ khác (
Shorewall,…)
_ Bảo mật bằng ứng dụng Iptables miễn phí tích hợp sẵn trên Linux nên rất gọn nhẹ,
đối với các đơn vị không có khả năng tài chính thì không cần mua thêm các thiết bị
hay phần mềm Firewall.
Page 10
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
2.1.3. Cơ chế hoạt động

Mô hình Squid Proxy Server xác thực user thông qua LDAP server
Công việc của một Squid proxy server là thực hiện tiếp nhận yêu cầu từ client,
xác thực client (LDAP server) và quyết định đáp ứng hay không đáp ứng. Nếu yêu cầu
thỏa mãn các chính sách của hệ thống, Squid sẽ kết nối đến server bên ngoài thay cho
client cũng như chuyển trả lời từ các server đó về cho client. Vì thế, Squid proxy vừa
đảm nhiệm vai trò như là cầu nối trung gian giữa server và client (Forward proxy), vừa
như là trạm kiểm soát trên cây cầu do bản thân Squid tạo ra (Reverse proxy).
Bên cạnh việc chuyển tiếp các yêu cầu từ phía client, Squid cũng đồng thời lưu
lại trên đĩa những dữ liệu được trả về tử server bên ngoài, khả năng này gọi là caching.
Những dữ liệu này thường thuộc các giao thức HTTP, HTTPS, FTP,…. Nếu trong thời
gian hiệu lực mà một hay nhiều client cùng yêu cầu một nội dung thì Squid proxy sẽ

ngay lập tức đáp ứng lại những yêu cầu từ phía client từ những nội dung đã được lưu
trữ tại bộ nhớ cache.
Squid có thể cấu hình để trở thành 2 loại proxy server mang nhiệm vụ khác
nhau là Forward proxy và Reverse proxy server. Với Forward proxy thì Squid mang
chức năng là cầu nối trung gian, trung chuyển, chia sẻ các kết nối internet cho hệ
thống mạng nội bộ mà không có bất kì một chính sách nào lên hệ thống. Nhưng với
cấu hình là một Reverse proxy server, Squid mang lại nhiều khả năng vượt hẳn so với
các loại proxy khác. Tuy hoạt động về cơ bản cũng giống Forward proxy, nhưng Squid
sẽ được áp lên các chính sách cho hệ thống mạng nội bộ, ngăn chặn truy cập không
Page 11
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
được phép, điều khiển lưu lượng băng thông,…đem đến sự ổn định và bảo mật cho
toàn bộ hệ thống mạng nội bộ. Đây là điểm nổi bật của Squid proxy server.
2.2. Cài đặt
2.2.1. Yêu cầu về phần cứng
_ Tốc độ truy cập ổ cứng: Squid thường xuyên phải đọc và ghi dữ liệu trên ổ cứng. Vì
thế với ổ đĩa chuẩn SCSI với tốc độ truyền dữ liệu lớn là yêu cầu cần thiết.
_ Dung lượng ổ cứng: dung lượng đĩa dành cho cache phụ thuộc vào kích thước và
nhu cầu truy cập của hệ thống mạng mà Squid Proxy phục vụ.
_ Ram: Là yếu tố quan trọng quyết định tốc độ xử lý của Squid proxy.
2.2.2. Cách cài đặt
• Cách 1:Cài đặt từ binary package
Bước 1:Kiểm tra xem Squid đã được cài đặt trên máy hay chưa:
# rpm -qa|grep squid
Bước 2:Nếu chưa có thì tiến hành cài như sau:
# rpm –ivh tên_gói_Squid
Hoặc có thể cài đặt từ kho phần mềm Linux
- Đối với Debian / Ubuntu:

# apt-get install squid
- Đối với Fedora / Centos:
# yum install squid
- Đối với FreeBSD:
# pkg_add -r squid
• Cách 2:Cài đặt từ source code
B1. Download gói Squid tại website www.squid-cache.org
#wget URL
B2. Giải nén
#tar -xvzf squid-version.tar.gz
B3. Chuyển đến thư mục đã giải nén
#cd squid-version
Page 12
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
B4. Khởi tạo môi trường
#./configure
B5. Biên dịch sang mã nhị phân
#make
B6. Cài đặt
#make install
Lưu ý: Tại bước khởi tạo môi trường, tùy vào nhu cầu sử dụng mà chúng ta có các tùy
chọn khác nhau. Chúng ta có thể tìm thấy hướng dẫn cho các tùy chọn thông qua lệnh:
#./configure help.
Một số tùy chọn cơ bản được Squid cung cấp
 prefix
_ Chỉ định thư mục cho việc cài đặt.
#./configure prefix=/etc/squid/
 enable-gnuregex

_ Cho phép hỗ trợ các biểu mẫu chính quy (regular expression) dùng trong việc tạo các
Access control list.
# ./configure enable-gnuregex
 enable-storeio
_ Cho phép hỗ trợ và chỉ định danh sách các loại I/O modules lưu trữ.
# ./configure enable-storeio = ufs, aufs, coss, diskd, null
 enable-removal-policies
_ Removal policies là những thuật toán được Squid sử dụng để loại bỏ những nội dung
cache cũ khi cần cache những nội dung mới, nhằm tối ưu hóa bộ nhớ cache.
# ./configure enable-removal-policies=heap, lru
 enable-delay-pools
_ Cho phép hỗ trợ kĩ thuật delay pool nhằm giới hạn băng thông sử dụng.
# ./configure enable-delay-pools
 enable-default-err-language
_ Ngôn ngữ dùng trong các thông báo lỗi.
# ./configure enable-default-err-language=English
 enable-auth
_ Cho phép hỗ trợ chứng thực và module được dùng cho chứng thực.
#./configure enable-auth=basic, digest, ntlm
 enable-auth-basic
_ Cho phép hỗ trợ và chỉ định các chương trình chứng thực cơ bản.
Page 13
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
#./configure enable-auth-basic=PAM, NCSA, LDAP
 with-logdir
_ Vị trí mặc định cho những file ghi log của squid.
#./configure with-logdir=/var/log/squid/
 with-pidfile

_ Vị trí mặc định cho squid PID file
#./configure with-pidfile=/var/run/squid.pid
2.3. Cấu hình
2.3.1. Cấu hình cơ bản
_ Với cài đặt bằng lệnh yum, sau khi cài đặt chúng ta có các thư mục cơ bản sau:
/etc/squid/ : chứa các file cấu hình
/var/log/squid : chứa các file ghi log
/var/spool/squid : thư mục chứa cache
_ Mọi hoạt động của Squid được cấu hình qua file squid.conf với đường dẫn
# /etc/squid/squid.conf.
_ Các dịch vụ của Squid thông qua lệnh
# /etc/init.d/squid start|stop|restart|reload .
2.3.2. HTTP port
2.3.2.1. Khái niệm
_ HTTP port là nơi mà Squid sẽ lắng nghe các yêu cầu kết nối từ client.
_ Mặc định Squid sẽ lắng nghe trên port 3128.
2.3.2.2. Thiết lập cho HTTP port
Có nhiều cách thiết lập khác nhau cho HTTP port trong file cấu hình của Squid
squid.conf . Việc lựa chọn cấu hình theo cách nào là tùy vào nhu cầu của hệ thống .
_ Thông thường, Squid sẽ được thiết lập lắng nghe trên port 3128.
Page 14
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Ví dụ:
http_port 3128
Squid sẽ lắng nghe trên port 8080
_ Chúng ta cũng có thể chỉ định tổ hợp địa chỉ IP và port nơi chúng ta muốn Squid
lắng nghe yêu cầu của client. Thường thì chúng ta sử dụng phương pháp này khi server
có nhiều interface và chỉ muốn Squid lắng nghe tương ứng với mỗi interface là kết nối

với một mạng LAN.
Ví dụ:
http_port 192.168.1.1 : 3128
http_port 192.168.2.1 : 8080
Squid lắng nghe tại port 8080 trên interface kết nối với địa chỉ IP là
192.168.2.1 và port 3128 trên interface kết nối với địa chỉ IP là
192.168.1.1
_ Ở những phiên bản mới đây, chúng ta có thể chỉ định những mode hoạt động như
intercept, tproxy,…
+ Intercept mode sẽ hỗ trợ đánh chặn những yêu cầu từ client mà không cần phải cấu
hình ở máy client. Nhược điểm là IPv6 không hỗ trợ cho Intercept mode.
Ví dụ:
http_ port 3128 intercept
+ Tproxy mode kích hoạt tính năng hỗ trợ Transparent Proxy. IPv6 có hỗ trợ tproxy
nhưng yêu cầu phải là các kernel version mới.
Ví dụ:
http_port 8080 tproxy
Lưu ý :
Page 15
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Cần cân nhắc kĩ trong việc chỉ định http_port thuộc các port chuẩn như 3128
hoặc 8080. Việc chỉ định như vậy đặt ra yêu cầu phải đảm bảo bảo mật cao cho các
port này. Nếu chúng ta không muốn dành thời gian cho việc này, chúng ta có thể chỉ
định bất kì port nào tùy thích có giá trị từ 10000 trở lên.
Page 16
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012

CHƯƠNG 3. CẤU HÌNH RULE TRONG SQUID PROXY
3.1. Access Control List
3.1.1. Khái niệm
Access Control List ( ACL) là cấu trúc căn bản để xác định yêu cầu của client
và thường được kết hợp với các Access List Rules khác nhau như
http_access,http_reply_access, để điều khiển truy cập của client thông qua nhiều
giao thức khác nhau. Sau khi tiếp nhận yêu cầu từ client, Squid sẽ thực hiện xác định
yêu cầu từ Access Control Lists và sau đó sẽ quyết định xem có thực hiện yêu cầu này
hay là không thông qua các Access List Rules.
Mỗi Access Control Lists phải được xác định bởi tên và loại, chỉ định giá trị
cho loại ACL cụ thể:
Cú pháp:
acl ACL_NAME ACL_TYPE value
acl ACL_NAME ACL_TYPE “ /path/to/filename ”
Giá trị cho ACL_NAME có thể được thiết lập phía sau ACL_TYPE hoặc Squid
có thể đọc nó từ 1 file riêng biệt. Cần chú ý là các giá trị ACL_NAME và ACL_TYPE
nằm trong file này cần được viết riêng lẻ theo từng dòng.
3.1.2. ACL type
Squid có khoảng 25 ACL types. Mỗi yêu cầu của client Squid nhận được
thường mang các đặc tính sau: địa chỉ IP, domain name, địa chỉ MAC, HTTP header,
Nhưng chúng ta có thể phân ra thành một số loại cơ bản sau:
3.1.2.1. Địa chỉ IP
ACL types: src, dst, myip, arp
a. ACL type : src
Địa chỉ IP thường được sử dụng nhiều để xây dựng các ACL. Hầu hết các hệ
thống hiện nay sử dụng địa chỉ IP để điều khiển truy cập của client thông qua Squid
Page 17
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012

proxy server. ACL src chỉ định địa chỉ IP của client. Khi nhận 1 yêu cầu từ client,
Squid sẽ so sánh địa chỉ IP có trong src ACL với địa chỉ IP của client. Sau đó sẽ quyết
định đáp ứng hay chặn yêu cầu.
Ví dụ:
_ Phòng marketing sử dụng subnet 172.16.2.0/24.
acl marketing src 172.16.2.0/255.255.255.0
hoặc
acl marketing src 172.16.2.0/24
_ Chỉ định những subnet trong mạng nội bộ.
acl localnet src 172.16.0.0/16 192.168.0.0/24 10.0.0.0/8
_ Yêu cầu đặt ra, công ty A trụ sở tại Building A có 4 tầng, mỗi tầng là 1 phòng ban.
Sau khi quy hoạch địa chỉ IP cho các phòng ban, ta có danh sách địa chỉ IP sau:
172.16.1.0/24 ( Tầng 1)
172.16.2.0/24 (Tầng 2)
172.16.3.0/24 (Tầng 3)
172.16.4.0/24 (Tầng 4)
+ Chỉ định địa chỉ IP cho Building A theo cách thông thường:
acl building src 172.16.1.0/24
acl building src 172.16.2.0/24
acl building src 172.16.3.0/24
acl building src 172.16.4.0/24
+ Chỉ định địa chỉ IP theo range IP
acl building src 172.16.1.0/24 – 172.16.4.0/24
b. ACL type: dst
Sử dụng ACL dst để chỉ định địa chỉ IP cho server đích.
Ví dụ:
acl internal_web dst 222.250.2.180/32
acl local_web dst 192.168.1.89/32
Page 18
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server

Phạm Minh Toàn và quản lý log bằng Sarg
2012
Hạn chế của dst ACL là server của website được chỉ định trong ACL có thể thay đổi
địa chỉ IP, điều này làm cho ACL trên không còn tác dụng.
c. ACL type: myip
Sử dụng ACL myip để chỉ định địa chỉ local IP mà Squid proxy server phục vụ
các yêu cầu. Điều này chỉ hữu ích nếu server chạy Squid proxy có nhiều hơn 1
network interface.
Ví dụ:
_ Squid proxy server A có 2 network interface. Xây dựng 2 ACLs cho 2 phòng
Acounting và Engineer sử dụng ACL type myip với 2 subnet 172.16.2.0/24 và
172.16.3.0/24
acl Accounting myip 172.16.2.0/24
acl Engineer myip 172.16.3.0/24
d. ACL type: arp
Chúng ta có thể xây dựng ACL bằng cách chỉ định địa chỉ MAC của client. Địa
chỉ MAC là địa chỉ vật lí hay còn được gọi là số nhận dạng của mỗi thiết bị do nhà sản
Page 19
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
xuất cung cấp. Squid cung cấp một ACL đặc biệt là arp cho phép ta chỉ định địa chỉ
MAC của máy client muốn điều khiển truy cập.
Ví dụ:
_ Chỉ định máy client có địa chỉ MAC 00:1D:3F:4D:5C:EE
acl mac_client arp 00:1D:3F:4D:5C:EE
Một số lưu ý:
_ arp ACL type chỉ thực hiện được khi trong quá trình cài đặt Squid ta lựa chọn
#./configure enable-arp-acl.
_ arp ACL type không hỗ trợ trên tất cả hệ điều hành. Squid có thể chỉ xác định được

địa MAC của client trên cùng một miền broadcast domain.
3.1.2.2. Tên Domain
ACL types: srcdomain, dstdomain, dstdom_regex
Thay vì chỉ định địa chỉ IP trong các ACL. Chúng ta có thể xây dựng các ACL
bằng việc chỉ định tên domain nội bộ hoặc tên domain bên ngoài. Cách này có ưu điểm
hơn so với sử dụng địa chỉ IP do địa chỉ IP server đích mà client yêu cầu có thể bị thay
đổi, điều đó làm cho các ACL đã được xây dựng sẽ không có giá trị nếu không được
cập nhật.
a. ACL type: srcdomain
Với srcdomain ACL, chúng ta có thể chỉ định tên domain trong nội bộ.
Ví dụ:
acl our_site srcdomain www.myweb.com
acl our_site srcdomain .admin.myweb.com
b. ACL type: dstdomain
Với dstdomain ACL, chúng ta có thể chỉ định tên domain của các server bên
ngoài.
Ví dụ:
1. acl out_site dstdomain www.24h.com.vn
2. acl out_site dstdomain .24h.com.vn
Page 20
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Ở ví dụ 1, với việc chỉ định địa chỉ đích là www.24h.com.vn thì Squid sẽ xác định
được bất kì yêu cầu cho bất kì trang web nào thuộc domain www.24h.com.vn. Vì thế,
nếu client truy cập www.24h.com.vn hay www.24h.com.vn/thethao thì Squid đều có
thể hiểu được. Nhưng điều này sẽ không đúng trong trường hợp, yêu cầu của client là
những site như 24h.com.vn hay chungkhoan.24h.com.vn trong khi những site này
đều thuộc domain 24h.com.vn.
Để giải quyết vấn đề trên, ta thêm trước domain name dấu “ . ” như ví dụ 2 .

c. ACL type: dstdom_regex
Với dstdom_regex, chúng ta có thể chỉ định được những từ khóa trong các site
mà client truy cập thông qua file dữ liệu bên ngoài.
Ví dụ:
acl site_key dstdom_regex “/etc/squid/rule/denylistkey.txt”
Trong file denylistkey.txt, chúng ta chỉ định các từ khóa cần chỉ định:
# vi /etc/squid/rule/denylistkey.txt
game
muaban
Với cấu hình trên, Squid sẽ xác định những truy cập với URL có các từ khóa game,
muaban. Sau đó, Squid sẽ đáp ứng hay chặn yêu cầu tùy thuộc vào các access rule.
3.1.2.3. TCP port numbers
ACL types: port, myportname
Chúng ta có thể sử dụng port mạng để xác định các yêu cầu của client sau đó sẽ thiết
lập các access rule để điều khiển truy cập.
a. ACL type: port
Squid cung cấp port ACL để chỉ định port mạng dùng để kiểm soát các client.
Loại ACL này thiết lập rất dễ dàng. TCP port có 16 bit và do đó giá trị sẽ lớn hơn 0 và
nhỏ hơn 65.536. port ACL có thể nhận 1 giá trị hoặc 1 range port.
Ví dụ:
Page 21
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
acl allow_port port 80
acl allow_ports port 2000-6000
acl allow_multiports port 80 443 3000-8000
Thông thường, người quản trị sẽ cho phép một số port cần thiết cho dịch vụ của
hệ thống và sẽ cấm tất cả những port còn lại, ngăn chặn việc truy cập bất hợp pháp tại
các port này nhằm đảm bảo an toàn cho hệ thống.

Squid có nhiều port được xác định trước tại 2 ACL là SSL_ports và Safe_ports
và nằm tại file cấu hình mặc định squid.conf :
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 1025-65535 # unregistered ports
Trên đây là danh sách port cho nhiều giao thức phổ biến như HTTP, FTP, HTTPS,…
Tùy vào hệ thống và nhu cầu của client mà người quản trị có thể thêm một số port
khác vào SSL_ports và Safe_ports. Nhưng cần phải cẩn trọng trong việc thêm port mới
vào danh sách Safe_ports. Nếu chưa thực sự hiểu rõ ý nghĩa của port muốn thêm vào
thì điều này nhiều lúc sẽ làm ảnh hưởng đến sự an toàn của hệ thống.
Ví dụ:
Nếu thêm mới port 25 (Simple Mail Transfer Protocol or SMTP) vào danh sách
Safe_ports, client có thể relay mail thông qua Squid proxy server, do những điểm
Page 22
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
tương đồng giữa 2 protocols HTTP và SMTP. Khi đó hệ thống sẽ đối mặt với vấn đề
mail spam và chúng ta hoàn toàn không muốn Squid cache được sử dụng cho việc
spam relay.
b. ACL type: myportname
Squid cũng cung cấp 1 ACL type sử dụng port mạng là myportname nhưng nó

khác biệt với ACL type port. ACL type myportname chỉ định port number trên Squid
proxy server nơi mà client kết nối tới Squid.
Cũng tương tự như ACL type myip, myportname chỉ hữu ích khi chúng ta cấu hình
Squid proxy server lắng nghe trên nhiều port sử dụng http_port trong file cấu hình
squid.conf .
Ví dụ:
_ Squid proxy server A có 2 network interface. Xây dựng 2 ACL cho 2 phòng
Acounting và Engineer sử dụng ACL type myportname với 2 subnet 172.16.2.0/24 và
172.16.3.0/24, thiết lập Squid lắng nghe trên 2 port là 8080 và 3128. Ứng với mỗi port
là 1 subnet.
http_ port 172.16.2.0/24:8080 Accounting_ port
http_ port 172.16.3.0/24:3128 Engineer_ port
acl accounting_acl myportname Accouting_ port
acl engineer_acl myportname Engineer_ port
3.1.2.4. HTTP method
Page 23
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
ACL type: method
Mỗi yêu cầu HTTP đều đi cùng với một phương thức HTTP. Ví dụ, client gõ
/ vào trình duyệt web, khi đó client thực hiện yêu cầu bằng
phương thức GET đến website.com server. Hoặc là, khi client tương tác với một
online form bất kì, khi đó client thực hiện yêu cầu bằng phương thức POST đến
server.
Squid hỗ trợ các phương thức HTTP cơ bản sau: GET, POST, PUT, HEAD,
CONNECT, TRACE, OPTIONS và DELETE. GET là phương thức HTTP được sử
dụng nhiều nhất, sau đó đến POST, PUT và các phương thức khác.
Squid cung cấp ACL type method để xác định các yêu cầu dựa vào phương thức
HTTP cho từng yêu cầu cụ thể mà client sử dụng. Hầu hết các phương thức HTTP

mặc định được cho phép, ngoại trừ phương thức CONNECT. Bởi phương thức
CONNECT được sử dụng cho các yêu cầu turnneling thông qua HTTP proxy. Chúng
ta cần phải đặc biệt cẩn trọng với phương thức HTTP này, bởi vì chúng ta sẽ không
muốn Squid bị thông qua bởi các công cụ và dịch vụ remote. Mặc định Squid cho
phép sử dụng phương thức CONNECT trong file cấu hình:
acl CONNECT method CONNECT
acl SSL_ports port 443
http_access deny CONNECT !SSL_ports
Với cấu hình trên, Squid chỉ cho phép CONNECT method cho SSL trên port
443, đây là standard port cho HTTPS. Còn những yêu cầu sử dụng CONNECT
method khác đều bị cấm truy cập. Tuy nhiên, tùy vào nhu cầu của hệ thống, người
quản trị có thể tiến hành thêm port mới vào SSL_ports ACL nếu cần thiết. Nhưng cần
phải chắc chắn port thêm vào nằm trong danh sách safe ports .
3.1.2.5. Protocol
ACL type: proto
Page 24
Lê Nguyễn Hoài Phong Triển khai Squid Proxy Server
Phạm Minh Toàn và quản lý log bằng Sarg
2012
Squid cung cấp 1 loại ACL khác là proto. Proto ACL có thể xác định giao thức
được sử dụng trong yêu cầu của client. Ví dụ, khi client truy cập đến
hay / thì giao thức được sử dụng là HTTP và FTP.
Một số giao thức khác cũng thường được sử dụng như HTTPS,SSH,…
Một số ví dụ sử dụng proto:
_ Deny tất cả yêu cầu FTP.
acl ftp_requests proto FTP
http_access deny ftp_requests
_ Deny tất cả yêu cầu FTP từ một IP cụ thể.
acl ftp_requests proto FTP
acl marketing src 172.16.2.8/24

http_access deny marketing ftp_requests
Ngoài những giao thức cơ bản đã đề cập, Squid còn hỗ trợ giao thức đặc biệt
cache_object. Giao thức này được sử dụng cho interface quản lý cache. Theo mặc
định, việc quản lý cache chỉ có thể truy cập từ Squid proxy server (localhost), điều này
thể hiện qua file cấu hình mặc định ban đầu squid.conf :
acl manager proto cache_object
acl localhost src 127.0.0.1
http_access allow manager localhost
http_access deny manager
Với cấu hình trên, giao thức cache_object chỉ sử dụng được từ localhost. Nếu
Administrator muốn sử dụng giao thức cache_object từ một máy khác ( ví dụ từ máy
vi tính riêng của Administrator), họ có thể cấu hình sau:
acl manager proto cache_object
acl localhost src 127.0.0.1
acl admin src 192.168.10.80/32
Page 25

×