iptables 방화벽 설정 관련…

 요즘 공부하고 있는 iptables 를 이용한 방화벽 구축 관련하여…

 한가지 문제가 되는 부분이 있었다.

 그것은 바로 방화벽을 설정하게 되면 이상하게 네임서버 질의가 안되는 것.

 문제의 발단은 다음의 스크립트를 이용하여 방화벽을 설정하는 것 부터 시작이었다.

#!/bin/sh

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe

### 기존 규칙을 제거하고 체인 정책을 DROP으로 설정한다.
echo “[+] Flushing existing iptables rules…”
$IPTABLES -F
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
### load connection-tracking modules
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp

###### INPUT 체인 ######
echo “[+] Setting up INPUT chain…”
### 상태 추적 규칙
$IPTABLES -A INPUT -m state –state INVALID -j LOG –log-prefix “DROP INVALID ” –log-ip-options –log-tcp-options
$IPTABLES -A INPUT -m state –state INVALID -j DROP
$IPTABLES -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

### ACCEPT 규칙
#ftp
$IPTABLES -A INPUT -i eth0 -p tcp –dport 20 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p tcp –dport 21 –syn -m state –state NEW -j ACCEPT
#ssh
$IPTABLES -A INPUT -i eth0 -p tcp –dport 22 –syn -m state –state NEW -j ACCEPT
#whois
$IPTABLES -A INPUT -i eth0 -p tcp –dport 43 –syn -m state –state NEW -j ACCEPT
#domain
$IPTABLES -A INPUT -i eth0 -p tcp –dport 53 –syn -m state –state NEW -j ACCEPT
#http
$IPTABLES -A INPUT -i eth0 -p tcp –dport 80 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p udp –dport 80 -m state –state NEW -j ACCEPT
#https
$IPTABLES -A INPUT -i eth0 -p tcp –dport 443 –syn -m state –state NEW -j ACCEPT
#rsync
$IPTABLES -A INPUT -i eth0 -p tcp –dport 873 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A INPUT -i eth0 -p udp –dport 873 -m state –state NEW -j ACCEPT
$IPTABLES -A INPUT -p icmp –icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -i ! lo -j LOG –log-prefix “DROP ” –log-ip-options –log-tcp-options

###### OUTPUT 체인 ######
echo “[+] Setting up OUTPUT chain…”

### 상태 추적 규칙
$IPTABLES -A OUTPUT -m state –state INVALID -j LOG –log-prefix “DROP INVALID ” –log-ip-options –log-tcp-options
$IPTABLES -A OUTPUT -m state –state INVALID -j DROP
$IPTABLES -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

### 외부로 나가는 연결을 허용하기 위한 ACCEPT 규칙
#ftp
$IPTABLES -A OUTPUT -p tcp –dport 20 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp –dport 21 –syn -m state –state NEW -j ACCEPT
#ssh
$IPTABLES -A OUTPUT -p tcp –dport 22 –syn -m state –state NEW -j ACCEPT
#whois
$IPTABLES -A OUTPUT -p tcp –dport 43 –syn -m state –state NEW -j ACCEPT
#domain
$IPTABLES -A OUTPUT -p tcp –dport 53 –syn -m state –state NEW -j ACCEPT
#http
$IPTABLES -A OUTPUT -p tcp –dport 80 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp –dport 80 -m state –state NEW -j ACCEPT
#https
$IPTABLES -A OUTPUT -p tcp –dport 443 –syn -m state –state NEW -j ACCEPT
#rsync
$IPTABLES -A OUTPUT -p tcp –dport 873 –syn -m state –state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp –dport 873 -m state –state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT

### 기본 OUTPUT LOG 규칙
$IPTABLES -A OUTPUT -o ! lo -j LOG –log-prefix “DROP ” –log-ip-options –log-tcp-options

 보기에는 별 문제가 없는 방화벽 스크립트이다.

 기본적으로 모든 입력에 대해 DROP 정책을 고수하고 서비스하는 특정 포트들에 대해 접근을 허가하는 내용인데… 특이점으로 ftp에 대한 포트와 rsync를 위한 포트를 개방한 부분에 있다.

 이는 동아리에서 서비스 중인 미러링 사이트 유지를 위해 필요한 부분이었기 때문에 특별히 신경썼던 부분이었다.

 해당 스크립트를 적용시킨 후, ssh 접속 및 ftp, http 접속이 정상적으로 이루어지는 것을 확인하여 아무런 문제가 없는 줄 알았다.

 하지만… 미러링을 위한 rsync 스크립트를 돌리자마자 다음의 오류를 발생하며 프로세스가 정지가 되는 것이었다.
 

