Разрешить root-вход только с одного IP-адреса

14

У меня есть Centos5.

Есть ли способ, которым я могу войти в свой сервер VPS с пользователем root только с определенного IP-адреса.

Я прочитал, что я могу использовать закрытый ключ для входа в SSHD. Но проблема в том, что я использую SFTP для всех своих веб-сайтов и не хочу, чтобы пользователи, не являющиеся ИТ-специалистами, использовали ключи для входа в систему с SFTP.

ИЛИ есть ли способ, что только root может использовать ключи для входа в оболочку, но для других это обычный пароль


источник

Ответы:

15

Лучший способ - использовать ключевое слово Match:

Match Host myworkstation
        PermitRootLogin yes

или

Match Address 192.168.1.100
        PermitRootLogin yes

Таким образом, вы можете оставить PermitRootLogin на «Нет», но вы все равно можете войти в систему как root с вашей рабочей станции.

Это также можно использовать, например, чтобы разрешить root для rsync данных между двумя хостами.

dannyw
источник
ваш пример rsync - это именно тот случай, для которого я погуглил этот вопрос. Спасибо! ;)
Jan
Имейте в виду, что это работает только с использованием обратного DNS исходного IP-адреса. (по крайней мере для меня это был единственный выход)
mveroone
9

Как правило, лучше сначала войти в систему как непривилегированный пользователь, а затем использовать «su -» или «sudo» для получения привилегий root, но ...

Вы всегда можете поместить ограничение IP на ваш ключ в ~ root / .ssh / authorized_keys:

from="192.168.1.100" ssh-rsa AAAAh9uif...auwehuf== yourkey@yourhost.com

Это позволило бы ssh использовать ключ yourkey@yourhost.com только с 192.168.1.100.

Cakemox
источник
Согласен, хотя это сложнее сделать для таких вещей, как sftp, rsync, sshfs ...
mveroone
3

Использование:

PermitRootLogin без пароля

В / etc / ssh / sshd_config. Каждому пользователю, кроме root, будет разрешено использовать пароли для входа. Root должен использовать ключи для входа в систему.

rubiojr
источник
Будет ли это решение работать? ты пробовал это
Я использую эту настройку на каждом сервере, который я поддерживаю. Предотвращает коренные атаки грубой силы / dict. unixhelp.ed.ac.uk/CGI/man-cgi?sshd_config+5
rubiojr
Кажется, git pullчто это не работает: / etc / ssh / ssh_config: строка 68: Неверный параметр конфигурации: allowrootlogin
geoidesic
Также PermitRootLogin не появляется вman ssh_config
geoidesic
Также легко переопределяется с помощьюssh -o PreferredAuthentications=password
geoidesic
2

Отредактируйте sshd_config(обычно в /etc/ssh) и добавьте или измените следующие директивы

  PermitRootLogin yes
  AllowUsers root@thehosttoallow

Затем перезапустите демон

  service ssh restart
Кольцо Ø
источник
Я считаю, что если ОП хотел бы использовать AllowUsers, ему нужно было бы указать всех пользователей, к которым он хочет иметь доступ. Ваш пример позволит только root для аутентификации через ssh.
EEAA
1
Да, это специально. Чтобы разрешить любому пользователю, *@thehosttoallowдействительно впустить любого пользователя.
Кольцо Ø
Также легко переопределяется с помощьюssh -o PreferredAuthentications=password
geoidesic
0

Во-первых, почему вы хотите запретить пользователям использовать ключевую аутентификацию? Это не имеет смысла для меня.

Во-вторых, не разрешайте root-вход через ssh. Только не делай этого - нет веской причины для этого. Это идет вразрез с каждой лучшей практикой, и на то есть веская причина. Если вам нужно предоставить разрешения на чтение / запись определенных файлов, вы сможете сделать это с помощью стандартных разрешений файловой системы linux. Если вам нужен более детальный контроль доступа, посмотрите на систему Linux ACL.

EEAA
источник
Что делать, если я отключаю root-логин и ни один из пользователей не имеет доступа к какому-либо основному файлу конфигурации. Тогда я заблокирован, так как не могу войти через root
1
Когда вы отключите root-вход через ssh, root все равно сможет войти через консоль. Кроме того, у вас всегда есть возможность предоставить обычному пользователю права root-esque через sudo. Это не будет работать для sftp, но как откат в случае, если вам нужно что-то исправить, он будет работать нормально и является предпочтительным способом предоставления разрешений.
EEAA
1
@ErikA Разрешение rootот уникального хоста не небезопасно. Там была тенденция в отношении rootдоступа через telnetнесколько лет назад (besore sshбыла распространена), но позволяет с rootпомощью sshк только один хосту не выглядит , что небезопасно.
Кольцо Ø
Конечно, это может быть "безопасно", но я все равно буду утверждать, что это плохая идея. Я говорю это в основном из-за того, что, когда людям дают простой способ получить root-доступ, они будут использовать его, а не более безопасный, более правильный способ получения доступа (sudo).
EEAA
2
Рассматривая вопрос автора, можно предположить, что он хочет выполнять административные задачи через rootпользователя. Разрешение прямого rootдоступа только от одного хоста в этом случае является разумной альтернативой.
Кольцо Ø