소개
데이터 거버넌스 정책이나 규정 준수와 같은 이유로 인해 네트워크 전반의 노드 간에 보안 통신이 필요한 Couchbase 배포가 있을 수 있습니다. 인터넷 프로토콜 보안(IPsec) 는 인증을 통한 안전한 인터넷 프로토콜(IP) 통신을 위한 프로토콜 제품군입니다.ng 를 암호화하고 IP 패킷 를 보호하는 데 사용할 수 있습니다. IPsec은 한 쌍의 호스트 간의 데이터 흐름을 보호하는 데 사용할 수 있습니다(호스트 대 호스트), 한 쌍의 보안 게이트웨이(네트워크 간 네트워크) 또는 보안 게이트웨이와 호스트 사이(네트워크 대 호스트). 이 문서의 목표는 Couchbase 관리자에게 Couchbase 클러스터의 노드에서 IPsec을 구성하는 방법에 대한 빠른 시작을 제공하기 위한 것입니다.
IPsec 모드
IPSec에는 터널 모드와 전송 모드의 두 가지 모드가 있습니다. 가장 널리 사용되는 것은 터널 모드로, 일반적으로 VPN 설정(터널 네트워크 장치 생성 중)에 사용됩니다. 터널 모드는 모든 노드 쌍 사이에 터널을 만들고 유지 관리해야 하므로 Couchbase 클러스터에는 실용적이지 않습니다.
전송 모드는 동일한 네트워크의 노드 간 통신을 보호할 때 필요합니다. 이 모드를 사용하면 패킷 단위로 IPsec을 사용할 수 있습니다. 애플리케이션을 완전히 투명하게 보호합니다.
IPSec은 패킷 인증(즉, 수신되는 패킷이 신뢰할 수 있는 노드의 패킷인지 확인) 및 패킷 암호화를 제공할 수 있습니다. 전송 모드 및 관련 보안 정책 데이터베이스 항목을 통해 Couchbase 클러스터에 필요한 동작을 설정할 수 있습니다:
-
특정 종류의 수신 패킷은 ipsec으로 캡슐화되고 유효한 경우에만 허용됩니다(그렇지 않으면 삭제됨).
-
특정 종류의 발신 패킷은 ipsec으로 캡슐화해야 합니다.
일반적으로 '특정 종류'는 다음과 같은 의미입니다: 카우치베이스 클러스터 네트워크 세그먼트와 주고받는 모든 패킷. 또는 모두와 같은 것일 수도 있습니다: 카우치베이스 서비스 포트와 주고받는 모든 패킷.
요구 사항
-
Linux 배포판(이 블로그에서는 데비안이 사용됨). Windows는 IPsec을 지원하지만 테스트되지 않았습니다.
- Linux Openswan U2.6.32/K2.6.32-573.el6.x86_64(netkey) 이상
- Couchbase 4.1 이상
- 시스템에 대한 sudo/루트 사용자 액세스
OpenSwan 설치 및 구성
sudo를 사용하여 명령줄에서 각 노드에서 다음 명령을 실행했습니다. 다른 Linux 배포판의 경우 해당 패키지 관리자를 사용하세요.
# sudo apt-get 업데이트
# sudo apt-get 설치 openswan
설치 프로그램에서 사용자에게 x.509 인증서를 만들라는 메시지가 표시될 수 있지만, x.509 인증서를 만들지 마세요. 전송 모드를 위해 IPsec을 구성해야 합니다. 이 블로그를 위해 만든 데모 환경에는 10.0.2.4와 10.0.2.5의 두 노드가 있습니다.
단계
1 - 각 노드에서 /etc/ipsec.secrets 파일에 다음과 같은 줄을 추가합니다: ipaddress_node1 ipaddress_node2: PSK "일부_키"

2 - ipsec.d 하위 디렉터리에 있는 *.conf 파일을 사용하도록 /etc/ipsec.conf 파일을 수정합니다. 이렇게 하면 클러스터에 노드를 추가해야 하는 경우 쉽게 자동화할 수 있습니다. 각 노드 쌍에는 고유한 항목이 필요합니다.

