본문 바로가기
[Microsoft] Cyber Security School 7기

클라우드 기반 윈도우/리눅스 서버 과제-3...IDM(FreeIPA), Active Directory 과제

by juyeon2110 2026. 5. 19.

과제 1

web_devs 그룹은 web.kcci.edu에서만 SSH 접속 가능하도록 구성하고, mysql.kcci.edu 접속은 차단하라.

ipa hbacrule-add allow_web_devs \ --desc="Allow web_devs to access web.kcci.edu" ipa hbacrule-add-user allow_web_devs --groups=web_devs ipa hbacrule-add-host allow_web_devs --hostgroups=web_servers ipa hbacrule-add-service allow_web_devs --hbacsvcs=sshd

과제 2

dba_users 그룹은 mysql.kcci.edu에서만 MySQL 서비스를 재시작할 수 있게 구성하라.

#HBAC Rule ipa hbacrule-add allow_dba_users \ --desc="Allow dba_users to access mysql.kcci.edu" ipa hbacrule-add-user allow_dba_users --groups=dba_users ipa hbacrule-add-host allow_dba_users --hostgroups=mysql_servers ipa hbacrule-add-service allow_dba_users --hbacsvcs=sshd ipa hbacrule-add-service allow_dba_users --hbacsvcs=sudo #Sudo Rule ipa sudocmd-add "/usr/bin/systemctl restart mysqld" ipa sudorule-add allow_dba_restart_mysql \ --desc="Allow dba_users to restart mysqld on mysql.kcci.edu" ipa sudorule-add-user allow_dba_restart_mysql --groups=dba_users ipa sudorule-add-host allow_dba_restart_mysql --hostgroups=mysql_servers ipa sudorule-add-allow-command allow_dba_restart_mysql \ --sudocmds="/usr/bin/systemctl restart mysqld" ipa sudorule-add-runasuser allow_dba_restart_mysql --users=root ipa sudorule-add-option allow_dba_restart_mysql --sudooption='!authenticate'

과제 3

linux_admins 그룹은 모든 Linux 서버에서 패스워드 없이 모든 sudo 명령을 사용할 수 있게 구성하라.

#HBAC Rule ipa hbacrule-add allow_linux_admins \ --desc="Allow linux_admins to access all servers" ipa hbacrule-add-user allow_linux_admins --groups=linux_admins ipa hbacrule-mod allow_linux_admins --hostcat=all ipa hbacrule-add-service allow_linux_admins --hbacsvcs=sshd ipa hbacrule-add-service allow_linux_admins --hbacsvcs=sudo #Sudo Rule ipa sudorule-add allow_linux_admins_sudo \ --desc="Allow linux_admins to run all commands on all servers" ipa sudorule-add-user allow_linux_admins_sudo --groups=linux_admins ipa sudorule-mod allow_linux_admins_sudo --hostcat=all --cmdcat=all ipa sudorule-add-option allow_linux_admins_sudo --sudooption='!authenticate'

과제 4

AD 사용자 park, hong, kim이 각각 IdM POSIX 그룹 권한을 상속받는지 검증하라.

과제 5

hong@ad.kcci.edu 사용자가 mysql.kcci.edu에 접속하지 못하는 이유를 HBAC rule 관점에서 설명하라.

hong@ad.kcci.edu 는 AD의 Web_Devs 그룹 소속으로, IDM의 web_devs 그룹 권한을 상속받는다.

현재 설정된 HBAC Rule은 다음과 같다:

allow_web_devs → web_devs 그룹은 web.kcci.edu만 접속 허용 allow_dba_users → dba_users 그룹만 mysql.kcci.edu 접속 허용 allow_linux_admins → linux_admins 그룹만 모든 서버 접속 허용

따라서 hong@ad.kcci.edu 가 mysql.kcci.edu 에 접속을 시도할 경우:

allow_web_devs → mysql 서버가 대상이 아니므로 불일치 allow_dba_users → hong은 dba_users 그룹이 아니므로 불일치 allow_linux_admins → hong은 linux_admins 그룹이 아니므로 불일치

매칭되는 HBAC Rule이 없으므로 접속이 거부된다.

과제 6

Linux Admin 권한 검증

linux_admins 그룹의 la01, la02와 AD 사용자 park이 다음 권한을 갖도록 구성하고 검증하시오.

대상 서버: web.kcci.edu, mysql.kcci.edu

SSH 접속: 허용

sudo 권한: 모든 명령 허용

sudo 인증: 패스워드 없이 허용

검증 명령:

ssh la01@web.kcci.edu

sudo -l

sudocat /etc/shadow

la01 검증

la02 검증

park 검증

과제 7

Web Developer sudo 제한

web_devs 그룹은 web.kcci.edu에서 NGINX 서비스만 관리할 수 있도록 sudo Rule을 구성하시오.

허용 명령:

/usr/bin/systemctl status nginx

/usr/bin/systemctlstart nginx

/usr/bin/systemctlstop nginx

/usr/bin/systemctlrestart nginx

/usr/bin/systemctl reload nginx

차단되어야 할 명령:

sudocat /etc/shadow

sudo systemctl restart sshd

#NGINX sudo 명령어 등록 ipa sudocmd-add "/usr/bin/systemctl status nginx" ipa sudocmd-add "/usr/bin/systemctl start nginx" ipa sudocmd-add "/usr/bin/systemctl stop nginx" ipa sudocmd-add "/usr/bin/systemctl restart nginx" ipa sudocmd-add "/usr/bin/systemctl reload nginx" #sudo command group 생성 ipa sudocmdgroup-add nginx_cmds \ --desc="NGINX management commands" ipa sudocmdgroup-add-member nginx_cmds \ --sudocmds="/usr/bin/systemctl status nginx" \ --sudocmds="/usr/bin/systemctl start nginx" \ --sudocmds="/usr/bin/systemctl stop nginx" \ --sudocmds="/usr/bin/systemctl restart nginx" \ --sudocmds="/usr/bin/systemctl reload nginx" #sudo Rule 생성 ipa sudorule-add allow_web_devs_nginx \ --desc="Allow web_devs to manage nginx on web.kcci.edu" ipa sudorule-add-user allow_web_devs_nginx --groups=web_devs ipa sudorule-add-host allow_web_devs_nginx --hostgroups=web_servers ipa sudorule-add-allow-command allow_web_devs_nginx --sudocmdgroups=nginx_cmds ipa sudorule-add-option allow_web_devs_nginx --sudooption='!authenticate' #HBAC sudo 서비스 추가 ipa hbacrule-add-service allow_web_devs --hbacsvcs=sudo

과제 8

Jump Server 강제 (Bastion Host RBAC)

다음 정책을 구현하시오.

직접 접속 금지:

pc1 → web/mysql 직접 SSH 차단

허용:

pc1 → idm → web/mysql

즉,

모든 사용자는 idm.kcci.edu를 반드시 거쳐야 함

💡 구현 방식:

HBAC + firewall + sshd_config (AllowUsers, Match)또는 ProxyJump

#web 서버 설정 # sshd_config 설정 vi /etc/ssh/sshd_config # 맨 아래 추가: AllowUsers *@10.10.11.10 systemctl restart sshd # firewall 설정 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.11.10" service name="ssh" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" drop' firewall-cmd --reload exit
#mysql 서버 설정 # sshd_config 설정 vi /etc/ssh/sshd_config # 맨 아래 추가: AllowUsers *@10.10.11.10 systemctl restart sshd # firewall 설정 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.11.10" service name="ssh" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" drop' firewall-cmd --reload exit

pc1 → web/mysql 직접 SSH 차단됨

IDM에서 접속 → 성공