Cara membenarkan akses ssh/ftp berdasarkan negara menggunakan geoip

Cara membenarkan akses ssh/ftp berdasarkan negara menggunakan geoip

Pangkalan Data GeoIP mempunyai rekod lokasi geografi berdasarkan alamat IP. Menggunakan pangkalan data ini, kita boleh mencari mana -mana IP milik negara mana yang menggunakan baris arahan Linux. Artikel ini akan membantu anda membenarkan akses SSH atau FTP (VSFTPD) berdasarkan negara pengguna. Contoh ini menggunakan pembalut TCP untuk menjamin perkhidmatan anda.

Pasang pangkalan data GEOIP dan GEOIP

Pertama, pasang binari Geoip untuk Linux dan pangkalan data mereka berdasarkan sistem operasi anda. Untuk pengguna CentOS dan Redhat Geoip Binary dan pangkalan data digabungkan dalam satu pakej.

Pada centos dan redhat:
sudo yum memasang geoip  
Di Ubuntu dan Debian:
sudo apt-get memasang geoip-bin geoip-data  

Buat skrip penapis ssh/ftp

Sekarang buat skrip shell yang memeriksa semua alamat IP sambungan masuk dan cari negara mereka yang sepadan menggunakan pangkalan data GEOIP dan hanya membenarkan negara -negara yang kodnya ditakrifkan dalam Membenarkan_countries pemboleh ubah dalam skrip.

vim/usr/local/bin/ipfilter.sh  
#!/Bin/Bash # Lesen: WTFPL # Kod negara yang dipisahkan ruang atas untuk menerima membenarkan_countries = "dalam kami" logdeny_facility = "authPriv.Notis "Jika [$ # -NE 1]; kemudian echo" penggunaan: 'Basename $ 0' "1> & 2 Exit 0 # kembali benar dalam hal isu konfigurasi fi jika [[" 'echo $ 1 | grep ': "" != ""]]; kemudian negara = "/usr/bin/geoiplookup6" $ 1 "| awk -f": "" print $ 2 '| awk -f "," 'print $ 1' | kepala -n 1 'lain negara = "/usr/bin/geoiplookup" $ 1 "| awk -f": "" print $ 2' | awk -f "," 'print $ 1' | kepala -n 1 'fi [[$ country = "alamat ip tidak dijumpai" || $ Allow_countries = ~ $ country]] && response = "izinkan" || Respons = "menafikan" jika [["$ response" == "membenarkan"]]; kemudian logger -p $ logdeny_facility "$ respons sshd sambungan dari $ 1 ($ country)" exit 0 else logger -p $ logdeny_facility "$ response sshd connection from $ 1 ($ country)" exit 1 fi 

Skrip Srouce: https: // gist.github.com/jokey2k/a74f56955124880749e7

Jadikan skrip ini boleh dilaksanakan

chmod +x/usr/local/bin/ipfilter.sh  

Hadkan sambungan SSH/FTP

Sekarang gunakan sekatan SSH dan FTP menggunakan pembalut TCP. Pertama kita perlu menafikan semua orang dengan menambahkan garis di bawah /etc/hos.menafikan.

/etc/hos.menafikan:

SSHD: Semua VSFTPD: Semua 

Sekarang edit /etc/hos.Benarkan dan biarkan hanya IPS yang dibenarkan oleh skrip penapis IP anda.

/etc/hos.Benarkan:

SSHD: Semua: Spawn/usr/Local/Bin/IPFilter.sh %a vsftp: semua: spawn/usr/local/bin/ipfilter.sh %a 

Di atas sekatan FTP adalah untuk vsftpd sahaja. Juga, pastikan anda telah mendayakan (TCP_Wrappers = ya) dalam konfigurasi VSFTPD anda. Anda juga boleh membuat peraturan yang sama untuk sebarang perkhidmatan lain yang disokong oleh pembalut TCP.

Ujian

Akhirnya, uji pelayan anda dengan log masuk menggunakan SSH atau FTP dari lokasi yang berbeza-2 dan menganalisis fail log akses. Berikut adalah beberapa log demo yang dibuat oleh ipfilter.sh.

27 Feb 13:03:29 Tecadmin Root: Menolak SSHD Sambungan dari 212.191.246.202 (PL) 27 Feb 13:34:28 Tecadmin Root: Menolak SSHD Sambungan dari 212.181.246.202 (SE) 27 Feb 13:34:36 Tecadmin Root: Menolak SSHD Sambungan dari 211.181.246.203 (KR) 27 Feb 13:35:00 Tecadmin Root: Menolak SSHD Sambungan dari 221.191.146.204 (JP) 27 Feb 15:11:04 Tecadmin Root: Benarkan sambungan SSHD dari 49.15.212.12 (in) 27 Feb 15:11:09 Tecadmin Root: Benarkan sambungan SSHD dari 149.15.212.12 (AS) 27 Feb 15:11:22 Tecadmin Root: Benarkan sambungan SSHD dari 49.15.156.123 (in) 27 Feb 15:11:32 Tecadmin Root: Benarkan sambungan SSHD dari 231.15.156.123 (Alamat IP tidak dijumpai) 27 Feb 15:14:04 Tecadmin Root: Menolak SSHD Sambungan dari 111.15.15.123 (CN) 27 Feb 15:14:56 Tecadmin Root: Benarkan sambungan SSHD dari 49.15.110.123 (dalam) 

Dalam balak, anda boleh mengatakan bahawa semua IP milik AS (Amerika Syarikat) dan di (India) dibenarkan. Juga jika mana -mana IP tidak sepadan dalam pangkalan data GEOIP akan dibenarkan secara lalai. Selebihnya IPS negara lain yang sepadan ditolak.