Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.10.3. SELinux를 사용하여 Enforcing 모드에서 Tang Server 배포

Red Hat Enterprise Linux 7.7 이상에서는 tangd_port_t SELinux 유형을 제공하며 Tang 서버를 SELinux 강제 모드로 제한된 서비스로 배포할 수 있습니다.

사전 요구 사항

  • policycoreutils-python-utils 패키지 및 해당 종속 항목이 설치됩니다.

절차

  1. tang 패키지 및 해당 종속 항목을 설치하려면 root 로 다음 명령을 입력합니다.
    ~]# yum install tang
  2. (예: 7500/tcp ) .occupied 포트를 선택하고 tangd 서비스가 해당 포트에 바인딩되도록 허용합니다.
    ~]# semanage port -a -t tangd_port_t -p tcp 7500
    포트는 한 번에 하나의 서비스에서만 사용할 수 있으므로 이미 사용되고 있는 포트를 사용하려는 경우 ValueError를 의미합니다. 포트가 이미 정의된 오류 메시지입니다.
  3. 방화벽에서 포트를 엽니다.
    ~]# firewall-cmd --add-port=7500/tcp
    ~]# firewall-cmd --runtime-to-permanent
  4. systemd를 사용하여 tangd 서비스를 활성화합니다.
    ~]# systemctl enable tangd.socket
    Created symlink from /etc/systemd/system/multi-user.target.wants/tangd.socket to /usr/lib/systemd/system/tangd.socket.
  5. 덮어쓰기 파일을 생성합니다.
    ~]# systemctl edit tangd.socket
  6. 다음 편집기 화면에서 /etc/systemd/system/tangd.socket.d/ 디렉터리에 있는 빈 override.conf 파일을 열고 다음 행을 추가하여 Tang 서버의 기본 포트를 80에서 이전에 선택한 숫자로 변경합니다.
    [Socket]
    ListenStream=
    ListenStream=7500
    파일을 저장하고 편집기를 종료합니다.
  7. 변경된 구성을 다시 로드하고 tangd 서비스를 시작합니다.
    ~]# systemctl daemon-reload
  8. 구성이 작동하는지 확인합니다.
    ~]# systemctl show tangd.socket -p Listen
    Listen=[::]:7500 (Stream)
  9. tangd 서비스를 시작합니다.
    ~]# systemctl start tangd.socket
tangdsystemd 소켓 활성화 메커니즘을 사용하므로 첫 번째 연결이 들어오는 즉시 서버가 시작됩니다. 새로 생성된 암호화 키 세트는 처음 시작할 때 자동으로 생성됩니다.
수동 키 생성과 같은 암호화 작업을 수행하려면 jose 유틸리티를 사용합니다. jose -h 명령을 입력하거나 jose(1) 매뉴얼 페이지를 참조하십시오.

예 4.4. Tang 키 교체

정기적으로 키를 순환하는 것이 중요합니다. 회전해야하는 정확한 간격은 애플리케이션, 키 크기 및 기관 정책에 따라 다릅니다. 몇 가지 일반적인 권장 사항은 Cryptographic Key Length Recommendation 페이지를 참조하십시오.
키를 회전하려면 키 데이터베이스 디렉터리(일반적으로 /var/db/tang )에서 새 키 생성으로 시작합니다. 예를 들어 다음 명령으로 새 서명을 생성하고 키를 교환할 수 있습니다.
~]# DB=/var/db/tang
~]# jose jwk gen -i '{"alg":"ES512"}' -o $DB/new_sig.jwk
~]# jose jwk gen -i '{"alg":"ECMR"}' -o $DB/new_exc.jwk
이전 키의 이름을 지정하여 앞에 . 을 지정하여 광고에서 숨깁니다. 다음 예제의 파일 이름은 키 데이터베이스 디렉터리의 실제 및 고유한 파일 이름과 다릅니다.
~]# mv $DB/old_sig.jwk $DB/.old_sig.jwk
~]# mv $DB/old_exc.jwk $DB/.old_exc.jwk
Tang은 모든 변경 사항을 즉시 선택합니다. 다시 시작하지 않아도 됩니다.
이 시점에서 새 클라이언트 바인딩은 새 키를 선택하고 이전 클라이언트는 이전 키를 계속 사용할 수 있습니다. 모든 이전 클라이언트가 새 키를 사용해야 하는 경우 이전 키를 제거할 수 있습니다.
주의
클라이언트가 계속 사용하는 동안 이전 키를 제거하면 데이터 손실이 발생할 수 있습니다.

4.10.3.1. 고가용성 시스템 배포

Tang은 고가용성 배포를 구축하기 위한 두 가지 방법을 제공합니다.
  1. 클라이언트 중복(권장)
    클라이언트는 여러 Tang 서버에 바인딩할 수 있는 기능을 사용하여 구성해야 합니다. 이 설정에서 각 Tang 서버에는 고유한 키가 있으며 클라이언트는 이러한 서버의 하위 집합에 연결하여 암호를 해독할 수 있습니다. Clevis는 이미 sss 플러그인을 통해 이 워크플로를 지원합니다.
    이 설정에 대한 자세한 내용은 다음 도움말 페이지를 참조하십시오.
    • Tang(8), High Availability 섹션
    • Clevis(1), Shamir의 시크릿 공유 섹션
    • clevis-encrypt-sss(1)
    Red Hat은 고가용성 배포에 이 방법을 권장합니다.
  2. 키 공유
    중복성을 위해 Tang의 인스턴스를 두 개 이상 배포할 수 있습니다. 두 번째 또는 후속 인스턴스를 설정하려면 tang 패키지를 설치하고 SSH를 통해 rsync 를 사용하여 키 디렉터리를 새 호스트에 복사합니다. 키를 공유할 경우 키 손상의 위험이 증가하고 추가 자동화 인프라가 필요하므로 이 방법을 사용하지 않는 것이 좋습니다.