Ansible Tower / AWX / Automation controller Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ansible Tower ๋๋ ๊ทธ ์คํ์์ค ๋ฒ์ AWX๋ Ansible์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋์๋ณด๋ ๋ฐ REST API๋ก๋ ์๋ ค์ ธ ์์ต๋๋ค. ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด, ์์ ์์ฝ ๋ฐ ๊ทธ๋ํฝ ์ธ๋ฒคํ ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํตํด ํ๋์ ์ธ UI์์ Ansible ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. Tower์ REST API ๋ฐ ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ ํ์ฌ ๋๊ตฌ ๋ฐ ์ํฌํ๋ก์ฐ์ ํตํฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
Automation Controller๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ถ Ansible Tower์ ์ต์ ๋ฒ์ ์ ๋๋ค.
์ด์ ๋ฐ๋ฅด๋ฉด, Ansible Tower์ AWX์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ฐ์ ์ง์์ด๋ฉฐ, Ansible Tower๋ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด, ์ฌ์ฉ์ ์ ์ API ์ง์ ๋ฐ ์ฌ์ฉ์ ์ ์ ์ํฌํ๋ก์ฐ์ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Web Interface: ์ฌ์ฉ์๊ฐ ์ธ๋ฒคํ ๋ฆฌ, ์๊ฒฉ ์ฆ๋ช , ํ ํ๋ฆฟ ๋ฐ ์์ ์ ๊ด๋ฆฌํ ์ ์๋ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค์ ๋๋ค. ์ง๊ด์ ์ผ๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ ์๋ํ ์์ ์ ์ํ์ ๊ฒฐ๊ณผ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ์๊ฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
REST API: ์น ์ธํฐํ์ด์ค์์ ํ ์ ์๋ ๋ชจ๋ ์์ ์ REST API๋ฅผ ํตํด์๋ ์ํํ ์ ์์ต๋๋ค. ์ด๋ AWX/Tower๋ฅผ ๋ค๋ฅธ ์์คํ ๊ณผ ํตํฉํ๊ฑฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ธํฐํ์ด์ค์์ ์ํํ๋ ์์ ์ ์คํฌ๋ฆฝํธํํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
Database: AWX/Tower๋ ๊ตฌ์ฑ, ์์ ๊ฒฐ๊ณผ ๋ฐ ๊ธฐํ ํ์ํ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค(์ผ๋ฐ์ ์ผ๋ก PostgreSQL)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
RabbitMQ: AWX/Tower๊ฐ ๋ค์ํ ๊ตฌ์ฑ ์์ ๊ฐ์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฉ์์ง ์์คํ ์ ๋๋ค. ํนํ ์น ์๋น์ค์ ์์ ์คํ๊ธฐ ๊ฐ์ ํต์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
Redis: Redis๋ ์บ์ ๋ฐ ์์ ํ์ ๋ฐฑ์๋ ์ญํ ์ ํฉ๋๋ค.
Inventories: ์ธ๋ฒคํ ๋ฆฌ๋ ์์ (Ansible ํ๋ ์ด๋ถ)์ ์คํํ ์ ์๋ ํธ์คํธ(๋๋ ๋ ธ๋)์ ๋ชจ์์ ๋๋ค. AWX/Tower๋ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ ์ํ๊ณ ๊ทธ๋ฃนํํ ์ ์์ผ๋ฉฐ, AWS, Azure ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์์คํ ์์ ํธ์คํธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๋์ ์ธ๋ฒคํ ๋ฆฌ๋ ์ง์ํฉ๋๋ค.
Projects: ํ๋ก์ ํธ๋ ๋ณธ์ง์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ ์์คํ (์: Git)์์ ์์ค๋ Ansible ํ๋ ์ด๋ถ์ ๋ชจ์์ผ๋ก, ํ์ํ ๋ ์ต์ ํ๋ ์ด๋ถ์ ๊ฐ์ ธ์ต๋๋ค.
Templates: ์์ ํ ํ๋ฆฟ์ ํน์ ํ๋ ์ด๋ถ์ด ์ด๋ป๊ฒ ์คํ๋ ๊ฒ์ธ์ง ์ ์ํ๋ฉฐ, ์ธ๋ฒคํ ๋ฆฌ, ์๊ฒฉ ์ฆ๋ช ๋ฐ ์์ ์ ๋ํ ๊ธฐํ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
Credentials: AWX/Tower๋ SSH ํค, ๋น๋ฐ๋ฒํธ ๋ฐ API ํ ํฐ๊ณผ ๊ฐ์ ๋น๋ฐ์ ๊ด๋ฆฌํ๊ณ ์ ์ฅํ๋ ์์ ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ์ ์์ ํ ํ๋ฆฟ๊ณผ ์ฐ๊ฒฐ๋์ด ํ๋ ์ด๋ถ์ด ์คํ๋ ๋ ํ์ํ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง๋๋ค.
Task Engine: ๋ง๋ฒ์ด ์ผ์ด๋๋ ๊ณณ์ ๋๋ค. ์์ ์์ง์ Ansible์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ์์ผ๋ฉฐ ํ๋ ์ด๋ถ์ ์คํํ๋ ์ญํ ์ ํฉ๋๋ค. ์์ ์ ์์ ์์ง์ ๋ฐฐํฌ๋๋ฉฐ, ์ง์ ๋ ์ธ๋ฒคํ ๋ฆฌ์ ๋ํด ์ง์ ๋ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ Ansible ํ๋ ์ด๋ถ์ ์คํํฉ๋๋ค.
Schedulers and Callbacks: AWX/Tower์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ผ๋ก, ์์ ์ ํน์ ์๊ฐ์ ์คํํ๋๋ก ์์ฝํ๊ฑฐ๋ ์ธ๋ถ ์ด๋ฒคํธ์ ์ํด ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
Notifications: AWX/Tower๋ ์์ ์ ์ฑ๊ณต ๋๋ ์คํจ์ ๋ฐ๋ผ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋ฉ์ผ, Slack ๋ฉ์์ง, ์นํ ๋ฑ ๋ค์ํ ์๋ฆผ ์๋จ์ ์ง์ํฉ๋๋ค.
Ansible Playbooks: Ansible ํ๋ ์ด๋ถ์ ๊ตฌ์ฑ, ๋ฐฐํฌ ๋ฐ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. ์๋ํ๋๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์์คํ ์ ์ํ๋ ์ํ๋ฅผ ์ค๋ช ํฉ๋๋ค. YAML๋ก ์์ฑ๋๋ฉฐ, ํ๋ ์ด๋ถ์ Ansible์ ์ ์ธ์ ์๋ํ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ, ์์ ๋ฐ ์คํํด์ผ ํ ๋จ๊ณ๋ฅผ ์ค๋ช ํฉ๋๋ค.
User Interaction: ์ฌ์ฉ์๋ ์น ์ธํฐํ์ด์ค ๋๋ REST API๋ฅผ ํตํด AWX/Tower์ ์ํธ์์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ AWX/Tower๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ํ๋ก ํธ์๋ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค.
Job Initiation:
์ฌ์ฉ์๊ฐ ์น ์ธํฐํ์ด์ค ๋๋ API๋ฅผ ํตํด ์์ ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์์ํฉ๋๋ค.
์์ ํ ํ๋ฆฟ์๋ ์ธ๋ฒคํ ๋ฆฌ, ํ๋ก์ ํธ(ํ๋ ์ด๋ถ ํฌํจ) ๋ฐ ์๊ฒฉ ์ฆ๋ช ์ ๋ํ ์ฐธ์กฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
์์ ์์ ์, ์คํ์ ์ํด ์์ ์ ๋๊ธฐ์ด์ ์ถ๊ฐํ๊ธฐ ์ํด AWX/Tower ๋ฐฑ์๋์ ์์ฒญ์ด ์ ์ก๋ฉ๋๋ค.
Job Queuing:
RabbitMQ๋ ์น ๊ตฌ์ฑ ์์์ ์์ ์คํ๊ธฐ ๊ฐ์ ๋ฉ์์ง์ ์ฒ๋ฆฌํฉ๋๋ค. ์์ ์ด ์์๋๋ฉด RabbitMQ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์ง์ ๋ฉ์์ง๊ฐ ์ ์ก๋ฉ๋๋ค.
Redis๋ ์คํ ๋๊ธฐ ์ค์ธ ์์ ์ ๊ด๋ฆฌํ๋ ์์ ํ์ ๋ฐฑ์๋ ์ญํ ์ ํฉ๋๋ค.
Job Execution:
์์ ์์ง์ด ๋๊ธฐ์ด์ ์๋ ์์ ์ ๊ฐ์ ธ์ต๋๋ค. ์์ ๊ณผ ๊ด๋ จ๋ ํ๋ ์ด๋ถ, ์ธ๋ฒคํ ๋ฆฌ ๋ฐ ์๊ฒฉ ์ฆ๋ช ์ ๋ํ ํ์ํ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์ํฉ๋๋ค.
๊ด๋ จ ํ๋ก์ ํธ์์ ๊ฒ์๋ Ansible ํ๋ ์ด๋ถ์ ์ฌ์ฉํ์ฌ ์์ ์์ง์ ์ ๊ณต๋ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ์ธ๋ฒคํ ๋ฆฌ ๋ ธ๋์ ๋ํด ํ๋ ์ด๋ถ์ ์คํํฉ๋๋ค.
ํ๋ ์ด๋ถ์ด ์คํ๋๋ ๋์ ์คํ ์ถ๋ ฅ(๋ก๊ทธ, ์ฌ์ค ๋ฑ)์ด ์บก์ฒ๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค.
Job Results:
ํ๋ ์ด๋ถ ์คํ์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ(์ฑ๊ณต, ์คํจ, ๋ก๊ทธ)๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค.
์ฌ์ฉ์๋ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ฑฐ๋ REST API๋ฅผ ํตํด ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.
์์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์๋ฆผ์ด ์ ์ก๋์ด ์ฌ์ฉ์ ๋๋ ์ธ๋ถ ์์คํ ์ ์์ ์ํ๋ฅผ ์๋ฆด ์ ์์ต๋๋ค. ์๋ฆผ์ ์ด๋ฉ์ผ, Slack ๋ฉ์์ง, ์นํ ๋ฑ์ด ๋ ์ ์์ต๋๋ค.
External Systems Integration:
์ธ๋ฒคํ ๋ฆฌ๋ ์ธ๋ถ ์์คํ ์์ ๋์ ์ผ๋ก ์์ฑํ ์ ์์ด AWX/Tower๊ฐ AWS, Azure, VMware ๋ฑ๊ณผ ๊ฐ์ ์์ค์์ ํธ์คํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ(ํ๋ ์ด๋ถ)๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์์ ๊ฐ์ ธ์ฌ ์ ์์ด ์์ ์คํ ์ค ์ต์ ํ๋ ์ด๋ถ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค์ผ์ค๋ฌ ๋ฐ ์ฝ๋ฐฑ์ ๋ค๋ฅธ ์์คํ ์ด๋ ๋๊ตฌ์ ํตํฉํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ด AWX/Tower๊ฐ ์ธ๋ถ ํธ๋ฆฌ๊ฑฐ์ ๋ฐ์ํ๊ฑฐ๋ ๋ฏธ๋ฆฌ ์ ํด์ง ์๊ฐ์ ์์ ์ ์คํํ ์ ์๊ฒ ํฉ๋๋ค.
Following the docs ๋ฅผ ๋ฐ๋ฅด๋ฉด docker-compose๋ฅผ ์ฌ์ฉํ์ฌ AWX๋ฅผ ์คํํ ์ ์์ต๋๋ค:
๊ฐ์ฅ ๊ถํ์ด ๋์ ์ญํ ์ ์์คํ ๊ด๋ฆฌ์์ ๋๋ค. ์ด ์ญํ ์ ๊ฐ์ง ์ฌ๋์ ๋ชจ๋ ๊ฒ์ ์์ ํ ์ ์์ต๋๋ค.
ํ์ดํธ ๋ฐ์ค ๋ณด์ ๊ฒํ ๋ฅผ ์ํด์๋ ์์คํ ๊ฐ์ฌ์ ์ญํ ์ด ํ์ํ๋ฉฐ, ์ด ์ญํ ์ ๋ชจ๋ ์์คํ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ง๋ง ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค. ๋ค๋ฅธ ์ต์ ์ ์กฐ์ง ๊ฐ์ฌ์ ์ญํ ์ ์ป๋ ๊ฒ์ด์ง๋ง, ๋ค๋ฅธ ์ญํ ์ ์ป๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค.
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE) GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE)