iptables 체인 컨트롤..!!
현재 CentOS 5.5를 이용해서 방화벽을 구축했구요. 거기에 VPN서버도 구축할 생각으로 pptpd를 설치했습니다.
원래 VPN 장비에는 사용자별 권한이 존재하기 때문에 흉내라도 낼려구 iptables를 이용해서 머리 좀 굴려봤는데요, 아래와 같습니다.
----------------------------------------------------------------------------------------------------------------------
*INPUT chain (ACCEPT)
-A INPUT -i ppp+ -m iprange --src-range 10.0.0.10-10.0.0.49 -j VPN //ppp로 들어오는 패킷 중 좌측의 IP들은 VPN체인으로 점프
*VPN chain
-A VPN -d 20.0.0.10 -j SECURITY //목적지 IP가 20.0.0.10인 패킷은 SECURITY로 점프
-A VPN -d 20.0.0.4 -j SERVER //목적지 IP가 20.0.0.4인 패킷은 SERVER로 점프
-A VPN -j RETURN //그 외에는 모두 RETURN
*SECURITY chain
-A SECURITY -s 10.0.0.10 -j RETURN //출발지 IP가 10.0.0.10이면 RETURN
-A SECURITY -j DROP //그 외에는 모두 DROP
*SERVER chain
-A SERVER -s 10.0.0.20 -j RETURN //출발지 IP가 10.0.0.20이면 RETURN
-A SERVER -j DROP //그 외에는 모두 DROP
*보안관리자 : 10.0.0.10
*서버관리자 : 10.0.0.20
*IDS : 20.0.0.10
*FTP Server : 20.0.0.4
----------------------------------------------------------------------------------------------------------------------
기본 아이디어는 각 계정마다 1:1 매치되는 IP를 부여할 수 있는 pptpd의 특성 상, VPN에 접속하는 출발지 IP별로 체인을 나누어 그룹 및 각 파트별 장비에 대한 명령어 추가/삭제가 용이하도록 하겠다는 것인데요. 제대로 되질 않네요;; 예상대로 라면 보안관리자가 FTP Server에 접속하려면 DROP이 되어야 하는데.. 아주 잘~ 접속되네요;; iptables 문법적으로 문제가 있는 것일까요, 아니면 원래 이런 아이디어가 실현 불가능한 걸까요? 어떻게 하면 되는지 꼭 좀 알고 싶습니다 ㅠㅠ 참고로 FORWARD/OUTPUT 모두 ACCEPT이며 NAT체인에는 MASQUERADE가 설정되어 있습니다.
iptables -v 명령으로
iptables -v 명령으로 어느 체인을 타는지 확인해보시기 바랍니다.
ppp인터페이스가 ppp 하나만 생기는게 맞나요?
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
iptables -v 명령은 그냥
iptables -v 명령은 그냥 치면 되는 건가요? 그냥 치니깐 안 먹히는데.. 어떻게 입력하면 될까요?
글구 ppp 인터페이스는 VPN 원격접속자 수만큼 생기기 때문에 ppp+로 정해줬습니다.
안되는 영어로 매뉴얼을 보니까 뒤에 +를 붙이면 와일드카드 효과가 난다고 되어 있더라구요.
악!! ㅋㅋ
악!! ㅋㅋ 해결했습니다. INPUT에서가 아니라 FORWARD 체인에서 점프하게 하니깐 확실하게 되네요..;;
정확한 이유는 모르겠지만.. VPN 서버에 접속해서 내부 인프라의 다른 장비로 접속하는 것 자체가 포워딩과 관련이 있는걸까하고 생각되네요.
VPN 서버에 이미 접속된 상태라면 INPUT 단계는 지난 거라고 말이죠.
어쨌든 많은 도움이 됐습니다~
댓글 달기