금융권이나 망분리가 되어있는 회사에서 내부 업무망, 즉, 인터넷이 안 되는 폐쇄망에서 불가피하게 인터넷 사이트를 접근해야 할 때가 있습니다. 저는 그중에 폐쇄망에서 macOS의 Xcode 사용 시 Apple 계정 등록을 위해 DNS 설정을 하는 방법에 대해서 공유해보려고 합니다.
저는 리눅스서버와 DNS 프로그램인 Squid 프록시를 이용하여 폐쇄망 내에서도 Apple ID 인증이 가능하도록 구성하려고 했으나, 2주 정도 삽을 푸다가 위의 파일들을 설정하여 폐쇄망에서 macOS의 Xcode 사용 시 Apple 계정 등록 및 로그인을 위한 DNS 설정을 성공 했습니다. 저만 이런 삽을 푼 것인지 모르지만, 해당 세팅을 하실 때, 참고하시길 바라며 이 글을 작성합니다.
개발자의 요구사항
- 폐쇄망에서 macOS의 Xcode 사용
- Xcode 사용 시, Apple 계정 등록 및 로그인 필요
내부망 세팅 현황
- DNS 서버로 리눅스 기반, Squid 프록시 사용 중
들어가기 앞서 아래의 파일들을 수정하고
꼭! named-checkconf 를 입력하시어, 아무것도 안나오는 것을 무조건 확인하셔야 됩니다.
그래야 bind 서비스를 service bind restart로 재시작해도 문제가 없기 때문입니다.
저는 이 확인 과정을 초반에 누락하여, 업무망 사이트들의 서비스를 한번 중지시켜 내부 직원들이 장애나 작업 있냐고 찾아왔습니다.^^
1. named.conf.options (DNS Forwarders 설정)
/etc/bind/named.conf.options 파일에 외부 DNS로 요청을 전달할 Forwarders를 설정하고, 보안적으로 불필요한 노출을 방지합니다. options에서 중요한 부분은 forwarders, recursion, listen-on 설정입니다. 이번 설정의 핵심은 인터넷이 안되는 내부망에서 불가피하게 접속해야 하는 사이트를 접근 가능하도록 하는 세팅입니다. 아래를 참고 바랍니다.
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8; # 신뢰할 수 있는 공용 DNS 서버 사용
1.1.1.1; # 백업 DNS 서버
};
recursion yes; # 폐쇄망 내 신뢰된 사용자만 재귀쿼리를 허용하도록 아래의 allow-query 설정과 함께 사용
dnssec-validation no; # 폐쇄망 환경에서는 DNSSEC 검증 불필요
auth-nxdomain no; # NXDOMAIN 응답 공격을 예방하기 위해 권장되는 설정
listen-on { 127.0.0.1; DNS_SERVER_IP; }; # DNS 서버가 노출되지 않도록 명시된 IP에서만 수신
listen-on-v6 { none; }; # IPv6 사용하지 않는다면 비활성화
allow-query { internal_network; localhost; }; # 내부 네트워크 및 로컬에서만 쿼리를 허용하여 외부 접근 차단
};
- DNS_SERVER_IP는 DNS 서버 자신의 IP로 변경합니다.
- internal_network는 폐쇄망 내부 네트워크 IP 범위를 지정합니다.
2. named.conf.default-zones (필수 도메인 Zones 설정)
/etc/bind/named.conf.default-zones에서 Apple 인증에 필요한 도메인들을 최소한으로 정의하여 불필요한 트래픽과 노출을 방지합니다. 내부망에서 apple account를 로그인하기 위한 세팅 외에 업무로 사용하는 사이트 세팅은 여기서 세팅하시고, type은 master 참조할 파일은 db.업무사이트.com 이런 양식으로 참조하라고 세팅해 주시면 됩니다.
zone "apple.com" {
type forward;
forward only;
forwarders { 8.8.8.8; };
};
zone "icloud.com" {
type forward;
forward only;
forwarders { 8.8.8.8; };
};
zone "mzstatic.com" {
type forward;
forward only;
forwarders { 8.8.8.8; };
};
zone "apple-dns.net" {
type forward;
forward only;
forwarders { 8.8.8.8; };
};
3. named.conf (View 및 ACL 설정)
/etc/bind/named.conf 파일에서 특정 클라이언트 IP에 대해서만 설정된 도메인에 대한 forward가 이루어지도록 view와 ACL을 설정하여 접근을 제한합니다. 여기서 어려웠던 점은 여기서 참고하는 뷰 세팅과 그 외의 사이트 참조는 include 구문에 경로로 세팅해줘야 합니다.
여기 세팅에서 중요한 것은 trusted_clients는 apple account 로그인이 필요한 사용자만 192.168.1.2; 이런 식으로 한 명씩 넣는 것을 추천드립니다.
acl trusted_clients {
192.168.1.0/24; # 인증을 허용할 클라이언트 IP 범위를 명시적으로 제한
};
view "apple_auth" {
match-clients { trusted_clients; }; # 신뢰된 클라이언트만 특정 DNS 조회 가능
zone "apple.com" { type forward; forwarders { 8.8.8.8; }; };
zone "icloud.com" { type forward; forwarders { 8.8.8.8; }; };
zone "mzstatic.com" { type forward; forwarders { 8.8.8.8; }; };
zone "apple-dns.net" { type forward; forwarders { 8.8.8.8; }; };
include "/etc/bind/named.conf.default-zones";
};
view "default" {
match-clients { any; };
recursion no; # 기본 view는 재귀쿼리 허용 금지하여 보안 강화
};
설정 적용 및 서비스 재시작
설정이 끝나면 BIND9 DNS 서버를 재시작하여 적용합니다.
systemctl restart bind9
이 설정을 통해 폐쇄망 환경에서도 Xcode의 Apple ID 인증이 정상적으로 이루어지고, 외부로부터의 불필요한 접근을 방지하여 보안성을 높일 수 있습니다.
저는 이 서비스를 구성하면서 2주 동안 많은 시간을 허비했습니다. 이 글을 읽고 다른 분들은 시간을 절약하고 내부망 세팅을 야무지게 하시길 바랍니다. 저는 인증서 로컬 저장 및 인증, 인증서 우회 세팅도 해봤으나 안되어서 이 세팅을 했는데 애초에 머리가 좋았으면 forwarder를 두는 이 세팅을 한 번에 하면 아주 간편하게 해결될 문제였습니다.
'IT > 리눅스' 카테고리의 다른 글
Let'sEncrypt(certbot) SSL인증서 갱신(폐쇄망(내부업무망)) (0) | 2024.10.21 |
---|---|
AWS EC2 MFA 적용(feat.Google-Authenticatior)_파일별 코드 첨부 (0) | 2024.06.19 |
리눅스의 가상화 관리 서비스에 대해 알아보기 (0) | 2024.05.06 |
리눅스 메일 설치 및 테스트(Postfix와 Dovecot을 설치 및 세팅) (0) | 2024.05.05 |
리눅스 X 윈도우 시스템 알아보기 (0) | 2024.05.02 |