๐[Server] ๋ด ์ฐ๋ถํฌ ์๋ฒ ๋ณด์ ์ค์ ํ๊ธฐ
๋ณด์ ์ค์ ..?
์น๊ตฌํํ
๋ด ์๋ฒ๋ฅผ ๋ง๋ค์๋๋ฐ, ์ฌ๊ธฐ์ ์งํ ์ค์ธ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ์ด๋ค์ง ์๊ฒฌ์ ์ ์ํด๋ดค๋ค.
์น๊ตฌ๋ ์๊ธฐ๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํด๋ดค๋๋ฐ, ๊ทธ๊ฒ ์ฐ๊ฒฐ ํด๋์ ์ธํฐ๋ท์ด ์ํํ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์๋ ์๋ค๊ณ ํ๋ค.
๋ณด์์ ์ธ ์ธก๋ฉด์์ ์ํ ์์๊ฐ ์์ผ๋ฉด, ์ธํฐ๋ท์ ๋ฌผ๋ก ์ด๊ณ ๋ฐฐํฌํด๋์ ์๋น์ค์ ๋ฐ์ดํฐ ๋ํ ํ ๋ฒ์ ์ํ์ ๋
ธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ณด์ ์ค์ ์ ๋ํด์ ๊ถ๊ธํด์ก๋ค.
VPN
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๊ณ , ๋จ์ํ๊ฒ ์ธํฐ๋ท์ ๋ฐ๋ก ๊ฐํตํด์ ๊ทธ๊ฑธ ์ฐ๋ ๋ฐฉ๋ฒ๋ ์๊ณ .. ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์๋ค.
๋๋ ์ฐ์ ๋ด ์๋ฒ์ ์ ์ํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๋ณด์ ์ค์ ์ ํ๋๊ฒ ์ด๋จ๊น ํ๋ ์๊ฐ์ ChatGPT์๊ฒ ๋ฌผ์ด๋ดค๋ค.
์ดํ์ ๊ตฌ๊ธ๋ง๊ณผ ์ฌ๋ฌ ๋ธ๋ก๊ทธ ํฌ์คํ ๋ ์ฐธ๊ณ ํ๋ฉด์ ๋ณด์์ฑ์ด ํฅ์๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํด๋ณผ๊ฑฐ์!
1. SSH ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ
SSH ํฌํธ ๋ณ๊ฒฝ
๊ธฐ๋ณธ์ ์ผ๋ก SSH๋ 22๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
์ด๋ฅผ ๋ณ๊ฒฝํ์ฌ ์๋ ์ค์บ ๊ณต๊ฒฉ
์ ๋ฐฉ์งํ ์ ์๋ค.
sudo nano /etc/ssh/sshd_config
sshd_config
์ ์ ์
Port 2222
- ํฌํธ ๋ณ๊ฒฝ
sudo systemctl restart ssh
- SSH ๋ฐ๋ชฌ ์ฌ์์
๋ฃจํธ ๋ก๊ทธ์ธ ๋นํ์ฑํ
๋ฃจํธ ๊ณ์ ์ผ๋ก ์ง์ ์ ์ํ๋ ๊ฒ์ ๋นํ์ฑํํ๋ค.
sudo nano /etc/ssh/sshd_config
sshd_config
์ ์ ์
PermitRootLogin no
PermitRootLogin
์ค์ no
๋ก ๋ณ๊ฒฝ
sudo systemctl restart ssh
- ์ํธ ์ธ์ฆ ๋นํ์ฑํ ๋ฐ ๊ณต๊ฐ ํค ์ธ์ฆ ์ฌ์ฉ
- ์ํธ ์ธ์ฆ์ ๋นํ์ฑํํ๊ณ , ๊ณต๊ฐ ํค ์ธ์ฆ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ค.
sudo nano /etc/ssh/sshd_config
sshd_config
์ ์ ์
PasswordAuthentication no
PasswordAuthentication
์ค์ no
๋ก ๋ณ๊ฒฝ
sudo systemctl restart ssh
- SSH ๋ฐ๋ชฌ ์ฌ์์
# ํด๋ผ์ด์ธํธ ์ปดํจํฐ
ssh-keygen -t rsa
# ssh-copy-id username@server_ip
ssh-copy-id -i /path/to/your_rsa_key.pub user@server_ip -p [PORT]
- ๊ณต๊ฐ ํค ์ธ์ฆ์ ์ค์ ํ๋ ค๋ฉด, ํด๋ผ์ด์ธํธ ์ปดํจํฐ์์ ๊ณต๊ฐ ํค๋ฅผ ์์ฑํ๊ณ , ์๋ฒ์ ์ ๋ก๋ ํด์ผํ๋ค.
ssh-copy-id username@server_ip
๋ฅผ ํ๋๋ฐ, ์๋ฒ์ ์ ์ก์ด ์๋ ๋ฏํ๋ค..- ๊ทธ๋์
ssh-copy-id -i /path/to/your_rsa_key.pub user@server_ip -p [PORT]
๋ฅผ ์ฌ์ฉํด์.pub
ํค๋ฅผ ๋ณด๋ด์คฌ๋ค.
# ์๋ฒ ์ปดํจํฐ
cd .ssh/
cat authorized_keys
- ์๋ฒ ์ธก ์ปดํจํฐ์์ ํค๊ฐ ์ ์์ ์ผ๋ก ๋์ด์๋์ง ํ์ธํด๋ณด์!
- ์ค ์๊ฐ ๋์ด๋ฌ์ผ๋ฉด ๋์ด์จ๊ฑฐ์.
# ๋ค์ ํด๋ผ์ด์ธํธ ์ปดํจํฐ
Host server_alias
HostName server_ip
Port 2222
User user
IdentityFile /path/to/your_rsa_key
- ์ด๋ ๊ฒ ์ค์ ํด๋์ผ๋ฉด ๋ด ์๋ฒ์ ์ ์ํ ๋
ssh server_alias
๋ช ๋ น์ด ์ ๋ ฅํ๋ฉด ๋ค์ด๊ฐ์ง๋ค! - ๋๋
server_alias
๋ฅผmy_ubuntu
๋ก ํ๋ค!
ssh my_ubuntu
- ๊ทธ๋ผ ์ ์ํ ๋, ์๊น ์ค์ ํ
rsa
ํค๋ฅผ ๋ง๋ค ๋ ์ค์ ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ ์ ์ํ ์ ์๋ค!
2. ๋ฐฉํ๋ฒฝ ์ค์
์ฐ๋ถํฌ์ ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ์ธ UFW
๋ฅผ ์ค์ ํ์ฌ ํ์ํ ํฌํธ๋ง ์ด์ด์ค๋ค.
sudo ufw allow 2222/tcp
sudo ufw enable
sudo ufw status
3. Fail2Ban ์ ์ฉ
sudo apt update
sudo apt install fail2ban
Fail2Ban
์ SSH ๋ก๊ทธ์ธ ์๋๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ์ฌ๋ฌ ๋ฒ ์คํจํ IP๋ฅผ ์ฐจ๋จํ๋ค.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- ๊ธฐ๋ณธ ์ค์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ฌ์ฉ์ ์ค์ ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
sudo nano /etc/fail2ban/jail.local
- ์ฌ์ฉ์ ์ค์ ํ์ผ์ ํธ์งํ๋ค.
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
- ์ฌ์ฉ์ ์ค์ ํ์ผ์์
[sshd]
์น์ ์ ์ฐพ์ ์์ ๊ฐ์ด ๋ณ๊ฒฝํด์ค๋ค.
sudo systemctl restart fail2ban
Fail2Ban
์ ์ฌ์์ํ๋ค.
2๋จ๊ณ ์ธ์ฆ ์ค์ (Google Authenticator)
2๋จ๊ณ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ณด์์ ๋์ฑ ๊ฐํํ ์ ์๋ค.
์ฌ๊ธฐ์ Google Authenticator
๋ฅผ ์ฌ์ฉํ๋ค.
sudo apt install libpam-google-authenticator
libpam-google-authenticator
๋ฅผ ์ค์นํ๋ค.
google-authenticator
- ๊ฐ ์ฌ์ฉ์ ๊ณ์ ์์
Google Authenticator
๋ฅผ ์ค์ ํ๋ค.
sudo nano /etc/pam.d/sshd
/etc/pam.d/sshd
ํ์ผ์ ์ฐ๋ค.
auth required pam_google_authenticator.so
- ์์ ์ค์ ์ถ๊ฐํ์ฌ
PAM ๋ชจ๋
์ ์ถ๊ฐํ๋ค.
sudo nano /etc/ssh/sshd_config
sshd_config
ํ์ผ์ ์ฐ๋ค.
ChallengeResponseAuthentication yes
ChallengeResponseAuthentication
์ต์ ์yes
๋ก ๋ฐ๊ฟ์ค๋ค.
sudo systemctl restart ssh
- SSH ๋ฐ๋ชฌ์ ์ฌ์์ํ๋ค.
์ฐธ๊ณ ์๋ฃ
๋ด ์ฐ๋ถํฌ ์๋ฒ์ ์๋ฌด๋ ์ ์ํ ์ ์๋๋ก ๋ณด์์ค์ ํ๋ ๋ฐฉ๋ฒ ์๋ ค์ค
๋๊ธ๋จ๊ธฐ๊ธฐ