08. Ubuntu 서버 보호: 강화 및 방어를 위한 실용적인 단계

Ubuntu 서버를 보호하는 것은 데이터, 애플리케이션, 인프라를 악의적인 공격으로부터 보호하는 데 필수적입니다. 웹 사이트, 데이터베이스, 애플리케이션 중 무엇을 호스팅하든 강력한 보안 방식을 구현하면 서버가 취약성에 강해집니다. 이 글에서는 방화벽 구성, SSH 안전 설정, fail2ban 등의 도구 사용 및 기타 강화 팁을 포함하여 Ubuntu 서버를 보호하는 실용적인 단계를 살펴보겠습니다.


이전 글:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu Server 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03. Ubuntu Server용 Linux 명령줄 마스터하기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu Server에 소프트웨어 설치 및 관리: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu Server 패치 및 업데이트: 종합 가이드 – SysOSX: AI & Cloud



서버 보안이 중요한 이유

서버에는 민감한 데이터가 저장되는 경우가 많고 비즈니스 운영에 매우 중요합니다. 적절한 보안 조치가 없으면 공격자가 취약점을 악용하여 무단 액세스를 얻거나, 서비스를 중단하거나, 정보를 훔칠 수 있습니다. 이러한 실용적인 단계를 따르면 공격 위험을 크게 줄이고 서버를 안전하게 유지할 수 있습니다.


1. 시스템 최신 상태 유지

정기 업데이트는 보안 취약점을 패치하고 서버를 안전하게 유지하는 데 필수적입니다. Ubuntu는 패키지와 커널에 대한 적시 업데이트를 제공합니다.

서버 업데이트 단계:

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade

또한 보안 업데이트를 자동화하려면 unattended-upgrades을 활성화하세요:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

2. UFW로 방화벽 구성

방화벽은 무단 액세스에 대한 첫 번째 방어선입니다. Ubuntu에는 UFW (Uncomplicated Firewall)가 포함되어 있어 방화벽 관리를 간소화합니다.

UFW 구성 단계:

  • UFW 활성화:
sudo ufw enable
  • SSH 연결 허용:
sudo ufw allow ssh
  • 특정 포트 허용 (예: 웹 서버용 HTTP 및 HTTPS):
sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp
  • 방화벽 상태 확인:
