Bagaimana kita mengizinkan set Private IP tertentu untuk masuk melalui SSH login (pasangan kunci RSA) ke Linux Server?
/etc/ssh/sshd_config
Bagaimana kita mengizinkan set Private IP tertentu untuk masuk melalui SSH login (pasangan kunci RSA) ke Linux Server?
/etc/ssh/sshd_config
Jawaban:
Anda dapat membatasi host mana yang dapat terhubung dengan mengkonfigurasi pembungkus TCP atau memfilter lalu lintas jaringan (firewall) menggunakan iptables . Jika Anda ingin menggunakan metode otentikasi berbeda tergantung pada alamat IP klien, konfigurasikan daemon SSH sebagai gantinya (opsi 3).
Aturan Iptables dievaluasi dalam urutan, hingga pertandingan pertama.
Misalnya, untuk mengizinkan lalu lintas dari jaringan 192.168.0.0/24 dan jika tidak drop lalu lintas (ke port 22). The DROP
Aturan tidak diperlukan jika iptables kebijakan default dikonfigurasi untuk DROP
.
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Anda dapat menambahkan lebih banyak aturan sebelum aturan drop untuk mencocokkan lebih banyak jaringan / host. Jika Anda memiliki banyak jaringan atau alamat host, Anda harus menggunakan modul ipset . Ada juga modul iprange yang memungkinkan penggunaan rentang alamat IP sembarang.
Iptables tidak persisten di seluruh reboot. Anda perlu mengkonfigurasi beberapa mekanisme untuk mengembalikan iptables saat boot.
iptables
hanya berlaku untuk lalu lintas IPv4. Sistem yang ssh mendengarkan alamat IPv6 dapat melakukan konfigurasi yang diperlukan ip6tables
.
Anda juga dapat mengonfigurasi host mana yang dapat terhubung menggunakan pembungkus TCP. Dengan pembungkus TCP, selain alamat IP Anda juga dapat menggunakan nama host dalam aturan.
Secara default, tolak semua host.
/etc/hosts.deny
:
sshd : ALL
Kemudian daftar host yang diizinkan di hosts.allow. Misalnya untuk memungkinkan jaringan 192.168.0.0/24 dan localhost .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
Anda dapat mengkonfigurasi daemon ssh di sshd_config untuk menggunakan metode otentikasi yang berbeda tergantung pada alamat klien / nama host. Jika Anda hanya ingin memblokir host lain agar tidak terhubung, Anda sebaiknya menggunakan iptables atau pembungkus TCP.
Pertama-tama hapus metode otentikasi standar:
PasswordAuthentication no
PubkeyAuthentication no
Kemudian tambahkan metode otentikasi yang diinginkan setelah Match Address
di akhir file. Menempatkan Match
di akhir file adalah penting, karena semua baris konfigurasi setelah ditempatkan di dalam blok bersyarat sampai Match
baris berikutnya . Sebagai contoh:
Match Address 127.0.0.*
PubkeyAuthentication yes
Klien lain masih dapat terhubung, tetapi login akan gagal karena tidak ada metode otentikasi yang tersedia.
Argumen yang cocok dan opsi konfigurasi kondisional yang diperbolehkan didokumentasikan dalam halaman manual sshd_config . Pola kecocokan didokumentasikan dalam halaman manual ssh_config .
#ListenAddress ::
di /etc/ssh/sshd_config
akan memberi tahu SSH server untuk menerima masuk dari salah satu jaringan tersebut. Kalau tidak, lakukan di ListenAddress <ip address>
mana <ip address>
port NIC yang Anda inginkan diizinkan. Saya eth0
adalah 192.168.3.4
karena ListenAddress 192.168.3.4
hasil SSH hanya bekerja pada jaringan 192.168.3.4 yang pada eth0; dan eth1 eth2 eth3 ditolak.
Berikut beberapa konfigurasi tambahan untuk daemon SSH untuk memperluas jawaban sebelumnya:
Tambahkan pemfilteran pengguna dengan AllowUsers
opsi dalam sshd_config
file:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Ini memungkinkan johndoe dan admin2 hanya dari 192.168.1.*
alamat dan otherid1 , otherid2 dari mana saja.
Batasi kunci ssh atau kunci berbasis ca untuk satu set alamat dalam .ssh/authorized_keys
file direktori home pengguna yang diberikan:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
Dalam contoh ini, kunci publik untuk useralias hanya akan efektif dari alamat yang diberikan.