Membuat Proxy Server Sendiri Dengan Menggunakan Squid
Setelah berhasil memanfaatkan komputer tua di rumah sebagai access point berkat tulisan yang sebelumnya -> Membuat WAP, *sekarang semua orang rumah bisa internetan menggunakan Blackberry, Android, leptop dan lain-lain, tapi sangat sayang kalau komputer tua itu hanya dijadikan access point, hardisknya percuma, cpu-nya kurang berguna, ram mubazir, sayang sekali kalau semua itu tidak dimanfaatkan lagi.
setelah berfikir panjang kenapa tidak sekalian membuat proxy server di komputer tua tadi, lumayan bisa banyak berguna dari pada hanya dijadikan access point, bisa untuk cache website supaya browsing lebih lancar, bisa untuk filter situs-situs yang beranonim xxx untuk perbaikan moral, bisa untuk membatasi kecepatan download supaya tidak ada insiden rebutan bandwidth di rumah, semoga niat baik ini terkabul.
Bahas tentang proxy server pikiran langsung tertuju ke aplikasi dengan logo cumi-cumi yang punya nama Squid, kebetulan komputer tua tadi sudah terpasang linux untuk keperluan membuat access point yang kemarin dibahas, jadi hanya tinggal melakukan proses instalasi Squid-nya. Beruntung proses instalasi Squid itu tidak terlalu sulit, bagian terberatnya adalah untuk melakukan konfigurasinya. Kebetulan pernah menulis tentang Squid juga disini, tapi tulisan sebelumnya hanya mencangkup dasarnya saja atau bisa di bilang perkenalan.Nah, untuk kali ini kita akan mencoba membuat proxy server aktif dan semoga bisa berguna untuk semua.
Langkah pertama sudah pasti tahap instalasi, silakan ikuti langkah-langkah dibawah ini untuk melakukan proses instalasi.
# untuk ubuntu
1
| sudo apt-get install squid3 |
#untuk arch
1
| sudo pacman -S squid |
Kita lanjut ke tahapan konfigurasi Squid nya supaya sesuai dengan kebutuhan yang kita perlukan, untuk cara merubah konfigurasi Squid nya cukup mudah karena hanya perlu merubah satu file saja. Editingnya juga hanya menggunakan teks editor apa saja, file yang harus diedit berada pada alamat /etc/squid/squid.conf untuk alamat file konfigrasi squid nya mungkin akan sedikit berbeda di setiap distro linux, tapi kalau sekarang alamatnya seperti tadi, jadi cara mengeditnya tinggal memasukkan perintah berikut:
1
| sudo nano /etc/squid/squid.conf |
atau
1
| sudo gedit /etc/squid/squid.conf |
atau
1
| sudo kate /etc/squid/squid.conf |
Disini saya akan sharing file konfigurasi yang saya gunakan pada komputer yang jadi bahan uji coba di rumah. Konfigurasi Squid ini hanya menggunakan sebagai kecil dari fungsi Squid itu sendiri, karena dia memiliki lebih bnyak lagi fitur-fitur lainnya.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
| #################ACCESS CONTROL#################### mendifinisikan rule-rule yang akan digunakan, penulisannya :### acl nama_rule src ip_address### acl nama_rule port no_port### diaktifkan dengan cara :### http_access allow nama_rule atau http_access deny nama_ruleacl manager proto cache_objectacl localhost src 127.0.0.1/32 ::1acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 acl localnet src fc00::/7 acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machinesacl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECTacl purge method PURGEacl connect method CONNECT###########BLOCKING###########acl BLACKLIST url_regex "/etc/squid/BLACKLIST"#acl SEX dstdomain "/etc/squid/SEX"http_access deny BLACKLIST#http_access deny SEX### filter url yang akan diblokir### hilangkan '#' untuk mengaktifkan#acl badurl dstdomain "/etc/squid3/socnet"#deny_info http://google.co.id badurl### setting waktu aksesacl pagi time SMTWHFA 10:00-23:00#acl malam time SMTWHA 23:00-9:00### setting tolak akses sesuai settingan waktu untuk domain yang ada di file#/etc/squid/social.network#http_access deny pagi badurl#http_access deny sore badurl# Only allow cachemgr access from localhosthttp_access allow manager localhosthttp_access deny manager# Only allow purge cache access from localhosthttp_access allow purge localhosthttp_access deny purge# Deny requests to certain unsafe portshttp_access deny !Safe_ports# Deny CONNECT to other than secure SSL portshttp_access deny CONNECT !SSL_ports###allow access###http_access allow localnethttp_access allow localhost# And finally deny all other access to this proxyhttp_access deny all#======================## DELAY POOL PARAMETERS#======================################## Filter Download #################acl DOWNLOAD url_regex -i .exe .flv .mp3 .rar .wmv .avi .mpeg .mpe .mpg .rm .iso .mkv .wmf .wma .3gp .7z .asf .m4a .m4v .mov .mp4 .mpa .mpe .msi .zipdelay_pools 1delay_class 1 1delay_parameters 1 10480/10480delay_access 1 allow pagi DOWNLOADdelay_access 1 deny ALL# Squid normally listens to port 3128http_port 3128 transparent# Uncomment and adjust the following to add a disk cache directory.# recommend -> gunakan maksimal 60% dari partisi fisik cache_dir# recommend -> jumlah dir cache_dir/500cache_dir ufs /home/squid/squid 24576 49 256# memory yang dipakai untuk cachecache_mem 6 MB# Leave coredumps in the first cache dircoredump_dir /var/cache/squid###LOG-LOG###access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.loglogfile_rotate 5log_ip_on_direct offlog_icp_queries offbuffered_logs offemulate_httpd_log on# Add any of your own refresh_pattern entries above these.# improve HITrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-privaterefresh_pattern -i \.(rpm|cab|deb|exe|msi|msu|zip|tar|gz|tgz|rar|bin|7z|doc?|xls?|ppt?|pdf|nth|psd|sis)$ 10080 90% 43200 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-privaterefresh_pattern -i \.(avi|iso|wav|mid|mp?|mpeg|mov|3gp|wm?|swf|flv|x-flv|axd)$ 43200 95% 432000 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-privaterefresh_pattern -i \.(html|htm|css|js)$ 1440 75% 40320refresh_pattern -i \.index.(html|htm)$ 0 75% 10080refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern . 1440 90% 10080###########own rule############ list type yang tidak di cacheacl QUERY urlpath_regex -i cgi-bin \? \.php$ \.asp$ \.shtml$ \.cfm$ \.cfml$ \.phtml$ \.php3$ localhostno_cache deny QUERY# besaran max objek yang akan disimpanmaximum_object_size 128000 KB# besaran min objek yang akan disimpanminimum_object_size 0 KB####################memory management####################maximum_object_size_in_memory 32 KBmemory_replacement_policy heap GDSFcache_replacement_policy heap LFUDAcache_swap_low 98cache_swap_high 99##########TIMEOUT##########forward_timeout 240 secondconnect_timeout 30 secondpeer_connect_timeout 5 secondread_timeout 600 secondrequest_timeout 60 secondshutdown_lifetime 10 second############################ADMINISTRATIVE PARAMETERS############################cache_mgr kuro.kid@gmail.com cache_effective_user proxycache_effective_group proxyhttpd_suppress_version_string onvisible_hostname kuro.kid@admin##############DNS OPTIONS##############dns_timeout 10 seconds# memakai dns di computer serverhosts_file /etc/hosts# contoh konfigurasi lain#dns_nameservers 203.130.193.74 202.134.0.155 8.8.8.8 61.247.0.8 |
Konfigurasi yang digunakan diatas meliputi beberapa fitur yang ada pada Squid, diantaranya sebagai berikut:
- limit kecepatan download jika mendownload file-file dengan ekstensi tertentu.
- limit speed hanya berlaku pada jam-jam tertentu.
- Melakukan blocking beberapa situs.
- Caching website
- Access control
Untuk bahan pembelajaran konfigurasi diatas sudah ditambahkan argumen-argumen yang menjelaskan fungsi dari setiap bagian, jadi silakan dipelajari dan digunakan sebaik mungkin, jangan di lihat dari jumlah barisnya kalau di pelajari satu persatu pasti paham.
Disini saya bukannya pelit dan tidak ingin menjelaskan baris per barisnya, tapi akan sangat panjang dan melelahkan kalau file konfigurasi tadi dijelaskan satu per satu, mungkin di lain waktu saya akan menulis lagi tentang Squid ini supaya kita semua bisa menjadi lebih paham.
Disini saya ingin menggunakan Squid sebagai transparent proxy, jadi pada file konfigurasi tadi harus ditambahkan kata-kata "transparent", lebih tepatnya pada baris yang menjelaskan port berapa yang akan digunakan oleh si squid ini.
1
| http_port 3128 transparent |
Kalau proses konfigurasi sudah selsesai semua, tinggal mengikuti perintah-perintah dibawah ini supaya squid bisa berjalan.
1
2
3
4
| # membuat tempat swap nya, alamat nya sesuai dengan konfgurasi tadi sudo squid -z# untuk menjalankan squidsudo /etc/rc.d/squid start |
Selesai semua konfigurasinya squid sudah berhasil dijalankan, tapi tugas belum selesai sampai disini, karena kita harus mengatur client-client yang menggunakan access point yang kita buat sebelumnya supaya lewat ke proxy yang kita buat dulu sebelum mereka bisa mengkases internet, kalau tidak jirih payah kita melakukan konfigurasi akan percuma saja.
Nah, untuk proses redirection yang kita butuhin tadi, kita akan membutuhkan sebuah firewall untuk melakukan tugas tadi, berhubung di proses membuat WAP sebelumnya memerlukan firewall juga, jadi kita tidak perlu lagi melakukan instalasi karena firewall sudah terpasang yaitu IPTABLES, tinggal kita buat rule yang bener maka dia akan menangani tugas selanjutnya.
Rule yang kita akan kasih itu seperti berikut:
1
| iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128 |
Ip yang dipakai diatas itu ip komputer tua yang saya gunakan, jadi kalau ingin praktek sendiri sesuaikan ip yang digunakan, untuk wlan0-nya itu adalah interface yang dijadikan access point.Jadi intinya request yang datang dari port 80 yang berasal dari interface wlan0 akan di forwarding ke ip 192.168.0.1 dan melalui port 3128 yang adalah port Squid yang kita gunakan tadi.
Manual pengguna ArchLinux -> squid
Forum tetangga yang membahas proxy


0 comments:
Post a Comment