# κΈμ μμνλ©°
Β μμ§ μ°μ΄μ΄μ§λ§ λ²μ¨λΆν° ν° μ΄λ²€νΈ νλκ° μ§λκ°μ΅λλ€,, μ 보보μμ 곡λΆνλ μ¬λμ΄λΌλ©΄ ν λ²μ―€ λ€μ΄λ΄€μ CTF λνλ₯Ό μ§μ κ°μ΅νμ¬ λ¬Έμ μ μλΆν° λν μ΄μκΉμ§ λͺ¨λ 맑μ μ§ννμμ΅λλ€. λνλ₯Ό zeroλΆν° μμνμ¬ λ§μΉκΈ°κΉμ§ μ μκ²λ ν° μ μ μ΄λΌκ³ μκ°νκΈ°λ νμκ³ , CTF μ΄μμ νλ©° μ¬λ¬ λΈλ‘κ·Έμ κΈλ€μ μ°Έκ³ νμμ§λ§ μ΄μμ κ΄ν΄ μμ νκ² μ 리λμ΄ μλ κΈμ λ§μ§ μλ€κ³ μκ°νμ¬ μ ν¬μ κ°μ΄ 보μμ 곡λΆνλ λμ리λ μ€ν°λ λ±κ³Ό μ°λ¦¬ λμ리λ₯Ό μ΄μ΄ λκ° μ΄μμ§ λΆλ€μκ² μ΄ κΈμ΄ κ°μ΄λκ° λμμΌλ©΄ νλ λ°λμ μ΄λ κ² κΈμ μμ±νκ² λμμ΅λλ€.
# IxCμ μμ
Β μ λ νμ¬ μ€μλνκ΅ μννΈμ¨μ΄νλΆ νκ³Όμμ μ 보보μμ 곡λΆνλ CAUtionμ νμ₯μ λ§‘κ³ μμ΅λλ€. μ§λ 10μμ κ°μ νκ΅ μ°μ 보μνκ³Ό μ 보보μ νμ λμ리 ISANG νμ₯λκ³Ό μ°λ½μ΄ λΏμ μ’μ κΈ°νλ‘ λ λμλ¦¬κ° μ°ν©νμ¬ CTFλ₯Ό κ°μ΅νκΈ°λ‘ νμμ΅λλ€. λνλͺ μ ISANG X CAUtion CTF, μ€μ¬μ IxC CTFλ‘ μ νμμ΅λλ€.
λν κ°μ΅μ μμ λ° λͺ©νλ λλ ·νμμ΅λλ€. κ° λμ리λ§λ€ 보μ 곡λΆλ₯Ό μ΄μ λ§ μμν λΆμμ΄ λλΆλΆμ μ΄λ£¨κ³ μκ³ , κ·Έλ κΈ°μ CTF κ²½νμ΄ μλ λΆμμ΄ λ§μμ΅λλ€. μ΄λ¬ν Newbieμκ² CTF κ²½νμ μ 곡νμ¬ μ΄μ κΉμ§ κ°μ 곡λΆν λ΄μ©μ μμ©νμ¬ μ μ©ν΄λ³΄κ³ , μ¬λ―Έλ₯Ό λΆμΌ μ μλλ‘ νλ κ²μ΄ λνμ μ·¨μ§μμ΅λλ€. λ°λΌμ μμ€ λμ λ¬Έμ λ€λ³΄λ€λ μ¬μ΄ λ¬Έμ λ€μ μμ£Όλ‘ κ΅¬μ±νκ³ CTFλΌλ λνμ μ§ν λ°©μμ κ²½νν μ μλλ‘ νμμ΅λλ€.
μ΄λ² λνλ μ΄μμ§ λͺ¨λ CTF μ΄μ κ²½νμ΄ μμκ³ , μ²μμΌλ‘ μ°ν©νμ¬ μ§ννλ λνμ΄κΈ° λλ¬Έμ μ΄μμ΄ λ―Έμν κ²μΌλ‘ μμλμ΄ λν μ°Έκ°μλ₯Ό μΈλΆμΈ λμ κ° λμ리 λΆμμΌλ‘ νμ νμμ΅λλ€. μλ§ μ΄λ² λνλ₯Ό κ³κΈ°λ‘ μ°ν© CTFλ₯Ό μ°λ‘ νμ¬λ‘ μ§ννκ² λ κ² κ°μλ° μ΄νμλ μ΄μ μ€λ ₯μ κ°κ³ λ¦μ λ λ°μ λ λνκ° λμμΌλ©΄ νλ λ°λμ λλ€.
λν μ΄μμ§μ κ° λμ리μμ CTFλ₯Ό μ΄μνκΈ° μν μΈμμ λͺ¨μ μ΄ 16λͺ μΌλ‘ ꡬμ±νμμ΅λλ€. μ΄μμ§μ λΆμΌλ³ λ¬Έμ μΆμ ν, μΉ μλ² μ΄μν, ν보ν, Docker νμΌλ‘ νμ λλμ΄ μΉ΄μΉ΄μ€ν‘ μ±ν λ°©, Discord, Notionμ μ΄μ©νμ¬ νμ νμμ΅λλ€.
# λν μ€λΉ
π μμ° λ° μ§μ
μ°μ λν μ§νμ μν΄μ μμ°μ΄ λ€μ΄κ°μΌ νλ λΆλΆμ λ€μκ³Ό κ°μμ΅λλ€.
- λν μλ²
- μκΈ λ° μν
- λλ©μΈ
λ€ννλ CAUtionμ NAVER D2λ‘λΆν° μ§μμ λ°κ³ μμκ³ ISANGμ μ€μλνκ΅ LINC 3.0 μ¬μ λ¨μΌλ‘λΆν° μ§μμ λ°κ³ μμ΄ μ§μκ³Ό λλΆμ΄ μμΉ μμ°μΌλ‘ λͺ¨λ ν΄κ²°ν μ μμμ΅λλ€. λ€μ΄λ² ν΄λΌμ°λ νλ«νΌμ μλ²μ μ½ 80λ§μ μ΄μΉμ μνμ μ§μ λ°μκ³ λμ리 μμΉ μμ°μΌλ‘ λλ©μΈμ ꡬμ νμμ΅λλ€. μ§μν΄μ£Όμ λ κ³³μ λͺ¨λ μ§μ¬μΌλ‘ κ°μ¬λ립λλ€ ..π
π λν μλ²
λν μλ²λ μμμ μΈκΈνλ―μ΄ NAVER D2λ‘λΆν° μ§μμ λ°μκ³ , λ€μ΄λ² ν΄λΌμ°λ νλ«νΌμμ μ 곡νλ [Standard] 4vCPU, 16GB Mem, 50GB Disk [g2] μ¬μμ ν΄λΌμ°λ μλ²λ₯Ό μ΄μ©νμμ΅λλ€.
ν΄λΌμ°λ μλ²λ λν νμλ CAUtionμμ μ¬μ©νκΈ° λλ¬Έμ, μ΄μμ§μ μλ² μ μ΄λ₯Ό μν΄ μ μ© μ¬μ©μλ₯Ό λ§λ€μ΄ sshλ‘ μ κ·Όν¨μΌλ‘μ¨ μλ²λ₯Ό μ μ΄νλλ‘ νμμ΅λλ€.
π ν보
ν보λ λΉ μ Έμλ μλλ λν μ€λΉμ¬νμ΄μκ³ ν보 λ°©λ², ν보 λμ, ν보 λͺ©μ λ±λ± μ¬λ¬ μ΄μΌκΈ°κ° μμ§λ§ λνμ μ±κ²©μ μν₯μ λ°κΈ° λλ¬Έμ μλ΅νλλ‘ νκ² μ΅λλ€.
π CTFd
CTFλ μ체 νλ«νΌμ μ μνλ κ²λ λ°©λ²μ΄κ² μ§λ§ κ°μ₯ μ λͺ ν νλ«νΌμΈ CTFd μλΉμ€λ₯Ό μ΄μ©νμμ΅λλ€. λ΄λΆμ μΌλ‘ λ€μν κΈ°λ₯κ³Ό μ μ©ν κΈ°λ₯μ΄ μ΄λ―Έ ꡬμΆλμ΄ μκΈ°μ CTFdλ₯Ό μ΄μ©νλ κ²μ μΆμ²λ립λλ€. ~ CTFd Docs
1) Deployment
μ¬κΈ°μλ CTFdλ₯Ό ꡬμΆνλ λ°©λ²μ μ€λͺ λλ¦¬κ² μ΅λλ€. μ ν¬λ dockerλ₯Ό μ΄μ©νμ¬ CTFd μ¬μ΄νΈλ₯Ό ꡬλνμμ΅λλ€.
- CTFd github ν΄λ‘
1
git clone https://github.com/CTFd/CTFd.git
CTFd/docker-compose.yml
λ₯Ό μλ§κ² μμ - λ€λ₯Έ λΈλ‘κ·Έ λ±μμλ
SECRET_KEY
νλλ₯Ό μΆκ°νκ³ μμμ κ°μ μ€μ νλΌκ³ νμλλ°, μμ΄λ μ€νμ΄ λκΈ΄ νλ κ² κ°μ΅λλ€..?
- docker-composeλ₯Ό μ΄μ©νμ¬ μ»¨ν
μ΄λ μμ±
1
sudo docker-compose up
μ λ μ²μ μ€νν λ μ¬λ¬ μ€λ₯κ° λ°μνμ΅λλ€. pip, openssl λ±λ±.. ν΄λΉ μ€λ₯λ€μ κ³ μΉ νμ μ μ λμνλμ§ νμΈν©λλ€. (λ³΄ν΅ μ€μΉλμ΄ μμ§ μκ±°λ λ²μ μ€λ₯μμ΅λλ€..)
- μ μμ μΌλ‘ μ¬μ΄νΈμ μ μμ΄ κ°λ₯νλ©΄ dockerλ₯Ό λ°±κ·ΈλΌμ΄λλ‘ μ€ν
1
sudo docker-compose up -d
μ£Όμ΄μ§
docker-compose.yml
μμ μ΄λ―Έ volumesλ₯Ό κ΄λ¦¬νκΈ° λλ¬Έμ μλ²κ° κΊΌμ Έ docker 컨ν μ΄λκ° down λμ΄λ λ€μ 컨ν μ΄λ μμ± μμ μ μ₯λ DBμμ μ 보λ₯Ό λΆλ¬μ΅λλ€.νΉμ CTFd λ΄λΆμμ μ체 λ°±μ μμ€ν μ μ 곡ν©λλ€. μλμμ λ€μ λ€λ£¨κ² μ΅λλ€.
2) Settings
CTFd 컨ν μ΄λκ° μμ±λ μ΄νμ CTFdμμ μ 곡νλ κΈ°λ³Έ μΈν μ λ§μΉλ©΄ λν μ¬μ΄νΈκ° λμν©λλ€. μ£Όλ‘ μ¬μ©νμλ κΈ°λ₯μ μλμ μ 리νκ² μ΅λλ€.
Pages
Notification
Configuration
- Appearance: CTF λνλͺ , μ€λͺ μ€μ κ°λ₯
- Theme: Logo, Icon, Header, Footer λ±μ μ€μ κ°λ₯.
1 2 3 4 5
<style> :not(i) { font-family: 'LINESeedKR-Bd' !important; } </style>
Tip. μμ κ°μ μ½λλ₯Ό Headerμ μ½μ νλ©΄ μ¬μ΄νΈ μ 체 κΈκΌ΄μ λ³κ²½ν μ μμ΅λλ€.
Custom Fields : λν μ¬μ΄νΈ κ°μ μ μ°Έμ¬μμ μΆκ° μ 보λ₯Ό μ λ ₯ λ°μ μ μλλ‘ μ€μ κ°λ₯. IxCλ λμ리 λΆμλ§ μ°Έμ¬ν μ μμκΈ°μ μ΄λ¦, νλ², μμμ μ λ ₯ λ°λλ‘ νμ¬ κ²μ¦νμμ΅λλ€.
Backup : CTFdμ νμ¬ μνλ₯Ό μ μ₯ν zipνμΌμ μΆμΆνκ³ , μ μ₯λ zipνμΌμ import ν μ μμ΅λλ€. Dockerμμ λ³Όλ₯¨μ μ€μ ν΄μ£Όμ΄ λ³λ€λ₯Έ λ°±μ μ΄ νμ μμμ§λ§ νΉμ λͺ¨λ₯Ό μ¬νλ₯Ό λλΉνμ¬ λν κΈ°κ° λμ μ£ΌκΈ°μ μΌλ‘ λ°±μ μ νμ¬ λ Έμ μ μ μ₯νμμ΅λλ€.
π DNS
DNSλ λ€μκ³Ό κ°μ μμλ‘ μ€μ νμμ΅λλ€.
κ°λΉμμμ λλ©μΈ ꡬμ
λ€μ΄λ² ν΄λΌμ°λ - Global DNSμ κ°λΉμμμ λ±λ‘ν λλ©μΈ λ±λ‘. λ μ½λ κ°μΌλ‘λ μλ²μ IP μ£Όμλ₯Ό λ£μ΄μ€λλ€.
- λ€μ μλ² νμΈ
λ€μ΄λ² ν΄λΌμ°λμμλ λ€μ λ κ°λ₯Ό λ€μμλ²λ‘ μ 곡ν©λλ€.
ns1-1.ns-ncloud.com
/ns1-2.ns-ncloud.com
- λλ©μΈμΌλ‘ μ μ κ°λ₯
Tip. IxCμμλ λ€μκ³Ό κ°μ΄ λ³μΉ(μλΈ λλ©μΈ)μ μ€μ νμ¬ λ¬Έμ λ³λ‘ μ§κ΄μ μΈ λλ©μΈμ μ¬μ©ν μ μλλ‘ μ€μ νμμ΅λλ€. ex)
web.isangxcaution.xyz:1234
π λ¬Έμ μ μ
λ¬Έμ μ μμ 첫 νμ λ λΆμΌλ³λ‘ μΆμ ν λ¬Έμ μλ₯Ό μ νκ³ κ° λΆμΌλ³λ‘ νμνμ¬ λ¬Έμ λ₯Ό μΆμ νμμ΅λλ€. μ²μ λͺ©νν μΆμ λ¬Έμ μλ 33κ°μμΌλ μ΄μ λμΉλ μ΄μμ§ λΆλ€κ»μ λ¨ 7λͺ μ μ΄μμ§μ΄ μ΄ 44κ°μ λ¬Έμ λ₯Ό μ μνμμ΅λλ€..π λ¬Έμ κ° λ€ λ§λ€μ΄μ§κ³ λμλ λ¬Έμ κ° λ§λ€κ³ μκ°νμμΌλ λ§μ°¬κ°μ§λ‘ μ΄μ μ μΈ μ°Έκ°μλΆλ€κ»μ 2κ°μ λ¬Έμ λ₯Ό λ¨κΈ°κ³ λͺ¨λ νΈμ ¨μ΅λλ€..π
1) Deployment
CTFλ ν΄νΉλ°©μ΄λνμ μΌλ°μ μΈ μ§ν λ°©μμΌλ‘, νΉμ μλΉμ€λ νλ‘κ·Έλ¨μ λμμΌλ‘ μ·¨μ½μ μ μ°Ύμλ΄μ΄ μ¨κ²¨μ§ νλκ·Έ(Flag) νμΌμ μ°Ύμλ΄λ λνμ λλ€. λνμ νΉμ±μ νλκ·Έλ₯Ό ν¬ν¨ν μ·¨μ½ν μλΉμ€λ₯Ό ꡬλνλ μλ²κ° νμν©λλ€. κ·Έλ¬λ λ¬Έμ nκ°μ λν΄ μλ² nκ°λ₯Ό μ΄μν μ μμΌλ―λ‘ κ°μ νκ²½μ ꡬμΆνμ¬ ν΄λΉ νκ²½μ λν μ°Έμ¬μκ° μ μν μ μλλ‘ ν΄μΌν©λλ€. μ΄λ₯Ό μν μ΅μ μ μ νμ§λ Dockerλ₯Ό μ΄μ©νμ¬ λ¬Έμ μλ²λ₯Ό ꡬμΆνλ κ²μ λλ€.
IxCμμλ Dockerλ₯Ό μ΄μ©ν΄μΌ νλ λ¬Έμ κ° μ΄ 27λ¬Έμ μκ³ , λ§μ λ¬Έμ λ₯Ό κ΄λ¦¬νκΈ° μν΄μ docker-compose μ μ΄μ©νμ¬ μ¬λ¬ κ°μ 컨ν μ΄λ(λ¬Έμ μλ²)λ₯Ό κ΄λ¦¬νμμ΅λλ€. IxCμμ μ§νν Docker κ΄λ¦¬ λ°©λ²μ λν΄μ μ΄μΌκΈ°νκ² μ΅λλ€.
- λ¬Έμ νλλΉ
Dockerfile
νλμdocker-compose.yml
νμΌμ μμ±νμ¬ κ΄λ¦¬ν©λλ€. μ΄λ κ°λ³ λ¬Έμ λ₯Ό μμ ν΄μΌν λ 컨ν μ΄λμ μ¬μμ λ±μ μν¨μ λλ€. - κ° λΆμΌλ³λ‘ λ¬Έμ λλ ν 리λ₯Ό λ§λ€κ³ , λ΄λΆμ
Dockerfile
κ³Όdocker-compose.yml
μ΄ ν¬ν¨λλλ‘ νμμ΅λλ€. ꡬ쑰μ μμλ λ€μκ³Ό κ°μ΅λλ€.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
.(category directory) β βββ challenge1 β βββ docker-compose.yml β βββ Dockerfile β βββ index.html βββ challenge2 β βββ app.py β βββ docker-compose.yml β βββ Dockerfile β βββ flag.txt β βββ templates β βββ index.html ...
docker-compose.yml
μμ1 2 3 4 5 6 7 8
version: '3' services: web-challenge1: build: . image: "challenge1" ports: - "10100:80"
- version: compose νμΌμ λ²μ μΌλ‘ λ²μ λ³ νΉμ§μ 곡μ λ¬Έμ μ°Έκ³ .
- service: μλΉμ€ λͺ©λ‘μ μμ±. λ¬Έμ μ΄λ―Έμ§(ex. web-challenge1) μ΄μΈμλ μ¬μ©νλ μλΉμ€κ° μμ κ²½μ° μΆκ°.
- build: Dockerfileμ΄ μμΉν κ²½λ‘ μμ±.
- image: μ΄λ―Έμ§ μ΄λ¦ μ€μ .
- ports:
{host port}:{container port}
μμλ‘ μμ±. μμμμλ10100
ν¬νΈλ‘ μ μμ 컨ν μ΄λμ80
λ² ν¬νΈμ 맀ννλ€λ μλ―Έμ λλ€.web.isangxcaution.xyz:10100
κ³Ό κ°μ hostnameμΌλ‘ μ μν μ μμ΅λλ€.
Docker λ€νΈμν¬ ν(Network Pool) μ€λ₯
1 2
Creating network "{challenge_name}" with the default driver ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
IxC λν μ€λΉ μ€ λ¬Έμ 컨ν μ΄λ μμ± μ μμ κ°μ μ€λ₯ λ©μμ§λ₯Ό λ§μ£Όνμμ΅λλ€. μ΄λ dockerμμ κ΄λ¦¬νλ λ€νΈμν¬ νμ΄ κ°λ μ°¨ λ μ΄μ λ€νΈμν¬λ₯Ό μμ±ν μ μλ€λ μλ―Έμ λλ€. λ¬Έμ 1κ°λΉ λ€νΈμν¬ 1κ°λ₯Ό μμ±νκΈ° λλ¬Έμ μ΄λ¬ν μ€λ₯κ° λ°μνλ κ²μ λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μ κ° λ¬Έμ λ³ μ»¨ν μ΄λκ° λμΌν λ€νΈμν¬μ μ‘΄μ¬ν΄λ λλ λ¬Έμ λΌλ¦¬ κ°μ λ€νΈμν¬μ μμΉνλλ‘ μ€μ ν΄μΌ ν©λλ€.
1 2 3 4
networks: default: external: name: ixc_net
μμ μ½λλ₯Ό κ°μ λ€νΈμν¬μ μμΉν λ¬Έμ μ compose νμΌμ μΆκ°νλ©΄ κ°μ λ€νΈμν¬μμ 컨ν μ΄λκ° λμνκ² λκ³ μμμ μΌλ‘ λ¬Έμ λ₯Ό ν΄μν μ μμ΅λλ€.
Solved by smart_kang
- Dockerfile, compose νμΌ, λ¬Έμ νμΌ λ±μ΄ μ€λΉλλ©΄ μλ λͺ
λ Ήμ μ΄μ©νμ¬ containerλ₯Ό μμ±ν©λλ€.
1 2 3 4 5
# ν΄λΉ λλ ν 리 λ΄μμ μ€ν sudo docker-compose up -d --build # μ λκ²½λ‘λ₯Ό λͺ μ sudo docker-compose -f {compose_file_path} up -d --build
- νλμ λ¬Έμ λ₯Ό μμ ν λ€μλ μμ μ¬νμ λ°μνμ¬ μ΄λ―Έμ§λ₯Ό λ€μ buildνκ³ μ»¨ν
μ΄λλ₯Ό μ¬λΆν
ν©λλ€.
1 2 3 4 5
# μ€ν μ€μΈ 컨ν μ΄λ DOWN sudo docker-compose down # μ΄λ―Έλ₯Ό buildν μ¬νμ΄ μλ€λ©΄ buildνκ³ (--build) containerλ₯Ό λ°±κ·ΈλΌμ΄λμμ μ€ν(-d) sudo docker-compose up -d --build
μλ²λ₯Ό μ¬λΆν νκ±°λ, Dockerμ λ¬Έμ κ° λ°μνμμ κ²½μ°μ λͺ¨λ λ¬Έμ μ compose νμΌμ μΌμΌν λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ¬ μ»¨ν μ΄λλ₯Ό λμμν€λ κ²μ λΉν¨μ¨μ μ΄λΌκ³ μκ°νμ¬ λ€μκ³Ό κ°μ΄ scriptλ₯Ό μ μνμ¬ μ€ννλλ‘ νμμ΅λλ€.
2) Validation
λ¬Έμ λ₯Ό μ μν ν ν΄λΉ λ¬Έμ μ μμ μ±μ κ²μ¦νλ κ²μ νμλΌκ³ μκ°νμμ΅λλ€. λ¬Έμ λ₯Ό κ²μ¦νκΈ° μν λ°©λ²μΌλ‘λ 1) μ΄μμ§ μλ‘μ λ¬Έμ λ₯Ό νμ΄λ³΄κ³ νΌλλ°± 2) μΆμ κ° μ§μ λ³ΈμΈμ Write-Up μμ± λ κ°μ§λ₯Ό μ±ννμ΅λλ€.
μμ κ°μ΄ μ΄μμ§ μλ‘μ λ¬Έμ λ₯Ό νμ΄λ³΄κ³ μμ κ°μ΄ νΌλλ°±μ λ¨κ²¨λμμ΅λλ€.
π μΆκ°λ‘
1) CTFd-First-Blood-Discord-Bot
λν μ€ μμμ λ¬Έμ λ₯Ό μ²μμΌλ‘ νμμ κ²½μ° λμ€μ½λμ 곡μ§λ₯Ό νλ λ΄μ μ΄μμ§ λΆ ν λΆκ»μ λμ νμμ΅λλ€(By neko_hat). ν΄λΉ λ΄μ λ ν¬μ§ν 리μμ μμΈν μ¬μ©λ²μ νμΈνμ€ μ μμ΅λλ€.
2) λν κΈ°κ° μ΄μμ§ μμ£Ό
νμν μ΄λΈμ λ§λ€μ΄ λν κΈ°κ°λμ μ΄μμ§μ΄ μ§μμλ΅κ³Ό μλ²λ₯Ό κ΄λ¦¬ν μ μλλ‘ μμ£Ό μΈμμ ꡬμ±νμμ΅λλ€. μμ£Ό μΈμμ μ΄μμ§ λμ€μ½λ μμ± μ±λμ μ μνμ¬ λΉ λ₯΄κ² νΌλλ°±μ μ£Όκ³ λ°λλ‘ μ‘°μΉνμμ΅λλ€.
# λν μμ
λνλ κ±±μ κ³Όλ λ¬λ¦¬ 무μ¬ν μμλμμ΅λλ€. μ¬κ°ν λ¬Έμ μ€λ₯λ μμκ³ μ€κ°μ μλ²κ° κΊΌμ§κ±°λ νΈλν½μ΄ λͺ°λ¦¬λ νμλ λνλμ§ μμμ΅λλ€.
4κ°μ νΉλ³ λ¬Έμ λ μ€λΉνμ¬ μΌμ μκ°μ 곡κ°νμκ³ 4κ°μ 보λμ€ λ¬Έμ λ₯Ό μ€λΉνμ¬ λνμ μ¬λ―Έλ₯Ό λνμμ΅λλ€.
λνκ° λλ μ―€μλ λ¬Έμ νμ΄μ μκ° μ μ λ¬Έμ λ€μ λν ννΈλ₯Ό 곡κ°νκΈ°λ νμμ΅λλ€.
# λνλ₯Ό λ§μΉλ©°
λνλ λλ¦ μ±κ³΅μ μΌλ‘ λ§μΉκ² λμκ³ , λν λ§λ¬΄λ¦¬ λ¨κ³λ₯Ό μ§ννμμ΅λλ€.
π μμμ Write-Up μ·¨ν©
λν μμμ μ€ 1λ±μμ 5λ±κΉμ§ νμ΄ν λ¬Έμ μ λν Write-Upμ μ μΆν΄μΌ νλ κ·μΉμ΄ μμ΄ μ£Όμ΄μ§ κΈ°κ°κΉμ§ μ μΆ λ°μμ΅λλ€.
π Write-Up 곡κ°
λ¬Έμ μΆμ μμ Write-Upκ³Ό 1λ±μμ 5λ±κΉμ§μ μμμμ Write-Upμ Github λ ν¬μ§ν 리μ μ 리νμ¬ κ³΅κ°νμμ΅λλ€.
π μν μμ¬
μμμ λͺ λ¨μ μ 리νμ¬ μνμ μμ¬νκΈ° μν μ μ°¨λ₯Ό μ§ννμμ΅λλ€. λ°©ν κΈ°κ°μΈ κ΄κ³λ‘ κ°κ°ν 첫 μ£Όμ μ€νλΌμΈμΌλ‘ μνμ λ°°λΆνμκ³ μ€νλΌμΈ μλ Ήμ΄ μ΄λ €μ΄ λΆλ€μκ²λ μ°©λΆ νλ°°λ‘ λ°°λΆνμμ΅λλ€.
π κ²°κ³Ό λ³΄κ³ μΉ΄λ λ΄μ€
μ°Έκ°μ λΆλ€κ³Ό κ° λμ리μ λν κ²°κ³Όλ₯Ό 곡μ νκΈ° μν΄ μμμ λͺ©λ‘κ³Ό λν ν΅κ³, μ§μμ¬ κ°μ¬ μΈμ¬λ₯Ό ν¬ν¨νμ¬ μΉ΄λ λ΄μ€ νμμΌλ‘ μ μνμμ΅λλ€.
μ΄λ κ² λνλ λ³ λ¬Έμ μμ΄ λ§λ¬΄λ¦¬κ° λμμΌλ, κ°μΈμ μΌλ‘ μμ¬μ λ μ λͺ κ°μ§κ° μμμ΅λλ€.
첫 μ§Έ, λν μ€λΉλ₯Ό μμν κΈ°κ°μ΄ νκΈ° μ€μ΄λ€ 보λ κΈ°λ§κ³ μ¬ κΈ°κ°κ³Ό νκ΅ κ³Όμ νλ‘μ νΈ μ§ν κΈ°κ°μ νΌν μ μμμ΅λλ€. λ°μ μΌμ μ€μμλ λνλ₯Ό μ€λΉν΄μΌ νκ³ , λͺ¨λ νκ΅ μΌμ μ΄ λλ νμλ μ°λ§ μ°μ΄ μμ¦μ 16λͺ μ μ΄μμ§μ μΌμ μ λ§μΆκΈ°λ μ½μ§ μμμ΅λλ€. λλ¬Έμ λν μ€λΉμλ§ μ¨μ ν μ§μ€νκΈ°μλ μ΄λ €μ κ³ , μμ°μ€λ μ΄μμ§ λ΄μμ κΈ°νν λ΄μ©λ€μ λͺ¨λ μ±κ³΅μ μΌλ‘ μ§ννμ§ λͺ»νκ² λ μ μ΄ μμ¬μ μ΅λλ€π₯
λ μ§Έ, λν μ¬μ΄νΈμ SSL μΈμ¦μλ₯Ό λ°κΈ λ°μ μ μ©ν κ³νμ΄ μμμΌλ μ°μ μμμμ λ°λ €λκ² λμκ³ μΌμ λ¬Έμ λ‘ μ§ννμ§ λͺ»νμλ μ μ΄ μμ¬μ μ΅λλ€.
κ°μΈμ μΌλ‘ μ²μ μ§μ μ§νν΄λ³΄λ λνμκ³ , λμ리μ νμ₯μΌλ‘μ λΆμλ€μκ² μ’μ κ²½νμ μ 곡νκΈ° μν΄ κ³νν λνλ₯Ό λ³ λ¬Έμ μμ΄ λ§μΉκ³ μΆμμ΅λλ€. λν μμ°κ³Ό μλ² λ±μ μ§μ λ°μ μνμμ λνλ₯Ό μ±κ³΅μ μΌλ‘ λ§μ³μΌ νλ€λ λΆλ΄κ°μ΄ μμμ΅λλ€. κ·Έλ¬λ, ν¨κ» λνλ₯Ό μ΄μνλ μ΄μμ§ λΆλ€μ μ°Έμ¬μ λ₯λ ₯ λλΆμ λ³ ν μμ΄ λνλ₯Ό λ§μΉ μ μμκ³ , λν μ°Έμ¬μ¨μ΄ μ μ‘°ν κ²λ§ κ°μμ§λ§ κ° λμ리μμ λ§μ λΆλ€κ»μ μ°Έμ¬ν΄μ£Όμ μ λ¬Έμ λ₯Ό μ΄μ¬ν νΈλ λͺ¨μ΅μμ 보λμ λκΌμ΅λλ€.
λν λν μ΄μμ μν΄ μ΄λ κ² μΉ μλ²λ μ§μ ꡬμΆν΄λ³΄κ³ , λ¬Έμ λ λ§λ€μ΄λ³΄κ³ , νμ 곡λΆνκ³ μΆμλ λ΄μ©λ€μ 곡λΆν μ μμ΄ μ¦κ±°μ κ³ μ μμ μ΄ νμΈ΅ μ±μ₯νλ―ν λλμ΄ λ€μμ΅λλ€. μμΌλ‘λ μμλ μ μ λλ €μμ κ°μ§κΈ°λ³΄λ€λ μ°μ λΆλͺν λ΄μΌκ² λ€λ λ€μ§μ νκ² λ κ·ν κ²½νμ΄μμ΅λλ€.
κΈ΄ κΈ μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€. κΆκΈν μ μ΄λ νΌλλ°±μ΄ μμΌμλ€λ©΄ λκΈ λ¨κ²¨μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ βΊ