1. Trang chủ
  2. » Công Nghệ Thông Tin

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

66 2,1K 19

Đ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 66
Dung lượng 1,08 MB

Nội dung

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ả

Trang 1

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

Trang 2

CHƯƠNG 1 TỔNG QUAN VỀ PROXY

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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à:

Trang 8

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

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

Trang 9

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: http://www.squid-cache.org

Trang 10

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

Trang 11

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

Trang 12

đượ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.

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

Trang 13

B4 Khởi tạo môi trường

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:

_ 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

_ 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

Trang 14

#./configure enable-auth-basic=PAM, NCSA, LDAP

_ 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

_ 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

Trang 15

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

_ Ở 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

Trang 16

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.

Trang 17

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:

Trang 18

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

_ 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:

Trang 19

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

Trang 20

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

Trang 21

Ở 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:

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ụ:

Trang 22

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

Trang 23

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

Trang 24

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õ

http://website.com / 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

Trang 25

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

http://myweb.com/ hay ftp://myftp.com / 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

Trang 26

http_access allow manager localhost

http_access allow manager admin

http_access deny manager

Cấu hình trên đảm bảo chỉ có Administrator có thể sử dụng interface quản lý cache của Squid proxy server

3.1.2.6 Thời gian

ACL type : time

Điều khiển truy cập dựa vào thời gian là một trong những điểm đặc trưng thú vị

của Squid Sử dụng ACL type time cho phép chúng ta xác định thời gian của ngày, ngày của tuần và khoảng thời gian Cấu trúc cơ sở của time :

acl ACL_NAME time [ngày-viết tắt] [h1:m1- h2:m2]

Chỉ định ngày, khoảng thời gian là lựa chọn tùy ý và tùy theo nhu cầu của hệ thống Nhưng phải chỉ định ít nhất một loại thời gian Kiểu giờ mặc định nên để là 24h Sau đây là danh sách ngày viết tắt được sử dụng :

_ Xây dựng ACL xác định tất cả những requests vào Thứ 2-6-Chủ nhật

acl days time M F S

Trang 27

_ Xây dựng ACLs quản lý truy cập cho công ty A có giờ làm việc từ thứ 2-7, ngày 8h, sáng từ 8h - 11h00, chiều từ 13h - 17h00, giờ nghỉ trưa từ 11h00 - 12h59

acl morning_time time M T W H F A 08:00 – 10:59

acl lunch_time time M T W H F A 11:00- 12:59

acl afternoon_time time M T W H F A 13:00 – 17:00

3.1.2.7 URL và URL path

ACL type: url_regex, urlpath_regex

a ACL type: url_regex

Squid cung cấp ACL type url_regex để chỉ định các biểu mẫu chính quy tương

ứng với các định dạng file có trong URL mà client yêu cầu Các URL thường có dạng sau: http://www.zing.vn/americanmusic/index.php?Somebody.mp3 ,

Biểu mẫu chính quy (regular expression) là 1 chuỗi kí tự có quy tắc, có chính quy, nhằm để mô tả những chuỗi kí tự khác

Ví dụ :

_ Xây dựng ACL chỉ định biểu mẫu chứa những file hình ảnh dạng mp3

acl web_mp3 url_regex mp3$

Mặc định, các biểu mẫu chính quy có phân biệt chữ hoa và chữ thường Với ví dụ trên,

ACL web_ mp3 sẽ không phù hợp nếu file nhạc MP3 Để tránh tình trạng này, chúng

ta có thể thêm tùy chọn –i trong ACL

acl web_mp3 url_regex -i mp3$

b ACL type: urlpath_regex

Với urlpath_regex cho phép thực hiện ACL url_regex thông qua file dữ liệu

nằm bên ngoài Trong file dữ liệu, chúng ta chỉ định các biểu mẫu tương ứng với các định dạng file có trong URL mà client yêu cầu

Ví dụ:

acl list_file_type urlpath_regex “/etc/squid/rule/denyfiletype.txt”

Trang 28

Trong file denyfiletype.txt, chúng ta chỉ định các biểu mẫu:

