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

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

Cara Memasang Graylog Server pada CentOS 7

Cara Memasang Graylog Server pada CentOS 7

Menggunakan Sistem yang Berbeda? Graylog server adalah perangkat lunak manajemen log sumber terbuka siap pakai perusahaan. Ia mengumpulkan log dari berbagai sumber dan menganalisis

Cara Memasang Anchor CMS pada Fedora 26 LAMP VPS

Cara Memasang Anchor CMS pada Fedora 26 LAMP VPS

Menggunakan Sistem yang Berbeda? Anchor CMS adalah Content Engine System (CMS) Blog Engine yang super-sederhana dan sangat ringan, gratis, dan terbuka

Siapkan Berbagi NFS di Debian

Siapkan Berbagi NFS di Debian

NFS adalah sistem file berbasis jaringan yang memungkinkan komputer untuk mengakses file di seluruh jaringan komputer. Panduan ini menjelaskan bagaimana Anda dapat mengekspos folder melalui NF

Cara Memasang GitBucket di Ubuntu 16.04

Cara Memasang GitBucket di Ubuntu 16.04

Panduan ini mencakup instalasi dasar dan pengaturan GitBucket untuk instance Vultr yang menjalankan Ubuntu 16.04, dan mengasumsikan bahwa Anda menjalankan perintah sebagai

Cara Memasang Directus 6.4 CMS pada Fedora 26 LAMP VPS

Cara Memasang Directus 6.4 CMS pada Fedora 26 LAMP VPS

Menggunakan Sistem yang Berbeda? Directus 6.4 CMS adalah Headless Content Management System (CMS) yang kuat dan fleksibel, gratis dan open source yang menyediakan pengembang

Cara Memasang Mattermost 5.2 di Ubuntu 16.04

Cara Memasang Mattermost 5.2 di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Mattermost adalah sumber terbuka, alternatif yang di-host-sendiri ke layanan pesan Slack SAAS. Dengan kata lain, dengan Mattermost, Anda ca

Menyiapkan Server TeamTalk di Linux

Menyiapkan Server TeamTalk di Linux

TeamTalk adalah sistem konferensi yang memungkinkan pengguna untuk memiliki percakapan audio / video berkualitas tinggi, obrolan teks, transfer file, dan berbagi layar. Itu saya

Menggunakan kunci SSH Anda untuk masuk ke pengguna non-root

Menggunakan kunci SSH Anda untuk masuk ke pengguna non-root

Vultr menyediakan fitur yang memungkinkan Anda untuk melakukan pra-instal kunci SSH setelah membuat instance baru. Ini memungkinkan Anda untuk mengakses pengguna root server, namun, th

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Cara Menginstal PostgreSQL 11.1 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang Manajer File Terminal Ranger di Linux

Cara Memasang Manajer File Terminal Ranger di Linux

Ranger adalah manajer file berbasis baris perintah dengan binding kunci VI. Ini memberikan antarmuka kutukan minimalis dan bagus dengan tampilan pada hierarki direktori

Cara Memasang Redmine di Ubuntu 16.04

Cara Memasang Redmine di Ubuntu 16.04

Menggunakan Sistem yang Berbeda? Redmine adalah alat manajemen proyek berbasis web gratis dan open source. Itu ditulis dalam Ruby on Rails dan mendukung banyak database

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Cara Membangun Brotli Dari Sumber di Ubuntu 18.04 LTS

Menggunakan Sistem yang Berbeda? Brotli adalah metode kompresi baru dengan rasio kompresi yang lebih baik daripada GZIP. Kode sumbernya dihosting secara publik di Githu ini

Atur Akun Pengguna khusus SFTP di CentOS 7

Atur Akun Pengguna khusus SFTP di CentOS 7

Pada kesempatan tertentu, Administrator Sistem mungkin perlu membuat akun pengguna dan membatasi akses mereka untuk hanya mengelola file mereka sendiri melalui sFTP, tetapi tidak

Menggunakan Tampilan MySQL pada Debian 7

Menggunakan Tampilan MySQL pada Debian 7

Pendahuluan MySQL memiliki fitur hebat yang dikenal sebagai tampilan. Tampilan adalah kueri yang disimpan. Pikirkan mereka sebagai alias untuk permintaan yang panjang. Dalam panduan ini,

Cara Memasang Nginx 1.14 Di Arch Linux

Cara Memasang Nginx 1.14 Di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini.) Akses Sudo. Perintah yang harus dijalankan sebagai root diawali oleh #. Th

Nonaktifkan atau Batasi Login Root melalui SSH di Linux

Nonaktifkan atau Batasi Login Root melalui SSH di Linux

Mengizinkan login root melalui SSH umumnya dianggap sebagai praktik keamanan yang buruk di seluruh industri teknologi. Sebagai gantinya, Anda dapat melakukan administrativ sensitif

Cara Memasang Seafile Server di Ubuntu 16.10

Cara Memasang Seafile Server di Ubuntu 16.10

Menggunakan Sistem yang Berbeda? Seafile (versi komunitas) adalah solusi sinkronisasi dan berbagi file sumber gratis dan terbuka yang mirip dengan ownCloud. Sepanjang kecerdasan

Cara Memasang Thelia 2.3 pada Debian 9

Cara Memasang Thelia 2.3 pada Debian 9

Menggunakan Sistem yang Berbeda? Thelia adalah alat sumber terbuka untuk membuat situs web e-bisnis dan mengelola konten online yang ditulis dalam PHP. Kode sumber thelia i

Cara Memasang MongoDB 4.0 di Arch Linux

Cara Memasang MongoDB 4.0 di Arch Linux

Prasyarat Server Vultr berjalan terbaru Arch Linux (lihat artikel ini) Akses Sudo: Perintah yang diperlukan untuk dijalankan karena root diawali oleh #, dan satu

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

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.