rsync: getaddrinfo: releases.ubuntu.com 873: Temporary failure in name resolution
rsync error: error in socket IO (code 10) at clientserver.c(122) [receiver=3.0.3]

 에러 발생 메시지가 늘 그렇듯이 처음보는 에러메시지였다. 하지만 에러 메시지 중 익숙한 부분이 눈에 들어왔다. 바로 “getaddrinfo” 라는 부분과 “socket IO” 부분.

 그렇다. 네트워크 프로그래밍에서 주소를 받아오는 함수부분인 것이다. 다른곳도 아니고 주소를 알아내는 모듈이 실패를 했다는 메시지가 나오니 그래서..설마하는 마음으로 dig 명령어를 이용한 IP 질의를 해보았다.

 역시나였다. dig, nslookup 등등의 명령어가 먹히지 않는다. 이상했다.

 resolve 질의를 위한 부분 역시 스크립트에서는 명백히 명시를 해놓았기 때문이다. 무엇이 문제일까. 구글링 및 kldp를 비롯하여 여러곳을 뒤져보아도 속시원한 답을 찾을 수 없었다.

 단 하나, 똑같은 상황이 있었는데 네임서버 설정이 잘못되있는 경우 그런 에러가 발생한다는 것만 알 수 있었다.

 하지만 이미 네임서버는 설정이 정상적으로 되어 있는 상황이었고, 같은 네임서버를 설정해놓은 다른 보통의 서버(위의 스크립트를 적용시키지 않은)들은 아무 문제없이 질의가 이루어지는 상황이었다.

 한참….을 헤멘후에야 그 해답을 알 수 있었는데..

 그 정답은 바로 다음의 라인이었다.

$IPTABLES -A INPUT -p udp –dport 53 -m state –state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp –dport 53 -m state –state NEW -j ACCEPT

 차이를 알겠는가? 바로 프로토콜 설정부분이었다. 기존의 스크립트는 -p tcp 만을 옵션으로 하였기 때문에 udp의 경우는 방화벽에 차단당했던 것이었다.

 늘 그렇다. 알고나면 별것아닌것. 에효… 진즉에 service 파일좀 살펴볼껄… 별것아닌 에러에 이렇게 곤란을 느낀것이 부끄럽기만 하다.

두번째 미러링 사이트…

 여기에는 포스팅을 하지 않았지만 동아리 FTP 사이트를 꾸며 우분투 리눅스 미러링 서비스를 시작했었다.

 그리고 이번에는 두번째 서비스로 아파치 미러링을 시작하게 되었다… 얏호! 🙂

필리핀 자전거 여행기 후기…

이번
여행을 하면서 제일 힘들었던 점은 이별이었다
.
자전거를
끌고 다니느라 겪은 몸고생은 아무것도 아니었다
.
정이
들었다가도 이내 바로 이별하고
,

이별하는 것이 나에게는 가장 큰 아쉬움이며 큰
슬픔이었다
.
만나서
반가운 사람들도 이내 헤어져야 함을 느낄때 그것만큼
슬픈일이 있을까
..

  누군가를
만나고 헤어지고를 반복하는 것이 바로 여행이다
.
경치나
문화도 중요하지만 제일 중요한 것은 바로 사람이다
.
이번
보름간의 필리핀 여행 기행문 중에서 이렇다 할 관광명소
같은 것은 그다지 많이 나오지 않는다
.
보라카이도
목적지가 아니라 가다가 들린 셈이다
.
아니,
사실은
보라카이는 그냥 지나쳐 가려고 했었다
.
결국
발은 디디게 됐지만 겨우 하루만에 도망치듯 빠져
나왔다
.
그곳에는
우리가 평소에 만나왔던 필리피노들이 없었다
.
그래서
나는 그곳을 이번 여행의 최악으로 꼽는다
.

  언제고
