Red Hat Training

A Red Hat training course is available for RHEL 8

9.13. 방화벽 잠금 구성

로컬 애플리케이션 또는 서비스는 방화벽 구성이 root (예: libvirt)로 실행되는 경우 변경할 수 있습니다. 이 기능을 사용하면 관리자가 방화벽 구성을 잠글 수 있으므로 애플리케이션이 없거나 잠금 허용 목록에 추가된 애플리케이션만 방화벽 변경 사항을 요청할 수 있습니다. 기본적으로 잠금 설정이 비활성화됩니다. 활성화된 경우 로컬 애플리케이션 또는 서비스에서 방화벽에 대한 원하지 않는 구성 변경 사항이 없는지 확인할 수 있습니다.

9.13.1. CLI를 사용하여 잠금 구성

명령줄을 사용하여 잠금 기능을 활성화하거나 비활성화할 수 있습니다.

절차

  1. 잠금 다운이 활성화되어 있는지 쿼리하려면 root 로 다음 명령을 사용하십시오.

    # firewall-cmd --query-lockdown

    이 명령은 lockdown이 활성화된 경우 exit 상태 0 을 사용하여 yes 를 출력합니다. 그렇지 않으면 종료 상태 1no 를 출력합니다.

  2. 잠금을 활성화하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --lockdown-on
  3. 잠금을 비활성화하려면 다음 명령을 root 로 사용합니다.

    # firewall-cmd --lockdown-off

9.13.2. CLI를 사용하여 잠금 허용 목록 옵션 구성

잠금 허용 목록에는 명령, 보안 컨텍스트, 사용자 및 사용자 ID가 포함될 수 있습니다. 허용 목록의 명령 항목이 별표 "*"로 끝나면 해당 명령으로 시작하는 모든 명령줄이 일치합니다. "*"가 없으면 인수를 포함한 절대 명령이 일치해야 합니다.

  • 컨텍스트는 실행 중인 애플리케이션 또는 서비스의 보안(SELinux) 컨텍스트입니다. 실행 중인 애플리케이션의 컨텍스트를 가져오려면 다음 명령을 사용합니다.

    $ ps -e --context

    이 명령은 실행 중인 모든 애플리케이션을 반환합니다. 관련 애플리케이션을 가져오려면 grep 툴을 통해 출력을 파이프합니다. 예를 들면 다음과 같습니다.

    $ ps -e --context | grep example_program
  • 허용 목록에 있는 모든 명령행을 나열하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --list-lockdown-whitelist-commands
  • 허용 목록에 명령 명령 을 추가하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --add-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'
  • allowlist에서 명령 명령 을 제거하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --remove-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'
  • 명령 명령이 허용 목록에 있는지 쿼리하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --query-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'

    이 명령은 true인 경우 exit status 0yes 를 출력합니다. 그렇지 않으면 종료 상태 1no 를 출력합니다.

  • 허용 목록에 있는 모든 보안 컨텍스트를 나열하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --list-lockdown-whitelist-contexts
  • 허용 목록에 컨텍스트 컨텍스트 를 추가하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --add-lockdown-whitelist-context=context
  • 허용 목록에서 컨텍스트 컨텍스트 를 제거하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --remove-lockdown-whitelist-context=context
  • 컨텍스트 컨텍스트 가 허용 목록에 있는지 쿼리하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --query-lockdown-whitelist-context=context

    종료 상태 0yes 를 출력하면 true인 경우 종료 상태 1 이 있는 no 를 출력합니다.

  • 허용 목록에 있는 모든 사용자 ID를 나열하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --list-lockdown-whitelist-uids
  • 허용 목록에 사용자 ID uid 를 추가하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --add-lockdown-whitelist-uid=uid
  • 허용 목록에서 사용자 ID uid 를 제거하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --remove-lockdown-whitelist-uid=uid
  • 사용자 ID uid 가 허용 목록에 있는지 쿼리하려면 다음 명령을 입력합니다.

    $ firewall-cmd --query-lockdown-whitelist-uid=uid

    종료 상태 0yes 를 출력하면 true인 경우 종료 상태 1 이 있는 no 를 출력합니다.

  • 허용 목록에 있는 모든 사용자 이름을 나열하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --list-lockdown-whitelist-users
  • 허용 목록에 사용자 이름 사용자 를 추가하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --add-lockdown-whitelist-user=user
  • allowlist에서 사용자 이름 사용자 를 제거하려면 root 로 다음 명령을 입력합니다.

    # firewall-cmd --remove-lockdown-whitelist-user=user
  • 사용자 이름 사용자가 허용 목록에 있는지 쿼리하려면 다음 명령을 입력합니다.

    $ firewall-cmd --query-lockdown-whitelist-user=user

    종료 상태 0yes 를 출력하면 true인 경우 종료 상태 1 이 있는 no 를 출력합니다.

9.13.3. 설정 파일을 사용하여 잠금 허용 목록 옵션 구성

기본 allowlist 구성 파일에는 NetworkManager 컨텍스트 및 libvirt 의 기본 컨텍스트가 포함되어 있습니다. 사용자 ID 0도 목록에 있습니다.

+ allowlist 구성 파일은 /etc/firewalld/ 디렉토리에 저장됩니다.

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <selinux context="system_u:system_r:virtd_t:s0-s0:c0.c1023"/>
	  <user id="0"/>
	</whitelist>

다음은 사용자 ID가 815 인 사용자에 대해 firewall-cmd 유틸리티에 대한 모든 명령을 활성화하는 allowlist 설정 파일의 예입니다.

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <command name="/usr/libexec/platform-python -s /bin/firewall-cmd*"/>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <user id="815"/>
	  <user name="user"/>
	</whitelist>

이 예에서는 사용자 ID와 사용자 이름 를 모두 표시하지만 하나의 옵션만 필요합니다. Python은 인터프리터이며 명령줄 앞에 추가됩니다. 다음과 같은 특정 명령을 사용할 수도 있습니다.

# /usr/bin/python3 /bin/firewall-cmd --lockdown-on

이 예제에서는 --lockdown-on 명령만 허용됩니다.

Red Hat Enterprise Linux에서 모든 유틸리티는 /usr /bin/ 디렉토리에 있으며 /bin/ 디렉토리는 /usr/bin/ 디렉토리에 sym-linked입니다. 즉, root 로 입력할 때 firewall-cmd 의 경로가 /bin/firewall-cmd 로 확인될 수 있지만/usr/bin/firewall-cmd 를 사용할 수 있습니다. 모든 새 스크립트는 새 위치를 사용해야 합니다. 그러나 root 로 실행되는 스크립트가 /bin/firewall-cmd 경로를 사용하도록 작성된 경우 전통적으로 비root 사용자에게만 사용되는 /usr/bin/firewall-cmd 경로와 더불어 allow 목록에 해당 명령 경로를 추가해야 합니다.

명령의 name 특성 끝에 있는 * 는 이 문자열로 시작하는 모든 명령이 일치함을 의미합니다. * 가 없는 경우 인수를 포함한 절대 명령이 일치해야 합니다.