У меня есть сервер Debian с публичным и частным IP-адресами в DMZ. Мне нужно подключиться к нему через SSH на нашей частной стороне, а затем заблокировать весь доступ к общедоступному адресу. И /etc/hosts.deny, и sshd_config, похоже, позволяют только одному блокировать входящие IP-адреса. Я действительно хочу отключить SSH-соединения для общедоступного IP-адреса. Я пробовал iptables, но мне тоже не повезло.
Любая помощь приветствуется.
- РЕДАКТИРОВАТЬ Итак, чтобы собрать список моих попыток:
iptables -I INPUT -d $public_ip -p tcp --dport 22 -j REJECT
sshd: ALL except 192.168.2.12 $DHCPaddressrange : deny
вставлен. netstat -tunlp | grep 22
/etc/init.d/ssh и /etc/init.d/network пока перезапущены.
При попытке подключения к серверу использовались внутренние и внешние сетевые подключения. Оба могут получить доступ через публичный адрес.
--РЕДАКТИРОВАТЬ
ОНО ЖИВОЕ! Видимо наша гостевая сеть получила доступ, что не совсем оптимально, но я попытался подключиться через SSH с телефона из нашей гостевой сети и без него. По-видимому, я не смогу добраться до него, если не буду в одной из наших сетей. Однако я вижу некоторые проблемы с брандмауэром.
Спасибо за ответ, ребята.
Вы можете сделать это с помощью iptables -I INPUT -d $public_ip -p tcp --dport 22 -j REJECT
или вы можете привязать sshd для прослушивания только вашего частного IP-адреса с помощью ListenAddress $private_ip
в /etc/ssh/sshd_config
.
Если вы используете 2 интерфейса, вы можете настроить ssh так, чтобы он слушал только один из интерфейсов! В вашем sshd_conf вы найдете строку
ListenAddress 0.0.0.0
который привяжет каждый интерфейс к прослушиванию ssh!
теперь измените его на ip внутреннего устройства, например:
ListenAddress 192.168.0.1
перезапустите ssh, и теперь ssh будет слушать только внутренний интерфейс!
Вы можете сделать это, настроив sshd не прослушивать общедоступный адрес. По умолчанию sshd прослушивает все локальные адреса, и вы можете изменить это с помощью ListenAddress
директива в /etc/ssh/sshd_config
ListenAddress private.ip.add.ress
перезапустите sshd, и все будет в порядке, но проверьте, прежде чем выходить из сеанса, который вы используете для внесения изменений.
Если у вас есть несколько частных адресов, которые вы хотите прослушивать, вы можете указать каждый в отдельной директиве ListenAddress.