1.8. ssh 시스템 역할과 보안 통신 구성


관리자는 sshd 시스템 역할을 사용하여 SSH 서버와 ssh 시스템 역할을 구성하여 Red Hat Ansible Automation Platform을 사용하여 여러 RHEL 시스템에서 동시에 SSH 클라이언트를 일관되게 구성할 수 있습니다.

1.8.1. sshd RHEL 시스템 역할이 플레이북의 설정을 구성 파일로 매핑하는 방법

sshd RHEL 시스템 역할 플레이북에서는 서버 SSH 구성 파일의 매개 변수를 정의할 수 있습니다.

이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 sshd_config 파일을 생성합니다.

모든 경우에 부울은 관리 노드의 최종 구성에서 yesno 로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

sshd_ListenAddress:
  - 0.0.0.0
  - '::'

다음과 같이 렌더링됩니다.

ListenAddress 0.0.0.0
ListenAddress ::

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일
  • /usr/share/doc/rhel-system-roles/sshd/ 디렉터리

1.8.2. sshd RHEL 시스템 역할을 사용하여 OpenSSH 서버 구성

sshd RHEL 시스템 역할을 사용하여 여러 OpenSSH 서버를 구성할 수 있습니다. 이렇게 하면 이름별로 제공하여 원격 사용자를 위한 보안 통신 환경이 보장됩니다.

  • 원격 클라이언트에서 들어오는 SSH 연결 관리
  • 인증 정보 확인
  • 안전한 데이터 전송 및 명령 실행
참고

SSHD 구성을 변경하는 다른 RHEL 시스템 역할과 함께 sshd RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 sshd RHEL 시스템 역할은 네임스페이스(RHEL 8 및 이전 버전) 또는 드롭인 디렉터리(RHEL 9)를 사용하는지 확인합니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: SSH server configuration
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure sshd to prevent root and password login except from particular subnet
          ansible.builtin.include_role:
            name: rhel-system-roles.sshd
          vars:
            sshd:
              PermitRootLogin: no
              PasswordAuthentication: no
              Match:
                - Condition: "Address 192.0.2.0/24"
                  PermitRootLogin: yes
                  PasswordAuthentication: yes

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    PasswordAuthentication: yes|no
    OpenSSH 서버(sshd)가 사용자 이름과 암호 조합을 사용하는 클라이언트의 인증을 수락하는지 여부를 제어합니다.
    일치:
    match 블록은 루트 사용자가 서브넷 192.0.2.0/24 에서만 암호를 사용하여 로그인할 수 있도록 허용합니다.

    플레이북에 사용된 역할 변수 및 OpenSSH 구성 옵션에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일 및 sshd_config(5) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  1. SSH 서버에 로그인합니다.

    $ ssh <username>@<ssh_server>
  2. SSH 서버에서 sshd_config 파일의 내용을 확인합니다.

    $ cat /etc/ssh/sshd_config
    ...
    PasswordAuthentication no
    PermitRootLogin no
    ...
    Match Address 192.0.2.0/24
      PasswordAuthentication yes
      PermitRootLogin yes
    ...
  3. 192.0.2.0/24 서브넷에서 root로 서버에 연결할 수 있는지 확인합니다.

    1. IP 주소를 확인합니다.

      $ hostname -I
      192.0.2.1

      IP 주소가 192.0.2.1 - 192.0.2.254 범위 내에 있는 경우 서버에 연결할 수 있습니다.

    2. root로 서버에 연결합니다 :

      $ ssh root@<ssh_server>

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일
  • /usr/share/doc/rhel-system-roles/sshd/ 디렉터리

1.8.3. ssh RHEL 시스템 역할은 플레이북의 설정을 구성 파일로 매핑하는 방법

ssh RHEL 시스템 역할 플레이북에서는 클라이언트 SSH 구성 파일의 매개변수를 정의할 수 있습니다.

이러한 설정을 지정하지 않으면 역할은 RHEL 기본값과 일치하는 글로벌 ssh_config 파일을 생성합니다.

모든 경우에 부울이 관리형 노드의 최종 구성에서 yes 또는 no 로 올바르게 렌더링됩니다. 목록을 사용하여 여러 줄 구성 항목을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

LocalForward:
  - 22 localhost:2222
  - 403 localhost:4003

다음과 같이 렌더링됩니다.

LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
참고

구성 옵션은 대소문자를 구분합니다.

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.ssh/README.md 파일
  • /usr/share/doc/rhel-system-roles/ssh/ 디렉터리

1.8.4. ssh RHEL 시스템 역할을 사용하여 OpenSSH 클라이언트 구성

