인사이트

인사이트리포트

디지털프렌스포메이션 최신 정보 및 트렌드를 제공합니다.

오픈소스 SW

RHEL(Red Hat Enterprise Linux) 8 주요 변경 사항 가이드

2021.05.14김문경
다운로드

들어가며

RHEL(Red Hat Enterprise Linux)는 전세계 및 국내에서 가장 많이 사용하는 기업용 리눅스 OS이다. 2000년 첫 버전을 출시한 이후 업그레이드를 계속해 2021년 5월 현재 8.3 버전이 배포되고 있다. 레드햇이 지원하는 페도라 프로젝트(Fedora Project)에서 만든 리눅스 배포판인 페도라(Fedora)를 기반으로 한다.

RHEL은 버전 별로 라이프 사이클이 정해져 있다. 버전마다 10년 동안 하드웨어 드라이버, 보안 패치 등의 업데이트가 제공된다. RHEL 7과 8의 라이프 사이클 종료일은 다음과 같다.

RHEL 버전 7의 출시일은 2014년 6월 10일, 라이프사이클 종료일은 2024년 6월 30일입니다. RHEL 버전 8의 출시일은 2019년 5월 7일, 라이프 사이클 종료일은 2029년 5월 31일입니다.

라이프 사이클이 종료되면 버그 및 보안 패치, 기술 이슈에 대한 원인 분석 서비스에 제한이 생긴다. 다만 이전에 릴리스 된 패치에 대해서는 지원이 계속되며 지식베이스 고객 포탈 서비스(Red Hat Knowledgebase)도 계속 이용할 수 있다.

최신 버전인 RHEL 8이 배포되면서 이전 버전의 RHEL을 사용 중인 시스템 운영관리자를중심으로 RHEL 7 대비 8은 어떤 점이 변경되었는지, 마이그레이션을 해야 하는지에 대한 궁금증이 커지고 있다. 이에 본 아티클에서는 필자가 고객사로부터 자주 문의 받는 사항을 중심으로 RHEL 7과 8 간의 차이점을 짚어보고 시스템 운영관리자라면 꼭 알아야 할 RHEL 8의 특징을 살펴보겠다.

 

 

RHEL 7과 RHEL 8의 주요 차이점

RHEL 7과 8의 주요한 차이점은 다음과 같다.

RHEL 7과 8을 라이프사이클 종료일, 커널, 최대 파일시스템 크기, 지원 하드웨어 아키텍처, ISO이미지, 기본 IO스케쥴러, 컨테이너 기술, 계정, NFS 항목으로 비교하고 있습니다. RHEL8이 RHEL7보다 커널버전이 최신이고 지원하는 HW아키텍처도 더 많으며 최신의 자주 사용하는 ISO 이미지, 기본 IO 스케쥴러, 컨테이너 기술을 지원합니다. 계정과 NFS 도 RHEL8이 효율적이고 다양한 파일시스템을 지원하고 있습니다.

RHEL 8은 운영체제의 핵심인 커널부터 I/O 스케줄러, 컨테이너 등이 변경되었다. 이에 따라 기업·기관의 시스템 운영관리자는 RHEL 8 적용에 앞서 현재 가동 중인 서비스에 필요한 소프트웨어 설치 유무를 확인하고 성능에 미칠 영향을 먼저 검토해야 한다.

 

 

저장소(Repositories)

RHEL 8은 “BaseOS”, “AppStream” 2개 저장소를 사용한다.

BaseOS 저장소

운영체제의 기반이 되는 기본 기능의 코어 세트를 제공하는데 사용된다. 커널과 같은 기본 OS 기능의 핵심 패키지 그룹으로 물리적 하드웨어, 가상머신, 클라우드 인스턴스 또는 컨테이너에서 실행 가능하도록 하는 패키지를 제공한다.

 

AppStream 저장소

운영 서비스에서 수행 가능한 애플리케이션(예: Apache, Cyrus-imapd, Vim 등), 런타임 언어(예: Java, PHP, Python 등) 및 데이터베이스(예: MariaDB, PostgreSQL 등) 등이 포함되어 있다. BaseOS 저장소의 핵심 운영체제 패키지보다 더 자주 업데이트 된다. BaseOS 저장소와 AppStream 저장소의 분리로 AppStream 저장소 패키지 업데이트 시 이미 구성되어 있는 플랫폼 또는 특정 배포의 기본 안정성에 영향을 주지 않고 업데이트가 가능한 유연성을 제공한다. 예들 들어 PostgreSQL의 경우 v10과 v9.6을 제공하고 원하는 버전을 설치해 사용할 수 있다. 이전에 단일 패키지로 구성되어 최신 버전만을 지원했지만 제공되는 버전 중 원하는 것을 선택해 사용 가능합니다.

 

 

소프트웨어 관리

RHEL 8에서 소프트웨어 관리는 “yum” 대신 “dnf” 명령어를 사용한다.

