Как закрыть sshd без iptables

Если лень возиться с iptables, то ограничить доступ к ssh (и не только) можно и без iptables.

Для этого достаточно дописать несколько строк в файлы
/etc/hosts.allow
/etc/hosts.deny

Например, открываем доступ к sshd с ip 192.168.1.12 и 192.168.250.250, а для остальных доступ к sshd будет закрыт.
Добавляем в файл /etc/hosts.allow строку, где указаны разрешенные ip:

sshd: 192.168.1.12, 192.168.250.250

А в файле /etc/hosts.deny закрываем доступ всем, кроме разрешенных:

sshd: ALL

При попытке подключения с неразрешенного хоста получим ответ:

# ssh 192.168.0.1
ssh_exchange_identification: Connection closed by remote host

А если подключаться с разрешенного, то увидим приглашение ssh.

# ssh 192.168.0.1
user@host's password:

Вот такой простой способ 🙂
Таким же способом, например, можно разрешить/запретить коннекты с mysqld, nfs или другим сервисам.

6 comments on “Как закрыть sshd без iptables

  1. Ага, только hosts.allow и hosts.deny работают через tcp враппер, а не на уровне ядра. Тут есть свои плюсы и свои минусы. Но в целом да, коль враппер есть — его можно и нужно использовать 😉
    С другой стороны, хочется заметить, что hosts.deny это, в некоторой степени, анахронизм для обратной совместимости 😉 Нынче и запрет и разрешение надо делать в hosts.allow, примерно так:

    tftpd: 10.254.0.0/24 : ALLOW
    tftpd: ALL : DENY

    Ну или на вышеописанном примере:

    sshd: 192.168.1.12, 192.168.250.250 : ALLOW
    sshd: ALL : DENY

  2. ага, только ты все время «скрываешься» и не признаешься, когда в городе )

  3. Если идти путём последовательной паранойи, то можно ещё использовать директивы (Allow|Deny)(Users|Groups) (/etc/ssh/sshd_config), а также задействовать port knock и нестандартный порт SSH.

Обсуждение закрыто.