Red Hat Ansible Automation Platform은 전사적 자동화를 구현하기 위한 플랫폼으로, 보안 감사에 가장 적합한 툴입니다. 보안에는 많은 계층이 있지만 이 문서에서는 관리형 호스트에 대한 SSH 공격을 완화하는 데 중점을 둡니다. 모든 보안 리스크를 제거할 수는 없지만 관리형 호스트를 강화하여 일부를 최소화하고(특히 무차별 암호 대입 공격) 완화할 수 있습니다(인증된 호스트에서만 SSH 연결을 허용하고 sudo를 적용하는 등의 방법 사용). 이 문서에서는 Ansible Automation Platform을 사용하지만 대부분의 강화 구성은 관리형 호스트(sshd_config, sssd.conf, access.conf 편집)에 적용되므로 Red Hat Satellite와 같은 중앙화된 구성 툴로 이러한 개념을 적용할 수 있습니다.
이 문서에서는 다음 스키마를 사용하여 관리형 호스트 구성을 강화하는 방법을 보여줍니다.
- 호스트에 SSH 로그인하기 위한 여러 서비스 계정으로, AD/LDAP에서 생성합니다.
- 퍼블릭 키 인증을 사용한 SSH 로그인을 위해 AD/LDAP에 저장된 퍼블릭 키
- sudo 전용으로 AD/LDAP에 저장된 암호(SSH 로그인에 사용되지 않음)
- 모든 관리형 호스트에서 다음 작업이 가능합니다.
- 서비스 계정은 Ansible Automation Platform 실행 노드에서만 로그인 가능(다른 곳에서 로그인하려는 시도는 거부됨)
- sudo를 통한 권한 에스컬레이션의 경우 서비스 계정에 암호 필요

