본문 바로가기

리눅스 서버 보안 설정 완벽 가이드: 해킹을 막는 필수 설정 10가지

액트 2025. 3. 18.
반응형

왜 리눅스 서버 보안이 중요한가?

리눅스 서버는 강력한 성능과 유연성 덕분에 웹 서버, 데이터베이스 서버, 클라우드 인프라 등 다양한 환경에서 사용됩니다. 하지만 기본 설정 상태로 운영하면 해킹과 보안 위협에 취약합니다.

🔴 실제 사례:
✔ 2022년, 유명 클라우드 호스팅 업체의 리눅스 서버가 SSH 브루트포스(무차별 대입 공격)로 인해 루트 계정이 탈취
✔ 2023년, 오픈 포트 방치로 인해 DDoS 봇넷에 감염된 사례 발생

✅ 따라서 리눅스 서버를 안전하게 보호하는 기본적인 보안 설정이 필수적입니다.

🛡 리눅스 서버 보안 설정 10단계

1️⃣ SSH 보안 강화 (포트 변경 & 루트 로그인 차단)

SSH(22번 포트)는 해커들의 주요 공격 대상이므로 포트 변경 & 루트 로그인 차단이 필요합니다.

설정 방법:

sudo nano /etc/ssh/sshd_config

아래 내용을 수정:

Port 2222 # 기본 22번 포트를 2222번 등 다른 포트로 변경
PermitRootLogin no # 루트 계정으로 직접 SSH 접속 차단 MaxAuthTries 3 # 로그인 실패 횟수를 3번으로 제한

설정 적용:

sudo systemctl restart sshd
 

💡 추가 보안:

  • fail2ban을 설정하면 SSH 로그인 시도 실패 시 자동 차단할 수 있음
sudo apt install fail2ban

2️⃣ 방화벽(Firewall) 설정 (UFW 또는 firewalld 사용)

불필요한 포트를 차단하면 해커의 침입 경로를 줄일 수 있음

UFW 사용 (Ubuntu, Debian 계열)

sudo apt install ufw
sudo ufw default deny incoming # 기본적으로 모든 수신 요청 차단
sudo ufw default allow outgoing # 모든 송신 요청 허용
sudo ufw allow 2222/tcp # SSH 포트 허용 (변경한 포트 기준)
sudo ufw allow 80/tcp # 웹 서버(HTTP) 허용
sudo ufw allow 443/tcp # HTTPS 허용
sudo ufw enable # 방화벽 활성화

firewalld 사용 (CentOS, RHEL 계열)

sudo systemctl start firewalld
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

3️⃣ 불필요한 서비스 중지 및 제거

리눅스 서버에는 기본적으로 여러 서비스가 활성화되어 있으며, 불필요한 서비스는 보안 취약점을 유발할 수 있습니다.

실행 중인 서비스 확인:

sudo systemctl list-units --type=service

불필요한 서비스 중지 & 비활성화 예시

sudo systemctl stop cups # 프린터 관련 서비스 비활성화
sudo systemctl disable cups

4️⃣ 패키지 업데이트 자동화

보안 취약점을 방지하려면 최신 보안 패치를 자동 적용해야 합니다.

Ubuntu/Debian:

sudo apt update && sudo apt upgrade -y sudo apt install unattended-upgrades

CentOS/RHEL:

sudo yum update -y

자동 업데이트 설정 (Ubuntu 예시)

sudo dpkg-reconfigure --priority=low unattended-upgrades

5️⃣ SUDO 권한 관리 (루트 계정 최소화)

루트 계정을 직접 사용하지 않고, 일반 사용자 계정에 sudo 권한을 부여하는 것이 안전합니다.

새 사용자 생성 및 sudo 권한 부여

sudo adduser myadmin
sudo usermod -aG sudo myadmin

루트 계정 직접 로그인 차단

sudo nano /etc/ssh/sshd_config
PermitRootLogin no
sudo systemctl restart sshd

6️⃣ 로그 모니터링 및 침입 탐지 (IDS/IPS 사용)

서버에서 이상 행동을 감지하려면 IDS(Intrusion Detection System) 또는 IPS(Intrusion Prevention System)**을 활용해야 합니다.

Fail2Ban 설치 및 설정 (SSH 보호)

sudo apt install fail2ban
sudo systemctl enable fail2ban

로그 확인 (로그 모니터링 필수!)

sudo tail -f /var/log/auth.log # Ubuntu
sudo tail -f /var/log/secure # CentOS

7️⃣ SELinux 또는 AppArmor 활성화

시스템 보안을 강화하려면 SELinux(CentOS/RHEL) 또는 AppArmor(Ubuntu)를 활성화해야 합니다.

SELinux 상태 확인 및 활성화

getenforce sudo setenforce 1 # 활성화

AppArmor 활성화 (Ubuntu/Debian)

sudo systemctl enable apparmor

8️⃣ 데이터 암호화 (디스크 암호화 설정)

서버에 중요한 데이터를 저장한다면 암호화로 보호하는 것이 중요합니다.

LUKS를 이용한 디스크 암호화 예시

sudo cryptsetup luksFormat /dev/sdb
sudo cryptsetup luksOpen /dev/sdb my_encrypted_disk

 

9️⃣ 2단계 인증(2FA) 적용 (Google Authenticator)

SSH 로그인 시 2FA를 적용하면 보안이 대폭 강화됩니다.

Google Authenticator 설치

sudo apt install libpam-google-authenticator google-authenticator

SSH 2FA 활성화

sudo nano /etc/pam.d/sshd
auth required pam_google_authenticator.so

🔟 정기적인 보안 점검 & 취약점 분석

서버 보안을 유지하려면 정기적인 보안 점검 및 취약점 분석이 필요합니다.

Lynis 보안 점검 툴 설치 및 실행

sudo apt install lynis sudo lynis audit system

chkrootkit로 루트킷 탐지

sudo apt install chkrootkit sudo chkrootkit

결론: 리눅스 서버 보안, 이렇게 지키세요!

SSH 보안 강화 (포트 변경, 루트 로그인 차단, 2FA 적용)
방화벽 설정 (UFW 또는 firewalld 사용)
불필요한 서비스 제거 & 자동 업데이트 활성화
로그 모니터링 및 침입 탐지 시스템(IDS) 적용
디스크 암호화 및 SELinux/AppArmor 활성화

🚀 리눅스 서버 보안은 선택이 아닌 필수입니다! 위 설정을 적용하여 안전한 서버 환경을 구축하세요. 💪

📚 참고 자료

반응형

댓글