TKJ SMKN 1 GEGER MADIUN

Teknik Komputer dan Jaringan

Sunday, April 14, 2013

Linux: Setup transparent proxy dengan Squid dalam tiga langkah mudah




Pengaturan saya:

i) Sistem: HP Xeon dual sistem CPU dengan 8 GB RAM (baik untuk cumi-cumi).
ii) eth0: IP: 192.168.1.1
iii) eth1: IP: 192.168.2.1 (192.168.2.0/24 jaringan (sekitar 150 jendela sistem XP))
iv) OS: Red Hat Enterprise Linux 4.0 (Setelah instruksi harus bekerja dengan Debian dan semua Linux distro lain)
Eth0 terhubung ke internet dan eth1 terhubung ke lokal lan yaitu sistem bertindak sebagai router.

Konfigurasi Server

  • Langkah # 1: Konfigurasi Squid sehingga akan bertindak sebagai transparent proxy
  • Langkah # 2: Konfigurasi Iptables
    • a) Konfigurasi sistem sebagai router
    • b) Teruskan semua permintaan http ke 3128 (DNAT)
  • Langkah # 3: Jalankan skrip dan memulai layanan squid
Pertama, Server Squid diinstal (menggunakan up2date cumi) dan dikonfigurasi dengan menambahkan perintah berikut ke file:
# vi /etc/squid/squid.conf
Mengubah atau menambah arahan cumi berikut:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan

Dimana,
  • httpd_accel_host virtual: Squid sebagai akselerator httpd
  • httpd_accel_port 80: 80 adalah port yang Anda inginkan untuk bertindak sebagai proxy
  • httpd_accel_with_proxy pada: Squid bertindak baik sebagai akselerator httpd lokal dan sebagai proxy.
  • httpd_accel_uses_host_header pada: Header dihidupkan yang merupakan host dari URL.
  • acl lan src 192.168.1.1 192.168.2.0/24: daftar kontrol akses, hanya mengizinkan komputer LAN untuk menggunakan squid
  • http_access allow localhost: akses Squid ke LAN dan localhost ACL hanya
  • http_access allow lan: - sama seperti di atas -
Berikut adalah daftar lengkap dari squid.conf untuk referensi Anda (grep akan menghapus semua komentar dan sed akan menghapus semua baris kosong, terima kasih kepada David Klein untuk petunjuk cepat):
# grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'
OR, cobalah sed (terima kasih kepada Kotnik untuk trik sed kecil)
# cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'
Output:
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
cache_mem 1024 MB
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname myclient.hostname.com
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
coredump_dir /var/spool/squid

Konfigurasi Iptables

Selanjutnya, saya telah menambahkan mengikuti aturan untuk meneruskan semua permintaan http (datang ke port 80) ke server Squid port 3128:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Berikut ini adalah shell script lengkap. Script pertama mengkonfigurasi sistem Linux sebagai router dan meneruskan semua http request ke port 3128 (Download fw.proxy shell script):
#!/bin/sh
# squid server IP
SQUID_SERVER = "192.168.1.1"
# Interface connected to Internet
INTERNET = "eth0"
# Interface connected to LAN
LAN_IN = "eth1"
# Squid port
SQUID_PORT = "3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables - F
iptables - X
iptables - t nat - F
iptables - t nat - X
iptables - t mangle - F
iptables - t mangle - X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ ip_forward
# Setting default filter policy
iptables - P INPUT DROP
iptables - P OUTPUT ACCEPT
# Unlimited access to loop back
iptables - A INPUT - i lo - j ACCEPT
iptables - A OUTPUT - o lo - j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables - A INPUT - i $INTERNET - m state - - state ESTABLISHED , RELATED - j ACCEPT
# set this system as a router for Rest of LAN
iptables - - table nat - - append POSTROUTING - - out - interface $INTERNET - j MASQUERADE
iptables - - append FORWARD - - in - interface $LAN_IN - j ACCEPT
# unlimited access to LAN
iptables - A INPUT - i $LAN_IN - j ACCEPT
iptables - A OUTPUT - o $LAN_IN - j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables - t nat - A PREROUTING - i $LAN_IN - p tcp - - dport 80 - j DNAT - - to $SQUID_SERVER : $SQUID_PORT
# if it is same system
iptables - t nat - A PREROUTING - i $INTERNET - p tcp - - dport 80 - j REDIRECT - - to - port $SQUID_PORT
# DROP everything and Log it
iptables - A INPUT - j LOG
iptables - A INPUT - j DROP

Simpan shell script. Menjalankan script sehingga sistem yang akan bertindak sebagai router dan meneruskan port:
# chmod +x /etc/fw.proxy
# /etc/fw.proxy
# service iptables save
# chkconfig iptables on

Mulai atau Restart cumi:
# /etc/init.d/squid restart
# chkconfig squid on

Desktop / Client konfigurasi komputer

Arahkan semua klien desktop untuk alamat IP eth1 Anda (192.168.2.1) sebagai Router / Gateway (menggunakan DHCP untuk mendistribusikan informasi ini). Anda tidak perlu men-setup browser individu untuk bekerja dengan proxy.

Bagaimana cara menguji squid proxy saya bekerja dengan benar?

Lihat mengakses file log / var / log / squid / access.log:
# tail -f /var/log/squid/access.log
Perintah di atas akan memantau semua permintaan yang masuk dan log mereka ke / var / log / squid / access_log berkas. Sekarang jika seseorang mengakses sebuah situs web melalui browser, squid akan mencatat informasi.

Masalah dan solusi

(A) Windows XP FTP Client

Semua Desktop permintaan klien sesi FTP berakhir dengan kesalahan:
Ilegal perintah PORT.
Saya telah dimuat modul kernel ip_nat_ftp. Cukup ketik perintah tekan Enter dan voila berikut!
# modprobe ip_nat_ftp
Harap dicatat bahwa perintah modprobe sudah ditambahkan ke shell script (di atas).

(B) Pelabuhan 443 redirection

Saya telah memblokir semua permintaan sambungan dari pengaturan router kami kecuali proksi kami (192.168.1.1) server. Jadi semua port termasuk 443 (https / ssl) permintaan ditolak. Anda tidak dapat mengarahkan port 443, dari milis debian , "Jawaban panjang: SSL dirancang khusus untuk mencegah" penengah "serangan, dan menyiapkan cumi sedemikian rupa akan sama seperti seorang" manusia di tengah " menyerang. Anda mungkin dapat berhasil mencapai hal ini, tapi tidak tanpa melanggar enkripsi dan sertifikasi yang merupakan titik balik SSL ".
Oleh karena itu, aku cepat-cepat membuka kembali port 443 (firewall router) untuk semua komputer LAN saya dan masalah ini diselesaikan.

(C) otentikasi Proxy Squid dalam mode transparan

Anda tidak dapat menggunakan otentikasi dengan proxy Squid transparan mencegat.

Newer Post Older Post Home

0 comments:

Post a Comment