설정
표준 비강화 배포(standard non-hardened deployment)부터 시작합니다. 이 배포에는 일반적으로 다음이 포함됩니다.
- Ansible Automation Platform 서비스 계정 1개
- 호스트에 대한 SSH 로그인에 사용됨
- 임의의 암호를 사용하여 AD/LDAP에서 생성됨
- 모든 호스트에서 다음 작업이 가능합니다.
- 서비스 계정은 암호를 사용하여 로그인 가능
- 서비스 계정은 암호 없이 sudo 사용 가능
구성 강화 (Hardening the configuration)
많은 회사가 각 서비스에 하나의 서비스 계정만 생성합니다. 이 Ansible Automation Platform 시나리오에서는 모든 관리형 호스트에 연결하기 위해 Ansible Automation Platform과 함께 사용할 하나의 서비스 계정만 생성하는데, 어떤 이유로든 이 서비스 계정이 손상되는 경우 공격자가 모든 관리형 호스트에 액세스할 수 있습니다.
이것이 첫 번째로 변경해야 하는 사항입니다. 보안은 여러 계층에서 이루어지며 중요한 기반 중 하나는 서로 다른 서비스 계정을 생성하는 것입니다. 이를 구현할 때 보편적인 접근 방식은 없으며, 직접 아키텍처를 검토하고 인프라에 가장 적합한 것이 무엇인지 결정해야 합니다. 다음은 서로 다른 서비스 계정을 생성하기 위한 몇 가지 일반적인 전략입니다.
- 위치 또는 데이터 센터: 데이터 센터마다 서비스 계정 1개를 생성합니다.
- 조직 또는 도메인: 조직 또는 도메인마다 서비스 계정 1개를 생성합니다.
- OS: 호스트 유형(Red Hat Enterprise Linux 7, 8, 9 등)마다 서비스 계정 1개를 생성합니다.
- 사용: 기본 애플리케이션(데이터베이스, Apache, Kafka)의 호스트를 사용할 때마다 서비스 계정 1개를 생성합니다.
- 보안: 보안 영역(DMZ, 내부 영역 1 등)마다 서비스 계정 1개를 생성합니다.
모든 서비스 계정의 공통 그룹을 생성하세요. 그러면 서비스 계정을 1개만 허용하고 다른 모든 서비스 계정에 대한 액세스를 거부하기가 더 쉬워집니다.
AD/LDAP를 사용한 SSH 퍼블릭 키 인증
퍼블릭 키를 기반으로 서비스 계정에 대한 SSH 인증을 수행하세요. 퍼블릭 키는 암호에 비해 몇 가지 단점이 있지만 키를 사용하면 SSH 로그인에 대한 무차별 암호 대입 공격을 무효화할 수 있습니다.
먼저 각 서비스 계정의 퍼블릭 SSH 키를 AD/LDAP의 altSecurityIdentities
속성에 추가합니다.
각 관리형 호스트에서 ssh를 /etc/sssd/sssd.conf
의 서비스 목록에 추가합니다.
services = nss, pam, ssh
/etc/sssd/sssd.conf
의 [domain]
섹션에 ldap_user_extra_attrs
및 ldap_user_ssh_public_key
매개 변수를 추가합니다.
[domain/example.com] ldap_user_extra_attrs = altSecurityIdentities ldap_user_ssh_public_key = altSecurityIdentities
AuthorizedKeysCommandUser
옵션으로 AuthorizedKeysCommand
를 실행하는 데 사용되는 사용자 계정을 지정할 수 있습니다. 이 경우 전용 사용자를 사용하는 것이 좋으므로 이러한 SSH 매개 변수를 /etc/ssh/sshd_config
에 추가합니다.
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandUser nobody
자세한 내용은 Red Hat Customer Portal의 Active Directory에서 사용자 SSH 키를 저장하여 SSH 인증(Store User SSH Keys in Active Directory for SSH Authentication)을 참조하세요.
암호 인증 거부
다음 SSH 매개 변수를 모든 관리형 호스트의 /etc/ssh/sshd_config
에 추가하여 SSH 암호 인증 사용을 거부합니다(<Service Account>
Match User <Service Account> PasswordAuthentication no Match all
sudo에 암호 요구
sudo의 경우 서비스 계정의 암호를 요청하세요. 이 작업을 수행하려면 /etc/sudoers.d
의 서비스 계정 그룹에 사용할 이름이 지정된 새 파일을 생성하고 다음 줄을 추가합니다.
%<Service Account Group> ALL=(ALL:ALL) ALL
예를 들어 그룹 이름이 aapsas
인 경우엔 다음과 같이 추가합니다.
$ cat /etc/sudoers.d/aapsas %appsas ALL=(ALL:ALL) ALL
보안 모범 사례에 따르면 sudo를 실행하기 위해 허용된 일부 특정 명령만 추가하는 것이 좋지만 Ansible Automation Platform에서는 불가능합니다. 관리형 호스트의 경우 Ansible Automation Platform은 대상 머신과 통신하고(대부분 SSH 사용) Python 스크립트를 복사하고 실행합니다.
승인된 Ansible Automation Platform 실행 노드로부터의 연결 허용
마지막 강화 구성은 Ansible Automation Platform 실행 노드 또는 LOCAL
(sudo의 경우)에서만 제공되는 서비스 계정에 대한 SSH 연결을 허용하는 것입니다. 이를 구현하려면 /etc/security/access.conf에 줄을 추가합니다. 첫 번째 줄은 Ansible Automation Platform 및 LOCAL에서의 연결을 허용하는 반면, 두 번째 줄은 기타 모든 서비스 계정을 금지합니다.
+: <Service Account> : <AAP Execution Nodes IPS> LOCAL -: <Service Account Group> : ALL
모든 구성 자동화
이 문서에서는 SSH 로그인을 위한 관리형 호스트를 강화하는 데 필요한 단계를 제공했지만 Ansible Automation Platform의 경우 모든 단계를 수동으로 진행할 필요가 없습니다. 지금까지 설명한 모든 구성 단계는 템플릿 모듈을 사용하여 쉽게 자동화할 수 있습니다. 구성 파일 /etc/security/access.conf
, /etc/sssd/sssd.conf
및 /etc/ssh/sshd_config
에 대한 템플릿을 만드세요.
타겟 호스트의 연결 보안 매개 변수를 변경하는 것이므로 주의해야 합니다. 잘못된 구성으로 인해 sshd 서비스가 실패하거나 액세스 권한이 필요하지 않은 사용자에게 액세스 권한이 부여되는 등의 문제가 발생할 수 있습니다. 변경 사항을 배포하기 전에 작업을 다시 확인하세요.
물론 일회성 구성으로는 훌륭한 보안을 보장할 수 없습니다. 관리형 호스트에 대한 SSH 구성을 강화하는 것은 지속적인 프로세스에서 중요한 단계이며, Ansible Automation Platform 덕분에 이 단계가 더 쉬워졌습니다.
저자 소개
Alberto Gonzalez de Dios is a Senior Cloud consultant: Automation and OpenShift specialist. He joined Red Hat in 2018, and he is certified in Azure, AWS and Red Hat (Red Hat Certified Architect Level II).
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.