ACL type: proxy_auth, proxy_auth_regex

a ACL type: proxy_auth

Cách tốt nhất để bảo vệ hệ thống khỏi những hacker từ bên ngoài là sử dụng proxy authentication Với proxy authentication, khi thực hiện một yêu cầu , client cần phải xác thực thông tin của mình Thường đó là username và password Sau khi đánh giá và kiểm tra thông tin xác thực của client, Squid mới bắt đầu thực hiện kiểm soát truy cập Điểm đáng chú ý là Squid không thể xác nhận tính hợp lệ của các thông tin xác thực từ client Công việc này được xử lý nhờ sự trợ giúp của các quá trình bên ngoài

Squid cung cấp ACL type proxy_auth để chỉ định danh sách username cần

chứng thực Tuy nhiên, Squid không thể tự kiểm tra tính hợp lệ của các thông tin này,

vì thế chúng ta cần chỉ định một chương trình chứng thực để xác thực username và password được gửi từ client Chương trình xác thực được thiết lập bởi dòng

auth_param tại file cấu hình squid.conf.

Hiện tại, Squid hỗ trợ một số dịch vụ xác thực như: HTTP Basic protocol, Digest authentication protocol, NTLM hay một số hệ thống cơ sở dữ liệu như : LDAP, MySQL,…

Trang 29

_ Để thực thi proxy authentication Chúng ta thực hiện cấu hình sau:

acl authen proxy_auth REQUIRED

http_access allow authen

http_access deny all

Với cấu hình trên, chỉ những client được chứng thực mới có thể truy cập đến proxy server

_ Nếu chúng ta muốn chỉ định một số đặc quyền riêng cho một user nào đó Ví dụ chỉ

có administrator mới có thể truy cập đến site http://admin.myweb.com, các user khác

nếu được chứng thực thì vẫn truy cập bình thường ngoại trừ site của admin, chúng ta

có thể cấu hình như sau:

acl authen proxy_auth REQUIRED

acl admin proxy_auth administrator

acl admin_site dstdomain admin.myweb.com

http_access allow admin admin_site

http_access deny admin_site

http_access allow authen

http_access deny all

b ACL type: proxy_auth_regex

Squid hỗ trợ ACL type proxy_auth_regex để chỉ định những usernames cần

chứng thực sử dụng regular expression ACL này chỉ hữu ích khi username được đặt theo khuôn mẫu nhất định Ví dụ phòng ban_username

Ví dụ:

_ Những user thuộc phòng marketing chỉ được truy cập vào site

http://marketing.myweb.com chỉ khi đã được chứng thực

acl marketing_regex proxy_auth_regex ^marketing _

acl marketing_site dstdomain marketing.company.com

http_access allow marketing_regex marketing_site

Trang 30

http_access deny all

3.1.2.9 User limit

ACL type: maxconn

Để đảm bảo hệ thống mạng hoạt động thông suốt, tiết kiệm băng thông, thường

chúng ta sẽ giới hạn lượng kết nối của các client Squid cung cấp ACL type maxconn,

cho phép chỉ định số lượng kết nối tối đa từ địa chỉ IP của client

Ví dụ:

acl accounting_ip src 172.16.2.0/24

acl engineer_ip src 172.16.3.0/24

acl accounting_max maxconn 10

acl engineer_max maxconn 20

http_access deny accounting_ip accounting_max

http_access deny engineer_ip engineer_max

Thiết lập trên cho phép, những client thuộc accounting có tối đa 10 kết nối và engineer có 20 kết nối tại một thời điểm Nếu vượt quá maxconn thì yêu cầu sau của client sẽ bị chặn

3.1.2.10 HTTP Header

ACL type: browser, req_mine_type, rep_mine_type, http_status

a ACL type : browser

Hầu hết các HTTP request đều mang User-agent trong header, đó là một chuỗi thể hiện tên và version của browser và hệ điều hành Ví dụ đối với Mozilla Firefox 3.6.6 trên hệ điều hành Linux-32bit có User-agent sau:

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.6) Gecko/201625Firefox/3.6 GTB7.1

