๐Ÿ ์šฐ๋ถ„ํˆฌ ํ™ˆ ์„œ๋ฒ„ ๊ตฌ์ถ•๊ธฐ - ์„œ๋ฒ„ ๊ธฐ๋ณธ ์„ค์ •๐Ÿ 

๊น€ํƒœ์›ยท2022๋…„ 2์›” 18์ผ
2
post-custom-banner

๊ฐœ์š”


๋ณธ ์‹œ๋ฆฌ์ฆˆ๋Š” Ubuntu Server 20.04 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

์šฐ๋ถ„ํˆฌ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•œ ์งํ›„์˜ ์ž‘์—…๋“ค์— ๋Œ€ํ•ด ๊ธฐ์ˆ ํ•  ์˜ˆ์ •์ด๋‹ค.
ํ•„์ž๋Š” ๋ฌผ๋ฆฌ ์„œ๋ฒ„(Mele Quieter2)์—์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ AWS๋‚˜ GCP ๋“ฑ์˜ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ, AWS๋‚˜ GCP ์ƒ์—์„œ ์™ธ๋ถ€์™€ ์ธ์Šคํ„ด์Šค ๊ฐ„ ํ†ต์‹ ์— ๋Œ€ํ•œ ๋ฐฉํ™”๋ฒฝ ์„ค์ •์€ ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

ํ•„์ž๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ๋ฌผ๋ฆฌ ์„œ๋ฒ„(Mele Quieter2)์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๐Ÿ ์šฐ๋ถ„ํˆฌ ํ™ˆ ์„œ๋ฒ„ ๊ตฌ์ถ•๊ธฐ - ์‹œ์ž‘ํ•˜๋ฉฐ๐Ÿ ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.


1. ํŒจํ‚ค์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ

sudo apt update && sudo apt upgrade

๋จผ์ € ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.


2. ์‹œ๊ฐ„๋Œ€ ์„ค์ •

timedatectl

์œ„ ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์— ์„ค์ •๋œ ์‹œ๊ฐ„๋Œ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

sudo dpkg-reconfigure tzdata

์œ„ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ๊ฐ„๋Œ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด ์ถœ๋ ฅ๋œ๋‹ค.
sudo dpkg-reconfigure tzdata - 1

sudo dpkg-reconfigure tzdata - 2

ํ•„์ž๋Š” Asia/ Seoul๋กœ ์„ค์ •ํ–ˆ๋‹ค.


3. SSH ์‚ฌ์šฉ์ž ์ œํ•œ

์„œ๋ฒ„ ๋ณด์•ˆ์„ ์œ„ํ•ด ํ—ˆ์šฉ๋œ ์‚ฌ์šฉ์ž๋งŒ(Whitelist) SSH์„ ํ†ตํ•œ ์„œ๋ฒ„ ์ ‘์†์„ ํ—ˆ์šฉํ•  ์˜ˆ์ •์ด๋‹ค.

SSH ์„ค์ • ํŒŒ์ผ์ธ sshd_config ํŒŒ์ผ์„ nano ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์—ฐ๋‹ค.
ํ•„์ž๋Š” nano ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•˜์ง€๋งŒ vi๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

sudo nano /etc/ssh/sshd_config

์•„๋ž˜ ๋‚ด์šฉ์„ ํŒŒ์ผ์˜ ๋งˆ์ง€๋ง‰ ๋ผ์ธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.(์ถ”ํ›„ ์ˆ˜์ •์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ)

AllowUsers {user}

e.g.

AllowUsers ubuntu

๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

e.g.

AllowUsers user1 user2

๋ฐ˜๋Œ€๋กœ ํŠน์ • ์‚ฌ์šฉ์ž๋งŒ ์ ‘์†ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋ ค๋ฉด(Blacklist) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

e.g.

DenyUsers user1 user2

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด SSH ๋ฐ๋ชฌ์„ ๋ฆฌ๋กœ๋“œ ํ•œ๋‹ค.

sudo systemctl reload sshd

4. ๋ฐฉํ™”๋ฒฝ ์„ค์ •

์šฐ์„  ์šฐ๋ถ„ํˆฌ์˜ ๊ธฐ๋ณธ ๋ฐฉํ™”๋ฒฝ์ธ ufw๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•œ๋‹ค.

sudo ufw disable

iptables๋Š” ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ์„ค์ •๊ฐ’์ด ์ดˆ๊ธฐํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” iptables-persistent ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

sudo apt install iptables-persistent -y

