Удаленно добавьте в белый список доступ по SSH для определенного IP-адреса

Удаленно добавьте в белый список доступ по SSH для определенного IP-адреса

Я только что арендовал сервер у облачного провайдера, у которого нет возможности внести в белый список доступ по SSH. Я пытаюсь найти способ удаленно внести в белый список свой IP-адрес, чтобы иметь доступ к своему серверу через SSH и в черный список всех остальных. Я думал об использовании таблиц IP-адресов, но это никогда не сработает, так как мой IP-адрес динамический. Подобно группам безопасности AWS. Я готов использовать платные услуги, если это не дорого или, что еще лучше, если кто-то знает услугу или эффективный способ, с помощью которого я могу удаленно управлять iptables в случае изменения/блокировки IP-адреса.

решение1

Использовать скрипт для обновления iptables и службы DDNS довольно просто.

Поместите действие IP в отдельную цепочку:

-A MYIP -s 1.2.3.4/32 -j ACCEPT
-A MYIP -j DROP

и затем запустите эту цепочку на вашем порту SSH, например

-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j MYIP

Затем периодически (например cron) запускайте скрипт, который выполняет операцию nslookupна динамическом IP-адресе и очищает/перезаписывает MYIPцепочку, если обнаружено изменение.

#!/bin/bash

IPSAVE=/etc/sysconfig/iptables

update_iptables() {
  MN=$1
  CHAIN=$2

  IP=`nslookup ${MN} | tail --lines=-3 | grep Address | awk '{print $2}'`
  if [ `echo ${IP} | wc -m` -gt 0 ]
  then
    C=`grep -c "\-A ${CHAIN} \-j " ${IPSAVE}`
    D=`grep "\-A ${CHAIN} \-s " ${IPSAVE} | grep -c "${IP}"`
    if [ ${C} -gt 0 ] && [ ${D} -eq 0 ]
    then
      /sbin/iptables -F ${CHAIN}
      /sbin/iptables -A ${CHAIN} -s ${IP}/32 -j ACCEPT
      /sbin/iptables -A ${CHAIN} -j DROP
    fi
  fi
}

update_iptables my.dynamic.hostname.com MYIP

Связанный контент