특정 IP 주소에 대한 SSH 액세스를 원격으로 허용 목록에 추가

특정 IP 주소에 대한 SSH 액세스를 원격으로 허용 목록에 추가

방금 SSH 액세스를 화이트리스트에 등록할 방법이 없는 클라우드 제공업체에 서버를 임대했습니다. SSH를 통해 내 서버에 액세스하고 다른 모든 사람을 블랙리스트에 추가하기 위해 내 IP 주소를 원격으로 화이트리스트에 추가하는 방법을 찾으려고 노력 중입니다. IP 테이블을 사용하려고 생각했지만 IP 주소가 동적이기 때문에 결코 작동하지 않습니다. AWS 보안 그룹과 유사합니다. IP 변경/잠금 시 원격으로 iptables를 관리할 수 있는 서비스나 효율적인 방법을 누군가가 알고 있다면 비싸지 않거나 더 좋지 않은 한 유료 서비스를 사용할 의향이 있습니다.

답변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

그런 다음 주기적으로(예 :) 동적 IP에서 작업을 수행하고 변경 사항이 감지되면 체인을 플러시/다시 쓰는 cron스크립트를 실행합니다 .nslookupMYIP

#!/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

관련 정보