Konfigurasi dan Contoh IPTables yang Mudah di Ubuntu 16.04

pengantar

iptablesadalah alat yang ampuh yang digunakan untuk mengkonfigurasi firewall terintegrasi Linux-kernel. Itu sudah diinstal pada sebagian besar distribusi Ubuntu, namun jika Anda menggunakan versi Ubuntu yang disesuaikan atau berjalan di dalam sebuah wadah Anda kemungkinan besar harus menginstalnya secara manual.

sudo apt-get install iptables iptables-persistent

Setelah instalasi, jika Anda ditanya apakah akan menyimpan aturan Anda saat ini, itu tidak masalah saat ini karena Anda akan menghapus atau membuat aturan baru nanti.

Kiat

Anda dapat menggunakan netcatperintah (pada komputer yang berbeda dari server Anda) untuk menguji port mana yang terbuka atau tertutup.

nc -z -w5 -v SERVER_IP PORT
  • nc adalah perintah netcat.
  • -z cukup kirim paket tanpa payload.
  • -w5 tunggu hingga 5 detik untuk respons.
  • -v mode verbose.
  • Ganti SERVER_IPdengan alamat server Anda.
  • Ganti PORTdengan port yang ingin Anda uji apakah itu terbuka (misalnya 22).

Di server Anda, Anda dapat menggunakan netstatperintah untuk melihat port mana yang sedang mendengarkan koneksi.

sudo netstat -tulpn

Catatan: Meskipun netstatberguna untuk menemukan port yang ingin Anda gunakan, Anda harus mengetahui aplikasi yang sudah Anda instal di server Anda dan port mana yang sedang didengarkan, Anda tidak harus mengizinkan setiap port yang Anda temukan di netstatoutput .

Sintaksis

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTtambahkan aturan ke INPUTrantai, rantai adalah sekelompok aturan, yang paling sering kita gunakan dalam panduan ini adalah INPUT, OUTPUTdan PREROUTING.
  • -p tcpatur tcpsebagai protokol yang akan diterapkan aturan ini, Anda juga dapat menggunakan protokol lain seperti udp, icmpatau all.
  • -m tcpgunakan tcpmodul. iptablesmendukung fitur-fitur tambahan melalui modul, beberapa di antaranya sudah dipra-instal dengan yang iptableslain, seperti geoipmodul.
  • --dport 22perintah yang dimulai dengan --menunjukkan opsi tambahan untuk modul yang sebelumnya digunakan, dalam hal ini kami akan memberi tahu tcpmodul untuk hanya berlaku untuk port 22.
  • -m geoipgunakan geoipmodul. Ini akan membatasi paket berdasarkan negara (informasi lebih lanjut pada langkah 5).
  • --src-cc PEberi tahu geoipmodul untuk membatasi paket yang masuk ke paket yang berasal dari Peru. Untuk lebih banyak kode negara, cari ISO 3166 country codesdi internet.
  • -j ACCEPTyang -jargumen memberitahu iptablesapa yang harus dilakukan jika paket cocok kendala yang ditentukan dalam argumen sebelumnya. Dalam hal ini akan ACCEPTpaket-paket itu, opsi lainnya REJECT, DROPdan banyak lagi. Anda dapat menemukan lebih banyak opsi dengan mencari iptables jump targetsdi internet.

1. Dasar-dasar

Daftar semua aturan.

sudo iptables -L

Daftar semua perintah yang digunakan untuk membuat aturan yang saat ini digunakan, berguna untuk mengedit atau menghapus aturan.

sudo iptables -S

Untuk menghapus aturan tertentu, pilih aturan dari sudo iptables -Sdan ganti -Adengan -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Daftar semua aturan bernomor dalam INPUTrantai.

sudo iptables -L INPUT --line-numbers

Hapus aturan bernomor.

sudo iptables -D INPUT 2

Untuk menghapus semua aturan.

sudo iptables -F

Peringatan: Anda mungkin kehilangan koneksi jika terhubung oleh SSH .

Hanya aturan yang jelas dalam OUTPUTrantai.

sudo iptables -F OUTPUT

2. Buat aturan awal

Izinkan SSHdi eth0antarmuka

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 menerapkan aturan ke antarmuka tertentu, untuk memungkinkan dari antarmuka apa pun hapus perintah ini.

Untuk membatasi paket yang masuk ke IP tertentu (yaitu 10.0.3.1/32).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 menentukan IP / subnet untuk memungkinkan koneksi.

