일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 복현오거리
- centos
- Apache
- 라즈베리파이2
- 자바스크립트
- 램가스초월
- SKT
- 소비전력
- OpenWrt
- KB증권
- 알리익스프레스
- 윈도우10
- iptime
- PHP-FPM
- 알뜰폰
- 시놀로지
- 티스토리
- 보르비스초월
- php
- 스톤에이지
- ConoHa
- 킹북이초월
- KB국민카드
- proxmox
- mysql
- Rocky
- jQuery
- 리눅스
- 가상서버호스팅
- 아파치
- Today
- Total
맛집 여행 캠핑 일상 생활
특정 DDNS 도메인주소 sshd 접근허용하기 본문
사용할 일이 잘 없겠지만 DDNS를 이용하는 특정도메인만 리눅스 sshd 접근을 허용하는데 사용한다면 유용하게 사용될 수 있는 쉘스크립트이다.
/etc/hosts.deny 파일에
ALL:ALL 라인 위쪽에 sshd:ALL:spawn /usr/local/bin/ddns-check %a & 을 넣어주면 된다.
우선 DDNS 도메인주소로 IP를 먼저 알아내는게 우선이다.
유용한 명령어 nslookup, grep, awk 로 IP를 뽑아낼 수 있다.
# nslookup DDNS도메인주소 | grep "Address: " | awk -F ': ' '{print $2}'
DDNS도메인주소에 자신의 DDNS도메인주소를 넣고 리눅스 명령어를 실행해보자.
올바른 IP를 가져온다면 성공이다.
1. /usr/local/bin/ddns-check 작성
#!/bin/sh
ALLOW_FILE="/etc/hosts.allow"
ALLOW_DOMAINS="
사용자이름.iptime.org
사용자이름.gonetis.com
"
CUR_IP="$1"
for ALLOW_N in $ALLOW_DOMAINS
do
ALL_IP=`nslookup $ALLOW_N | grep "Address: " | awk -F ': ' '{print $2}'`
if [ "$ALL_IP" = "$CUR_IP" ] ; then
if [ `cat $ALLOW_FILE | grep "$ALL_IP" | wc -l` = 0 ] ; then
sed -i -e "/#${ALLOW_N}/d" $ALLOW_FILE
echo "sshd:${ALL_IP} #${ALLOW_N}" >> $ALLOW_FILE
fi
break
fi
done
위에 ALLOW_DOMAINS 배열엔 IPTIME과 네티스 공유기에서 제공하는 ddns 도메인만 있는데 다른 dyndns 라던지 다른 ddns 서비스를 이용하고 있다면 거기에 맞는 도메인주소를 나열해주면 된다. 허용할 ddns 도메인주소가 하나라면 하나만 적어주면 된다.
2. 퍼미션 변경
# chmod 711 /usr/local/bin/ddns-check
3. /etc/hosts.deny 파일에 아래 내용 추가
sshd:ALL:spawn /usr/local/bin/ddns-check %a &
ALL:ALL
hosts.allow 에서 접근권한이 없으면 위의 부분이 실행되는 원리이다.
%a 의 의미가 현재접속IP를 의미한다.
ALL:ALL 위쪽에 위치해 있어야 한다.
hosts.allow 에서 접근권한이 있는지 체크하고 없다면 hosts.deny에 추가된 ddns-check.sh 쉘스크립트가 실행된다.
여기서 첫번째 sshd 접근은 무조건 접근실패로 접속이 불가할 것이다. 그 다음 부터는 ddns-check.sh 쉘스크립트에서 IP를 체크해서 ddns 도메인주소와 접근ip가 동일하면 hosts.allow 파일에 접근할 수 있게 변경해주기 때문에 두번째 접속부터는 sshd 접근이 가능하게 된다.
※ 주의사항
항상 접속할수 있는 IP 하나쯤은 hosts.allow 에 넣어주도록 하자.
그래야 위에 과정이 실패를 하더라도 서버에 접근이 가능하니까 말이다.
'LAMP' 카테고리의 다른 글
외부 사이트 이미지 핫링크 차단 (0) | 2016.03.07 |
---|---|
PHP 파일 move 함수 (0) | 2016.03.04 |
구글봇 및 검색봇 차단하여 트래픽 줄이기 (0) | 2016.03.02 |
아파치 이미지파일 로그 안나오게 하기 (0) | 2016.03.02 |
리눅스 반복 예약작업 cron crontab (0) | 2016.03.02 |