Блокировать доступ по SSH извне LAN

2

У меня есть серверный компьютер с Ubuntu, на котором размещены репозитории Redmine и git в DMZ. Единственные пользователи, которые имеют доступ по SSH, являются администраторами. Пользователи извне должны иметь доступ к Git и веб-интерфейсу Redmine, но я бы хотел, чтобы доступ по SSH был ограничен подключениями изнутри сети (у нас настроена VPN, поэтому даже снаружи я мог бы подключиться по SSH сервер через него).

Как я могу запретить доступ SSH извне локальной сети, все еще разрешая доступ Git?

Заранее большое спасибо!

р

RH6
источник
Просто побочный вопрос, почему это в DMZ? Почему бы просто не переадресовать порты, используемые сервером, и заблокировать остальные?
IQAndreas
Это обстановка, которую они выбрали для школы, где я работаю. Все внутренние серверы делятся на те, которые видны снаружи (и поэтому помещаются в DMZ), и те, которые являются «только внутренними».
RH6

Ответы:

3

OpenSSH (который я предполагаю, что вы используете) имеет AllowUsers вариант :

AllowUsers - За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами. Если указано, вход в систему разрешен только для имен пользователей, которые соответствуют одному из шаблонов. Допустимы только имена пользователей; числовой идентификатор пользователя не распознается. По умолчанию вход разрешен для всех пользователей. Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая вход в систему определенным пользователям с определенных хостов. Директивы allow / deny обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups, и наконец AllowGroups,

Редактировать файл /etc/ssh/sshd_config файл, и добавьте это в конец:

AllowUsers git adam@192.168.0.* bob@192.168.0.* cliff@192.168.0.* david@192.168.0.*

Если это не сработает (и этот способ может быть чище) Вы можете использовать Match вариант вместе с AllowUsers:

# This is the default setting (only allow GIT access)
AllowUsers git 

# This is the setting that is ONLY available if you are SSHing from the LAN (allow the listed users)
Match Address 192.168.0.*
    AllowUsers git adam bob cliff dave
IQAndreas
источник
Это теоретически должно быть возможно, хотя я не могу проверить это на текущей машине. Попробуйте этот код, и дайте мне знать, если у вас есть какие-либо проблемы.
IQAndreas
Фантастика, это именно то, что я искал (и не мог найти гугл), я сейчас попробую, большое спасибо !!!
RH6
Работает как шарм, спасибо !!!!
RH6
@ RH6 Я добавил второй вариант, который немного легче читать и изменять. Вы можете попробовать и посмотреть, работает ли это так же хорошо.
IQAndreas
@ RH6 Действительно, мой непроверенный код действительно работал? Вы тестировали блокировку и принятие? И не забудьте перезапустить сервер ( sudo service ssh restart ) после внесения изменений? Если так, замечательно! :)
IQAndreas
1

Вы можете использовать свои системы iptables. Эти три строки сделали бы волшебство

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

может быть, вам нужно настроить параметры, такие как IP-адреса Lan.

если ваши пользователи vpn перенаправлены, например, на 192.169.8.0/24, вы должны настроить это и добавить также

# iptables -A INPUT -p tcp --dport 22 -s 192.168.8.0/24 -j ACCEPT

перед добавлением строки удаления, поскольку, если вы этого не сделаете, принимаются только пакеты на порту 22, если владелец имеет адрес 192.168.0.0/24 или адрес localhost.

Schwertspize
источник
Спасибо за Ваш ответ. Это было мое первое предположение, но разве это не убило бы все обращения к git - которые оказались на одном и том же порту?
RH6
да, но вы не можете сказать, является ли это git over ssh-доступом или ssh-доступом, потому что нет никакой разницы между стандартным ssh-доступом и git-доступом, потому что это стандартная ssh-передача, но обычный и специальный git-контент
Schwertspize
Правда, но в моей настройке пользователь git не имеет пароля (как объяснено в настройке redmine-git-hosting) и имеет git-shell позади, поэтому злоумышленники не могут пройти мимо этого (извините, я забыл упомянуть об этом в описание!)
RH6