sudo ufw status

    기본적으로 UFW는 명시적으로 허용된 연결을 제외한 모든 인바운드 연결을 차단하여 서버를 보호합니다.


    3. SSH 액세스 보호

    SSH는 원격 서버 관리의 주요 방법이지만, 무차별 대입 공격의 표적이 되는 경우가 많습니다. SSH를 보호하는 것은 무단 액세스 위험을 줄이는 데 매우 중요합니다.

    SSH 보호 팁:

    • 기본 SSH 포트 변경:
      • SSH 구성 파일을 편집합니다:
    sudo nano /etc/ssh/sshd_config 
    
    • 기본 포트(예: 22에서 2222)로 변경하고 SSH 서비스를 다시 시작합니다:
    sudo systemctl restart ssh
    
    • 새 포트에 대한 액세스를 허용하도록 UFW 규칙을 업데이트합니다:
    sudo ufw allow 2222/tcp
    
    • 루트 로그인 비활성화:
      다음 파일에서 /etc/ssh/sshd_config을 다음과 같이 설정합니다:
    PermitRootLogin no
    
    • SSH 키 인증 사용:
      • SSH 키 쌍을 생성합니다:
    ssh-keygen -t rsa -b 4096 
    
    • 공개 키를 서버에 복사합니다:
    ssh-copy-id username@server-ip
    
    • SSH 액세스 제한:
      다음 파일을 편집하여 특정 IP 주소로만 SSH 액세스를 제한합니다: /etc/hosts.allow 및 /etc/hosts.deny 파일.

    4. Fail2Ban 설치 및 구성

    Fail2Ban는 로그 파일을 모니터링하고 의심스러운 동작을 보이는 IP 주소를 차단하여 서버를 무차별 대입 공격으로부터 보호하는 도구입니다.

    Fail2Ban 설정 단계:

    • Fail2Ban 설치:
    sudo apt install fail2ban
    
    • 로컬 구성 파일 만들기:
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    
    • SSH 보호 구성:
      다음 파일을 편집하고 /etc/fail2ban/jail.local에서 SSH jail을 활성화합니다:
    [sshd]
    enabled = true
    port = 2222
    maxretry = 5
    bantime = 3600
    
    
    • Fail2Ban 다시 시작:
    sudo systemctl restart fail2ban
    

      이제 Fail2Ban은 SSH 로그를 모니터링하고 반복된 로그인 실패 후 IP를 차단합니다.


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

      불필요한 서비스를 실행하면 서버의 공격 표면이 넓어집니다. 필요하지 않은 서비스를 식별하고 비활성화하세요.

      서비스 비활성화 단계:

      • 활성 서비스 나열:
      sudo systemctl list-units --type=service
      
      • 사용하지 않는 서비스 중지 및 비활성화:
      sudo systemctl stop service-name 
      sudo systemctl disable service-name
      

        6. 강력한 비밀번호 및 사용자 계정 사용

        취약한 비밀번호는 흔한 취약점입니다. 모든 사용자 계정이 강력하고 고유한 비밀번호를 사용하는지 확인하세요.

        사용자 계정 보안 팁:

        • 비밀번호 관리자를 사용하여 강력한 비밀번호를 생성하고 저장합니다.
        • 사용자 계정을 정기적으로 감사하고 사용하지 않는 계정을 제거합니다:
        sudo awk -F: '{ print $1}' /etc/passwd
        

          7. 2단계 인증(2FA) 활성화

          2단계 인증은 SSH 로그인 과정에 보안 계층을 추가합니다. 다음을 사용하여 2FA를 활성화할 수 있습니다. Google Authenticator.

          2FA 활성화 단계:

          • Google Authenticator 설치:
          sudo apt install libpam-google-authenticator
          
          • 사용자용 2FA 구성:
            다음 명령을 실행하고 표시되는 안내를 따릅니다:
           google-authenticator
          
          • SSH에서 2FA 활성화:
            다음 파일을 편집하고 /etc/pam.d/sshd에 다음을 추가합니다:
           auth required pam_google_authenticator.so
          

            SSH 서비스를 다시 시작합니다:

            sudo systemctl restart ssh
            
            

            8. 로그 및 시스템 활동 모니터링

            서버 로그를 정기적으로 모니터링하면 의심스러운 활동을 조기에 탐지할 수 있습니다.

            로그 모니터링 도구:

            • Syslog: 일반 시스템 로그 확인:
            sudo less /var/log/syslog
            
            • 인증 로그: 인증 시도 검토:
             sudo less /var/log/auth.log
            

              자동 로그 분석 및 알림을 위해 다음과 같은 도구 사용을 고려해 보세요: Logwatch 또는 OSSEC.


              9. 정기 백업 수행

              강력한 보안 조치를 취하더라도 공격이나 데이터 손실로부터 복구하려면 백업이 필수적입니다.

              백업 옵션:

              • 로컬 백업을 만들려면 rsync을 사용합니다:
              rsync -av /data /backup/
              
              • 다음과 같은 도구로 백업을 자동화합니다: Duplicity 또는 다음과 같은 클라우드 기반 솔루션을 통합합니다: AWS S3 또는 Google Cloud Storage.

              10. 추가 강화 팁

              • 바이러스 백신 소프트웨어 설치: 다음과 같은 도구를 사용합니다. ClamAV로 악성 코드를 검사합니다.
              sudo apt install clamav 
              sudo clamscan -r /path/to/scan
              
              • 웹 애플리케이션 보호: 웹 사이트를 호스팅하는 경우 다음과 같은 도구를 사용합니다. ModSecurity로 일반적인 웹 취약점으로부터 보호합니다.
              • AppArmor 활성화: AppArmor는 애플리케이션에 강제 액세스 제어를 제공합니다.
              sudo apt install apparmor 
              sudo aa-status
              

              결론

              Ubuntu 서버를 보호하려면 시스템 업데이트, 방화벽 구성, SSH 강화, Fail2Ban과 같은 도구를 결합한 사전 예방적 접근 방식이 필요합니다. 이러한 단계를 따르고 서버를 정기적으로 모니터링하면 잠재적 위협에 대한 강력한 방어를 구축할 수 있습니다.

              자세한 내용은 공식 Ubuntu 보안 가이드.

              다음: Ubuntu Server 감사 및 로깅

              서버를 보호하는 것도 중요하지만, 그 운영에 대한 가시성을 유지하는 것도 마찬가지로 중요합니다. 감사 및 로깅 을 통해 시스템 활동을 모니터링하고, 이상을 식별하며, 문제를 효과적으로 해결할 수 있습니다.

              다음 섹션에서는 다음 내용을 다룹니다:

              • 시스템 감사 및 로그의 중요성.
              • 시스템 이벤트를 추적하고 기록하기 위한 auditd 사용.
              • 로그 파일을 효율적으로 관리하기 위한 로그 순환의 logrotate 구성.
              • 중요 이벤트에 대해 /var/log 디렉터리를 모니터링합니다.

              이러한 방식을 통해 책임을 유지하고, 잠재적 위협을 탐지하며, 서버의 안정성을 보장할 수 있습니다.

              Ubuntu 서버를 효과적으로 감사하고 모니터링할 수 있게 해주는 도구와 기술을 자세히 살펴볼 예정이니 기대해 주세요.

              3 thoughts on “08. Securing Your Ubuntu Server: Practical Steps for Hardening and Protection”

              댓글 남기기