Как ограничить исходящий трафик ssh только определенными хостами без iptables

Один из наших ssh-серверов действует как jumphost. Предполагается, что пользователи переходят только на определенные целевые хосты. Это можно сделать с помощью iptables , но на данный момент это не желаемое решение.

Я проверил man ssh_config , чтобы узнать, можно ли настроить этот сценарий в общесистемном ssh_config , но не нашел подсказок.

Есть какие-нибудь идеи помимо iptables для достижения этой цели?

1
задан 11 September 2017 в 11:14
6 ответов

Вы можете использовать что-то вроде этого

#! /bin/sh

MSG='********************************
1 = host1
2 = anotherhost
3 = host3

0 = exit
********************************'

host=none

while test none = "$host"
do
  echo "$MSG"
  echo -n 'your choice: '
  read choice
  case "$choice" in
  1) host=host1.domain.com;;
  2) host=anotherhost.xy.de;;
  3) host=just.go.here;;
  0) exit;;
  esac
done

ssh $host

в качестве оболочки входа для ваших пользователей ssh ​​на jumphost. Если вы сохраните его как / usr / bin / ssh-choice, не забудьте добавить / usr / bin / ssh-choice в / etc / shells.

TomTomTom

1
ответ дан 3 December 2019 в 17:34

Удалите все, кроме jumphost, из таблицы маршрутизации хоста или установите брандмауэр, который предотвращает соединения где-нибудь, кроме самого хоста.

0
ответ дан 3 December 2019 в 17:34

Вы можете hosts.allow и / или hosts .deny на целевых машинах.

0
ответ дан 3 December 2019 в 17:34

Добавьте действительный маршрут к вашим целям и более общий маршрут к нулю. Тогда пользователям будут доступны только определенные маршруты к вашим целям. Проблема в том, что это доступно для всех пользователей

1
ответ дан 3 December 2019 в 17:34

Я не уверен в настройке, но, возможно, отключение входа в оболочку на хосте перехода и разрешение перенаправления портов на определенные хосты только для определенных пользователей, а затем использование опции -J (ProxyJump) openssh может быть решением здесь? Здесь может помочь директива Match файла sshd_config.

1
ответ дан 3 December 2019 в 17:34

Ответ на предыдущий комментарий:

Если вам нужен доступ к оболочке, вам, вероятно, понадобится неизменный и пустой .ssh / config в домашних каталогах пользователей, все разрешенные хосты, перечисленные в / etc / ssh / ssh_config и перехватить всю директиву Host, которая перенаправляет на всегда терпящую неудачу ProxyCommand (которая также может выводить коучинговое сообщение на stderr, чтобы пользователь мог его видеть).

Что-то вроде строк:

Host host1 host1.example.com
    <whatever directives may be needed here if any>

Host host2 host2.example.net
    <whatever directives may be needed here if any>

Host *
    ProxyCommand /bin/false
1
ответ дан 3 December 2019 в 17:34

Теги

Похожие вопросы