새로운 “dnf”는 기존 “yum”의 낮은 성능, 높은 메모리 사용량 및 비효율적인 의존성 등의 기술 문제를 해결하였다.

기본적인 소프트웨어 설치, 업데이트, 삭제는 아래와 같이 할 수 있다.

RHEL 소프트웨어 설치, 업데이트, 삭제 명령어입니다. 설치는 # dnf install 패키지명, 업데이트는 # dnf update 패키지명, 삭제는 # dnf remove 패키지명입니다.

RHEL 8은 “dnf”를 기반으로 하지만 RHEL 7에서 사용되는 “yum”과 호환된다. “yum” 명령과 대부분의 옵션은 RHEL 7과 동일한 방식으로 작동한다.

다음의 문구가 적혀 있습니다. 새로운 패키지 설치 # yum install 패키지명, 패키지 업데이트 # yum update 패키지명, 패키지 삭제 # yum remove 패키지명

 

 

네트워크 스크립트

RHEL 8에서 네트워크 설정은 “nmcli”, “nmtui” 명령어를 사용한다.

RHEL 8부터는 RHEL 7에서 사용되던 “network-scripts”를 통한 ifup, ifdown 명령어를 사용할 수 없다. 대신 “NetworkManager” 서비스를 사용하고 “nmcli”, “nmtui” 명령어를 통해 제어한다.

“nmcli” 명령어를 사용하여 이더넷 연결을 추가하는 방법은 다음과 같다.

nmcli 명령어를 사용하여 이더넷 연결을 추가하는 방법입니다. 이더넷 연결을 위한 새 네트워크 매니저 연결 프로필을 추가합니다. IPv4 주소를 설정합니다. IPv6 주소를 설정합니다. IPv4 및 IPv6 연결 방법을 수동으로 설정합니다. IPv4 및 IPv6 기본 게이트웨이를 설정합니다. IPv4 및 IPv6 DNS 서버 주소를 설정합니다. IPv4 및 IPv6 연결을 위한 DNS 검색 도메인을 설정합니다. 연결 프로필을 활성화합니다. 장치 및 연결 상태를 표시합니다. 연결 프로파일의 모든 설정을 표시합니다.

기본으로 제공되지는 않지만 “ifup”, “ifdown” 명령어를 사용하기 위해 “network-scripts”를 수동으로 설치할 수 있다. 패키지는 BaseOS 저장소에 존재하며 # dnf install network-scripts 명령으로 설치 가능하다. 설치 후 /etc/sysconfig/network-scripts/ 하위에서 “ifup”, “ifdown” 명령어를 확인할 수 있다.

network-scripts를 수동으로 설치할 수 있습니다. # dnf install network-scripts 명령으로 설치 가능합니다. 설치 후 /etc/sysconfig/network-scripts/ 하위에서 ifup, ifdown 명령어를 확인할 수 있습니다.

 

 

시간 동기화

RHEL 8에서 시간 동기화는 “chronyd”를 사용한다.

NTP(Network Time Protocol)를 이용한 시간 동기화를 위해 RHEL 7에서는 “ntpd” 혹은 “chronyd”를 사용할 수 있었지만 RHEL 8은 “chronyd”만 지원한다.

즉시 시간 동기화를 위해 사용했던 “ntpdate” 명령어는 RHEL 8에서는 사용할 수 없으며 아래와 같이 수행해야 한다.

HEL 8 시간 동기화는 chronyd 명령으를 사용합니다.

 

 

보안

tcp_wrappers

RHEL 8은 여러 가지 서비스의 접근 제어가 가능했던 “tcp_wrappers” 기능을 지원하지 않으며 “firewalld”로 대체되었다. 기본 패키지에서 “tcp_wrappers”가 제외되어 /etc/hosts.{allow,deny}를 통한 보안 설정은 불가능하다.

10.10.10.0/24 네트워크에 SSH를 허용하고 다른 모든 네트워크를 차단하려면 아래와 같이 설정하면 된다.

10.10.10.0/24 네트워크에 SSH를 허용하고 다른 모든 네트워크를 차단하는 설정입니다. ssh 서비스를 기본 방화벽에서 제거합니다. newsshzone 이름으로 새로운 zone을 추가합니다. 추가된 newsshzone에 ssh 서비스를 추가합니다. 방화벽을 다시 로드하여 새 구성을 활성화합니다.

 

PAM

계정 잠금 제어 시 사용하던 PAM 패키지의 “pam_faillock” 모듈 사용법이 변경되었다. 기존의 “authconfig”를 대체한 “authselect”를 사용하여 “pam_faillock” 모듈을 활성화할 수 있다.

RHEL 7에서는 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth에 pam_faillockd을 설정한다. (두 파일을 모두 변경해야 적용됨)

PAM 패키지의 pam_faillock 모듈 사용법입니다. 기존의 authconfig를 대체한 authselect를 사용하여 pam_faillock 모듈을 활성화하면 됩니다.