3 - /etc/ipsec.d/ 디렉터리에 다음 정보를 사용하여 구성 파일을 만듭니다:
conn 카우치베이스
유형=트랜스포트
authby=비밀
왼쪽=
오른쪽=
pfs=예
자동=시작
- conn couchbase -connection: 연결에 대한 임의의 레이블을 지정합니다. 원하는 모든 것을 입력할 수 있습니다.
- type=transport: 이 연결에 전송 모드를 사용하려고 합니다.authby=비밀: 이 연결에는 사전 공유 키(PSK)를 사용합니다.
- 왼쪽=10.0.2.4: 이 줄과 다음 줄은 이 IPsec 연결에 관련된 IP 주소를 나타냅니다. 어떤 IP가 "왼쪽"이고 어떤 IP가 "오른쪽"인지는 중요하지 않습니다.
- 오른쪽=10.0.2.5: 위 글머리 기호 참조.
- pfs=yes: 이 연결에 대해 완전 전달 비밀을 사용하도록 설정합니다. 간단히 말해, 보안이 크게 향상됩니다. I자동=시작: 선제적으로 IPsec 연결을 즉시 시작하려고 합니다. 자동=시작으로 설정할 수도 있는데, 이 경우 연결의 다른 쪽 끝에서 트래픽이 시작될 때까지 기다립니다.
4 - 두 노드 모두에서 새 구성을 사용하도록 IPSec을 활성화합니다: 1TP5서비스 ipsec 재시작
설정 테스트
한 노드의 명령줄에서 다음 명령을 입력합니다:
#ping
다른 노드에서 명령줄을 사용하여 다음을 입력합니다. (원하는 결과) 메시지가 나타나지 않으면 설정을 디버그해야 합니다(아래 나열된 IPsec 가이드를 참조하세요).
#sudo tcpdump esp
참고: ESP = 보안 페이로드 캡슐화
카우치베이스 구성
각 노드에 Couchbase를 설치합니다(간단한 2노드 구성). 클러스터를 설정합니다. 두 노드 간의 모든 통신은 위의 샘플은 두 Couchbase 노드 간의 통신을 문서화한 것으로, tcpdump esp 명령을 사용하여 추적할 수 있습니다.
카우치베이스 테스트 클러스터:
스크린샷 - #sudo tcpdump esp
참조
IPsec 개요 – https://en.wikipedia.org/wiki/IPsec
IPsec 전송 모드 구현하기 - 2. http://andersonfam.org/2014/04/02/ipsec-transport-mode/
StrongSwan 사용(3노드 예시) - - http://blog.sprinternet.at/2016/03/ipsec-transport-mode-with-strongswan-on-debian-jessie/
이 테스트에 사용된 샘플 구성 파일
/etc/ipsec.conf
# /etc/ipsec.conf - Openswan IPsec 구성 파일
#
# 매뉴얼: ipsec.conf.5
#
# .conf로 끝나는 /etc/ipsec.d/에 자체 설정 파일을 배치하세요.
버전 2.0 #는 두 번째 버전의 ipsec.conf 사양을 준수합니다.
# 기본 구성
구성 설정
# 디버그 로깅 컨트롤: (거의) 없는 경우 "없음", 많은 경우 "모두".
# 클립 디버그=없음
# 플루토데버그="제어 구문 분석"
# 레드햇 엔터프라이즈 리눅스 및 페도라의 경우, 프로토스택=넷키를 그대로 둡니다.
프로토스택=넷키
nat_traversal=yes
가상_개인=
oe=off
# "사용 가능한 작업자를 찾지 못했습니다"가 표시되면 이 옵션을 활성화합니다.
# n헬퍼=0
#설정(.conf) 파일을 "/etc/ipsec.d/"에 넣고 주석 처리를 해제할 수 있습니다.
include /etc/ipsec.d/*.conf
/etc/ipsecrets
include /etc/ipsec.d/*.secrets
# 사용자 환경의 IP 주소 사용
10.0.2.4 10.0.2.5: PSK "공유 키"
/etc/ipsec.d/couchbase.conf
conn 카우치베이스
유형=트랜스포트
authby=비밀
왼쪽=10.0.2.4
오른쪽=10.0.2.4
pfs=y
자동=시작