๐คฆโโ 80 ํฌํธ๊ฐ ์ด๋ฆฌ์ง ์๋๋ค
์ต๊ทผ ํ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ๋ค. ์ฐธ๊ณ ๋ก ๋ณธ ๋ธ๋ก๊ทธ๋ ghost ํ๋ซํผ์ docker
์ buildํ์ฌ ์๋น์ค ํ๊ณ ์๋ค. ์น ๊ฐ๋ฐ๋ก ๋จน๊ณ ์ด์๋ ๊ณผ๊ฑฐ๊ฐ ์์ด ๋ณ๋ก ์ด๋ ต์ง ์๊ฒ ์ค์นํ ์ ์์๋ค.
(๋ณธ์ธ์ ํ์ฌ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ฐ๊ตฌ๋ฅผ ํ๊ณ ์์ง๋ง, ย ๊ณผ๊ฑฐ ์น๊ฐ๋ฐ ๊ฒฝ๋ ฅ์ด ์๋ค)
๋ชจ๋ ์ค์น๋ฅผ ์๋ฃํ๊ณ ์ด์ ์ธ๋ถ ๋ง ํ ์คํธ๋ฅผ ์ํด ์์ ์ค์ด๋ ๋งฅ๋ถ์ ์์ดํ์ด๋ฅผ ์ฐ๊ฒฐ ํด์ ํ๊ณ ์์ดํฐ ํซ์คํ์ ์ฐ๊ฒฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณธ ๋ธ๋ก๊ทธ ์๋ฒ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ค. ๊ทผ๋ฐ ์ ๊ฑธ, ๋ด๋ถ ๋ง์์๋ ์ ๋์ํ๋ ์ฌ์ดํธ๊ฐ ์ธ๋ถ ๋ง์์๋ ์ฐ๊ฒฐ์ด ๋์ง ์๋ ๊ฒ์ด์๋ค. ๋ฐฉํ๋ฒฝ๋ถํฐ L3์ค์์น์ DMZ ์ธํ ๊น์ง 10๋ฒ์ ๋ ํ์ธํ๋ค. ๋ฌธ์ ๋ ์์๋ค.
์ด์ํ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ๋ค. docker-registry
์๋ฒ๋ก ์์ ๊ฐ๋ฐฉํด ๋์ ํฌํธ๋ ๋ ์ ์์ด ์ ๋๋ ๊ฒ์ด๋ค. ๋ญ๊ฐ ์ด์ํด์ nmap
์ผ๋ก ํฌํธ ์ค์บ์ ์๋ํด๋ณด์๋ค.
$ nmap ${server_ip}
---output---
Starting Nmap 7.94 ( https://nmap.org ) at 2023-08-20 15:54 KST
Nmap scan report for ***.***.***.***
Host is up (0.021s latency).
Not shown: 994 filtered tcp ports (no-response)
PORT STATE SERVICE
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.43 seconds
์ค์?, 80๋ฒ ํฌํธ ๊ฐ๋ฐฉ์ด ๋์ง ์๊ณ ์์๋ค. ์ธ๋ป ์๊ฐํด๋ณด๋ ๊ฐ์ ์ฉ ์ธํฐ๋ท ๋ง ์ค์๋ ISP์์ 80๋ฒ ํฌํธ๋ฅผ denyํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ ๊ฒ์ ๋ค์ด ๋ณธ ๊ธฐ์ต์ด ๋ฌ๋ค. ๋ถํ ์ค ๋คํ์ผ๋ก 443ํฌํธ๋ ๊ฐ๋ฐฉ์ด ๋์ด์์ด https
์ ์ํด๋ณด๋ ์ญ์ ์ ์ ์์ด ๋๊ณ ์์๋ค. ISP์ ๋ฌธ์๋ฅผ ํด ํฌํธ ๊ฐ๋ฐฉ ์์ฒญ์ ํด๋ณผ ์ ์์ผ๋, ๋น์ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๊ณ ์ถ์๋ค.
๋ฌธ์ : ISP์์ 80๋ฒ ํฌํธ๋ฅผ ๊ฐ๋ฐฉํด์ฃผ์ง ์๋๋ค.
๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํด๋ดค๋ค. ํ์ฌ ๋๋ฉ์ธ์ ๋ฑ๋กํด ๋์ DNS ์๋ฒ์ธ Cloudflare ์ Page Rules
๋ก http(80) ํ๋กํ ์ฝ์ https(443)์ผ๋ก ๋ฆฌ๋ค์ด๋ ์
ํ๋ ๊ฒ์ด๋ค.
Alwats Use HTTPS
์ธํ
์ ์ฌ์ฉํ๋ฉด cloudflare๊ฐ http๋ฅผ https๋ก ๋ฆฌ๋ค์ด๋ ์
ํด์ค๋ค. ๊ทผ๋ฐ ํ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
Page Rules
์ ํ์ฉํ๊ธฐ ์ํด์๋ cloudflare์ proxy ๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ํ์ง๋ง, ์ด ๊ฒฝ์ฐ์๋ 80๋ฒ ํฌํธ ๊ฐ๋ฐฉ์ด ๋ ํ์ํ๋ค. ๋๋ ๋ง๊ฐ ์์๋ฌ๋ค.
Solution 1.
ํน์ฌ๋ ํ๋ ๋ง์์ cloudflare์ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ ํ์ธํ๋ค Origin Rules
์ ๋ฐ๊ฒฌํ๋ค. ์ฌ๊ธฐ์๋ cloudflare proxy๋ก ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ host server
์ ๋ด๊ฐ ์ํ๋ ํฌํธ๋ก Rewrite ํ ์๊ฐ ์์๋ค.
์ด์ j911.me
๋ก ์ ์ํ๋ ๋ชจ๋ ๋๋ฉ์ธ์ ๋ด๊ฐ ์ค์ ํ 1234
ํฌํธ๋ก ๋ด ์๋ฒ์ ํต์ ํ๊ฒ ๋๋ค.
์ด๋ฅผ ์ํด nginx์ conf ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๊ณ 1234 /tcp ํฌํธ๋ฅผ ๋ฐฉํ๋ฒฝ์์ allow ํ๋ค.
# j911.me.conf in /etx/nginx/conf.d/
server {
server_name j911.me;
listen 1234;
location / {
proxy_pass http://ghost-server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
$ sudo ufw allow 1234
์ดํ cloudflare์ proxy๋ enable ํ์๋ค.
๋๋๊ฒ๋ ๋ด๊ฐ ์๊ฐํ ๊ทธ๋๋ก ๋์ํ๋ค. ์ด์ ๋ธ๋ก๊ทธ๋ ์จ๋ผ์ธ์ด ๋์๋ค.
Solution 2.
์ ๋ฐฉ๋ฒ์ผ๋ก ๋ธ๋ก๊ทธ๋ ์จ๋ผ์ธ์ด ๋์์ง๋ง ์ฌ์ ํ ๊ณ ๋ฏผ์ ๊ณ์๋์๋ค. ์ผ๋จ ์์ฒด SSL ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ฒ๊ณผ, ๊ทผ๋ณธ ์์ด๋ณด์ด๋ 1234
ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์คํธ๋ ์ค์๋ค.
๋ค์ ํด๊ฒฐํด๋ณด์๊ณ ๋ค์งํ๊ณ nginx ์ SSL/HTTPS ํ๋กํ ์ฝ์ ๋ค์ ํ์ฑํ ํ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ cloudflare์ ํค์ง๊ณ ๋ค๋๋ค SSL/TLS Full (strict)
๋ฅผ ๋ฐ๊ฒฌํ๋ค. ์ด๋ฅผ ์ฐ๋ฉด ์๋ฒ์ ์ธ์ฆ์์ cloudflare์ proxy๋ฅผ ํจ๊ป ์ธ ์ ์๋ค.
์ธํ
์ ์๋ฃํ๊ณ ์์ ์๊ฐํ Always Use HTTPS
๋ฅผ ๋ค์ ํ์ฑํ ํ์๋ค. ย ๋๋๊ฒ๋ cloudflare์ SSL๊ณผ ์๋ฒ์ SSL์ด ๋์์ ์ธ์ฆ์ ์ํํ๊ณ ์๋ฒ๊ฐ ๋ค์ ์จ๋ผ์ธ ๋์๋ค.
์ญ์ ๋ ธ๋ ฅํด์ ์๋๋ ๊ฑด ์๋๋ณด๋ค. ๋๋ 443 ํฌํธ ํ๋๋ง์ผ๋ก ๋ธ๋ก๊ทธ๋ฅผ ์ ์์ ์ผ๋ก online ์์ผฐ๋ค. ISP์ ์ ํํ ์ผ์ด ์ฌ๋ผ์ ธ ๊ธฐ๋ถ์ด ์ข๋ค.