1.7. RHEL 시스템 역할을 사용하여 OpenSSH 서버 및 클라이언트 구성
sshd
RHEL 시스템 역할을 사용하여 OpenSSH 서버와 ssh
RHEL 시스템 역할을 사용하여 자동으로 여러 RHEL 시스템에서 OpenSSH 클라이언트를 일관되게 구성할 수 있습니다. 이러한 구성은 보안 원격 상호 작용이 필요한 모든 시스템에 필요합니다. 예를 들면 다음과 같습니다.
- 원격 시스템 관리: SSH 클라이언트를 사용하여 다른 컴퓨터에서 시스템에 안전하게 연결합니다.
- 보안 파일 전송: OpenSSH에서 제공하는 SFTP(Secure File Transfer Protocol)를 사용하면 로컬 시스템과 원격 시스템 간에 파일을 안전하게 전송할 수 있습니다.
- 자동화된 DevOps 파이프라인: 원격 서버(CI/CD 파이프라인)에 대한 보안 연결이 필요한 소프트웨어 배포를 자동화합니다.
- 터널링 및 포트 전달: 방화벽 뒤의 원격 서버의 웹 서비스에 액세스하기 위해 로컬 포트를 전달합니다. 예를 들어 원격 데이터베이스 또는 개발 서버입니다.
- 키 기반 인증: 암호 기반 로그인에 대한 보다 안전한 대안입니다.
- 인증서 기반 인증: 중앙 집중식 신뢰 관리 및 향상된 확장성.
- 향상된 보안: 루트 로그인을 비활성화, 사용자 액세스 제한, 강력한 암호화 적용 및 기타 강화 양식으로 인해 시스템 보안이 강화됩니다.
1.7.1. sshd RHEL 시스템 역할이 플레이북의 설정을 구성 파일로 매핑하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
sshd
RHEL 시스템 역할 플레이북에서는 서버 SSH 구성 파일의 매개 변수를 정의할 수 있습니다.
이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 sshd_config
파일을 생성합니다.
모든 경우에 부울은 관리 노드의 최종 구성에서 yes
및 no
로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.
sshd_ListenAddress: - 0.0.0.0 - '::'
sshd_ListenAddress:
- 0.0.0.0
- '::'
다음과 같이 렌더링됩니다.
ListenAddress 0.0.0.0 ListenAddress ::
ListenAddress 0.0.0.0
ListenAddress ::
1.7.2. sshd RHEL 시스템 역할을 사용하여 OpenSSH 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
sshd
RHEL 시스템 역할을 사용하여 여러 OpenSSH 서버를 구성할 수 있습니다. 이렇게 하면 이름별로 제공하여 원격 사용자를 위한 보안 통신 환경이 보장됩니다.
- 원격 클라이언트에서 들어오는 SSH 연결 관리
- 인증 정보 확인
- 안전한 데이터 전송 및 명령 실행
SSHD 구성을 변경하는 다른 RHEL 시스템 역할과 함께 sshd
RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 sshd
RHEL 시스템 역할은 네임스페이스(RHEL 8 및 이전 버전) 또는 드롭인 디렉터리(RHEL 9 이상)를 사용하는지 확인합니다.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
PasswordAuthentication: yes|no
-
OpenSSH 서버(
sshd
)가 사용자 이름과 암호 조합을 사용하는 클라이언트의 인증을 수락하는지 여부를 제어합니다. 일치:
-
match 블록을 사용하면 서브넷
192.0.2.0/24
에서만 암호를 사용하여root
사용자가 로그인할 수 있습니다.
플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
파일 및sshd_config(5)
매뉴얼 페이지를 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
SSH 서버에 로그인합니다.
ssh <username>@<ssh_server>
$ ssh <username>@<ssh_server>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 서버에서
sshd_config
파일의 내용을 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 192.0.2.0/24
서브넷에서 root로 서버에 연결할 수 있는지 확인합니다.IP 주소를 확인합니다.
hostname -I
$ hostname -I 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소가
192.0.2.1
-192.0.2.254
범위 내에 있는 경우 서버에 연결할 수 있습니다.root
로 서버에 연결합니다 :ssh root@<ssh_server>
$ ssh root@<ssh_server>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.3. 비독점 구성에 sshd RHEL 시스템 역할 사용 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 sshd
RHEL 시스템 역할을 적용하면 전체 구성을 덮어씁니다. 이전에 다른 RHEL 시스템 역할 또는 플레이북과 같은 구성을 조정한 경우 문제가 있을 수 있습니다. 다른 옵션을 유지하면서 선택한 구성 옵션에 대해서만 sshd
RHEL 시스템 역할을 적용하려면 제외된 구성을 사용할 수 있습니다.
포함되지 않은 구성을 적용할 수 있습니다.
- 구성 스니펫을 사용하여 RHEL 8 및 이전 버전에서.
-
드롭인 디렉터리에서 파일을 사용하여 RHEL 9 이상에서 다음을 수행합니다. 기본 구성 파일은 드롭인 디렉터리에 이미
/etc/ssh/sshd_config.d/00-ansible_system_role.conf
로 배치되어 있습니다.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.RHEL 8 이상을 실행하는 관리형 노드의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 9 이상을 실행하는 관리형 노드의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정에는 다음이 포함됩니다.
sshd_config_namespace: <my_application>
- 역할은 플레이북에 지정하는 구성을 지정된 네임스페이스 아래에 있는 기존 구성 파일의 구성 스니펫에 배치합니다. 다른 컨텍스트에서 역할을 실행할 때 다른 네임스페이스를 선택해야 합니다.
sshd_config_file: /etc/ssh/sshd_config.d/<42-my_application>.conf
-
sshd_config_file
변수에서sshd
시스템 역할이 구성 옵션을 쓰는.conf
파일을 정의합니다. 두 자리 접두사(예:42-
)를 사용하여 구성 파일을 적용할 순서를 지정합니다. AcceptEnv:
OpenSSH 서버(
sshd
)가 클라이언트에서 허용할 환경 변수를 제어합니다.-
LANG
: 언어 및 로케일 설정을 정의합니다. -
LS_COLORS
: 터미널에서ls
명령에 대한 표시 색상 체계를 정의합니다. -
EDITOR
: 편집기를 열어야 하는 명령줄 프로그램의 기본 텍스트 편집기를 지정합니다.
-
플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
파일 및sshd_config(5)
매뉴얼 페이지를 참조하십시오.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
SSH 서버의 구성을 확인합니다.
RHEL 8 이상을 실행하는 관리형 노드의 경우:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 9 이상을 실행하는 관리형 노드의 경우:
cat /etc/ssh/sshd_config.d/42-my_application.conf Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
# cat /etc/ssh/sshd_config.d/42-my_application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.4. sshd RHEL 시스템 역할을 사용하여 SSH 서버에서 시스템 전체 암호화 정책 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
기본 암호화 설정이 특정 보안 또는 호환성 요구 사항을 충족하지 않는 경우 sshd
RHEL 시스템 역할을 사용하여 OpenSSH 서버에서 시스템 전체 암호화 정책을 재정의할 수 있습니다. 특히 다음과 같은 주목할 만한 상황에서:
- 이전 클라이언트와의 호환성: weaker-than-default 암호화 알고리즘, 키 교환 프로토콜 또는 암호를 사용해야 합니다.
- 보다 강력한 보안 정책 강제: 동시에 약한 알고리즘을 비활성화할 수 있습니다. 이러한 조치는 특히 매우 안전하고 규제된 환경에서 기본 시스템 암호화 정책을 초과할 수 있습니다.
- 성능 고려 사항: 시스템 기본값은 일부 시스템에 컴퓨팅적으로 집약적일 수 있는 더 강력한 알고리즘을 시행할 수 있습니다.
- 특정 보안 요구 사항에 맞게 사용자 정의: 기본 암호화 정책에서 다루지 않는 고유한 요구 사항에 맞게 조정합니다.
sshd
RHEL 시스템 역할의 암호화 정책의 모든 측면을 덮어쓸 수 없습니다. 예를 들어 SHA-1 서명은 다른 계층에서 금지될 수 있으므로 보다 일반적인 솔루션의 경우 RHEL 시스템 역할을 사용하여 사용자 지정 암호화 정책 설정을 참조하십시오.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
sshd_KexAlgorithms
-
키 교환 알고리즘을 선택할 수 있습니다. 예를 들어
ecdh-sha2-nistp256
,ecdh-sha2-nistp384
,ecdh-sha2-nistp521
,diffie-hellman-group14-sha1
또는diffie-hellman-group-exchange-sha256
. sshd_Ciphers
-
암호(예:
aes128-ctr
,aes192-ctr
) 또는aes256-ctr
. sshd_MACs
-
예를 들어
hmac-sha2-256
,hmac-sha2-512
또는hmac-sha1
과 같은 MAC을 선택할 수 있습니다. sshd_HostKeyAlgorithms
-
공개 키 알고리즘(예:
ecdsa-sha2-nistp256
,ecdsa-sha2-nistp384
,ecdsa-sha2-nistp521
또는ssh-rsa
)을 선택할 수 있습니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
파일을 참조하십시오.참고RHEL 9 관리 노드에서 시스템 역할은 암호화 옵션이 자동으로 적용되는
/etc/ssh/sshd_config.d/00-ansible_system_role.conf
파일에 구성을 씁니다.sshd_config_file
변수를 사용하여 파일을 변경할 수 있습니다. 그러나 구성이 효과적임을 확인하려면 구성된 암호화 정책을 포함하는/etc/ssh/sshd_config.d/50-redhat.conf
파일 앞에 lexicographically 앞에 있는 파일 이름을 사용합니다.RHEL 8 관리 노드에서
sshd_sysconfig_override_crypto_policy
및sshd_sysconfig
변수를true
로 설정하여 재정의를 활성화해야 합니다.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
자세한 SSH 연결을 사용하여 절차의 성공 여부를 확인하고 다음 출력에서 정의된 변수를 확인할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.5. ssh RHEL 시스템 역할은 플레이북의 설정을 구성 파일로 매핑하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
ssh
RHEL 시스템 역할 플레이북에서는 클라이언트 SSH 구성 파일의 매개변수를 정의할 수 있습니다.
이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 글로벌 ssh_config
파일을 생성합니다.
모든 경우에 부울이 관리형 노드의 최종 구성에서 yes
또는 no
로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.
LocalForward: - 22 localhost:2222 - 403 localhost:4003
LocalForward:
- 22 localhost:2222
- 403 localhost:4003
다음과 같이 렌더링됩니다.
LocalForward 22 localhost:2222 LocalForward 403 localhost:4003
LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
구성 옵션은 대소문자를 구분합니다.
1.7.6. ssh RHEL 시스템 역할을 사용하여 OpenSSH 클라이언트 구성 링크 복사링크가 클립보드에 복사되었습니다!
ssh
RHEL 시스템 역할을 사용하여 여러 OpenSSH 클라이언트를 구성할 수 있습니다. 이를 통해 로컬 사용자는 이름을 확인하여 원격 OpenSSH 서버와의 보안 연결을 설정할 수 있습니다.
- 보안 연결 시작
- 인증 정보 프로비저닝
- 보안 통신 채널에 사용되는 암호화 방법의 OpenSSH 서버와의 협상
- OpenSSH 서버로 파일을 안전하게 보낼 수 있는 기능
SSH 구성을 변경하는 다른 시스템 역할과 함께 ssh
RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 하려면 ssh
RHEL 시스템 역할에 드롭인 디렉터리(RHEL 8 이상에서 기본값)를 사용해야 합니다.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
ssh_user: root
-
특정 구성 관련 정보를 사용하여 관리 노드에서
root
사용자의 SSH 클라이언트 기본 설정을 구성합니다. 압축: true
- 압축이 활성화됩니다.
ControlMaster: auto
-
ControlMaster 멀티플렉싱이
auto
로 설정되어 있습니다. 호스트
-
user1
이라는 사용자로server.
호스트에 연결하기 위한 별칭 예제를 생성합니다.example
.com ssh_ForwardX11: no
- X11 전달이 비활성화되어 있습니다.
플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.ssh/README.md
파일 및ssh_config(5)
매뉴얼 페이지를 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
SSH 구성 파일을 표시하여 관리 노드에 올바른 구성이 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow