Căn bản Squid Proxy Server .

  là một chương trình Internet Proxy – Caching có vai trò tiếp nhận các yêu cầu từ Client và chuyển cho Internet Server thích hợp. Đồng thời nó sẽ lưu lại trên đĩa những dữ liệu được trả về từ Internet Server – gọi là caching.

Cài từ gói phần mềm có sẵn:

+ Trên 6 có thể cài bằng Yum như sau:

yum squid

+ Trên 6 có thể cài bằng apt như sau:

apt-get install squid3

– Ngoài ra có thể cài từ mã nguồn (source code) – Ví dụ sau được thực hiện trên CentOS 6.2 :

* Bước 1: Tải mã nguồn Squid 3.1 ( có thể lên trang chủ Squid để tìm link bản mới nhất)

wget http://www.squid-.org/Versions/v3/3.1/squid-3.1.19.tar.gz

* Bước 2 : Giải nén mã nguồn Squid

tar xzvf squid-3.1.19.tar.gz

* Bước 3: Di chuyên vào thư mục chứa mã nguồn Squid

cd squid-3.1.19

* Bước 4: Cấu hình tùy chọn và kiểm tra hệ thống trước khi biên dịch
Xem các danh sách các tùy chọn:

./configure –help | more

Lưu ý: Nếu muốn bật tùy chọn “enable--netfilter” ( hỗ trợ TProxy) thì phải có thư viện libcap trên hệ thống để biên dịch, nếu không có, có thể cài đặt libcap như sau:

yum install libcap-devel

Sau cùng chạy configure cùng với các tùy chọn :

./configure --prefix=/opt/squid/ --with-logdir=/var/log/squid/ --with-pidfile=/var/run/squid.pid --enable-storeio=ufs,aufs --enable-removal-policies=lru,heap --enable-icmp --enable-useragent-log --enable-referer-log --enable-linux-netfilter --enable-auth-basic=PAM,NCSA,LDAP

* Bước 5: Biên dịch

make

* Bước 6: Cài đặt

make install
useradd squid
mkdir /var/spool/squid
chown squid:squid /var/spool/squid/
chown squid:squid /var/log/squid/

– Nơi lưu tập tin cấu hình “squid.conf”:
+ Đối với CentOS 6 :

/etc/squid/squid.conf

+ Đối vói Debian 6 :

/etc/squid3/squid.conf

+ Đối với ví dụ cài từ mã nguồn ở trên :

/opt/squid/etc/squid.conf

– Kiểm tra squid có chạy được hay chưa?
+ Với CentOS 6/Debian 6:
Khởi chạy squid bằng lệnh sau:
( CentOS 6)

service squid start

( Debian 6)

service squid3 start

Sau đó cấu hình trình duyệt trỏ về Squid. Lưu ý cổng mặc định của Squid là 3128
+ Ví dụ với squid cài từ mã nguồn:
Chỉnh sửa tập tin /opt/squid/etc/squid.conf với nội dung như sau :

cache_effective_user proxy
cache_effective_group proxy
cache_dir ufs /var/spool/squid 512 16 256
visible_hostname gocit.vn
http_port 3128
acl web port 80
acl web port 443
acl localnet src 19w168.1.0/24
http_access deny !web
http_access allow localnet

(Giải thích : Tập tin squid.conf ở trên ví dụ sẽ tạo thư mục chứa cache ở /var/spool/squid và cho phép các máy có địa chỉ IP nằm trong subnet 192.168.1.0/24 truy cập Web qua cổng 80 hoặc 443 thông qua squid proxy server cổng 3128)

Chạy lệnh tạo thư mục chứa cache theo thông số từ “squid.conf”: squid -z

Căn bản : Proxy là một dịch vụ cho phép người dùng 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 người sử dụng 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 mạng LAN ra Internet. Ví dụ như có thể ngăn chặn một máy tính nào đó vào mạng, thiết lập thời gian truy cập, cấm  Trong bài viết này sẽ chỉ đề cập đến vẫn đề xác thực quyền truy cập với mật khẩu, hạn chế nội dung download và hạn chế truy cập các website.

