GNU/Linux >> Znalost Linux >  >> Linux

Omezte přístup SSH na konkrétní klienty podle IP adresy

Můžete omezit, kteří hostitelé se mohou připojit, konfigurací TCP wrapperů nebo filtrováním síťového provozu (firewalling) pomocí iptables. Pokud chcete používat různé metody ověřování v závislosti na IP adrese klienta, nakonfigurujte místo toho démona SSH (možnost 3).

Možnost 1:Filtrování pomocí IPTABLES

Pravidla iptables se vyhodnocují v pořadí, až do první shody.

Například povolit provoz ze sítě 192.168.0.0/24 a jinak snížit provoz (na port 22). DROP pravidlo není vyžadováno, pokud je vaše výchozí zásada iptables nakonfigurována na 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

Před pravidlo přetažení můžete přidat další pravidla, aby odpovídala více sítím/hostitelům. Pokud máte mnoho sítí nebo hostitelských adres, měli byste použít ipset modul. Existuje také iprange modul, který umožňuje použití libovolného rozsahu IP adres.

Iptables nejsou trvalé po restartování. Musíte nakonfigurovat nějaký mechanismus pro obnovení iptables při zavádění.

iptables platí pouze pro provoz IPv4. Systémy, které mají ssh naslouchající na IPv6 adresu, lze potřebnou konfiguraci provést pomocí ip6tables .

Možnost 2:Použití obalů TCP

Poznámka:Tato možnost nemusí být u moderních distribucí dostupná, protože podpora pro tcpwrappers byla z OpenSSH 6.7 odstraněna

Můžete také nakonfigurovat, kteří hostitelé se mohou připojit pomocí TCP wrapperů. S TCP wrappery můžete kromě IP adres použít v pravidlech také názvy hostitelů.

Ve výchozím nastavení zakázat všechny hostitele.

/etc/hosts.deny :

sshd : ALL

Poté vypište povolené hostitele v hosts.allow. Chcete-li například povolit síť 192.168.0.0/24 a localhost .

/etc/hosts.allow :

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

Možnost 3:Konfigurace démona SSH

Démona ssh můžete nakonfigurovat v sshd_config tak, aby používal různé metody ověřování v závislosti na adrese klienta/jménu hostitele. Pokud chcete pouze zablokovat připojení ostatních hostitelů, měli byste místo toho použít iptables nebo TCP wrappery.

Nejprve odstraňte výchozí metody ověřování:

PasswordAuthentication no
PubkeyAuthentication no

Poté přidejte požadované metody ověřování za Match Address na konci souboru. Umístění Match na konci souboru je důležité, protože všechny konfigurační řádky za ním jsou umístěny do podmíněného bloku až do dalšího Match čára. Například:

Match Address 127.0.0.*
    PubkeyAuthentication yes

Ostatní klienti se stále mohou připojit, ale přihlášení se nezdaří, protože nejsou k dispozici žádné metody ověřování.

Shoda argumentů a povolené podmíněné konfigurační volby jsou zdokumentovány v manuálové stránce sshd_config. Vzory shody jsou zdokumentovány v manuálové stránce ssh_config.


Zde je některá další konfigurace pro démona SSH pro rozšíření předchozí odpovědi:

  • Přidejte filtrování uživatelů pomocí AllowUsers možnost v sshd_config soubor:

    AllowUsers [email protected]* [email protected]* otherid1 otherid2
    

    To umožňuje johndoe a admin2 pouze od 192.168.1.* adresy a otherid1 , otherid2 odkudkoli.

  • Omezte klíč ssh nebo klíč založený na ca na sadu adres v .ssh/authorized_keys soubor domovského adresáře daného uživatele:

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    V tomto příkladu bude veřejný klíč pro uživatelská alias účinný pouze z daných adres.


Linux
  1. Omezit Posix Find na konkrétní hloubku?

  2. Ssh – protokolování pokusů o přístup Ssh?

  3. Jak SSH do konkrétního adresáře?

  1. Jak vytvořit nového uživatele s přístupem Ssh?

  2. Zabijte všechny procesy konkrétního uživatele přes SSH

  3. Omezte přístup SSH podle IP adresy

  1. Jak získat konkrétní adresu paměti pomocí C

  2. Mám rychlostně omezit pakety s iptables?

  3. Jak používat iptables nebo tc k omezení paketů na klienta.