Назад | Перейти на главную страницу

Доступ к серверу с ограниченным IP-адресом с динамического IP-адреса

Наши серверы (все CentOS) все ограничены IP, но часто я выхожу из дома и застревает на динамическом IP-адресе. Используя виджет DynDNS, я установил, что этот динамический IP-адрес всегда синхронизируется с именем хоста DynDNS, но как мне сделать это для разрешения IP в hosts.allow. На данный момент я написал сценарий cron, который запускается каждые несколько минут и проверяет IP-адрес, назначенный этому имени хоста, и записывает динамический IP-адрес в hosts.allow, но я не слишком заинтересован в этом в качестве решения. Есть ли более элегантный способ сделать это?

Спасибо.

Приведенный ниже сценарий будет пинговать ваш динамический адрес и захватывать только ip, а затем сравнивать с ip, хранящимся в last_ip.txt, если они разные, ip в hosts.allow будет удален и заменен новым ip, а также ip в last_ip .текст.

Затем вы можете настроить этот код в своем crontab для запуска каждые 5 или 10 минут, или как вам кажется.

Это не так сложно и может решить вашу проблему ...

#!/bin/bash

DYN_IP="www.google.com.br"
CMD=$(ping -c1 $DYN_IP | head -1 | awk -F' ' '{ print $3}' | sed 's/(\|)//g')
FILE="./last_ip.txt"
NEW_IP=$CMD

if [ -e $FILE ]; then
        OLD_IP=$(cat $FILE)
else
        OLD_IP="0"
fi

if [ $OLD_IP != $NEW_IP ]; then
        echo $NEW_IP > last_ip.txt
        sed -i "/^sshd: $OLD_IP/d" /etc/hosts.allow
        echo "sshd: $NEW_IP" >> /etc/hosts.allow
        echo "Allow ip changed to $NEW_IP"
fi

Я понимаю вашу озабоченность по поводу того, что третьи стороны играют с открытым портом SSH. Я решил это по-другому. На моем частном сервере порт SSH открыт для всех, но он контролируется fail2ban, маленьким умным пакетом, доступным для debian (и, вероятно, для большинства других дистрибутивов тоже). Как только кто-то не может войти в систему после трех попыток с одного и того же IP-адреса, этот адрес блокируется брандмауэром на несколько дней.

С тех пор, как я установил это, на моем сервере было тихо и спокойно. И я все еще могу войти в систему (используя свой ключ с USB-накопителя) из любой точки мира.

Если вы единственный, кто входит на этот сервер, вы также можете выполнить простую переадресацию порта в брандмауэре или запустить sshd на другом порту.

Мое текущее решение для этого - веб-стук где я сначала делаю запрос на специальную веб-страницу (необязательно с моим пользователем / проходом), которая открывает шлюзы SSH для IP, с которого я запрашиваю. Вот как я подключаюсь к некоторым своим серверам с телефона. Это сводит к минимуму использование дополнительного программного обеспечения, чтобы я мог сесть за компьютер в кафе и разрешить ему стандартный доступ по ssh за несколько секунд, но не дает злоумышленникам даже возможности играть с моим портом ssh. Недостатком любого детонационного решения является лишняя точка отказа. Моя подстраховка - это несколько жестко закодированных IP-адресов, к которым разрешен доступ, и если что-то пойдет не так со сценариями стука или веб-сервером, который их обрабатывает, мне просто нужно использовать одну из других машин, у которой есть постоянный доступ, чтобы войти и исправить сломанные коробка.

В качестве альтернативы некоторые динамические IP-системы имеют «перехватчики» или «обратные вызовы», которые можно использовать для получения автоматического уведомления об изменении IP-адреса. Это может быть электронная почта или http-запрос, который можно использовать как «стук». В качестве альтернативы вы можете написать сценарий на локальном конце, чтобы всякий раз, когда запускаются ваши сетевые сценарии или изменяется локальный IP-адрес, вы автоматически запускаете какой-либо стук или триггер, который принудительно обновляет динамический список доступа IP.

Я бы предложил стук порта в качестве альтернативы, в качестве альтернативы, можно арендовать учетную запись ssh на стороннем сервере и оттуда SSH.

Я бы подошел к этому с другой стороны. Вместо того, чтобы каждый ваш сервер поддерживал список IP-адресов из белого списка, я бы настроил их все так, чтобы разрешить ssh только с «внутренних» IP-адресов. Затем настройте отдельный хост шлюза / посадочной площадки, к которому вы можете подключиться через VPN. Теперь вы можете перепрыгнуть через этот ящик, чтобы безопасно добраться до остальных серверов.

Это ограничивает вашу поверхность атаки одним ящиком, а не всеми вашими. Кроме того, многие / большинство решений VPN позволяют повысить требования безопасности для подключения, используя сертификаты, двухфакторную аутентификацию и другие вещи вместе с (или вместо) простыми паролями. В целом, это даст вам большую безопасность, большую гибкость и гораздо лучшую ремонтопригодность.

Доступен ряд вариантов VPN (я большой поклонник OpenVPN, я), который вы можете использовать для правильной настройки безопасной точки доступа для ваших устройств. Многие из них относительно просты в настройке, а для такой небольшой настройки они требуют минимальных ресурсов.

ConfigServerFirewall имеет желаемую функциональность. После установки вы можете проверить это сообщение на форуме за хорошее объяснение.