Cài đặt Squid trên :

# apt-get squid

Tạo user và sử dụng NCSA.

# htpasswd /etc/squid/matkhau pingvin
New password:
Re-type new password:
Updating password for user pingvin

và:
# chmod o+r /etc/squid/matkhau

Cấu hình để sử dụng nsca_auth:

Mở file /etc/squid/squid.conf:

# vi /etc/squid/squid.conf

Tìm những dòng tương tự và bỏ # đi:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/matkhau
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

nhớ chỉnh lại /usr/lib/squid/ncsa_auth /etc/squid/matkhau cho đúng.
Tìm đến phần ACL của squid.conf và thêm vào đoạn sau:

acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Như vậy để vào internet người dùng phải nhập username và mật khẩu tương ứng.

Hạn chế nội dung download:

Để hạn chế nội dung download cần tạo một file trong /etc/squid, ví dụ: blocks.acl với cấu trúc tương tự:

\.[Aa][Vv][Ii]$
\.[Mm][Pp][Gg]$
\.[Mm][Pp][Ee][Gg]$

sau đó thêm vào /etc/squid/squid.conf đoạn dưới đây (phần ACL và http_access) :

#phần ACL:

acl blockfiles urlpath_regex “/etc/squid/blocks.acl”
#
#phần http_access:
http_access deny blockfiles

Hạn chế truy cập các website:

Để thực hiện việc này hãy tạo 2 file: /etc/squid/allowed-sites.squid – những trang được phép truy cập và /etc/squid/restricted-sites.squid – những trang bị ngăn chặn.

# File: /etc/squid/allowed-sites.squid
gocit.vn

và:

# File: /etc/squid/restricted-sites.squid
.porn.com

sau đó thêm vào phần ACL của squid.conf đoạn :

acl GoodSites dstdomain "/etc/squid/allowed-sites.squid"
acl BadSites dstdomain "/etc/squid/restricted-sites.squid"

và phần http_access của squid.conf đoạn:

http_access deny BadSites
http_access allow GoodSites

Squid Proxy trong suốt cho phép client kết nối internet mà không cần phải cấu hình gì. Mọi cấu hình đều tại server. Với Squid từ phiên bản 2.6 trở đi để cấu hình proxy trong suốt chỉ cần thêm vào file cấu hình dòng:

http_port 3128 transparent

Sau đó sử dụng thực hiện các lệnh sau:

# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# echo 1 > /proc/sys/net/ipv4/ip_forward

với eth1 là card mạng kết nối với LAN. Câu lệnh thứ nhất thực hiện đổi tất cả các kết nối đi qua cổng 80 sang cổng 3128, câu lệnh thứ hai bật chế độ IP forwarding.
Tuy nhiên nếu server của bạn kết nối internet ppp0 qua một card mạng khác eth0 thì cần thực hiện một lệnh nữa:

# iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE

Khởi động lại squid là xong.
Để kiểm tra thử xem proxy đã trong suốt hay chưa, trên client hãy vào một trang web bất kỳ và tại terminal trên server chạy:

# tail /var/log/squid/access.log

bạn dễ dàng có thể nhận thấy. Nhớ rằng trên client không cần cấu hình .

Apt & wget qua HTTP Proxy

-Trong trường hợp bạn vào mạng qua một HTTP proxy để có thể sử dụng apt & wget có thể làm như sau:

# echo 'Acquire::http::Proxy "http://username:pass@proxy-server:port";' >> /etc/apt/apt.conf

nếu proxy server không yêu cầu user và pass thì chỉ cần: http://proxy-server:port
hoặc tại terminal sử dụng:

# export http_proxy=http://username:pass@proxy-server:port

sau đó apt hay wget tuỳ ý.
với cách làm như trên bạn cũng có thể sử dụng wget tại terminal đó. Nếu không muốn có thể thêm đoạn sau vào $HOME/.wgetrc hay /etc/wgetrc:

http_proxy = http://proxy-server:port/
ftp_proxy = http://proxy-server:port/

Advertisements

Trả lời

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s