ssh RHEL 시스템 역할을 사용하여 여러 OpenSSH 클라이언트를 구성할 수 있습니다. 이를 통해 로컬 사용자는 이름을 확인하여 원격 OpenSSH 서버와의 보안 연결을 설정할 수 있습니다.

  • 보안 연결 시작
  • 인증 정보 프로비저닝
  • 보안 통신 채널에 사용되는 암호화 방법의 OpenSSH 서버와의 협상
  • OpenSSH 서버로 파일을 안전하게 보낼 수 있는 기능
참고

SSH 구성을 변경하는 다른 시스템 역할과 함께 ssh RHEL 시스템 역할을 사용할 수 있습니다(예: Identity Management RHEL 시스템 역할). 구성을 덮어쓰지 않도록 하려면 ssh RHEL 시스템 역할에 드롭인 디렉터리(RHEL 8 이상에서 기본값)를 사용해야 합니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: SSH client configuration
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure ssh clients
          ansible.builtin.include_role:
            name: rhel-system-roles.ssh
          vars:
            ssh_user: root
            ssh:
              Compression: true
              GSSAPIAuthentication: no
              ControlMaster: auto
              ControlPath: ~/.ssh/.cm%C
              Host:
                - Condition: example
                  Hostname: server.example.com
                  User: user1
            ssh_ForwardX11: no

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    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) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • SSH 구성 파일을 표시하여 관리 노드에 올바른 구성이 있는지 확인합니다.

    # cat ~/root/.ssh/config
    # Ansible managed
    Compression yes
    ControlMaster auto
    ControlPath ~/.ssh/.cm%C
    ForwardX11 no
    GSSAPIAuthentication no
    Host example
      Hostname example.com
      User user1

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.ssh/README.md 파일
  • /usr/share/doc/rhel-system-roles/ssh/ 디렉터리
  • ssh_config(5) manual page

1.8.5. 비독점 구성에 sshd RHEL 시스템 역할 사용

기본적으로 sshd RHEL 시스템 역할을 적용하면 전체 구성을 덮어씁니다. 이전에 다른 RHEL 시스템 역할 또는 플레이북과 같은 구성을 조정한 경우 문제가 있을 수 있습니다. 다른 옵션을 유지하면서 선택한 구성 옵션에 대해서만 sshd RHEL 시스템 역할을 적용하려면 제외된 구성을 사용할 수 있습니다.

포함되지 않은 구성을 적용할 수 있습니다.

  • 구성 스니펫을 사용하여 RHEL 8 및 이전 버전에서.
  • 드롭인 디렉터리에서 파일을 사용하여 RHEL 9 이상에서 다음을 수행합니다. 기본 구성 파일은 드롭인 디렉터리에 이미 /etc/ssh/sshd_config.d/00-ansible_system_role.conf 로 배치되어 있습니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    • RHEL 8 이상을 실행하는 관리형 노드의 경우:

      ---
      - name: Non-exclusive sshd configuration
        hosts: managed-node-01.example.com
        tasks:
          - name: Configure SSHD to accept environment variables
            ansible.builtin.include_role:
              name: rhel-system-roles.sshd
            vars:
              sshd_config_namespace: <my-application>
              sshd:
                # Environment variables to accept
                AcceptEnv:
                  LANG
                  LS_COLORS
                  EDITOR
    • RHEL 9 이상을 실행하는 관리형 노드의 경우:

      - name: Non-exclusive sshd configuration
        hosts: managed-node-01.example.com
        tasks:
          - name: Configure sshd to accept environment variables
            ansible.builtin.include_role:
              name: rhel-system-roles.sshd
            vars:
              sshd_config_file: /etc/ssh/sshd_config.d/<42-my-application>.conf
              sshd:
                # Environment variables to accept
                AcceptEnv:
                  LANG
                  LS_COLORS
                  EDITOR

      예제 플레이북에 지정된 설정에는 다음이 포함됩니다.

      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) 매뉴얼 페이지를 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  • SSH 서버의 구성을 확인합니다.

    • RHEL 8 이상을 실행하는 관리형 노드의 경우:

      # cat /etc/ssh/sshd_config
      ...
      # BEGIN sshd system role managed block: namespace <my-application>
      Match all
        AcceptEnv LANG LS_COLORS EDITOR
      # END sshd system role managed block: namespace <my-application>
    • RHEL 9 이상을 실행하는 관리형 노드의 경우:

      # cat /etc/ssh/sshd_config.d/42-my-application.conf
      # Ansible managed
      #
      AcceptEnv LANG LS_COLORS EDITOR

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 파일
  • /usr/share/doc/rhel-system-roles/sshd/ 디렉터리
  • sshd_config(5) manual page
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.