본문 바로가기
카테고리 없음

리눅스 서버 보안 설정 기본 가이드

by 서버의달인 2025. 4. 16.

인터넷에 연결된 서버는 항상 해킹과 악성 공격의 대상이 됩니다. 특히 리눅스 서버는 웹 서비스, 데이터베이스, 파일 서버 등 다양한 용도로 사용되기 때문에 초기 보안 설정이 매우 중요합니다. 이 글에서는 초보자도 따라할 수 있는 리눅스 서버 보안 설정의 핵심 요소를 단계별로 안내합니다.

1. 기본 업데이트 적용

최신 보안 패치를 적용하는 것은 가장 기본적이면서도 효과적인 보안 방법입니다.


sudo apt update && sudo apt upgrade -y    # Ubuntu / Debian
sudo yum update -y                        # CentOS / RHEL
      

보안 업데이트는 정기적으로 수행하거나, 자동 업데이트 도구를 설정할 수 있습니다.

2. 루트 계정 비활성화 및 사용자 권한 설정

루트(root) 계정은 시스템 전체 권한을 가지므로 해커의 주요 타깃입니다. 루트 계정의 직접 로그인을 막고, 일반 사용자에게 sudo 권한을 부여하는 것이 안전합니다.

사용자 추가 및 sudo 권한 부여


sudo adduser myuser
sudo usermod -aG sudo myuser
      

SSH에서 루트 로그인 비활성화


sudo nano /etc/ssh/sshd_config
# PermitRootLogin yes → no
PermitRootLogin no
sudo systemctl restart ssh
      

3. SSH 포트 변경 및 키 인증 설정

기본 SSH 포트 22번은 자동 스캐닝의 주요 대상입니다. 포트를 변경하거나 비밀번호 대신 SSH 키 인증을 사용하는 것이 보안에 유리합니다.

포트 변경


sudo nano /etc/ssh/sshd_config
# Port 22 → Port 2222 (예시)
Port 2222
sudo ufw allow 2222/tcp
sudo systemctl restart ssh
      

SSH 키 인증 설정


# 클라이언트 PC에서
ssh-keygen -t rsa

# 공개키 서버로 복사
ssh-copy-id -p 2222 myuser@서버IP
      

이후 PasswordAuthentication no 설정을 통해 비밀번호 로그인도 차단할 수 있습니다.

4. 방화벽(UFW) 설정

UFW(Uncomplicated Firewall)은 Ubuntu 기반 서버에서 방화벽 설정을 간편하게 할 수 있는 도구입니다.


sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp     # SSH 포트 허용
sudo ufw allow 80,443/tcp   # 웹서버 포트 허용
sudo ufw enable
sudo ufw status verbose
      

포트를 최소한으로 열고, 불필요한 트래픽을 차단하는 것이 중요합니다.

5. Fail2Ban을 통한 SSH 보호

Fail2Ban은 로그인 실패 횟수가 일정 기준을 초과하면 해당 IP를 차단해주는 침입 방지 도구입니다.


sudo apt install fail2ban -y

# 설정 파일 복사 및 수정
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
      

기본적으로 SSH에 대한 보호가 활성화되어 있으며, 추가적으로 웹서버나 FTP 등에도 적용할 수 있습니다.

6. 불필요한 서비스 비활성화

사용하지 않는 서비스는 서버에서 제거하거나 중지해야 보안 취약점을 줄일 수 있습니다.


sudo systemctl list-units --type=service --state=running
sudo systemctl stop service_name
sudo systemctl disable service_name
      

예: FTP, Telnet, Samba 등은 사용하지 않으면 비활성화 또는 제거하세요.

7. 포트 스캐닝 탐지 도구 설치 (선택)

포트 스캐닝이나 의심스러운 접근을 탐지하고 차단하는 툴도 유용합니다.

  • Portsentry - 포트 스캔 탐지 및 차단
  • PSAD - 방화벽 로그 기반 침입 탐지

이러한 도구를 통해 보안 로그를 모니터링하고, 자동 대응 설정이 가능합니다.

8. 자동 보안 업데이트 설정

시스템 보안을 유지하려면 자동 보안 패치 설정이 매우 유용합니다.


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

설정 후에는 보안 업데이트가 자동으로 적용되며, 시스템 재부팅이 필요한 경우 이메일 알림도 설정할 수 있습니다.

9. 서버 보안 로그 확인

보안 위협 징후를 사전에 파악하기 위해 로그 모니터링은 필수입니다.

  • /var/log/auth.log - 로그인 시도 기록
  • /var/log/ufw.log - 방화벽 로그
  • /var/log/fail2ban.log - 차단된 IP 확인

정기적으로 로그를 확인하거나, logwatch, logrotate 등을 사용해 관리 자동화를 권장합니다.

10. 결론: 리눅스 서버 보안은 습관입니다

리눅스 서버는 강력한 기능을 제공하지만, 보안 설정이 미흡하면 치명적인 위험에 노출됩니다. 특히 SSH 접속, 방화벽, 사용자 권한 등 기본적인 보안 설정만 잘해도 상당한 위협을 차단할 수 있습니다.

이 글을 통해 보안의 기본부터 실천하시고, 필요 시 침입 탐지 시스템, 방화벽 강화, 실시간 모니터링 도구 등으로 확장해 나가시기 바랍니다. 다음 글에서는 실전 보안 시나리오와 함께, 리눅스 서버 자동 백업 및 복구 전략을 소개해드릴 예정입니다.