Squid cung cấp ACL type browser, cho phép xác định yêu cầu của clien dựa

vào User-agent header và kết hợp với access rule để kiểm soát truy cập của client

Trang 31

Ví dụ:

_ Chỉ cho phép những truy cập từ Firefox

acl firefox_clients browser -i firefox

http_access allow firefox_clients

http_access deny all

b ACL types: req_mine_type, rep_mine_type

Req_mine_type và rep_mine_type ACL type được sử dụng chỉ định các Content

– Type của các yêu cầu của client và trả lời từ server Hai ACL type này giúp chỉ định loại dữ liệu nào sẽ được hoặc không được upload hoặc download từ các servers

Với upload, chúng ta sử dụng req_mine_type ACL.

Ví dụ:

acl upload_video req_mine_type -i ^video/

http_access deny upload_video

Với download, chúng ta dùng rep_mine_type ACL Ví dụ, chúng ta muốn chặn mọi

download video từ các servers

Ví dụ:

acl down_video rep_mine_type -i ^video/

http_reply_access deny down_video

c ACL type: http_status

Khi Squid liên lạc tới remote server trên yêu cầu của client, nó sẽ nhận trả lời

cụ thể cho mỗi yêu cầu Tùy vào hiện trạng của remote server, mà Squid sẽ nhận những trạng thái (status) khác nhau Ví dụ như với status 200 là yêu cầu thành công,

404 là trang web không tìm thấy,

Squid có ACL http_status để chỉ định những status nhận được từ remote server

Trang 32

Ví dụ:

_ Chặn truy cập tất cả những server bị lỗi ( status 5xx)

acl fail_server http_status 500-510 http_reply_access deny fail_server

3.1.3 Một số lưu ý khi xây dựng các ACL

Trong trường hợp danh sách giá trị muốn kiểm soát của chúng ta quá lớn, chúng

ta có thể tạo một file chứa danh sách đó, sau đó chỉ định Squid đọc danh sách từ file

Ví dụ:

acl list_sites dstdomain '/etc/squid/list_sites.txt'

Chúng ta sẽ tạo file list_sites.txt cùng thư mục với file cấu hình của Squid squid.conf Thông thường file list_sites.txt được thiết lập cho ví dụ trên như sau:

# Chỉ định một domain name trên mỗi dòng

Trang 33

3.1 Access List Rules

Để cấu hình cho Squid proxy server kiểm soát các yêu cầu truy cập từ client, ta cần xây dựng các Access Control List kết hợp với các Access List Rules ACL chỉ có thể sử dụng để xác định các yêu cầu và yêu cầu đó của client có được đáp ứng hay không thì còn tùy thuộc vào các Access List Rules

Squid cung cấp nhiều Access List Rules, http_access là một trong những Access

Rules được sử dụng phổ biến Chúng ta có thể thấy điều này ở các ví dụ thuộc phần Access Control List (ACL)

Khi chúng ta có nhiều Access Rule trong file cấu hình, Squid sẽ thực thi tuần tự

từ trên xuống dưới

Một số Access Control Rules cơ bản mà Squid proxy cung cấp:

3.1.1 HTTP protocol

a Cho các yêu cầu

Http_access là access rule quan trọng nhất trong Access List Rules Http_access sẽ chỉ định yêu cầu HTTP nào của client sẽ được đáp ứng hoặc ngược lại

Nếu thiết lập sai cho access rule này, hệ thống mạng sẽ dễ bị phá hoại và Squid cache

có thể sẽ bị lạm dụng bởi những client không được phép truy cập đến nó

Ví dụ:

_ Cho phép truy cập từ các client đã biết, chặn những client còn lại

acl known_user src 172.16.1.0/24

http_access allow known_user

http_access deny all

b Cho các trả lời

Ngoài cách sử dụng http_access cho các yêu cầu, Squid còn cung cấp access rule http_reply _access dùng quản lý các trả lời mà Squid proxy server nhận được từ

các servers

Ngày đăng: 09/10/2014, 14:31

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w