RHEL 8은 RHEL 7와 달리 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth를 수동으로 편집하는 것은 권장하지 않는다. “pam_faillock” 모듈을 사용하려면 아래와 같이 하면 된다.

pam_faillock 모듈 사용법입니다. 모듈 활성화는 # authselect enable-feature with-faillock, 비활성화는 # authselect disable-feature with-faillock입니다. /etc/security/faillock.conf 구성 파일에서 설정을 읽을 수 있습니다. 실패한 로그인 정보 확인은 # faillock --user 계정명, 계정 잠금 해제는 # faillock --reset --user 계정명 입니다.

 

 

기본 네트워크 패킷 필터링

RHEL 8에서 패킷 필터링은 “iptables” 대신 “nft” 명령어를 사용한다. RHEL 7에서 사용되던 “iptables” 명령어도 여전히 지원되지만, 추후 “iptables” 명령어는 지원되지 않을 수 있어 신규 스크립트 작성시에는 “nft” 명령어를 사용하는 것을 권장한다.

“nft” 명령어는 기존 “iptables” 명령어에 비해 편의성, 기능 및 성능이 크게 향상되었다.

“iptables” 및 “nft” 명령어를 비교하면 아래와 같다.

모든 규칙 나열

iptables 와 nft 명령어 비교입니다. 모든 규칙 나열은 iptables는 # iptables-save, nft는 # nft list ruleset입니다.

 

특정 테이블 및 체인 나열

특정 테이블 및 체인 나열은 iptables는 #iptables -L, #iptables -L INPUT, #iptables -t nat -L PREROUTING 입니다. nft는 # nft list table ip filter, # nft list table ip filter INPUT, # nft list chain ip nat PREROUTING입니다.

기존 “iptables”의 규칙을 동일한 “nft” 규칙으로 변환하기 위한 “iptables-translate”, “ip6tables-translate” 도구를 제공한다. 아래와 같이 “iptables” 규칙을 “nft” 규칙으로 변환할 수 있다.

다음 문구가 기재되어 있습니다. # iptables-translate -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3000 l nft add rule ip nat PREROUTING tcp dport 80 counter redirect to :3000

 

 

마치며

RHEL 8은 이전 버전에 비해 다양한 워크로드에서 향상된 성능을 제공한다. 또한 지속적인 취약점 모니터링을 통해 중대 이슈 발생 시 신속한 업데이트를 제공함으로써 시스템 전반의 보안과 안정성이 향상되었다.

날마다 새로운 애플리케이션이 등장하고 사용량이 늘어나면서 IT 인프라의 복잡성도 높아지고 있다. 특히 서버 운영체제를 민첩하고 안정적으로 관리하는 것은 업무 성과 및 고객 서비스 성능과 직결된다. 만약 구 버전의 RHEL을 운영하고 있다면 예상치 못한 기술 이슈에 대비하고 인프라 효율을 향상시키기 위해 최신 버전으로 업그레이드 하는 것을 고려해야 한다.

본 아티클이 RHEL 8을 검토·채택하고 마이그레이션 해야 하는 시스템 운영관리자들에게 많은 도움이 되기를 바란다.

 

# References

- https://access.redhat.com/ko/support/policy/updates/errata
- https://access.redhat.com/articles/rhel-limits
- https://access.redhat.com/solutions/1532
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/package_manifest/appstream-repository
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/package_manifest/baseos-repository
- https://access.redhat.com/solutions/3935901
- https://access.redhat.com/solutions/5313011
- https://access.redhat.com/solutions/4492191
- https://access.redhat.com/solutions/3103631
- https://access.redhat.com/solutions/3938381
- https://access.redhat.com/solutions/3906701
- https://access.redhat.com/solutions/62949
- https://access.redhat.com/solutions/4175751
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8-beta/html/considerations_in_adopting_rhel_8/file-systems-and-storage_considerations-in-adopting-rhel-8
- https://www.redhat.com/en/blog/red-hat-enterprise-linux-8-improves-performance-modern-workloads

김문경 프로

김문경 프로

에스코어㈜ 소프트웨어사업부 오픈소스SW그룹

에스코어 소프트웨어사업부에서 Red Hat Enterprise Linux 기술 서비스를 담당하고 있습니다.

연관 아티클

  • JBoss EAP 8 주요 변경사항 가이드
    오픈소스 SW2024.08.01

    JBoss EAP 8 주요 변경사항 가이드

    자세히 보기
  • 커널 옵션 대 방출! Kubernetes 환경을 최적화하라
    2024.06.05

    커널 옵션 대 방출! Kubernetes 환경을 최적화하라

    자세히 보기
  • Redis를 활용한 안전하게 동시성 이슈 제어하기
    2024.02.21

    Redis를 활용한 안전하게 동시성 이슈 제어하기

    자세히 보기