Penyaringan konten di sekolah berdasarkan Ubuntu 18.04 dan Squid transparan, dengan integrasi ke dalam jaringan di MikroTik dan tidak hanya



1. Pendahuluan


Topik pemfilteran konten di sekolah agak usang dan penuh informasi tentangnya, tetapi sudah cukup usang karena transisi banyak situs ke protokol HTTPS yang aman, yang sebagian besar solusi yang diusulkan tidak berfungsi. Karena itu, saya memutuskan untuk menulis artikel paling lengkap dari A hingga Z, mengumpulkan semua informasi yang saya temukan di hamparan Google bersama-sama. Artikel ini dirancang untuk pengetahuan dasar di bidang administrasi dan cocok untuk guru ilmu komputer.

2. Ketentuan Referensi


Diberikan: 436-FZ dan sekolah tempat banyak komputer terhubung dan terhubung ke Internet melalui router MikroTik atau lainnya.

Tujuan: untuk melakukan pemfilteran konten HTTP dan HTTPS oleh daftar putih untuk semua orang kecuali manajemen sekolah dan yang Anda cintai.


3. Pemecahan masalah


Komputer desktop yang tidak digunakan ditemukan dengan Intel-ohm dual-core, 1 GB RAM dan hard 80 GB.
Untuk mengatasi ini, berikut ini akan dilakukan:

  1. Linux Ubuntu Server 18,04 LTS diinstal
  2. Squid Proxy Transparan diinstal dan dikonfigurasi di server, dikompilasi dari kode sumber dengan dukungan HTTPS.
  3. Integrasi server ke dalam subnet, dengan mengarahkan permintaan ke Proxy atau opsi alternatif (di bagian paling akhir)

Mari kita mulai.

3.1. Instal dan konfigurasikan Ubuntu 18.04


Proses instalasi sederhana. Unduh distribusi Ubuntu Server 18.04 dari situs resmi. Saya sarankan mengunduh dengan installer lama, karena yang baru, secara pribadi dari saya, masuk ke unduhan tanpa batas selama instalasi. Kami menulis gambar ke USB flash drive / disk dengan cara yang nyaman. Untuk merekam pada USB flash drive, saya sarankan menggunakan Rufus dan pada awal perekaman pilih "Rekam gambar-DD". Selanjutnya, mengikuti informasi di layar, instal sistem. Kami hanya memikirkan pilihan komponen, di mana Anda dapat langsung memilih OpenSSH dan hanya itu. Kita tidak perlu banyak, tetapi kita perlu menginstal apa yang kita butuhkan.

Jadi, Ubuntu diinstal. Jaringan, jika Anda memiliki DHCP, sudah dikonfigurasi. Kami akan memasuki mode superuser sehingga setiap kali kami tidak menambahkan sudo ke perintah.

sudo -s 

Masukkan kata sandi Anda dan perbarui sistem.

 apt-get update apt-get upgrade 

Instal editor teks dan manajer file.

 apt-get install nano mc 

Untuk menyimpan file di nano , Anda harus menekan Ctrl + O diikuti oleh Y. Keluar dari editor dengan menekan Ctrl + X. Anda dapat menyimpan file segera sebelum keluar dengan menekan Ctrl + X diikuti oleh Y.
Untuk membuka manajer file, ketik mc . NortonCommander DOS atau Windows TotalCommander / FAR biasanya terbuka dengan dua panel. Meskipun saya terbiasa bekerja dengan konsol, pengelola file terkadang juga membantu, misalnya, untuk menemukan file yang diinginkan lebih cepat.

Jika Anda tidak memiliki DHCP atau Anda ingin alamat IP terpisah untuk server Anda, seperti yang saya inginkan, maka kita akan pergi ke konfigurasi.

