Authentication Gateway HOWTOZorn Nathan金子 硏史
1. 서론무선 네트워크나 공공장소에서의 네트워크 접속의 경우, 비인가 된 사용자가 매우 쉽게 네트워크에 접속할 수 있으며, 비인가 사용자는 신호를 관찰하고 그 신호로부터 접속정보를 가로 챌 수 있다. 비인가 사용자들은 공용터미널에 자신들의 머신을 연결하고 네트워크 접속을 획득할 수 있다. 보안은 WEP과 같은 곳에 적용이 되었지만, AirSnort 같은 툴로 뚫릴 수 있다. 이러한 문제를 해결하는 방법 중 한가지는 무선 보안장치에 의존하지 말고, 무선 네트워크 또는 공용 접속장소의 선단에 인증게이트웨이를 설치하여 사용자들이 네트워크를 사용하기 전에 강제적으로 인증을 받도록 하는 것이다. 본 HOWTO에서는 리눅스를 이용하여 이와 같은 인증게이트웨이를 설정하는 방법을 기술하고자 한다. 1.1. 저작권 정보본 문서의 저작권은 Nathan Zorn에게 있다. Free Software Fecundation에서 언급하는 GNU Free Documentation License 버전 1.1 혹은 그 이상의 조건하에서 복사, 재배포 또는 수정을 허락한다. 라이선스는 http://www.gnu.org/copyleft/fdl.html에서 구할 수 있다. 질문이 있는 분들은
1.2. 책임 한계필자는 이 문서의 내용에 대한 그 어떠한 책임도 받아들일 수 없습니다. 본 문서의 개념, 예제 그리고 기타 내용에 대한 사용은 모두 여러분의 책임입니다. 이 것이 본 문서의 가장 최신판이라도, 오류나 틀린 점이 있을 것이고, 그로 인해 여러분의 시스템이 손상을 받을 수도 있습니다. 앞서의 경고를 명심하고 신중하게 진행하기를 바라며, 그다지 바람직하지 않지만, 필자는 그 결과에 대한 책임을 지지 않습니다. 특별한 명시가 없는 한, 모든 저작권은 각각의 소유자에게 귀속된다. 본 문서에서 사용한 용어는 어떠한 트레이드마크나 서비스마크의 유효성에 영향을 주지 않는다. 특정 제품 또는 상표에 대한 언급은 하지 않았습니다. 일상주기로 전면적인 설치와 백업하기 전에 여러분 시스템의 백업을 받아 놓기를 강력히 권유합니다. 1.3. 신 버전이 문서는 초기버전이다. 최신 문서는 http://www.itlab.musc.edu/~nathan/authentication_gateway/에 있다. 이와 관련된 HOWTO는 Linux Documentation Project 홈페이지에도 있다. 1.5. Feedback 이 문서에 있어서 가장 환영받는 부분이 바로 피드백이다.
여러분들의 도움이 없이는 이 문서는 존재하지도 못 할 것이다.
여러분들의 추가내용, 의견 또는 비평을 다음 email로 보내주기 바란다. :
2. 필요 사항이 절에서는 인증게이트웨이에 필요한 것을 설명한다. 2.2. PAM for Netfilter rules.Nathan Zorn이 작성한 PAM(pluggable authentication module)은 http://www.itlab.musc.edu/~nathan/pam_iptables에서 구할 수 있다. 2.3. DHCP 서버인증게이트웨이는 공용 네트워크에 대해 DHCP(dynamic host configuration protocol) 서버로 동작을 하게 되며, 필자는 ISC DHCP Server를 사용한다. 2.4. 인증 메커니즘게이트웨이는 어떠한 방법의 PAM 인증이라도 사용할 수 있다. South Carolina 의과대학교의 인증 메커니즘은 LDAP이다. LDAP를 인증방식으로 사용하였기 때문에, 게이트웨이 박스의 pam 모듈은 LDAP를 사용하도록 설정하였다. 보다 자세한 정보는 http://www.padl.com/pam_ldap.html를 참고하기 바란다. PAM은 다양한 인증방법을 사용할 수 있도록 한다. 사용하고자 하는 PAM 모듈에 대한 문서를 참고하기 바라며, 다른 방법에 대한 정보를 얻고자 하는 분들은 pam modules를 참고하기 바란다. 2.5. DNS 서버공용 네트워크에 있어서 게이트웨이 박스는 DNS 서버로도 동작한다. 필자는 Bind를 설치했으며, 이를 캐슁 네임서버로 설정하였다. 레드햇 패키지에 달려오는 caching-nameserver RPM 패키지를 사용하였다. 3. 게이트웨이 서비스 설정이 절은 인증게이트웨이의 각 단계별 설정방법을 기술한다. 사용된 예는 서브넷 10.0.1.0의 비공인 ip를 대상으로 하였으며, eth0는 내부네트워크와 연결된 NIC이고, 공용 네트워크와 연결된 장치는 eth1이다. eth1에 대하여 사용된 IP 주소는 10.0.1.1이지만, 여러분들의 환경에 따라 적절히 설정하기 바란다. 게이트웨이 박스로 레드햇 7.1이 사용했기 때문에, 예제의 상당 부분은 레드햇을 중심으로 설명하였다. 3.1. Netfilter 설치netfilter를 설치하기 위해서는 커널이 넷필터를 지원하도록 반드시 새로 컴파일해야한다. 커널을 구성하고 새로 컴파일하는 방법은 Kernel-HOWTO를 참고하기 바란다. 다음은 필자의 커널 구성중 일부를 보인 것이다.
iptables를 설치해야하며, 배포반의 패키지로 설치하거나 소스로 설치를 해도 무방하다. 일단 위의 옵션으로 새로운 커널을 컴파일하고 iptables를 설치한 후, 필자는 다음을 방화벽 기본룰로 설정하였다.
서버가 부팅할 때 위의 스크립트가 동작하도록 하려면 init 스크립트에 위의 명령을 포함시켜도 된다. 룰이 추가 되었는지 확인하려면 다음과 같은 명령을 실행시키면 된다:
이러한 룰을 저장하고자 할 경우, 필자는 레드햇의 init 스크립트를 사용했다.
룰이 추가되었으면, 다음과 같은 명령을 수행하여 IP forwarding을 가능하게 한다.
머신이 리부팅할 때 ip forwarding이 가능하도록 하려면, /etc/sysctl.conf에 다음 라인을 추가하면 된다.
이제 게이트웨이 박스는 NAT를 할 수 있지만, 공용 네트워크 내부와 게이트웨이로 향하여 들어오는 forwarding 패킷을 제외한 모든 forwarding 패킷을 버릴 것이다(DROP). 3.2. PAM iptables Module방화벽 룰을 추가하는 PAM 세션 모듈로, 인증된 클라이언트에 대하여 forwarding을 허용하기 위해 필요하다. 이를 설정하고자 하는 경우는 단순히 소스를 구하여 다음 명령을 이용하여 컴파일하면 된다.
이제 pam_iptables.so과 pam_iptables.o이라고 하는 바이너리 파일이 생겼을 것이다. pam_iptables.so을 /lib/security/pam_iptables.so으로 복사하기 바란다.
게이트웨이에 대하여 인증 클라이언트로 선택된 것은 ssh이고 따라서 필자는 다음 라인을 /etc/pam.d/sshd에 추가하였다.
이제는, 사용자가 ssh를 이용하여 로그인할 경우, 방화벽 룰이 추가될 것이다. pam_iptables에 대한 기본 인터페이스는 eth0이지만, 인터페이스 파라미터를 추가하여 기본설정값을 변경할 수 있다.
이 경우는 외부 네트워크와 연결된 인터페이스 이름이 eth0가 아닌 경우에만 필요하다. pam_iptables 모듈이 잘 동작하고 있는 지 확인하려면 다음과 같은 단계를 수행하면 된다.
3.3. DHCP Server 설정필자는 다음과 같은 dhcpd.conf 파일을 이용하여 DHCP를 설정하였다.
서버는 공용 네트워크와 연결된 eth1을 이용하여 동작하였다.
3.4. 인증방법 설정앞 절에서도 설명하였지만, 필자는 인증으로 LDAP를 사용하도록 게이트웨이를 설정하였다. 하지만, 여러분들은 PAM이 허용하는 어떠한 인증방법을 사용해도 무방하다. 더 많은 정보를 얻으려면 2.4절를 보기 바란다. PAM LDAP으로 인증을 구현하기 위하여, 필자는 OpenLDAP을 설치하고 /etc/ldap.conf에 다음과 같은 내용으로 구성하였다.
다음에 보이는 파일은 LDAP 인증을 하도록 PAM을 구성하기 위해 사용하였으며, 이 파일들은 레드햇의 configuration 유틸리티로 생성된 것이다.
3.5. DNS 설정레드햇 7.1에 포함된 BIND를 설치했고, caching-nameserver RPM을 같이 설치했다. DHCP 서버는 공용 네트워크상의 머쉰들이 게이트웨이 박스를 네임서버로 사용하도록 알리는 역할을 한다. 4. 인증게이트웨이 사용인증게이트웨이를 사용하기 위해서는, 여러분들의 클라이언트 머쉰이 DHCP를 사용하도록 설정해야한다. 각각의 머쉰에 ssh 클라이언트를 설치하고 게이트웨이로 ssh 접속을 한다. 일단 로그인 되면, 내부 네트워크에 접근할 수 있게 된다. 다음 예는 유닉스 기반의 클라이언트에 대한 세션이다.
여러분들이 로그인해 있는 한, 접근권한은 계속 유지될 것이다. 만일 로그아웃하면, 접근 권한을 잃게 된다. 5. 결론
7. 질문과 답변필자 생각에 다른 사람들이 궁금해 할 만한 가장 평범한 질문을 모아 놓은 것에 불과하다. 필자에게 더 많은 피드백을 주시면, 이 절을 끝내주는 FAQ로 만들어 보겠습니다. |
When the wind is great, bow before it; when the wind is heavy, yield to it. |