
📌 FreeIPA 구축 가이드
- 1. FreeIPA로 리눅스 중앙 계정 관리(IdM) 시스템 구축 - (통합DNS 포함)
- 2. FreeIPA로 리눅스 중앙 계정 관리(IdM) 시스템 구축 - (DNS없이 설치)
- 3. 서버 접근 HBAC (Host-Based Access Control) 정책 구성
- 4. FreeIPA와 Windows Active Directory(AD) 간의 Cross-Forest Trust 설정
- 5. FreeIPA- 정책 관리 - user_add - 숫자로된 계정 생성 방법
- 6. FreeIPA 정책 관리- 사용자 등록과 권한 정책 등록 - sudo command
FreeIPA에서는 HBAC (Host-Based Access Control) 규칙을 이용해 *"누가 어느 서버에 접속할 수 있는지"를 제어하고, Sudo 규칙 (Sudo Rules)을 이용해 *"접속 후 어떤 명령어에 root 권한(sudo)을 행사할 수 있는지"를 중앙에서 관리합니다.
웹 UI와 CLI(터미널) 두 가지 방식을 모두 활용할 수 있으며, 여기서는 가장 직관적이고 표준적인 CLI 설정 방식을 기준으로 단계별 과정을 설명해 드리겠습니다.
🎯 시나리오 정의
- 사용자 그룹:
devops-team(속한 사용자:john) - 대상 서버 그룹:
web-servers(속한 서버:client.example.com) - 접속 제어(HBAC):
devops-team그룹만web-servers그룹의 서버들에 SSH 접속 허용 - Sudo 권한:
devops-team그룹은web-servers에서 모든 명령어를 root 권한으로 실행 (ALL=(ALL) ALL)
1. 사전 준비: 사용자 그룹 및 호스트 그룹 생성
규칙을 개별 사용자/서버 단위로 적용하면 관리가 복잡해지므로, 반드시 그룹 단위로 묶어서 관리하는 것이 베스트 프랙티스입니다.
# 1. Kerberos 관리자 티켓 발급
kinit admin
# 2. 사용자 그룹 생성 및 사용자 추가
ipa usergroup-add devops-team --desc="DevOps Engineers"
ipa usergroup-add-member devops-team --users=john
# 3. 호스트 그룹(서버 그룹) 생성 및 서버 등록
ipa hostgroup-add web-servers --desc="Web Application Servers"
ipa hostgroup-add-member web-servers --hosts=client.example.com
2. HBAC (호스트 기반 접근 제어) 설정
FreeIPA 기본 설치 시 allow_all이라는 "모든 사용자의 모든 서버 접속 허용" 규칙이 활성화되어 있습니다. 차단/허용 정책을 명확히 적용하려면 allow_all을 비활성화하고 전용 규칙을 만들어야 합니다.
Step 1. 기본 allow_all 규칙 비활성화
ipa hbacrule-disable allow_all
Step 2. 특정 그룹 전용 HBAC 규칙 생성 및 적용
# 1. HBAC 규칙 생성
ipa hbacrule-add allow_devops_web
# 2. 규칙에 사용자 그룹 추가
ipa hbacrule-add-user allow_devops_web --groups=devops-team
# 3. 규칙에 대상 호스트 그룹 추가
ipa hbacrule-add-host allow_devops_web --hostgroups=web-servers
# 4. 허용할 서비스 지정 (예: sshd, gdm 등 또는 모든 서비스)
ipa hbacrule-add-service allow_devops_web --hbacservices=sshd
💡 HBAC 동작 검증 (CLI 지원):
실제 접속을 테스트하기 전, FreeIPA 명령어로 정책이 올바르게 적용되는지 가상 테스트해 볼 수 있습니다.ipa hbac-test --user=john --host=client.example.com --service=sshd # 결과: "Access granted" 가 나와야 함
3. Sudo 권한 규칙 (Sudo Rules) 설정
접속 권한(HBAC)을 얻은 사용자가 서버 내부에서 sudo 명령을 통해 특정 혹은 전체 관리자 권한을 가질 수 있도록 설정합니다.
Step 1. Sudo 규칙 생성 및 매핑
# 1. Sudo 규칙 생성
ipa sudorule-add devops_sudo_all --desc="Allow DevOps full sudo access on Web Servers"
# 2. 주체(사용자 그룹) 지정
ipa sudorule-add-user devops_sudo_all --groups=devops-team
# 3. 대상(호스트 그룹) 지정
ipa sudorule-add-host devops_sudo_all --hostgroups=web-servers
# 4. 실행할 명령 범위 지정 (여기서는 모든 명령 허용)
ipa sudorule-add-allow-command devops_sudo_all --cmdgroups="All"
# 5. 어떤 계정 자격으로 실행할지 지정 (Root로 실행)
ipa sudorule-add-runasuser devops_sudo_all --users=root
4. 클라이언트(Client) 측 적용 및 캐시 갱신
FreeIPA 서버에서 설정한 HBAC 및 Sudo 규칙은 클라이언트의 SSSD (System Security Services Daemon)를 통해 주기적으로 동기화됩니다. 즉각적인 적용을 위해 클라이언트 서버에서 아래 작업을 수행합니다.
클라이언트 서버(client.example.com)에서의 작업
# SSSD 캐시 삭제 및 서비스 재시작 (즉시 반영)
sudo sssdctl cache-expire -E
sudo systemctl restart sssd
5. 최종 결과 검증
1) HBAC 접근 제어 검증
devops-team에 속하지 않은 다른 일반 계정으로 SSH 접속 시도 ➡️Permission denied(접속 차단)john계정으로 SSH 접속 시도 ➡️ 정상 접속 성공
2) Sudo 권한 검증
john 계정으로 client.example.com에 접속한 후 다음과 같이 검증합니다.
# 1. 자신에게 부여된 sudo 권한 목록 확인
sudo -l
# 출력 예시:
# User john may run the following commands on client:
# (root) ALL
# 2. sudo 명령 실행 테스트
sudo systemctl restart nginx
sudo whoami
# 출력: root
🌐 Web UI 이용 시 참고
터미널 대신 웹 브라우저([https://ipa.example.com](https://ipa.example.com))에서 작업하려면 다음 메뉴를 이용하세요.
| 기능 | Web UI 메뉴 경로 |
|---|---|
| HBAC (접속 제어) | Policy ➡️ Host-Based Access Control ➡️ HBAC Rules |
| Sudo 규칙 | Policy ➡️ Sudo ➡️ Sudo Rules |
| 호스트 그룹 | Identity ➡️ Hosts ➡️ Host Groups |
# ipa help topics #
automember Auto Membership Rule.
automount Automount
ca Manage Certificate Authorities
caacl Manage CA ACL rules.
cert IPA certificate operations
certmap Certificate Identity Mapping
certprofile Manage Certificate Profiles
config Server configuration
delegation Group to Group Delegation
dns Domain Name System (DNS)
domainlevel Raise the IPA Domain Level.
group Groups of users
hbac Host-based access control commands
hbactest Simulate use of Host-based access controls
host Hosts/Machines
hostgroup Groups of hosts.
idp External Identity Provider References
idrange ID ranges
idviews ID Views
krbtpolicy Kerberos ticket policy
location IPA locations
migration Migration to IPA
misc Misc plug-ins
netgroup Netgroups
otp One time password commands
passkeyconfig Passkey configuration
passwd Set a user's password
permission Permissions
ping Ping the remote IPA server to ensure it is running.
pkinit Kerberos PKINIT feature status reporting tools.
privilege Privileges
pwpolicy Password policy
radiusproxy RADIUS Proxy Servers
realmdomains Realm domains
role Roles
schema API Schema
selfservice Self-service Permissions
selinuxusermap SELinux User Mapping
server IPA servers
serverrole IPA server roles
service Services
servicedelegation Service Constrained Delegation
stageuser Stageusers
subid Subordinate ids
sudo commands for controlling sudo configuration
sysaccounts System accounts
topology Topology
trust Cross-realm trusts
user Users
vault Vaults'InfraPlatform' 카테고리의 다른 글
| FreeIPA- 정책 관리 - user_add - 숫자로된 계정 생성 방법 (0) | 2026.07.28 |
|---|---|
| FreeIPA 설치 - 자체 DNS 통합 없이 구성하고 운영하는 방법 (0) | 2026.07.28 |
| FreeIPA와 Windows Active Directory(AD) 간의 Cross-Forest Trust 설정 (3) (1) | 2026.07.24 |
| [RHEL/Rocky Linux] FreeIPA로 리눅스 중앙 계정 관리(IdM) 시스템 구축하기 (1) (0) | 2026.07.24 |
| 🚀 Windows WSL + Podman Desktop 로 Ollama + Open WebUI GPU 챗봇 구축하기 (RTX 4070 노트북 (0) | 2026.04.24 |
| 윈도우에서 Podman 설치 및 활용하기 (0) | 2026.04.21 |
| [Docker 탈출] 오프라인 환경에서 Podman으로 Ollama AI 모델 관리하기 (0) | 2026.04.20 |