Konfigurasikan Alamat IP Statis
Tidak seperti versi Ubuntu sebelumnya, pada 18.04 baru jaringan tidak lagi dikonfigurasikan di antarmuka / etc / network / biasa , tetapi melalui netplan di file /etc/netplan/*.yaml . File mungkin diberi nama berbeda, tetapi itu ada di sana sendiri. / Etc / network / interfaces sendiri menulis kepada kita yang berikut:



Juga, jika Anda ingin memutakhirkan dari versi yang lebih lama dari 18,04, pengaturan jaringan akan tetap seperti semula. Netplan hanya relevan untuk instalasi bersih 18,04.

Mari kita mulai menyiapkan jaringan.

Pertama, mari kita lihat nama antarmuka jaringan yang ditetapkan untuk OS, dan ingatlah.

 ifconfig 

Sekarang buka file pengaturan.

 nano /etc/netplan/*.yaml 

Seharusnya sudah memiliki pengaturan DHCP. Mari bawa file ke formulir berikut.

 # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets:   : dhcp4: no dhcp6: no addresses: [/24] gateway4:  nameservers: addresses: [77.88.8.7, 77.88.8.3] 

Masukkan antarmuka, alamat, dan gateway Anda. DNS merekomendasikan untuk meninggalkan ini - Yandex.DNS Anak-anak akan menjadi perlindungan tambahan. DNS yang sama dikonfigurasi di router saya. Bagaimanapun, Anda harus menentukan DNS yang didistribusikan oleh router.

Di sini Anda perlu memperhatikan spasi (yaitu spasi, bukan tab). Masing-masing, semacam paragraf dipisahkan dari ruang sebelumnya. Misalnya, jika setelah nameserver baris alamat tidak dipisahkan oleh spasi, tetapi disejajarkan dengan baris di atas, maka, ketika Anda mencoba menerapkan pengaturan, netplan akan memberikan kesalahan.

Terapkan pengaturan.

 netplan apply 

Nyalakan ulang server, untuk berjaga-jaga.

 reboot 


Juga, ia menambahkan opsi konfigurasi jaringan alternatif untuk DHCP dan IP statis, jika netplan tidak sesuai.
Penyiapan jaringan alternatif
Di Ubuntu 18.04, Anda dapat kembali ke opsi konfigurasi jaringan yang sudah dikenal melalui / etc / network / interfaces . Untuk melakukan ini, file itu sendiri menunjukkan bahwa Anda perlu menginstal utilitas ifupdown . Pasang itu:
 apt-get install ifupdown 

Sekarang buka file pengaturan awal di netplan
 nano /etc/netplan/*.yaml 

dan komentar semua isinya sehingga tidak ada konflik.
Selanjutnya, buka file pengaturan jaringan
 nano /etc/network/interfaces 

Dan tambahkan ke dalamnya:
untuk IP statis
 auto ___ iface ___ inet static address IP- netmask  gateway  dns-nameservers 77.88.8.7 77.88.8.3 

untuk dinamis (DHCP)
 auto ___ iface ___ inet dhcp 

Nyalakan ulang server
 reboot 

Jika Anda menggunakan opsi ini untuk pengaturan jaringan, maka dalam pengaturan Firewall, Anda dapat memilih keluar dari Webmin sama sekali dan menggunakan opsi konfigurasi di bawah spoiler (meskipun varian dengan Webmin juga akan berfungsi)


Sekarang Anda perlu mengaktifkan paket paket melalui server kami. Buka file /etc/sysctl.conf
 nano /etc/sysctl.conf 

Kami mencari string net.ipv4.ip_forward = 1 di dalamnya dan menghapus komentar itu. Jika nilainya 0 , maka ubah ke 1 .
Masukkan perintah untuk menerapkan pengaturan
 sysctl -p /etc/sysctl.conf 


Setelah mengatur jaringan, saya sarankan Anda pergi langsung ke terminal, dan terus bekerja di dalamnya. Untuk melakukan ini, jika Anda tidak memilih OpenSSH selama tahap instalasi, pasanglah.

 apt-get install ssh 

Secara default, SSH sudah dikonfigurasikan untuk login pengguna / kata sandi pada port 22, tetapi Anda dapat mengkonfigurasinya sendiri, misalnya, kunci otorisasi dan dengan port lain untuk melindungi server dari serangan luar. Cara melakukan ini penuh dengan informasi di Internet.

Sebagai terminal, saya menggunakan XShell. Anda dapat menggunakan salah satu yang Anda sukai.

Kami tidak memerlukan server DHCP dan kartu jaringan kedua, karena kami akan mengarahkan permintaan pengguna ke Proxy kami menggunakan router itu sendiri.

Yayasan diletakkan. Sekarang mari kita beralih ke menginstal dan mengkonfigurasi Squid.

3.2. Menginstal dan Mengkonfigurasi Squid dengan Dukungan dan Penyaringan Daftar HTTPS


3.2.1. Bangun dan Instal Squid

Karena tidak ada paket Squid siap pakai dengan dukungan SSL di repositori, Anda harus memasangnya secara manual dari sumbernya. Pertama, buka file dengan repositori.

 nano /etc/apt/sources.list 

Di dalamnya kita batalkan komentar (hapus # di awal) baris yang dimulai dengan deb-src .

Setelah itu, kami akan memperbarui paket.

 apt-get update 

Selanjutnya, instal alat perakitan.

 apt-get install fakeroot build-essential devscripts 

Dan tambahkan semua paket yang diperlukan untuk perakitan.

 apt-get build-dep squid3 

Instal pustaka untuk dukungan SSL.

 apt-get install libssl1.0-dev 

Mari kita pergi ke folder rumah dan membuat folder untuk majelis, segera mengatur hak yang diperlukan untuk itu.

 cd ~ mkdir build chown _apt:root build 

Buka folder yang dibuat dan unduh sumber Squid.

 cd build apt-get source squid3 

Folder akan muncul di folder build dengan nama squid3 dan nomor rilis. Di Ubuntu 18.04.3 itu adalah 3.5.27. Mari kita membahasnya.

 cd squid3-3.5.27 

Sebelum berkumpul, Anda harus menentukan opsi. Buka file dengan mereka.

 nano debian/rules 

Kami mencari daftar opsi, seperti pada gambar


Tambahkan opsi berikut.

 --enable-ssl \ --enable-ssl-crtd \ --with-openssl 

Harap perhatikan bahwa opsi telah ditambahkan ke gambar, dan karakter "\" akan muncul setelah setiap baris dalam opsi kecuali yang terakhir .

Jadi, semuanya siap untuk perakitan. Sekarang mari kita beralih ke folder sumber Squid, meskipun Anda seharusnya sudah ada di dalamnya.

 cd ~/build/squid3-3.5.27 

Dan masukkan perintah untuk membangun.

 debuild -d 

Perakitan akan memakan waktu yang sangat lama, saya butuh rata-rata 2 hingga 4 jam. Tergantung pada kecepatan komputer. Di akhir pertemuan, Anda akan melihat kesalahan penandatanganan paket. Ini normal - abaikan kesalahan.

Sekarang pergi ke folder Bangun.

 cd ~/build 

Dan instal Squid.

 dpkg -i squid*.deb 

Segera mengalami kesalahan tentang dependensi yang tidak puas dan masukkan perintah

 apt-get install -f 

Setelah instalasi, kami menandai paket-paket sehingga tidak menimpa setelah memperbarui sistem.

 apt-mark hold squid apt-mark hold squid-common apt-mark hold squidclient 

3.2.2. Mengkonfigurasi Squid dan Memfilter

Jadi, Squid terinstal, masih untuk mengkonfigurasi untuk kebutuhan kita.

Semua pengaturan ada di file /etc/squid/squid.conf . Ini berisi banyak komentar dan pada pandangan pertama sepertinya sangat rumit, tetapi pada kenyataannya tidak ada yang super rumit di dalamnya. Untuk memulainya, kami akan membersihkannya dari komentar dengan terlebih dahulu menyalin yang asli, jika Anda tiba-tiba ingin mempelajarinya lebih detail. Untuk kenyamanan, kami akan langsung menuju folder dengan Squid.

 cd /etc/squid cp squid.conf squid.conf.backup cat squid.conf.backup | egrep "^[^#]" > squid.conf 

Sekarang buka squid.conf

 nano squid.conf 

Seperti yang Anda lihat, dia membersihkan komentar dan tidak lagi menjadi besar seperti yang terlihat.
Di bawah spoiler, saya akan memposting file saya dengan pengaturan yang berfungsi dengan sempurna, dan di bawah ini saya akan menjelaskan dalam blok apa dan bagaimana.

Konfigurasi Squid.conf
 acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 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 acl CONNECT method CONNECT acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 


Blok pertama adalah sebagai berikut.

 acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 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 acl CONNECT method CONNECT 

Dia bertanggung jawab atas parameter standar acl. Di dalamnya, dalam localnet, kami mengubah jaringan lokal ke milik kami, dan kami juga menambahkan acl waktu kerja (opsional). Saya menambahkan waktu kerja mengingat fakta bahwa guru sering datang kepada saya mengeluh bahwa mereka tidak dapat menemukan apa pun, semuanya tidak dapat diakses. Tentu saja, saya senang bahwa semuanya berjalan sebagaimana mestinya, tetapi, terus terang, saya bosan mendengarkan ini. Sekarang saya melaporkan klaim mereka bahwa setelah pukul 15:00 penyaringan dimatikan, dan mereka dapat (hampir) dengan bebas menemukan informasi yang mereka butuhkan. Anda dapat menambah waktu Anda, atau membiarkan penyaringan sepanjang waktu tanpa menambahkan acl ini.

Blok kedua mendefinisikan daftar situs yang diizinkan dan terlarang untuk HTTP dan terlihat sebagai berikut.

 acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" 

Kami akan menambahkan daftar situs yang diizinkan dan terlarang nanti, dan mereka akan ditempatkan dalam file yang ditentukan dalam ACL.

Blok ketiga menentukan parameter akses melalui HTTP dan terlihat seperti ini

 http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all 

Di sini item http_access memungkinkan CONNECT diperlukan, karena tanpa itu Squid tidak akan membiarkan siapa pun di Internet. Berikutnya adalah aturan daftar hitam putih. Parameter deny dan allow menyangkal dan mengizinkan akses. Setelah mereka datang aturan untuk sepenuhnya melarang semua lalu lintas HTTP selama jam kerja. Jika Anda tidak menetapkan jam kerja, maka hapus jam kerja , dan larangan akan permanen. Poin penting adalah urutan aturan, karena Squid membacanya dari atas ke bawah
Blok keempat mendefinisikan pengaturan port untuk Squid.

 http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem 

Parameter pertama diperlukan agar kesalahan "KESALAHAN: Tidak ada port proxy maju yang dikonfigurasi" tidak muncul tanpa batas di log. Ini mengisi log dan, karenanya, memori. Kesalahan umum, tetapi untuk beberapa alasan, di ru-segmen kami, saya tidak menemukan cara untuk memperbaikinya, forum asing membantu. Parameter kedua menentukan port protokol HTTP. Intercept berarti Transparansi proxy, yaitu, tidak perlu menentukan pengaturan pada setiap komputer.
Parameter ketiga menentukan port HTTPS dan opsinya. Ini adalah satu garis panjang. File squid.pem adalah sertifikat kami, yang akan kami buat nanti.

Blok kelima mendefinisikan parameter koneksi SSL dengan Squid. Secara khusus, ia menunjukkan bahwa semua lalu lintas harus diarahkan langsung ke Internet, tanpa menggunakan cache yang lebih tinggi, dan dua lalu-lintas terakhir mengizinkan koneksi bahkan dengan kesalahan verifikasi sertifikat, karena keputusan untuk mengunjungi sumber daya seperti itu harus dibuat oleh pengguna, bukan server. Ini terlihat seperti ini.

 always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER 

Blok keenam menetapkan parameter acl dari daftar "hitam" dan "putih", yang akan dibuat kemudian, serta kedalaman intersepsi lalu lintas HTTPS.

 acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 

Blok ketujuh menentukan parameter akses menggunakan protokol HTTPS. Di sini, larangan dan izin sudah masing-masing bertanggung jawab untuk mengakhiri dan sambatan . Sekali lagi, jangan lupa untuk menghapus jam kerja jika Anda tidak memiliki waktu kerja yang ditentukan.

 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB 

Blok kedelapan mengatur cache dan log Squid kami. Di sini perlu dicatat hanya parameter logfile_rotate , yang menunjukkan jumlah hari di mana log disimpan.

 # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 

Ini menyelesaikan pengaturan squid.conf. Kami menyimpan file dan melanjutkan ke pembuatan sertifikat dan daftar.

Ayo buka folder dengan Squid

 cd /etc/squid/ 

Dan masukkan perintah berikut untuk membuat sertifikat

 openssl req -new -newkey rsa:1024 -days 36500 -nodes -x509 -keyout squid.pem -out squid.pem 

Selanjutnya, Anda harus memasukkan data sertifikat. Sertifikat ini berlaku selama 100 tahun untuk melupakannya untuk waktu yang lama. Itu diperlukan hanya untuk Proxy.

Sekarang buat file daftar kami.

 touch blacklist touch whitelist cp whitelist whitelist_ssl cp blacklist blacklist_ssl 

Situs terdaftar dalam bentuk ekspresi reguler. Misalnya, untuk membuka kunci mail.ru, buka daftar putih

 nano whitelist 

dan tambahkan ungkapan berikut untuk itu.

 mail\.ru 

Sekarang blokir Games.Mail.ru. Mari kita buka daftar hitam kita

 nano blacklist 

dan tuliskan ungkapan berikut di dalamnya

 games\.mail\.ru 

Karena, sebagai aturan, pemblokir daftar hitam ada di atas daftar putih kami, ketika Anda beralih ke mail.ru, situs akan terbuka seperti yang diharapkan (kecuali untuk gambar, tetapi lebih lanjut tentang itu nanti), dan jika Anda mencoba untuk beralih ke Game, Squid kami tidak akan membiarkannya pergi.

Beberapa situs memiliki banyak subdomain, subdomain, dll. Sebagai, misalnya, mail.ru menyimpan gambarnya di imgsmail.ru. Mengenai situs serupa lainnya, Anda harus membuka situs yang diinginkan di browser apa pun (saya menggunakan Chrome) dan, selanjutnya, alat pengembang (di Chrome mereka dipanggil dengan menekan F12).



Buka tab Sumber dan lihat sumber daya lain apa yang memuat informasi dari situs.

Setelah menambahkan situs, salin ke daftar untuk HTTPS.

 cp whitelist whitelist_ssl cp blacklist blacklist_ssl 

Daftar Isi Tip
Buat file teks biasa di komputer Anda, temukan dan salin daftar situs yang diizinkan ke dalamnya, tambahkan ke milik Anda. Kemudian, di buku catatan biasa, ganti otomatis titik dengan titik potong (\.) Dan hapus yang tidak perlu dengan penggantian otomatis yang sama (www, http, karakter "/", dll.). Kemudian, file seperti itu, menggunakan terminal, dapat segera disalin ke lembar di server.

Sekarang periksa konfigurasinya.

 squid -k check 

Jika semuanya baik-baik saja, hentikan Squid.

 /etc/init.d/squid stop 

Bangun kembali cache

 squid -z 

Dan jalankan Squid lagi

 /etc/init.d/squid start 

Setelah ada perubahan pada daftar atau konfigurasi Squid, itu harus dimuat ulang dengan perintah

 /etc/init.d/squid restart 

Anda juga dapat mengubah halaman pembatasan akses (hanya berfungsi pada HTTP) di bawah path / usr / share / squid / errors / ~ Russian-1251 . Cari di folder untuk file ERR_ACCESS_DENIED dan edit. Sintaks file adalah HTML.

3.3. Memonitor Status Server dan Mengkonfigurasi Firewall


Untuk memantau status server kami, instal utilitas Webmin , dengan bantuan yang kami konfigurasikan Firewall kami. Selain itu, melalui itu Anda dapat memonitor status CPU, RAM, dll., Memperbarui paket, menambah dan mengkonfigurasi komponen, dan banyak lagi. Ia memiliki terminal sendiri, meskipun canggung. Utilitas berfungsi melalui browser apa pun, oleh karena itu, Anda dapat terhubung ke server kami dari komputer mana saja di jaringan, yang cukup nyaman, meskipun tidak aman. Jika diinginkan, koneksi dapat dibatasi hanya untuk masing-masing alamat IP di "Kontrol Akses IP" di Webmin itu sendiri.

Sebelum memulai instalasi, tambahkan repositori Webmin. Buka sources.list.

 nano /etc/apt/sources.list 

Dan tambahkan baris di bawah ini.

 deb http://download.webmin.com/download/repository sarge contrib 

Sekarang instal kunci GPG dengan paket mana yang masuk dalam repositori Webmin

 cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc 

Selanjutnya kita perbarui daftar paket dan instal utilitas

 apt-get update apt-get install webmin 

Anda dapat terhubung ke server di browser apa pun dengan memasukkan bilah alamat

 IP__:10000 

Secara default, Webmin terhubung melalui SSL, dan sebagian besar browser memberikan kesalahan sertifikat yang tidak dipercaya. Agar tidak memilih kepercayaan setiap kali, nonaktifkan SSL. Untuk melakukan ini, buka file /etc/webmin/miniserv.conf

 nano /etc/webmin/miniserv.conf 

Temukan string ssl = 1 di dalamnya dan ganti dengan ssl = 0 . Dalam file yang sama, Anda dapat mengubah port koneksi. Secara default itu adalah 10000. Anda dapat memasukkan yang gratis.

Setelah terkoneksi ke Webmin, pergi ke Webmin -> Konfigurasi Webmin dan ganti bahasa ke bahasa Rusia. Lalu pergi ke Jaringan -> Firewall . Secara default, firewall kami bersih. Kami pergi ke bagian paling bawah dan berlawanan " Aktifkan saat boot" pilih "Ya" . Klik "Terapkan Konfigurasi . " Sekarang pengaturan Firewall kami ditentukan dalam file /etc/webmin/firewall/iptables.save dan diluncurkan dengan sistem. Jika tidak ada file seperti itu, maka lihat apa yang tertulis di baris "File with rules" pada tab Firewall di Webmin. Mari kita buka di terminal.

 nano /etc/webmin/firewall/iptables.save 

Kami pergi ke blok * nat dan pada akhirnya sebelum COMMIT menambahkan aturan berikut.

 -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130 

Aturan ini mengarahkan lalu lintas ke port 80 (HTTP) dan 443 (HTTPS) server ke port Squid kami. Di sini saya menyajikan dua varian aturan dengan DNAT dan REDIRECT. Anda dapat menggunakan keduanya, atau mengambil satu opsi dengan meletakkan port yang sesuai.

Konfigurasikan FIrewall untuk Penyiapan Jaringan Alternatif
Opsi ini cocok jika Anda menggunakan pengaturan jaringan alternatif yang dijelaskan di atas.
Pertama, buat file dengan aturan untuk Firewall kami dan berikan hak untuk dieksekusi.
 touch /etc/nat chmod +x /etc/nat 

Buka itu
 nano /etc/nat 

Dan tambahkan konten berikut
 #!/bin/sh #Firewall iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130 

Seperti dalam kasus Webmin, saya menyajikan dua varian aturan dengan DNAT dan REDIRECT. Anda dapat menggunakan keduanya, atau mengambil satu opsi dengan meletakkan port yang sesuai.
Sekarang tambahkan file kami ke unduhan segera setelah memulai jaringan. Buka file pengaturan jaringan
 nano /etc/network/interfaces 

Dan tambahkan baris di bagian bawah file
 post-up /etc/nat 

PS: nilai tambah dari opsi ini adalah Anda dapat menambahkan aturan Anda sendiri di masa depan hanya dengan mengedit file / etc / nat. Webmin sedikit lebih rumit.

Ini menyelesaikan pengaturan server. Mulai ulang.

 reboot 

Dan mari kita lanjutkan ke pengaturan router MikroTik.

3.4. Mengkonfigurasi router MikroTik untuk mengarahkan lalu lintas ke Proxy


Kami berasumsi bahwa Anda telah mengunduh utilitas WinBox untuk remote control, Internet dan jaringan lokal dikonfigurasi, firewall pada router bersih. Anda tahu nama antarmuka LAN (Anda bisa melihatnya di IP - DHCP Server - DHCP ).

a) Pergi ke WinBox, buka IP - DHCP Server - Sewa . Dalam daftar kami mencari komputer IP yang penyaringannya tidak akan berfungsi (direktur, manajemen), klik kanan pada mereka dan pilih Jadikan Statis di menu. Di sebelah mereka, huruf "D" harus menghilang, yang berarti Dinamis. Sekarang alamat ini akan segera ditetapkan secara statis ke komputer-komputer ini, terlepas dari waktu sewa, berdasarkan alamat MAC. Jika laptop digunakan melalui Wi-Fi dan kabel, Anda harus memilih Make Static di kedua alamat MAC.

b) Selanjutnya, buka IP - Firewall - Daftar Alamat dan klik tanda plus biru "+" . Di bidang Nama , tentukan nama untuk grup alamat cerah tanpa filter kami, misalnya, "Admin". Di bidang Alamat , tentukan satu alamat IP dari mereka yang telah diberi alamat statis. Kami ulangi ini untuk setiap alamat, memilih grup kami di bidang Nama dengan panah.

c) Buka tab Mangle di IP - Firewall yang sama dan klik "+" . Jendela tab akan terbuka. Pada tab Umum , isi bidang-bidang berikut:

 Chain - Prerouting Src. Address - __proxy Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __ 

Pada tab Tindakan , periksa nilai Terima dan klik OK.

Ulangi proses ini, tetapi di bidang Dst. Port mengatur nilai ke 443 .

d) Klik "+" lagi dan pada tab Umum kita lagi mengisi bidang berikut:

 Chain - Prerouting Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __ 

Pergi ke tab Advanced dan di bidang Src. Daftar Alamat pilih daftar alamat manajemen " Admin " kami . Pastikan untuk mengklik kotak yang muncul di sebelah daftar. Tanda seru "!" Akan muncul . , artinya TIDAK logis atau NEGATIF.

Buka tab Tindakan dan isi bidang:

 Action - mark routing New Routing Mark - to_proxy Passthrough -   

Klik OK dan lakukan tindakan yang sama, tetapi di bidang Dst. Port menentukan nilai 443 .

e) Akhirnya, tambahkan aturan terakhir. Klik tanda plus dan isi bidang-bidang berikut pada tab Umum :

 Chain - Prerouting In. Interface - __ Routing Mark - to_proxy 

Akibatnya, berikut ini akan terjadi dengan parameter Anda. Ketertiban itu penting!



f) Kami masuk IP - Routes dan kami menekan "+". Isi kolom-kolom berikut:

 Dst. Address - 0.0.0.0/0 Gateway - __proxy Routing Mark - to_proxy 

Klik OK dan hanya itu. Dengan server dihidupkan, semua lalu lintas HTTP dan HTTPS akan melewati Squid kami.

3.5. Pengaturan alternatif untuk MikroTik dan router lainnya


Opsi ini cocok untuk router MikroTik, dan untuk yang lainnya, bahkan yang paling sederhana (kecuali untuk penyedia layanan sewaan yang Anda sendiri tahu apa). Dalam hal ini, kami menerapkan pembagian akses Internet bukan pada router, tetapi pada Squid itu sendiri. Jadi mari kita mulai.
a) Kami akan menganggap bahwa Anda telah mencapai titik ini dengan menyelesaikan semua langkah di atas, termasuk mengatur pengalihan ke Proxy di MikroTik. Untuk operasi bebas masalah dari opsi yang dijelaskan, kita perlu membatalkan sub-paragraf e) dari paragraf 3.4 artikel ini. Anda dapat membatalkan seluruh poin 3.4 (meninggalkan, mungkin, huruf a) sehingga IP kami tidak berubah), tetapi ini opsional - penting bagi kami untuk membatalkan perutean itu sendiri. Untuk melakukan ini, buka IP - Routes , cari rute kami, pilih rute itu dan klik pada tanda silang merah (bukan tanda tambah, tetapi tanda silang di sebelah tanda centang). Rute akan berubah menjadi abu-abu => itu dinonaktifkan. Penyaringan juga dimatikan, sekarang semua klien pergi ke Internet secara langsung melalui router.

b) Sekarang buka server kami dan buka folder dengan Squid
 cd /etc/squid/ 

Buka file konfigurasi
 nano squid.conf 

Dan kami menambahkannya dalam blok:
Di blok pertama segera setelah baris dengan acl localnet ...
 acl admins src "/etc/squid/admins-ip" # IP   acl students src "/etc/squid/students-ip" # IP   

Kita tidak perlu daftar dengan komputer guru, karena dapat dipahami bahwa semua orang adalah guru. Tapi Anda bisa menambahkannya sendiri dengan aturan yang sesuai di blok lain.
Di blok kedua
 acl whitelist-stud url_regex -i "/etc/squid/whitelist-stud" #      

Di blok ketiga setelah http_access menolak daftar hitam
 http_access allow admins #      http_access allow students whitelist-stud #       http_access deny students #        

Selanjutnya, blok tetap tidak berubah, karena guru (semua IP lain) mengikuti, menyaring berdasarkan daftar putih mereka dan selama jam kerja (jika ditunjukkan). Anda juga dapat membiarkan grup admin melewati daftar hitam dengan menetapkan aturan izin di atas yang terlarang, atau menambahkan IP terpisah (misalnya, milik Anda) ke akun terpisah dan memasukkannya ke aturan di atas daftar hitam.
Blok keempat dan kelima tidak berubah.
Di blok keenam, tambahkan
 acl whitelist-stud_ssl ssl::server_name_regex -i "/etc/squid/whitelist-stud_ssl" 

Di blok ketujuh, tambahkan setelah ssl_bump hentikan blacklist_ssl
 ssl_bump splice admins ssl_bump splice students whitelist-stud_ssl ssl_bump terminate students 

Prinsipnya sama dengan di blok ketiga.
Sisanya tidak berubah. Simpan dan keluar

c) Sekarang buat daftar alamat IP kami.
 touch admins-ip touch students-ip 

Dan daftar putih untuk siswa.
 touch whitelist-stud cp whitelist-stud whitelist-stud_ssl 

Tambahkan alamat IP dan situs yang diperlukan ke daftar yang sesuai. Dalam daftar situs siswa, Anda dapat menyalin daftar untuk guru dengan menghapus situs yang tidak diperlukan oleh siswa. Menyalin file di Linux dilakukan dengan perintah
 cp <    > <    > 

Mulai ulang Squid
 /etc/init.d/squid restart 


d) Kami telah sampai pada hal yang paling penting, yaitu, bagaimana membuat pelanggan online melalui Proxy kami. Kami perlu mengubah gateway dari server DHCP kami dari alamat router ke alamat server kami. Tentu saja, untuk ini, alamat server harus statis, atau terikat ke MAC.
Di MikroTik:
Buka IP - DHCP Server - Jaringan dan klik dua kali pada jaringan kami. Di bidang Gateway, ubah alamat router ke alamat server proxy. Klik OK dan hanya itu. Anda dapat me-reboot router sehingga pengaturan diperbarui dengan benar untuk semua klien yang aktif. Setelah itu, klien cenderung mengubah jenis jaringan ke publik (jika itu pribadi).
Di router normal:
Lihat di manual untuk router Anda di mana harus mengubah gateway server DHCP, tetapi saya akan mengatakan apa yang ada di pengaturannya :)

Intinya: sebagai hasil dari solusi alternatif ini, kami dapat menyempurnakan akses dengan IP dan daftar, dan mendapatkan alamat IP normal klien di log Squid. Jika Anda memerlukan beberapa klien untuk online melewati Proxy melalui router, maka baca spoiler.
Internet melewati Proxy
Jika Anda memerlukan beberapa klien untuk pergi ke Internet melewati Squid sama sekali, maka Anda perlu mendaftarkan pengaturan jaringan pada klien secara manual, menunjukkan router sebagai gateway,


4. Kesimpulan


Jadi, untuk meringkas semua hal di atas. Kami berhasil menginstal dan mengkonfigurasi Linux Ubuntu 18.04 LTS dari awal, membangun dan menginstal Squid dengan dukungan HTTPS, mengkonfigurasi pemfilteran daftar putih, mengintegrasikan server Proxy ke dalam jaringan kami tanpa perlu menginstal server DHCP tambahan.

5. Daftar sumber


Saat membuat artikel, berbagai bahan digunakan dari situs Blog Teknis Interface LLC dan spesialis Keamanan Web - Filter Web untuk Jaringan Anda , serta pengetahuan dan pengalaman pribadi.
Saat mengedit dan menambah artikel, pengguna berikut banyak membantu: Kanlas , PetRiot , Barsook . Banyak terima kasih kepada mereka untuk bantuan dan bantuan mereka.

6. Catatan oleh penulis


  1. Pekerjaan apa pun dengan server harus dilakukan dalam mode superuser dengan menambahkan sudo sebelum perintah, atau dengan memasukkan perintah sudo -s sekali .
  2. Squid \ , , , . .
  3. , . , 1000 .
  4. , IP- Squid. Squid IP- — Mikrotik. , DHCP , . , , , IP .Barsook
  5. Agar Squid dapat bekerja dengan sejumlah besar klien (lebih dari 50), diperlukan minimal 1 GB RAM. Lebih disukai, karena Squid memakan memori. Anda dapat memeriksa status memori dengan memasukkan perintah atas .
  6. Saya sarankan menggunakan kedua opsi untuk mengkonfigurasi router, karena jika Anda secara eksplisit menentukan gateway yang berbeda dalam pengaturan jaringan (router itu sendiri), Anda dapat memotong kunci.


UPD1: menambahkan konfigurasi jaringan alternatif dan Firewall
UPD2: menambahkan opsi konfigurasi router alternatif, di mana masalah dengan menampilkan alamat dalam log Squid diperbaiki.
UPD3: menambahkan perbaikan dalam 3.1 - memungkinkan paket untuk melewati server, yang dia lupa tambahkan pada awalnya. Kalau tidak, Internet tidak berfungsi. Terima kasih kepada Dmitry1986 untuk menguji artikel ini.

Source: https://habr.com/ru/post/id473584/


All Articles