Наши серверы (все 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 имеет желаемую функциональность. После установки вы можете проверить это сообщение на форуме за хорошее объяснение.