Red Hat Training
A Red Hat training course is available for RHEL 8
9.13. 방화벽 잠금 구성
로컬 애플리케이션 또는 서비스는 방화벽 구성이 root
(예: libvirt)로 실행되는 경우 변경할 수 있습니다. 이 기능을 사용하면 관리자가 방화벽 구성을 잠글 수 있으므로 애플리케이션이 없거나 잠금 허용 목록에 추가된 애플리케이션만 방화벽 변경 사항을 요청할 수 있습니다. 기본적으로 잠금 설정이 비활성화됩니다. 활성화된 경우 로컬 애플리케이션 또는 서비스에서 방화벽에 대한 원하지 않는 구성 변경 사항이 없는지 확인할 수 있습니다.
9.13.1. CLI를 사용하여 잠금 구성
명령줄을 사용하여 잠금 기능을 활성화하거나 비활성화할 수 있습니다.
절차
잠금 다운이 활성화되어 있는지 쿼리하려면
root
로 다음 명령을 사용하십시오.# firewall-cmd --query-lockdown
이 명령은 lockdown이 활성화된 경우 exit 상태
0
을 사용하여yes
를 출력합니다. 그렇지 않으면 종료 상태1
로no
를 출력합니다.잠금을 활성화하려면
root
로 다음 명령을 입력합니다.# firewall-cmd --lockdown-on
잠금을 비활성화하려면 다음 명령을
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
0
인yes
를 출력합니다. 그렇지 않으면 종료 상태1
로no
를 출력합니다.허용 목록에 있는 모든 보안 컨텍스트를 나열하려면
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
종료 상태
0
인yes
를 출력하면 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
종료 상태
0
인yes
를 출력하면 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
종료 상태
0
인yes
를 출력하면 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 특성 끝에 있는 *
는 이 문자열로 시작하는 모든 명령이 일치함을 의미합니다. *
가 없는 경우 인수를 포함한 절대 명령이 일치해야 합니다.