리눅스 보안 강화 설정과 필수 명령어 정리

리눅스 보안 강화 설정과 필수 명령어 정리

리눅스 서버는 높은 성능과 유연성 덕분에 다양한 환경에서 폭넓게 활용되고 있습니다. 그러나 기본 설정으로 운영할 경우에는 사이버 공격에 취약할 수 있으므로, 서버의 보안 강화를 위한 필요한 조치를 취하는 것이 중요합니다. 이번 글에서는 리눅스 보안을 강화하기 위한 설정 방법과 필수 명령어들을 자세히 알아보도록 하겠습니다.

리눅스 보안 강화의 필요성

최근 몇 년간 리눅스 서버를 대상으로 한 해킹 사례가 증가하고 있습니다. 예를 들어, 2022년에는 유명 클라우드 호스팅 업체의 서버가 SSH를 통한 무차별 대입 공격으로 루트 계정이 탈취되었고, 2023년에는 열린 포트로 인해 DDoS 공격을 받는 사례가 발생했습니다. 이러한 사건들은 리눅스 서버의 기본 보안 설정이 얼마나 중요한지를 잘 보여줍니다. 따라서 아래의 보안 강화 절차를 통해 리눅스 서버를 안전하게 보호해야 합니다.

리눅스 보안 설정 10단계

1. SSH 보안 강화

SSH는 서버 보안에서 매우 중요한 요소 중 하나로, 기본적으로 22번 포트를 사용합니다. 이를 변경하고 루트 로그인을 차단하는 것이 필요합니다.

  • SSH 설정 파일 수정: sudo nano /etc/ssh/sshd_config 명령어로 파일을 열고 포트를 변경합니다.
  • 예시: Port 2222 (기본 포트 22를 2222로 변경), PermitRootLogin no (루트 로그인 차단), MaxAuthTries 3 (로그인 실패 횟수 제한).
  • 변경 사항 적용: sudo systemctl restart sshd 명령어로 SSH 서비스를 재시작합니다.

2. 방화벽 설정

불필요한 포트를 차단하여 공격 경로를 줄이는 것이 중요합니다. 다음은 UFW와 firewalld를 사용한 방화벽 설정 예입니다.

  • UFW 사용 시:
    sudo apt install ufw
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow 2222/tcp
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
  • firewalld 사용 시:
    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와 같이 서비스 이름을 지정하여 중지합니다.

4. 패키지 업데이트 자동화

주기적인 패키지 업데이트는 보안 취약점을 방지하는 필수 요소입니다. 이를 위해 자동 업데이트를 설정할 수 있습니다.

  • Ubuntu/Debian 환경에서는 다음과 같이 진행합니다:
    sudo apt update && sudo apt upgrade -y
    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure --priority=low unattended-upgrades
  • CentOS/RHEL 환경에서는:
    sudo yum update -y

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를 사용하는 것이 매우 중요합니다. Fail2Ban을 설치하면 SSH 로그인 실패 시 자동으로 차단할 수 있습니다.

  • Fail2Ban 설치: 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 활성화: sudo systemctl enable apparmor

8. 데이터 암호화

중요한 데이터를 보호하기 위해 디스크 암호화를 설정하는 것이 필수적입니다. LUKS를 사용한 예시는 다음과 같습니다.

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

9. 2단계 인증 적용

SSH 로그인 시 2단계 인증을 적용하면 보안을 더욱 강화할 수 있습니다.

  • Google Authenticator 설치:
    sudo apt install libpam-google-authenticator
    google-authenticator
  • SSH 2FA 활성화:
    sudo nano /etc/pam.d/sshd
    auth required pam_google_authenticator.so

10. 정기적인 보안 점검 및 취약점 분석

서버 보안을 유지하기 위해서는 주기적인 보안 점검과 취약점 분석이 필요합니다. Lynis와 chkrootkit 같은 툴을 통해 점검할 수 있습니다.

  • Lynis 설치 및 실행:
    sudo apt install lynis
    sudo lynis audit system
  • chkrootkit 설치:
    sudo apt install chkrootkit
    sudo chkrootkit

결론

리눅스 서버의 보안을 강화하는 것은 선택이 아닌 필수입니다. 위에서 소개한 방법들을 통해 안전한 서버 환경을 구축하시길 바랍니다. 리눅스 보안 설정은 시스템의 안전성을 높이고, 중요 데이터의 손실을 방지하는 데 큰 도움이 됩니다.

자주 찾는 질문 Q&A

리눅스 서버 보안을 강화하려면 어떻게 해야 하나요?

리눅스 서버의 보안을 높이기 위해 SSH 포트를 변경하고, 루트 로그인을 비활성화하는 것이 중요합니다. 또한 방화벽을 설정하고, 정기적으로 패키지를 업데이트해야 합니다.

어떤 방화벽 프로그램을 사용해야 하나요?

UFW와 firewalld는 리눅스에서 많이 사용되는 두 가지 방화벽 프로그램입니다. 이들 중 하나를 선택하여 불필요한 포트를 차단할 수 있습니다.

주기적인 보안 점검은 왜 중요한가요?

정기적인 보안 점검은 서버의 취약점을 발견하고 수정하는 데 도움이 됩니다. 이를 통해 해킹 위험을 줄이고 시스템의 안전성을 유지할 수 있습니다.

서버에 2단계 인증을 적용하는 방법은?

2단계 인증을 활성화하려면 Google Authenticator를 설치한 후 SSH 설정 파일을 수정하여 인증 절차를 추가하면 됩니다. 이를 통해 로그인 보안을 강화할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다