๋ชฉ์ฐจ
- ์๋ฒ ๋ณด์, ์ ๋ฏธ๋ฃจ๋ฉด ์ ๋๋๊ฐ?
- ๋ณด์ ์ค์ 1 – root ๊ณ์ SSH ์ ์ ์ฐจ๋จ
- ๋ณด์ ์ค์ 2 – SSH ํฌํธ ๋ณ๊ฒฝ
- ๋ณด์ ์ค์ 3 – ๋น๋ฐ๋ฒํธ ์ธ์ฆ ๋นํ์ฑํ
- ๋ณด์ ์ค์ 4 – ๋ฐฉํ๋ฒฝ์ผ๋ก ๋ถํ์ํ ํฌํธ ์ฐจ๋จ
- ๋ณด์ ์ค์ 5 – Fail2Ban ์ค์น๋ก ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ ์ฐจ๋จ
- ๋ณด์ ์ค์ 6 – ์๋ ๋ณด์ ์ ๋ฐ์ดํธ ์ค์
- ๋ณด์ ์ค์ 7 – ๋ถํ์ํ ์๋น์ค ๋นํ์ฑํ
- ์ ๋ฆฌ
1. ์๋ฒ ๋ณด์, ์ ๋ฏธ๋ฃจ๋ฉด ์ ๋๋๊ฐ?
์๋ฒ๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ๋ ์๊ฐ, ์ ์ธ๊ณ ์ด๋์ ๊ฐ ์๋ํ๋ ๋ด์ด ํด๋น ์๋ฒ์ ํฌํธ๋ฅผ ์ค์บํ๊ณ ์ทจ์ฝ์ ์ ์ฐพ๊ธฐ ์์ํฉ๋๋ค. ์ค์ ๋ก ์๋ฌด ์ค์ ๋ ํ์ง ์์ ์ฑ ์๋ฒ๋ฅผ ๊ณต๊ฐํ๋ฉด ์ ๋ถ ์์ SSH ๋ก๊ทธ์ธ ์๋ ๊ธฐ๋ก์ด ์์ด๊ธฐ ์์ํฉ๋๋ค.
ํดํน์ ๋นํ ์๋ฒ๋ ๊ฐ์ธ ์ ๋ณด ์ ์ถ, ๋์ฌ์จ์ด ๊ฐ์ผ, ์คํธ ๋ฉ์ผ ๋ฐ์ก์ ์ ์ฉ๋๋ ๋ฑ ์ฌ๊ฐํ ํผํด๋ฅผ ์ด๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ํดํน์ ์ ๊ตํ ๊ธฐ์ ๋ณด๋ค๋ ๊ธฐ๋ณธ ๋ณด์ ์ค์ ์ ํ์ง ์์ ํ์ ์ ๋ ธ๋ฆฝ๋๋ค.
์ด ๊ธ์์๋ ์๋ฒ๋ฅผ ์ด์ํ๋ ๋๊ตฌ๋ ๋ฐ๋์ ์ ์ฉํด์ผ ํ ๋ณด์ ์ค์ 7๊ฐ์ง๋ฅผ ์ ๋ฆฌํ์ต๋๋ค.
2. ๋ณด์ ์ค์ 1 – root ๊ณ์ SSH ์ ์ ์ฐจ๋จ
root ๊ณ์ ์ ์๋ฒ์ ๋ชจ๋ ๊ถํ์ ๊ฐ์ง ์ต๊ณ ๊ด๋ฆฌ์์ ๋๋ค. ํด์ปค๋ค์ด ๊ฐ์ฅ ๋จผ์ ๊ณต๊ฒฉํ๋ ๊ณ์ ์ด๊ธฐ๋ ํฉ๋๋ค. root๋ก SSH ์ ์์ ํ์ฉํด ๋๋ฉด, ๋น๋ฐ๋ฒํธ ํ๋๋ง ๋ซ๋ฆฌ๋ฉด ์๋ฒ ์ ์ฒด๊ฐ ์ฅ์ ๋ฉ๋๋ค.
SSH ์ค์ ํ์ผ์ ์ด์ด PermitRootLogin ํญ๋ชฉ์ ์ฐพ์ ๊ฐ์ no๋ก ๋ณ๊ฒฝํฉ๋๋ค.
sudo nano /etc/ssh/sshd_config
PermitRootLogin no ๋ก ์ค์ ํ ๋ค ์ ์ฅํ๊ณ , SSH ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo systemctl restart sshd
์ดํ์๋ ์ผ๋ฐ ๊ณ์ ์ผ๋ก ์ ์ํ ๋ค ํ์ํ ๋๋ง sudo๋ฅผ ์ฌ์ฉํฉ๋๋ค.
3. ๋ณด์ ์ค์ 2 – SSH ํฌํธ ๋ณ๊ฒฝ
SSH ๊ธฐ๋ณธ ํฌํธ์ธ 22๋ฒ์ ์ ์ธ๊ณ ํด์ปค๋ค์ด ๊ฐ์ฅ ๋ง์ด ๊ณต๊ฒฉํ๋ ํฌํธ์ ๋๋ค. 22๋ฒ ํฌํธ๋ฅผ ๋ค๋ฅธ ๋ฒํธ๋ก ๋ฐ๊พธ๋ ๊ฒ๋ง์ผ๋ก๋ ์๋ํ๋ ๊ณต๊ฒฉ์ ๋๋ถ๋ถ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
๋์ผํ SSH ์ค์ ํ์ผ์์ Port ํญ๋ชฉ์ ์ฐพ์ ๋ณ๊ฒฝํฉ๋๋ค. 1024๋ฒ ์ด์, 65535๋ฒ ์ดํ์ ๋ฒํธ ์ค ์ฌ์ฉํ์ง ์๋ ๋ฒํธ๋ฅผ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด 22222๋ก ๋ณ๊ฒฝํ๋ ์์ ๋๋ค.
Port 22222
์ ์ฅ ํ ๋ฐฉํ๋ฒฝ์์ ์ ํฌํธ๋ฅผ ์ด๊ณ , ๊ธฐ์กด 22๋ฒ์ ๋ซ์ต๋๋ค.
sudo ufw allow 22222 sudo ufw delete allow 22
๊ทธ๋ค์ SSH ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค. ํฌํธ๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ์ ํฌํธ๋ก ์ ์์ด ๋๋์ง ๋ฐ๋์ ํ์ธํ ํ ๊ธฐ์กด ์ธ์ ์ ์ข ๋ฃํด์ผ ํฉ๋๋ค.
4. ๋ณด์ ์ค์ 3 – ๋น๋ฐ๋ฒํธ ์ธ์ฆ ๋นํ์ฑํ
๋น๋ฐ๋ฒํธ ์ธ์ฆ์ ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ(Brute Force)์ ์ทจ์ฝํฉ๋๋ค. SSH ํค ์ธ์ฆ๋ง ํ์ฉํ๊ณ ๋น๋ฐ๋ฒํธ ์ธ์ฆ์ ์์ ํ ๋นํ์ฑํํ๋ฉด ์ด ๊ณต๊ฒฉ์ ์์ฒ ์ฐจ๋จํ ์ ์์ต๋๋ค.
SSH ํค๊ฐ ์ด๋ฏธ ์ค์ ๋์ด ์๋ค๋ ์ ์ ํ์, SSH ์ค์ ํ์ผ์์ PasswordAuthentication ํญ๋ชฉ์ no๋ก ๋ณ๊ฒฝํฉ๋๋ค.
PasswordAuthentication no
์ฃผ์์ฌํญ์ผ๋ก, ์ด ์ค์ ์ ์ ์ฉํ๊ธฐ ์ ์ ๋ฐ๋์ SSH ํค ์ธ์ฆ์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ๋จผ์ ํ์ธํด์ผ ํฉ๋๋ค. ํค ์ธ์ฆ ์์ด ๋น๋ฐ๋ฒํธ ์ธ์ฆ์ ๋นํ์ฑํํ๋ฉด ์๋ฒ์ ์๊ตฌ์ ์ผ๋ก ์ ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
5. ๋ณด์ ์ค์ 4 – ๋ฐฉํ๋ฒฝ์ผ๋ก ๋ถํ์ํ ํฌํธ ์ฐจ๋จ
์๋ฒ์์ ์ค์ ๋ก ์ฌ์ฉํ๋ ํฌํธ ์ธ์๋ ๋ชจ๋ ์ฐจ๋จํ๋ ๊ฒ์ด ์์น์ ๋๋ค. UFW๋ฅผ ์ฌ์ฉํด ํ์ํ ํฌํธ๋ง ์ด์ด๋๊ณ ๋๋จธ์ง๋ ์ฐจ๋จํฉ๋๋ค.
ํ์ฌ ๋ฐฉํ๋ฒฝ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
sudo ufw status
์น ์๋ฒ๋ฅผ ์ด์ ์ค์ด๋ผ๋ฉด SSH ํฌํธ, 80๋ฒ, 443๋ฒ๋ง ์ด์ด๋๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ๋๋ค. MySQL ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌํธ(3306)๋ ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋์ ์ฐจ๋จํฉ๋๋ค.
๋ชจ๋ ์ธ๋ฐ์ด๋ ํธ๋ํฝ์ ๊ธฐ๋ณธ ์ฐจ๋จ์ผ๋ก ์ค์ ํฉ๋๋ค.
sudo ufw default deny incoming sudo ufw default allow outgoing
๊ทธ ๋ค์ ํ์ํ ํฌํธ๋ง ํ์ฉํฉ๋๋ค.
sudo ufw allow 22222 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
6. ๋ณด์ ์ค์ 5 – Fail2Ban ์ค์น๋ก ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ ์ฐจ๋จ
Fail2Ban์ ๋ก๊ทธ ํ์ผ์ ๋ชจ๋ํฐ๋งํ๋ค๊ฐ ์งง์ ์๊ฐ ์์ ๋ก๊ทธ์ธ์ ์ฌ๋ฌ ๋ฒ ์คํจํ IP๋ฅผ ์๋์ผ๋ก ์ฐจ๋จํ๋ ๋ณด์ ๋๊ตฌ์ ๋๋ค. SSH ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ์ ๋ง๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
์ค์น ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
sudo apt install fail2ban -y
์ค์น ํ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ SSH ๋ณดํธ๊ฐ ํ์ฑํ๋๋ฉฐ, 10๋ถ ์์ 5๋ฒ ์ด์ ๋ก๊ทธ์ธ ์คํจ ์ ํด๋น IP๋ฅผ 10๋ถ๊ฐ ์ฐจ๋จํฉ๋๋ค.
ํ์ฌ ์ฐจ๋จ๋ IP ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
sudo fail2ban-client status sshd
์ค์ ๋ก ์ด ๋ช ๋ น์ด๋ฅผ ์คํํด ๋ณด๋ฉด ์๋ง์ IP๊ฐ ์ฐจ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋งํผ ์๋ฒ์ ๋ํ ๊ณต๊ฒฉ ์๋๊ฐ ๋ง๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค.
7. ๋ณด์ ์ค์ 6 – ์๋ ๋ณด์ ์ ๋ฐ์ดํธ ์ค์
๋ณด์ ์ทจ์ฝ์ ์ ๊ณ์ ๋ฐ๊ฒฌ๋๊ณ ํจ์น๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค. ์๋์ผ๋ก ๋งค๋ฒ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์, ๋ณด์ ํจ์น๋งํผ์ ์๋์ผ๋ก ์ค์น๋๋๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
unattended-upgrades ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
sudo apt install unattended-upgrades -y
์๋ ์ ๋ฐ์ดํธ๋ฅผ ํ์ฑํํฉ๋๋ค.
sudo dpkg-reconfigure --priority=low unattended-upgrades
ํ๋ฉด์ ๋ํ๋๋ ๋ํ ์์์์ Yes๋ฅผ ์ ํํ๋ฉด ๋ณด์ ์ ๋ฐ์ดํธ๊ฐ ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค. ์ด์์ฒด์ ์ ์ฒด ์ ๊ทธ๋ ์ด๋๊ฐ ์๋ ๋ณด์ ํจ์น๋ง ์๋ ์ ์ฉ๋๋ฏ๋ก ์๋น์ค ์์ ์ฑ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
8. ๋ณด์ ์ค์ 7 – ๋ถํ์ํ ์๋น์ค ๋นํ์ฑํ
์๋ฒ์ ์ค์น๋ ์๋น์ค ์ค ์ค์ ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์๋ค๋ฉด ๋นํ์ฑํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์คํ ์ค์ธ ์๋น์ค๋ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ ๋์์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ฌ ์คํ ์ค์ธ ์๋น์ค ๋ชฉ๋ก์ ํ์ธํฉ๋๋ค.
sudo systemctl list-units --type=service --state=running
๋ชฉ๋ก์์ ์ฌ์ฉํ์ง ์๋ ์๋น์ค๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์ค์งํ๊ณ ์๋ ์์๋ ๋นํ์ฑํํฉ๋๋ค.
sudo systemctl stop ์๋น์ค๋ช sudo systemctl disable ์๋น์ค๋ช
์๋ฅผ ๋ค์ด ์น ์๋ฒ๋ง ์ด์ํ๋๋ฐ Bluetooth ์๋น์ค๋ ํ๋ฆฐํฐ ์๋น์ค๊ฐ ์คํ ์ค์ด๋ผ๋ฉด ๋นํ์ฑํํ ์ ์์ต๋๋ค. ๋จ, ์ด๋ค ์ญํ ์ ํ๋์ง ๋ชจ๋ฅด๋ ์๋น์ค๋ ํจ๋ถ๋ก ๊ฑด๋๋ฆฌ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
9. ์ ๋ฆฌ
์ค๋ ๋ฐฐ์ด ์๋ฒ ๋ณด์ ์ค์ 7๊ฐ์ง๋ฅผ ์์ฝํฉ๋๋ค.
| root SSH ์ฐจ๋จ | PermitRootLogin no ์ค์ |
| SSH ํฌํธ ๋ณ๊ฒฝ | 22๋ฒ → ๋ค๋ฅธ ๋ฒํธ๋ก ๋ณ๊ฒฝ |
| ๋น๋ฐ๋ฒํธ ์ธ์ฆ ๋นํ์ฑํ | SSH ํค ์ธ์ฆ๋ง ํ์ฉ |
| ๋ฐฉํ๋ฒฝ ์ค์ | ํ์ํ ํฌํธ๋ง ์ด๊ณ ๋๋จธ์ง ์ฐจ๋จ |
| Fail2Ban ์ค์น | ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ ์๋ ์ฐจ๋จ |
| ์๋ ๋ณด์ ์ ๋ฐ์ดํธ | ๋ณด์ ํจ์น ์๋ ์ ์ฉ |
| ๋ถํ์ํ ์๋น์ค ๋นํ์ฑํ | ๊ณต๊ฒฉ ํ๋ฉด ์ต์ํ |
์ด 7๊ฐ์ง ์ค์ ๋ง ์ ์ฉํด๋ ์๋ฒ ๋ณด์ ์์ค์ด ํฌ๊ฒ ๋์์ง๋๋ค.