Tetapkan aturan rantai default.

Peringatan: sebelum melanjutkan pastikan Anda telah menerapkan aturan SSH yang benar jika bekerja pada server jarak jauh .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP menolak semua paket yang masuk (yaitu tidak ada yang dapat terhubung ke server Anda yang sedang berjalan seperti Apache, SQL, dll).
  • -P FORWARD DROP menolak semua paket yang diteruskan (yaitu ketika Anda menggunakan sistem Anda sebagai router).
  • -P OUTPUT ACCEPTmemungkinkan semua paket keluar (yaitu ketika Anda melakukan HTTPpermintaan).

Izinkan semua lalu lintas di antarmuka loopback ( disarankan ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Buat aturan tetap

Simpan iptablesaturan saat ini .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Jika Anda menjalankan di dalam wadah, netfilter-persistentperintah yang paling mungkin tidak akan berfungsi, jadi Anda perlu mengkonfigurasi ulang iptables-persistentpaket.

sudo dpkg-reconfigure iptables-persistent

4. Izinkan koneksi keluar

Izinkan kueri DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Gunakan statemodul untuk mengizinkan RELATEDdan mengirim ESTABLISHEDpaket.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Izinkan port yang diinginkan; dalam hal ini, HTTPport.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Lebih banyak port yang mungkin ingin Anda gunakan.

  • FTP: tcp di port 21
  • HTTPS: tcp di port 443
  • DHCP: udp di port 67
  • NTP: udp di port 123

Catatan: Jika Anda ingin mengizinkannya apt-getmungkin perlu untuk mengizinkan FTPdanHTTPS .

Izinkan lalu lintas yang dikembalikan hanya untuk RELATEDdan sudah ESTABLISHEDkoneksi ( disarankan karena terkadang komunikasi dua arah diperlukan).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Aturan berguna lainnya

Izinkan permintaan ping dari luar.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Teruskan lalu lintas di eth0port 2200ke 10.0.3.21:22(berguna jika Anda ingin mengekspos server SSH yang berjalan di dalam sebuah wadah).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Jika Anda berhasil masuk ke server Anda dengan menggunakan SSH, koneksi persisten akan dibuat (yaitu tidak ada koneksi baru bahkan jika Anda terhubung selama lebih dari 1 jam). Jika Anda gagal dan mencoba masuk lagi, koneksi baru akan dibuat. Ini akan memblokir upaya login SSH terus menerus dengan membatasi koneksi baru per jam.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Redirect semua permintaan pada port 443ke port 4430(berguna jika Anda ingin mengikat ke port 443tanpa root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 antarmuka jaringan.
  • -m geoip modul blok negara (lihat langkah 5).

Peringatan: Jangan gunakan lo, OS akan membuang semua paket yang dialihkan ke antarmuka loopback .

5. Mengizinkan atau memblokir seluruh negara

5.1 Pasang xtables-addons

Anda dapat menginstal xtables-addonsmodul menggunakan berbagai metode, jangan ragu untuk menggunakan metode instalasi yang paling cocok untuk Anda.

  • Instal menggunakan apt-get.

    sudo apt-get install xtables-addons-common
    
  • Instal menggunakan module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Instal dari sumber.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Bangun basis data "negara".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Mulai ulang sistem Anda.

sudo reboot

Setelah xtables-addonsberhasil diinstal, setelah reboot pertama, jalankan depmodjika pemblokiran negara tidak akan berfungsi dengan baik (ini hanya diperlukan untuk pertama kalinya).

sudo depmod 

Buat skrip di /etc/cron.monthly/geoip-updateruntuk memperbarui geoipdatabase setiap bulan.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Jadikan /etc/cron.monthly/geoip-updaterdieksekusi.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Aturan contoh

_Catatan: Jika Anda menerima iptables: No chain/target/match by that namekesalahan saat mencoba menerapkan geoipaturan, ada kemungkinan bahwa xtables-addonsbelum diinstal dengan benar. Coba metode pemasangan lain.

Blokir semua paket yang masuk dari Cina, Hong Kong, Rusia dan Korea.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Izinkan paket masuk pada port 80dari mana saja kecuali negara di atas.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Izinkan paket masuk pada ens3antarmuka pada port 22hanya dari Peru (jangan ragu untuk memilih kode negara dari mana Anda ingin menerima paket, misalnya, USuntuk Amerika Serikat).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Izinkan paket masuk di pelabuhan 443hanya dari Peru.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut