๋ณธ ์๋ฆฌ์ฆ๋ Ubuntu Server 20.04 ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
์ฐ๋ถํฌ ์ค์น๋ฅผ ์๋ฃํ ์งํ์ ์์
๋ค์ ๋ํด ๊ธฐ์ ํ ์์ ์ด๋ค.
ํ์๋ ๋ฌผ๋ฆฌ ์๋ฒ(Mele Quieter2)์์ ์์
์ ์งํํ์ง๋ง AWS๋ GCP ๋ฑ์ ํด๋ผ์ฐ๋ ํ๋ซํผ์์๋ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ค.
๋จ, AWS๋ GCP ์์์ ์ธ๋ถ์ ์ธ์คํด์ค ๊ฐ ํต์ ์ ๋ํ ๋ฐฉํ๋ฒฝ ์ค์ ์ ๋์ด์๋ค๊ณ ๊ฐ์ ํ๋ค.
ํ์๊ฐ ์ฌ์ฉ ์ค์ธ ๋ฌผ๋ฆฌ ์๋ฒ(Mele Quieter2)์ ๋ํ ์์ธํ ๋ด์ฉ์ ๐ ์ฐ๋ถํฌ ํ ์๋ฒ ๊ตฌ์ถ๊ธฐ - ์์ํ๋ฉฐ๐ ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
sudo apt update && sudo apt upgrade
๋จผ์ ํจํค์ง ์ ๋ฐ์ดํธ ๋ฐ ์ ๊ทธ๋ ์ด๋๋ฅผ ์งํํ๋ค.
timedatectl
์ ๋ช ๋ น์ด๋ก ํ์ฌ ์ฐ๋ถํฌ ์๋ฒ์ ์ค์ ๋ ์๊ฐ๋๋ฅผ ํ์ธํ๋ค.
sudo dpkg-reconfigure tzdata
์ ๋ช
๋ น์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๊ฐ๋๋ฅผ ์ ํํ ์ ์๋ ํ๋ฉด์ด ์ถ๋ ฅ๋๋ค.
ํ์๋ Asia/ Seoul๋ก ์ค์ ํ๋ค.
์๋ฒ ๋ณด์์ ์ํด ํ์ฉ๋ ์ฌ์ฉ์๋ง(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
์ฐ์ ์ฐ๋ถํฌ์ ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ์ธ 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๋ฅผ ์ค์นํ๊ณ ์์ฃผ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ ๋ค๋ฃฐ ์์ ์ด๋ค.