Làm cách nào để cài đặt Squid Proxy Server trên máy chủ Ubuntu 20.04 LTS Linux cho web clients? Làm cách nào để lọc lưu lượng truy cập Internet cho người dùng mạng LAN, chẳng hạn như blocking domains, URL không mong muốn, giờ làm việc để truy cập Internet, v.v. bằng cách sử dụng Squid chạy trên máy chủ Ubuntu?
Máy chủ proxy Squid là một proxy web miễn phí và mã nguồn mở bộ nhớ đệm hiệu suất cao và proxy web HTTP chuyển tiếp. Nó chủ yếu được sử dụng để tăng tốc máy chủ web bằng cách lưu vào bộ nhớ đệm các yêu cầu lặp đi lặp lại, bộ nhớ đệm DNS và web lookup cho một mạng được chia sẻ. Nó cũng bổ sung một chính sách bảo mật để lọc ra những lưu lượng truy cập không mong muốn cho người dùng web hoặc văn phòng.Đầu tiên, cập nhật hệ thống bằng lệnh apt:
sudo apt update
sudo apt upgrade
Chúng ta có thể tìm kiếm gói squid như sau: apt show squid
Output:
Package: squid
Version: 4.10-1ubuntu1
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Luigi Gangitano <luigi@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 8,792 kB
Provides: squid3
Pre-Depends: adduser
Depends: libc6 (>= 2.29), libcap2 (>= 1:2.10), libcom-err2 (>= 1.43.9), libdb5.3, libecap3 (>= 1.0.1), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.0), libgnutls30 (>= 3.6.6), libgssapi-krb5-2 (>= 1.17), libkrb5-3 (>= 1.10+dfsg~), libldap-2.4-2 (>= 2.4.7), libltdl7 (>= 2.4.6), libnetfilter-conntrack3 (>= 1.0.7), libnettle7, libpam0g (>= 0.99.7.1), libsasl2-2 (>= 2.1.27+dfsg), libstdc++6 (>= 9), libxml2 (>= 2.7.4), netbase, logrotate (>= 3.5.4-1), squid-common (>= 4.10-1ubuntu1), lsb-base, libdbi-perl, ssl-cert
Recommends: libcap2-bin, ca-certificates
Suggests: squidclient, squid-cgi, squid-purge, resolvconf (>= 0.40), smbclient, ufw, winbind, apparmor
Homepage: http://www.squid-cache.org
Download-Size: 2,556 kB
APT-Sources: http://mirrors.linode.com/ubuntu focal/main amd64 Packages
Description: Full featured Web Proxy cache (HTTP proxy)
Squid is a high-performance proxy caching server for web clients, supporting
FTP, gopher, ICY and HTTP data objects.
Cài đặt Squid 4
Bây giờ phần mềm hệ thống đã được cập nhật, hãy cài đặt máy chủ Squid, hãy nhập:
sudo apt install squid
Cấu hình máy chủ Squid
Tệp cấu hình squid được đặt tại thư mục /etc/squid/squid.conf và /etc/squid/conf.d/. Chỉnh sửa /etc/squid/squid.conf bằng editor. Tạo một bản sao lưu của tệp gốc để có thể quay lại nếu có sự cố bằng cách sử dụng lệnh cp: sudo cp -v /etc/squid/squid.conf{,.factory}
Lệnh trên có nghĩa là sao lưu một bản như sau: /etc/squid/squid.conf' -> '/etc/squid/squid.conf.factory'
sudo nano /etc/squid/squid.conf
## Hoặc ##
sudo vim /etc/squid/squid.conf
Thay đổi cổng squid và danh sách địa chỉ IP. Theo mặc định, squid lắng nghe tất cả các địa chỉ IP trên tất cả các interface. Cổng mặc định là TCP 3128. Tìm dòng: http_port 3128
Thay đổi nó như sau hoặc theo nhu cầu của bạn: http_port 10.8.0.1:3128
Thiết lập ACL cho các cổng
ACL có nghĩa là một sơ đồ kiểm soát truy cập (access control scheme) và chúng tôi có thể sử dụng nó để từ chối hoặc cho phép truy cập theo nhu cầu của mình. Ví dụ: time acl cho phép bạn thiết lập thời gian duyệt internet trong ngày và ngày trong tuần cho người dùng của mình. Bạn không thích các domain truyền thông xã hội? Chúng tôi có thể chặn miền như Facebook và các domain khác bằng máy chủ proxy Squid.
Xác định SSL và các cổng an toàn mà bạn muốn cho phép
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
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
Điều chỉnh danh sách các mạng IP (nội bộ) từ nơi duyệt web được phép
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
Xác định địa chỉ mạng LAN của bạn như sau
acl mylan src 10.8.0.1/24 với 10.8.0.1 là địa chỉ IP của máy
Xác định các miền khác mà bạn muốn chặn:
acl baddomain1 dstdomain www-bad-guys-domain-name-here
Sử dụng http_access cho phép các client HTTP như trình duyệt truy cập vào cổng HTTP. Đây là danh sách kiểm soát truy cập chính.
# Block access to all Unsafe ports i.e. only allow Safe_ports defined in acl above #
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# Block domains #
http_access deny baddomain1
# only allow cachemgr access from localhost #
http_access allow localhost manager
http_access deny manager
# Allow internet access to localhost and mylan sub/net #
http_access allow localhost
http_access allow mylan
# and finally deny all other access to this proxy server #
http_access deny all
Giả sử nếu bạn có nhiều địa chỉ IP được chỉ định cho máy chủ của mình, chúng tôi có thể thay đổi địa chỉ IP gửi đi của máy chủ proxy như sau:
tcp_outgoing_address 139.1.2.3 với địa chỉ 139.1.2.3 là địa chỉ IP mà bạn muốn thay thế
Đặt kích thước bộ nhớ đệm theo nhu cầu của bạn: cache_mem 256 MB
Ẩn địa chỉ IP thực của người dùng trên Squid
forwarded_for delete
via off
forwarded_for off
follow_x_forwarded_for deny all
request_header_access X-Forwarded-For deny all
forwarded_for delete
Chỉ định danh sách các máy chủ định danh DNS để sử dụng: dns_nameservers 127.0.0.1 10.8.0.1
Squid có nhiều tùy chọn. Tôi đã đề cập đến vấn đề cơ bản ở đây. Do đó, hãy xem trang này, nơi bạn tìm thấy tất cả các chỉ thị cấu hình Squid.
Xác minh rằng các tùy chọn cấu hình là hợp lệ: sudo /usr/sbin/squid -k check
Start/stop/restart Squid
Đầu tiên, hãy bật dịch vụ Squid tại thời điểm khởi động bằng lệnh systemctl:
sudo systemctl enable squid.service
Khởi động máy chủ Squid: sudo systemctl start squid.service
Stop máy chủ Squid: sudo systemctl stop squid.service hoặc sudo squid -k shutdown
Khởi động lại máy chủ Squid: sudo systemctl restart squid.service
Hiển thị status Squid: sudo systemctl status squid.service
Bất cứ khi nào bạn thực hiện thay đổi đối với squid.conf, hãy tải lại nó như sau: sudo squid -k reconfigure Hoặc sudo systemctl reload squid.service
Block domains
Chặn twitter.com và facebook.com:
acl socialsite dstdomain .twitter.com
acl socialsite dstdomain .facebook.com
http_access deny socialsite
Block URLs sử dụng keywords
Giả sử nếu có bất kỳ url nào chứa từ khóa như "foo" hoặc "browse.php?u=", hãy chặn nó bằng cách sử dụng url_regex acl:
acl urlkeywordsblocks url_regex -i "/etc/squid/blocked-urls-keyword.conf"
http_access deny urlkeywordsblocks
Tạo một tệp có tên /etc/squid/blockd-urls-keyword.conf như sau:
sudo vim /etc/squid/blocked-urls-keyword.conf
Thêm các urls/keywords:
foo
browse.php?u=
Block file extensions
Chặn các phần mở rộng tệp không mong muốn bằng proxy Squid:
acl blockedexentions urlpath_regex -i "/etc/squid/blocked-file-externsions.conf"
http_access deny blockedexentions
Thêm các nội dung dưới đây vào /etc/squid/blocked-file-externsions.conf:
.exec
.mp4
.mp3
.zip
.pdf
Chỉ cho phép truy cập Internet trong khoảng thời gian từ 9:00 sáng đến 18:00 các ngày trong tuần
acl official_hours time M T W H F 09:00-18:00
http_access deny all
http_access allow official_hours
Cấu hình trình duyệt web
Cài đặt kết nối để sử dụng proxy có thể được đặt trong Firefox Preferences như sau: