Shorewall - Firewall Tingkat Tinggi untuk Server Linux


Menyiapkan firewall di Linux bisa menjadi hal yang sangat menakutkan bagi pemula, atau seseorang yang tidak terlalu paham dengan iptables. Untungnya, ada solusi yang sangat mudah digunakan di Shorewall.

Dalam tutorial multi-bagian ini, saya akan membantu Anda memulai dengan Shorewall dan memandu Anda melalui beberapa topik lanjutan tentang sistem firewall yang luar biasa ini.

Apa itu tembok pantai?

Shorewall pada dasarnya adalah front-end untuk iptables, namun merupakan front-end lingkungan baris perintah yang menggunakan beberapa file teks untuk konfigurasinya. Meskipun Shorewall adalah sistem firewall tangguh yang dapat diperluas pada jaringan sangat besar yang melayani banyak mesin, kita akan memulai dengan konfigurasi dua antarmuka dasar dan memahami dasar-dasarnya.

Konfigurasi dua antarmuka terdiri dari mesin dengan dua port ethernet, satu masuk, dan satu lagi keluar ke jaringan lokal.

Instal Shorewall Firewall di Linux

Shorewall dapat diinstal menggunakan alat pengelola paket apt dan yum.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Setelah instalasi, kita perlu menyalin contoh konfigurasi dari direktori “/usr/share/doc/shorewall” ke direktori default Shorewall “/etc/shorewall”.

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Jika kita melihat di direktori ini, kita melihat banyak file dan file shorewall.conf.

Shorewall memandang jaringan sebagai sekelompok zona berbeda, jadi file pertama yang ingin kita lihat adalah file “/etc/shorewall/zones”.

sudo nano /etc/shorewall/zones

Di sini, kita melihat ada tiga zona yang ditentukan secara default: fw, net, dan loc. Penting untuk dicatat bahwa Shorewall memperlakukan mesin firewall itu sendiri sebagai zonanya sendiri dan menyimpannya dalam variabel bernama $fw.

File “/etc/shorewall/zones” cukup jelas. Anda memiliki zona internet (antarmuka yang menghadap internet), loc zona (antarmuka yang menghadap LAN), dan fw, yaitu segalanya.

Pengaturan ini memberikan hal berikut:

  • Ini memungkinkan semua permintaan koneksi dari zona lokasi (LAN) ke zona bersih (Internet).
  • Membatalkan semua permintaan koneksi (mengabaikan) dari zona bersih ke firewall dan LAN.
  • Menolak dan mencatat semua permintaan lainnya.

Bit LOG LEVEL seharusnya familier bagi siapa pun yang pernah melakukan administrasi dengan Apache, MySQL, atau sejumlah program FOSS lainnya. Dalam hal ini, kami meminta Shorewall untuk menggunakan tingkat info logging.

Sekarang setelah zona dan kebijakan kita ditetapkan, kita harus mengkonfigurasi antarmuka kita. Caranya dengan mengedit file “/etc/shorewall/interfaces”.

sudo nano /etc/shorewall/interfaces

Di sini, kami telah menyetel antarmuka yang terhubung ke internet sebagai eth0 ke zona bersih. Di sisi LAN, kami telah menyetel antarmuka lainnya, eth1, ke zona lokasi. Harap sesuaikan file ini agar sesuai dengan konfigurasi Anda dengan benar.

Berbagai pilihan yang dapat Anda tempatkan untuk salah satu antarmuka ini sangat luas dan paling baik dijelaskan secara rinci di halaman manual.

man shorewall-interfaces

Ikhtisar singkat beberapa di antaranya adalah sebagai berikut:

  • nosmurfs – memfilter paket dengan alamat siaran sebagai sumber.
  • logmartians – mencatat paket dengan alamat sumber yang mustahil.
  • routefilter – pemfilteran rute kernel untuk anti-spoofing.

Tentu saja, karena sistem kita sudah di-firewall, kita memerlukan koneksi tertentu untuk diizinkan masuk agar apa yang perlu kita lakukan dapat dilakukan. Anda mendefinisikannya dalam file aturan di “/etc/shorewall/rules“.

sudo nano /etc/shorewall/rules

File ini terlihat membingungkan pada awalnya, terutama karena kolomnya tumpang tindih, tetapi headernya cukup jelas. Pertama, Anda memiliki kolom TINDAKAN, yang menjelaskan apa yang ingin Anda lakukan.

Berikutnya, Anda memiliki header SOURCE tempat Anda menentukan zona tempat asal paket. Lalu, Anda memiliki DEST, atau tujuan, yang merupakan zona atau alamat IP tujuan. Mari kita gunakan sebuah contoh.

Misalkan Anda ingin menjalankan server SSH di belakang firewall Anda pada mesin dengan alamat IP 192.168.1.25. Anda tidak hanya harus membuka port di firewall Anda, namun Anda juga harus memberi tahu firewall bahwa lalu lintas apa pun yang datang pada port 22 harus dirutekan ke mesin di 192.168.1.25.

Ini dikenal sebagai Penerusan Port. Ini adalah fitur umum di sebagian besar firewall/router. Di “/etc/shorewall/rules“, Anda dapat melakukannya dengan menambahkan baris seperti ini:

SSH(DNAT)	net		loc:192.168.1.25

Di atas, kami telah mendefinisikan setiap paket tujuan SSH yang datang dari zona bersih ke firewall harus dirutekan (DNAT) ke port 22 pada mesin dengan alamat 192.168.1.25.

Ini disebut Terjemahan Alamat Jaringan atau NAT. Tanda “D ” hanya memberi tahu Shorewall bahwa ini adalah NAT untuk alamat tujuan.

Agar ini dapat berfungsi, Anda harus mengaktifkan dukungan NAT di kernel Anda. Jika Anda memerlukan NAT dan tidak memilikinya, silakan lihat tutorial saya tentang Kompilasi Ulang Kernel Debian.

Pada artikel selanjutnya, kita akan menjelajahi berbagai konfigurasi dan opsi Shorewall. Namun, seharusnya ada banyak informasi di sini untuk membantu Anda memulai saat ini. Seperti biasa, silakan merujuk ke halaman manual untuk pemahaman yang lebih mendalam.