์„ค์น˜ ๊ณผ์ • ์ค‘์— ํ˜„์žฌ์˜ IPv4, IPv6 ๊ทœ์น™์„ ์ €์žฅํ• ์ง€ ๋ฌผ์–ด๋ณด๋Š”๋ฐ ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•œ ์งํ›„์—๋Š” ์„ค์ •๋œ ๊ทœ์น™์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Yes๋‚˜ No ์ค‘ ์–ด๋Š ๊ฒƒ์„ ์„ ํƒํ•ด๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

iptables ๊ทœ์น™์„ ์ƒ์„ฑํ•˜๊ธฐ ์•ž์„œ iptables๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

-F๋Š” ๊ฐ ์ฒด์ธ ์•ˆ์— ์„ค์ •๋œ ๋ชจ๋“  ๊ทœ์น™์„ ์‚ญ์ œํ•œ๋‹ค.
-X๋Š” ๊ธฐ๋ณธ ์ฒด์ธ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ฒด์ธ์„ ์‚ญ์ œํ•œ๋‹ค.
-P๋Š” ๊ธฐ๋ณธ ์ •์ฑ…์„ ์„ค์ •ํ•œ๋‹ค.

INPUT, FORWARD, OUTPUT์€ ๋ชจ๋‘ ACCEPT๋กœ ์ดˆ๊ธฐํ™”

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ณ  iptables๋ฅผ ๋ฆฌ๋กœ๋“œ ํ•œ๋‹ค.

sudo netfilter-persistent save
sudo netfilter-persistent reload

localhost ์ ‘์†์„ ํ—ˆ์šฉํ•œ๋‹ค.

sudo iptables -A INPUT -i lo -j ACCEPT

related์™€ established ํŒจํ‚ท ์ ‘์† ํ—ˆ์šฉํ•œ๋‹ค.

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

ssh, http, https ํฌํŠธ๋ฅผ ๊ฐœ๋ฐฉํ•œ๋‹ค.

sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

๋ณธ ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์œผ๋กœ RDP์™€ ์ค‘๊ณ„ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ

์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) <-> ์ค‘๊ณ„ ์„œ๋ฒ„(Guacamole) <-> RDP(์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„)

ํ•œ ์„œ๋ฒ„์— Guacamole์™€ xrdp๊ฐ€ ๋ชจ๋‘ ์„ค์น˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Guacmole๊ฐ€ RDP๋ฅผ ์ค‘๊ณ„ํ•  ๋Œ€์ƒ์€ localhost์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฉํ™”๋ฒฝ์—์„œ RDP ํฌํŠธ๋ฅผ ๋”ฐ๋กœ ๊ฐœ๋ฐฉํ•ด ์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋งŒ์•ฝ ๋ณ„๋„์˜ 3rd party RDP ํด๋ผ์ด์–ธํŠธ๋‚˜ ์œˆ๋„์šฐ์˜ ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์˜ˆ์ •์ด๋ผ๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด RDP๊ฐ€ ์‚ฌ์šฉํ•  3389 ํฌํŠธ๋ฅผ ๊ฐœ๋ฐฉํ•œ๋‹ค.

sudo iptables -A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT

๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ•์กฐํ•˜์ง€๋งŒ ์œ„ ๋ช…๋ น์–ด๋Š” ๋ณ„๋„์˜ 3rd party RDP ํด๋ผ์ด์–ธํŠธ๋‚˜ ์œˆ๋„์šฐ์˜ ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ์—ฐ๊ฒฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์˜ˆ์ •์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

3389 ํฌํŠธ๋ฅผ ๊ฐœ๋ฐฉํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ๊ฐœ๋ฐฉํ•œ ๊ทœ์น™์„ ์ œ์™ธํ•œ ๋ชจ๋“  Inbound ํŒจํ‚ท์„ ์ฐจ๋‹จํ•œ๋‹ค.

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP

์„œ๋ฒ„์—์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” Outbound ํŒจํ‚ท์€ ์ „๋ถ€ ํ—ˆ์šฉํ•œ๋‹ค

sudo iptables -P OUTPUT ACCEPT

์„ค์ • ๋‚ด์šฉ์„ ํ™•์ธํ•œ๋‹ค.

sudo iptables -S

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ณ  iptables๋ฅผ ๋ฆฌ๋กœ๋“œ ํ•œ๋‹ค.

sudo netfilter-persistent save
sudo netfilter-persistent reload

๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•œ ์งํ›„์˜ ์ž‘์—…๋“ค์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ดค๋‹ค.
๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์— ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ ๋ฐ xrdp๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

profile
๊ฐœ๋ฐœ์ด ์žฌ๋ฐŒ์–ด์„œ ํ•˜๋Š” Junior Backend Developer
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€