"Red Hat이냐, Ubuntu냐"는 리눅스 서버를 운영하는 조직이라면 반드시 마주치는 질문이다. 단순한 취향이 아니라 라이선스 비용, 기술 지원 SLA, 보안 패치 주기, 인증/컴플라이언스, 인력 풀 등 비즈니스에 직접 영향을 미치는 의사결정이다.
이 글에서는 RHEL(Red Hat Enterprise Linux) 계열과 Ubuntu Server를 엔터프라이즈 운영 관점에서 항목별로 비교하고, 워크로드별 추천 기준을 정리한다.
Fedora (업스트림) → RHEL (엔터프라이즈) → CentOS Stream (중간 스트림)
→ Rocky Linux (커뮤니티 RHEL 클론)
→ AlmaLinux (커뮤니티 RHEL 클론)
- RHEL: Red Hat 구독 필요. 10년 이상 기술 지원.
- CentOS Stream: RHEL 다음 마이너 릴리스의 프리뷰. 프로덕션 직접 사용은 논쟁 중.
- Rocky Linux / AlmaLinux: CentOS 8 지원 종료 이후 등장한 1:1 RHEL 호환 배포판.
Debian (업스트림) → Ubuntu (Canonical) → Ubuntu LTS (장기 지원)
→ Ubuntu Pro (확장 보안)
- Ubuntu LTS: 2년마다 릴리스, 기본 5년 + Ubuntu Pro 10년 지원.
- Ubuntu Pro: Canonical의 엔터프라이즈 보안·컴플라이언스 상품.
| 항목 | RHEL 9 / Rocky 9 | Ubuntu 24.04 LTS |
|---|
| 커널 | 5.14 (백포트) | 6.8 |
| 패키지 매니저 | DNF (yum 후속) | APT |
| 패키지 형식 | RPM | DEB |
| Init 시스템 | systemd | systemd |
| 기본 파이썬 | 3.9 | 3.12 |
| SELinux/AppArmor | SELinux (기본 Enforcing) | AppArmor (기본 Enabled) |
| 방화벽 | firewalld | ufw / nftables |
| 기본 지원 기간 | 10년 (RHEL) / 10년 (Rocky) | 5년 (LTS) |
| 확장 지원 | ELS 최대 13년 | Ubuntu Pro 12년 |
| 라이선스 비용 | RHEL: 서버당 연간 구독 / Rocky: 무료 | 무료 (Pro 별도) |
| 인증·컴플라이언스 | FIPS 140-2/3, CC, STIG | FIPS 140-2 (Pro), CIS |
| 컨테이너 기반 이미지 | UBI (Universal Base Image) | ubuntu:24.04 |
| 클라우드 지원 | AWS, Azure, GCP 전체 | AWS, Azure, GCP 전체 |
dnf search nginx
dnf install -y nginx
dnf remove nginx
dnf info nginx
rpm -ql nginx
dnf update --security
dnf module list nodejs
dnf module enable nodejs:20
dnf module install nodejs:20/common
dnf history
dnf history undo 15
dnf repolist
dnf config-manager --add-repo https://repo.example.com/el9/
apt search nginx
apt install -y nginx
apt remove nginx
apt purge nginx
apt show nginx
dpkg -L nginx
apt update
apt upgrade -y -o Dpkg::Options::="--force-confold"
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
add-apt-repository ppa:deadsnakes/ppa
apt update
apt-mark hold nginx
apt-mark unhold nginx
| 기능 | DNF (RHEL) | APT (Ubuntu) |
|---|
| 트랜잭션 롤백 | dnf history undo | 직접 지원 없음 |
| 모듈 스트림 | dnf module | PPA / Snap |
| 보안 패치 분리 | --security 플래그 | unattended-upgrades |
| 의존성 해결 | libsolv | apt 내장 |
| 오프라인 설치 | dnf download + createrepo | apt-offline / dpkg -i |
| 병렬 다운로드 | 기본 지원 | apt 2.0+ 기본 지원 |
MAC(Mandatory Access Control) 기반으로 프로세스가 접근할 수 있는 파일·포트·시스템 콜을 정책으로 제한한다.
getenforce
sestatus
ls -Z /var/www/html
ps -eZ | grep nginx
getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on
ausearch -m avc -ts recent
sealert -a /var/log/audit/audit.log
audit2allow -a -M my_policy
semodule -i my_policy.pp
경로 기반 MAC으로 프로필 파일을 통해 프로그램별 접근 권한을 정의한다.
aa-status
apparmor_status
aa-enforce /etc/apparmor.d/usr.sbin.nginx
aa-complain /etc/apparmor.d/usr.sbin.nginx
aa-genprof /usr/sbin/myapp
aa-logprof
| 항목 | SELinux | AppArmor |
|---|
| 접근 제어 방식 | 레이블 기반 (inode) | 경로 기반 |
| 학습 곡선 | 높음 | 낮음 |
| 기본 정책 범위 | 매우 광범위 | 주요 서비스 위주 |
| 컨테이너 격리 | 탁월 (MCS) | 기본 수준 |
| 정책 디버깅 | audit2why, sealert | aa-logprof |
| 엔터프라이즈 인증 | STIG, CC, FIPS 필수 | CIS Benchmark |
실전 조언: SELinux를 Disabled로 끄는 것은 안티패턴이다. 문제가 생기면 Permissive로 전환하고 로그를 분석하여 정책을 조정하라.
| 작업 | RHEL / Rocky | Ubuntu |
|---|
| 서비스 시작/정지 | systemctl start nginx | systemctl start nginx |
| 부팅 시 서비스 활성화 | systemctl enable nginx | systemctl enable nginx |
| 방화벽 포트 열기 | firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload | ufw allow 80/tcp |
| 네트워크 설정 | nmcli / nmtui | netplan apply |
| 호스트명 변경 | hostnamectl set-hostname | hostnamectl set-hostname |
| 시간 동기화 | chrony | systemd-timesyncd / chrony |
| 사용자 생성 | useradd -m -s /bin/bash user | adduser user |
| 디스크 파티션 | fdisk / parted | fdisk / parted |
| LVM 관리 | lvm 기본 내장 | apt install lvm2 |
| 커널 파라미터 | sysctl -p | sysctl -p |
| 항목 | UBI 9 (Red Hat) | ubuntu:24.04 |
|---|
| 이미지 크기 | ~215MB | ~78MB |
| Minimal 변형 | ubi9-minimal (~100MB) | ubuntu:24.04 자체가 경량 |
| Micro 변형 | ubi9-micro (~35MB) | - |
| 재배포 | 자유 (UBI EULA) | 자유 |
| 보안 스캔 | Red Hat 취약점 DB | Canonical USN |
| 패키지 매니저 | microdnf / dnf | apt |
FROM registry.access.redhat.com/ubi9/ubi-minimal:latest AS builder
RUN microdnf install -y java-17-openjdk-headless && microdnf clean all
COPY target/app.jar /app.jar
FROM registry.access.redhat.com/ubi9/ubi-micro:latest
COPY --from=builder /usr/lib/jvm /usr/lib/jvm
COPY --from=builder /app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
FROM ubuntu:24.04 AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
openjdk-17-jre-headless && rm -rf /var/lib/apt/lists/*
COPY target/app.jar /app.jar
FROM gcr.io/distroless/java17-debian12
COPY --from=builder /app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
두 배포판 모두 Kubernetes를 완벽히 지원한다. 차이는 주로 관리형 서비스 기본 OS에서 나타난다.
| 클라우드 | 관리형 K8s 노드 기본 OS |
|---|
| AWS EKS | Amazon Linux 2023 (RHEL 계열) / Bottlerocket |
| Azure AKS | Ubuntu (기본) / Azure Linux (CBL-Mariner) |
| GCP GKE | Container-Optimized OS (Chromium 기반) / Ubuntu |
| 항목 | RHEL | Rocky Linux | Ubuntu LTS | Ubuntu Pro |
|---|
| 라이선스 비용 | 연 799 13,000+/서버 | 무료 | 무료 | 소규모 무료, 엔터프라이즈 유료 |
| 기술 지원 | Red Hat 24/7 | 커뮤니티 | 커뮤니티 | Canonical 24/7 |
| SLA | 1~4시간 응답 | 없음 | 없음 | 1시간 응답 |
| 보안 패치 | Red Hat Security | RHEL 동기화 | Canonical USN | 확장 보안 (12년) |
| 컴플라이언스 | FIPS, CC, STIG, HIPAA | FIPS (자체 인증) | CIS | FIPS, CIS, DISA-STIG |
| 교육·인증 | RHCSA, RHCE | - | - | CUA (Canonical) |
| 시나리오 | 연간 비용 (추정) |
|---|
| RHEL Standard (100대) | 80,000 130,000 |
| Rocky Linux + 외부 기술 지원 | 20,000 50,000 |
| Ubuntu LTS (커뮤니티) | $0 (인력 비용 별도) |
| Ubuntu Pro (100대) | 25,000 50,000 |
| 워크로드 | 추천 배포판 | 근거 |
|---|
| 금융·의료 (규제 산업) | RHEL | FIPS/CC/STIG 인증, 감사 이력 |
| SAP / Oracle DB | RHEL | 벤더 공식 지원 |
| 스타트업 웹 서비스 | Ubuntu LTS | 커뮤니티·최신 패키지·비용 |
| Kubernetes 워크로드 | Ubuntu 또는 Rocky | 클라우드 네이티브 생태계 |
| ML/AI 워크로드 | Ubuntu | NVIDIA 드라이버·CUDA 우선 지원 |
| 레거시 Java 서비스 | RHEL / Rocky | JBoss/WildFly 인증 |
| CI/CD 러너 | Ubuntu | GitHub Actions, GitLab Runner 기본 |
| 내부 도구 서버 | Rocky / AlmaLinux | RHEL 호환 + 무료 |
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
chmod +x migrate2rocky.sh
./migrate2rocky.sh -r
cat /etc/os-release
rpm -qa | grep rocky
dnf check
| 확인 항목 | 세부 내용 |
|---|
| 패키지 매핑 | apt 패키지 → dnf 패키지 이름 매핑 목록 작성 |
| 서비스 설정 | systemd 유닛 파일 경로·옵션 검증 |
| 보안 정책 | AppArmor 프로필 → SELinux 정책 변환 |
| 네트워크 | netplan → NetworkManager 전환 |
| 방화벽 | ufw 룰 → firewalld 룰 전환 |
| 자동화 스크립트 | Ansible playbook의 apt → dnf 모듈 교체 |
| 모니터링 | 에이전트 패키지·로그 경로 확인 |
| 백업/복구 | 스냅샷 또는 이미지 백업 후 전환 |
조직에 규제 컴플라이언스(FIPS, CC, STIG) 요구사항이 있는가?
├── Yes → RHEL (또는 Ubuntu Pro FIPS)
└── No
├── 벤더 인증이 필요한 상용 소프트웨어를 운영하는가? (SAP, Oracle 등)
│ ├── Yes → RHEL
│ └── No
│ ├── 24/7 벤더 기술 지원이 필요한가?
│ │ ├── Yes + 예산 있음 → RHEL 또는 Ubuntu Pro
│ │ └── No
│ │ ├── RHEL 호환이 필요한가? (사내 RPM, 기존 인프라)
│ │ │ ├── Yes → Rocky Linux / AlmaLinux
│ │ │ └── No → Ubuntu LTS
│ │ └──
│ └──
└──
"최고의 배포판"은 없다. 조직의 규제 요건, 기술 역량, 예산, 기존 인프라에 맞는 배포판이 올바른 선택이다. 핵심은 다음 세 가지다.
- 컴플라이언스가 요구되면 RHEL이 가장 안전한 선택이다.
- 비용을 줄이면서 RHEL 호환을 원하면 Rocky/AlmaLinux를 검토하라.
- 최신 에코시스템과 커뮤니티 활력을 원하면 Ubuntu LTS가 합리적이다.
어떤 배포판을 선택하든, 패치 관리·보안 정책·자동화는 배포판과 무관하게 반드시 갖춰야 할 기본기다.