다시금 필리핀으로 여행을 갈 것이다
.
그때쯤이면
지금보다 조금은 성숙해 있을 것이다
.
한층
성숙했던 모습으로 내가 만났던 이들을 다시한번 만나서
변화된 나의 모습을 보여주고 싶다
.

  그때
당신과의 인연이 나를 이렇게 변화시켰노라고 말하고
싶다
.

 그리고… 내 주위에 있는 여러분들에게도 이런 여행 하나쯤은 추천해 주고 싶다.


어때요, 부럽지 않았나요?

필리핀 자전거 여행기 1/21 (수) (여행 십육일째)

 필리핀에서의
마지막 날이다.
아침일찍
일어나 공항으로 갈 준비를 한다.
자전거,
옷가지,
등등등..준비는
완벽하다.
호텔을
나와서 택시를 탄다.

 택시기사가
공항까지 350페소를
부른다.
조용히
미터기로 가자고 한다.
이번엔
300페소를
부른다.
다시
미터기로 가자고 한다.
미터기로
공항에 도착하니 150
페소가
나온다.

택시에 자전거 싣기.JPG

 필리핀 여행의 철칙1. 택시를 탈때는 반드시 미터기로 갈것.

공항으로 가능다리.JPG

 공항으로 가는 다리

  공항에서
늦은 아침을 먹는데 가격이 장난이 아니다.
점점
더 한국의 물가가 느껴지는 것 같다. 맛은 꽝이었다.

공항 식당.JPG

 필리핀 세부 공항 식당… 절대 비추.

소림사!.JPG

 소림사 스님.ㅎㅎㅎ

 가방
무게를 재는 곳에서 문제가 발생했다.
하나하나
무게를 재는 것.
한국에서는
대충 하나만 재고 넘어갔었는데 하나하나 재는 것이
아무래도 오버차지가 될 것 같다.
아니나
다를까..나의
자전거 가방이 무게가 30Kg
넘었다.
패널티를
내겠구나 하는 생각에 약간 아찔했는데 다행이다.
그냥
넘어가 주었다.

제발...JPG

 제발..!

멋진하늘.JPG

 공항에서… 화창한 필리핀 날씨.. 가기전에 이런 아름다운 모습을 볼 수 있어 다행이었다.

또오세요 필리핀에.JPG

 또오세요! 필리핀에!

 한국으로
돌아오는 비행기안에서 필리핀을 하늘에서 바라보는데
정말 아름다웠다.
그동안
우리가 자전거를 타고 다닌 도로와 섬들이 너무나 작게
보인다.
푸른
에메랄드 빛 바다 도로로 다닐때는 보지 못했던 것들인데
하늘에서 보니 한눈에 들어온다.
약간
손해보는 느낌이다.

바다에 몸을 한번도 담구지 못했던 것.
우기
끝 부분에 필리핀에 와서 손해보는게 많다.
다음에
올때는 날짜를 적절하게 맞춰서 와야 겠다.

이런구름 본적 있나요.JPG

 이런 구름 본적 있나요?

비행기안.JPG

 비행기 안에서..ㅋㅋㅋ

푸른바다.JPG

 필리핀 푸른바다.

오른쪽 맥주에 주목.JPG

 귀국하는 비행기에서 먹은 기내식. 오른쪽 상단 맥주에 주목! 🙂

게임기능 됩니다.JPG

 게임 기능 됩니다.

게임.JPG

 이런게임

홍콩 면세점.JPG

 여기는 홍콩 면세점

 어느덧
한국에 도착하니 익숙한 말소리와 글씨들이 보인다.
사실
비행기안에서부터 한글과 한국말은 들려왔다.
하지만
한국땅에서 들으니 느낌이 남다르다.

한국으로...JPG

 이제는 한국으로….

 공항에서
집으로 향하는 리무진 버스안에서 지난 보름간의 일들을
떠올려본다.
무슨
일이 있었는지 무슨 말을 했었는지 하나하나 기억해본다.
평생
가지고 갈 좋은 추억들이다.
잊고
싶지않다.

드디어 한국.JPG

 여기는 한국!

  언제쯤
다시 해외 여행을 떠날 수 있을까.
다시금
떠날 수 있는 그날을 생각하며 이 여행의 마침표를
찍는다.

안녕.JPG

 안녕..!