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 --dport
atributnya. 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