Ubuntu IPTables memungkinkan hanya mengizinkan 1 negara

10

Jadi saya sudah mencari-cari skrip di internet yang akan menjatuhkan semua lalu lintas ke semua port kecuali port http (80) dan https (443), dan kemudian hanya mengizinkan lalu lintas di semua port lain dari negara x (di mana di my negara kasus x adalah AS).

Saya tidak ingin menambahkan semua IP dari setiap negara, saya hanya ingin mengizinkan ips dari negara saya lalu memblokir hampir semua lalu lintas lainnya dari dunia luar. Tidak seorang pun di luar negara saya yang memiliki akses ke ssh, ftp, smtp, dll. selain saya sendiri. Jika ini pernah berubah, saya akan menambahkan kasus khusus untuk itu ketika mendekati.

Catatan Samping

Saya harus mencatat bahwa saya memang menemukan pertanyaan yang berisi skrip untuk melarang ip oleh negara menggunakan tabel ip tapi itu banyak memasukkan tambahan yang harus saya lakukan.

Skrip yang ditandai sebagai jawaban terbaik akan memblokir semua lalu lintas dari IP tersebut. Saya hanya ingin memblokir akses ke semua port kecuali ke 80 dan 443.

Memperbarui

Dengan aturan berikut,

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

apakah saya dapat memodifikasinya dan melakukan sesuatu seperti

iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Saya akan berasumsi bahwa ini akan memungkinkan ips dari Cina untuk mengakses port 80 dan port 443 dan akan menjatuhkan sisanya. Apakah asumsi ini benar? Jika tidak, mengapa tidak?

Perbarui 2

Setelah beberapa main-main saya menemukan bahwa versi Ubuntu saya tidak suka --dportatributnya. Jadi, alih-alih menggunakan itu, kita yang menjalankan Ubuntu 14+ (setidaknya, saya hanya menginstal Ubuntu 14.04, 14.10, dan 15.04 pada beberapa mesin) harus menggunakan-p PORT_NUMBER_OR_NAME

Jadi itu akan terlihat seperti

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

atau untuk lalu lintas masuk,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
Austin Kregel
sumber

Jawaban:

7

Anda perlu menambahkan dukungan iptables untuk geolokasi. Untuk melakukannya, Anda harus mengikuti langkah-langkah ini:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Ini akan memungkinkan Anda untuk melakukan hal-hal seperti:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Itu akan memblokir lalu lintas keluar ke China (CN). Kompleksitas aturan terserah Anda, pada dasarnya Anda tidak perlu skrip, cukup tulis aturan yang ingin Anda terapkan dan kemudian gunakan iptables-savesehingga mereka dimuat setiap kali Anda reboot.

nKn
sumber
Terima kasih! Saya punya pertanyaan lain, saya memperbarui pertanyaan saya di atas untuk mencerminkannya. Apakah Anda tahu jawabannya?
Austin Kregel
Aturannya akan berfungsi tetapi Anda harus mengubah arahnya, sekarang OUTPUTdan Anda harus mengaturnya INPUTdan tidak menggunakan --dst-cctetapi --src-ccsebagai gantinya. Tetapi jika pertanyaannya adalah apakah harus bekerja dalam kombinasi iptablesaturan lain yang ada , jawabannya adalah ya.
nKn
yang xt_geoip_dlperintah tidak lagi bekerja, memerlukan zip yang doesnt ada lagi
Martijn