Разрешить доступ по ssh через единственный порт Ethernet

Я тот парень, который задает сложные вопросы и не видит простой ответ.

Чтобы быстро объяснить, у меня есть группа серверов (на Debian 9) с 2 физическими сетевыми интерфейсами, Поскольку я хочу заблокировать все, я решаю отказать в доступе по ssh к серверу из внешнего интерфейса, и по «другой» причине не могу просто заблокировать порт 22. Сложность состоит в том, что я не могу просто поставить IP-адрес внутренней сети сервера в конфигурации sshd (ListenAddress), потому что IP-адреса специально являются динамическими.

Я не нашел ничего в Интернете, чтобы просто сказать ssh «использовать только этот интерфейс», так что прямо сейчас я Я сделал грязное исправление при запуске systemd службы sshd, которое выглядело так:

[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=AdmNetIp=$(echo `ifconfig eth1 2>/dev/null|awk '/inet / {print $2}'`); sed -i "s/\(^#\)\{0,1\}ListenAddress .*/ListenAddress $AdmNetIp/" /etc/ssh/sshd_config
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd.service

Важной частью является ExecStartPre . он в основном заменяет ip в конфигурации sshd на фактический ip интерфейса eth1 перед запуском sshd. Мне это действительно не нравится, и я хотел бы знать, есть ли более «чистый» способ.

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

Спасибо за чтение!

0
задан 8 July 2017 в 22:57
2 ответа

Почему бы просто не использовать -oListenAddress = при вызове sshd ?

Может использоваться для указания параметров в формате, используемом в файле конфигурации. Это полезно для указания параметров, для которых нет отдельного флага командной строки.Для получения полной информации о параметрах и их значениях см. sshd_config (5)

2
ответ дан 4 December 2019 в 13:31

Я согласен, что вам, вероятно, следует просто привязать к адресам, которые вы хотите слушать. Но в случае, если это не решение, вы можете попробовать iptables:

iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Я не уверен на 100% в синтаксисе, так как обычно не использую исходные iptables, но я уверен, что кто-то укажет на мои ошибки .

0
ответ дан 4 December 2019 в 13:31

Теги

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