Cara Menggunakan Docker dengan Firewall UFW

  • Post author:
  • Post category:Tutorial

Anehnya, Docker tidak bekerja di luar kotak dengan “Universal Firewall” atau UFW Linux. Keduanya memodifikasi konfigurasi iptables yang sama, dan ini dapat menyebabkan kesalahan konfigurasi yang mengekspos wadah yang tidak seharusnya bersifat publik. Berikut cara memperbaikinya.

Mengapa Docker Tidak Bekerja Dengan UFW?

UFW dimaksudkan untuk menjadi firewall yang sangat sederhana. Masalahnya adalah bahwa baik UFW dan Docker mencoba untuk mengubah aturan firewall dasar yang sama, dan konflik ini memerlukan penyiapan tambahan untuk diselesaikan jika Anda ingin menjalankan UFW dan Docker bersama-sama.

Jika Anda menyiapkan firewall UFW dasar untuk menolak secara default dan mengizinkan HTTP dan SSH, ini akan tampak aman—tetapi tidak akan memblokir Docker dari memulai wadah yang terikat ke port lain. Masalah ini mungkin sulit ditangkap, karena UFW dan Docker adalah sistem yang terpisah. UFW tanpa sadar berbohong kepada Anda dan tidak akan menampilkan port terbuka dari wadah Docker.

Ini bisa menjadi masalah besar jika Anda tidak menangkapnya. Misalnya, mungkin Anda ingin menjalankan panel admin internal pada port 8000, dan memasukkannya ke dalam daftar putih ke alamat IP Anda sendiri. Meskipun ini bukan pengaturan yang paling aman untuk memulai, biasanya tidak apa-apa, terutama jika panel memiliki otentikasi tambahan.

Namun, UFW akan menampilkan aturan firewall sebagai daftar putih yang benar, dan tentu saja akan terlihat oleh Anda dari lokasi Anda yang masuk daftar putih . Namun, jika dijalankan melalui Docker, itu akan terlihat di port 8000 dari mana saja secara default.

Memperbaiki Config

DockerAda solusi yang disediakan Docker, dengan mengedit /etc/default/docker atau /etc/docker/daemon.json dan cukup matikan Fungsionalitas iptables Docker sama sekali:

DOCKER_OPTS=”–iptables=false”

Ini berfungsi, namun, ini hanya setengah solusi. Ini menonaktifkan kemampuan Docker untuk mengelola jaringannya sendiri dan dapat menyebabkan wadah tidak dapat mengakses internet sama sekali di luar kotak. Ini masih dapat berfungsi, tetapi Anda harus mempertahankan aturan iptables secara manual untuk container Docker dan jaringan kustom, yang rumit, mengganggu, dan mengalahkan tujuan kesederhanaan UFW.

Solusi sebenarnya rumit, tetapi untungnya cukup umum sehingga ada repo Github yang membantu merinci masalah dan langkah-langkah untuk memperbaikinya. Pada dasarnya, Anda perlu mengubah konfigurasi UFW di /etc/ufw/after.rules untuk menambahkan blok berikut di akhir:

# BEGIN UFW AND DOCKER *filter :ufw-user-forward – [0:0] :ufw-docker -logging-deny – [0:0] :DOCKER-USER – [0:0] -A DOCKER-USER -j ufw-user-forward -A DOCKER-USER -j RETURN -s 10.0.0.0/8 -A DOCKER -USER -j RETURN -s 172.16.0.0/12 -A DOCKER-USER -j RETURN -s 192.168.0.0/16 -A DOCKER-USER -p udp -m udp –sport 53 –dport 1024:65535 -j RETURN -Pengguna DOCKER -j ufw-docker-logging-deny -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16 -A DOCKER-USER -j ufw- docker-logging-deny -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp –dport 0:32767 -d 192.168 .0.0/16 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp –dport 0:32767 -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging- tolak -p udp -m udp –dpo rt 0:32767 -d 172.16.0.0/12 -Pengguna DOCKER -j RETURN -A ufw-docker-logging-deny -m limit –limit 3/min –limit-burst 10 -j LOG –log- awalan “[UFW DOCKER BLOCK] ” -A ufw-docker-logging-deny -j DROP COMMIT # END UFW AND DOCKER

Anda dapat melakukannya secara manual, tetapi ada utilitas yang bagus juga disediakan dalam repo ini yang akan mengotomatiskannya, dan memberikan beberapa bantuan perintah untuk memeriksa status firewall sebenarnya. Anda dapat mengunduhnya dari repo ini:

sudo wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker Sudo chmod +x /usr/ local/bin/ufw-docker

Kemudian, instal konfigurasi, dan mulai ulang UFW.

ufw-docker install sudo systemctl restart ufw

Setelah dimulai ulang, perubahan akan diterapkan secara otomatis, tetapi jika tidak, Anda mungkin perlu memulai ulang Docker atau mesin Anda secara umum . Setelah diaktifkan, semua port harus diblokir dengan benar.

Daftar Putih Port Kontainer Docker Dengan UFW

Solusi ini memang mengharuskan Anda untuk mengonfigurasi port sedikit berbeda. Utilitas ufw-docker memiliki perintah yang secara selektif mengizinkan port ke container Docker tertentu.

ufw-docker mengizinkan httpd 80

Namun, jika Anda ingin menggunakan aturan yang lebih canggih, seperti daftar putih berbasis IP, Anda harus menggunakan ufw route allow

ufw rute memungkinkan proto tcp dari 1.2.3.4 ke port apa pun 9443

Itulah berita seputar Cara Menggunakan Docker dengan Firewall UFW, semoga bermanfaat. Disadur dari HowToGeek.com.