Study/Linux

🚀 서버 시간대를 한국 시간(KST)으로 설정하고 보안 강화하기

AC 2025. 9. 29. 11:04

서버 운영의 기본이자 가장 중요한 단계 중 하나는 정확한 시간대 설정입니다. 특히 로그 분석, 작업 스케줄링(Cron), 그리고 타임스탬프가 중요한 애플리케이션 운영에 있어 서버 시간이 현지 시간과 일치하는 것은 필수적입니다. 더불어, 안전한 서버 환경 구축을 위한 기본적인 보안 설정까지 함께 진행해 봅시다!

1. 시스템 시간을 한국 시간(KST)으로 변경하기

시스템 환경에 따라 최신 방식인 timedatectl을 사용하거나 전통적인 방식을 사용할 수 있습니다. 최신 systemd 기반 시스템이라면 방법 1을 권장합니다.

방법 1: timedatectl 사용 (권장, systemd 기반)

timedatectl은 시간, 날짜, 시간대를 관리하는 현대적인 도구입니다.

  1. 현재 시간대 확인:(현재 설정된 시간대와 NTP 동기화 상태를 확인합니다.)
  2.  
    timedatectl
    
  3. Bash
     
  4. 한국 시간으로 설정: 사용 가능한 시간대 목록을 검색해 Asia/Seoul을 확인한 후 설정합니다.
  5. Bash
     
    # 사용 가능한 시간대 목록 확인 (선택 사항)
    # timedatectl list-timezones | grep Seoul 
    
    # 한국 시간으로 설정
    sudo timedatectl set-timezone Asia/Seoul
    
  6. NTP 동기화 활성화: 시간을 자동으로 정확하게 유지하기 위해 네트워크 시간 프로토콜(NTP) 동기화를 활성화합니다.
  7. Bash
     
    sudo timedatectl set-ntp true
    

방법 2: 전통적인 방법 (구형 시스템/다른 환경)

만약 timedatectl 명령어가 작동하지 않는다면, 전통적인 심볼릭 링크 방식을 사용할 수 있습니다.

  1. 심볼릭 링크 방식:(/etc/localtime 파일을 /usr/share/zoneinfo/Asia/Seoul로 연결하여 시간대를 변경합니다.)
  2. Bash
     
    sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    
  3. tzdata 재설정 (Debian/Ubuntu 계열): 대화형 메뉴를 통해 시간대를 설정합니다.
  4. Bash
     
    sudo dpkg-reconfigure tzdata
    # 메뉴가 나타나면 Asia → Seoul을 선택하세요.
    

2. 시간 확인 및 하드웨어 시계 동기화

시간대 설정 후, 변경 사항을 확인하고 시스템 시간을 하드웨어 시계에 동기화하여 재부팅 시에도 시간이 유지되도록 합니다.

  1. 현재 시간 확인:(출력된 시간이 KST로 표시되는지 확인합니다.)
  2. Bash
     
    date
    
  3. 하드웨어 시계 동기화: 시스템 시간(소프트웨어 시계)을 메인보드의 하드웨어 시계에 기록합니다.
  4. Bash
     
    sudo hwclock --systohc
    
  5. NTP 서버와 수동 동기화 (필요시): 즉시 정확한 시간을 맞추고 싶다면 수동 동기화를 시도할 수 있습니다.
  6. Bash
     
    # ntpdate를 사용 (설치 필요할 수 있음)
    sudo ntpdate time.google.com
    # 또는 chrony 상태 확인
    sudo chronyc sources
    

🔒 서버 보안 강화: 새로운 도전 시작!

시간대 설정은 서버 관리의 기본입니다. 다음 단계로, 안전하고 견고한 서버 환경을 위한 보안 기본 설정을 진행하여 서버 관리에 대한 지속적인 도전 의식을 높여봅시다.

A. 기본 root 로그인 비활성화 (보안의 첫 걸음)

root 계정은 서버의 모든 권한을 가지고 있어 무차별 대입 공격(Brute-force)의 주요 대상이 됩니다. 새 계정을 생성했다면 root 로그인을 비활성화하고 일반 계정으로 접속 후 sudo를 사용하는 것이 안전합니다.

  1. SSH 설정 파일 수정:
  2. Bash
     
    sudo nano /etc/ssh/sshd_config
    
  3. PermitRootLogin 설정 변경: 해당 줄을 찾아 다음과 같이 변경하거나 추가합니다.
  4. PermitRootLogin no 
    
  5. SSH 서비스 재시작: 변경 사항을 적용합니다.(주의: 변경 전 반드시 새 계정으로 접속하여 sudo 권한이 작동하는지 확인하세요!)
  6. Bash
     
    sudo systemctl restart sshd
    

B. SSH 키 인증 설정 (최고 수준의 인증)

비밀번호는 아무리 복잡해도 해킹의 위험이 있지만, SSH 키 인증은 암호화된 키 쌍을 사용하여 훨씬 안전합니다. 직접적인 참여 의식을 가지고 로컬 환경에서 키를 생성하고 서버에 등록해 봅시다.

  1. 로컬 PC에서 키 생성 (터미널):(최신 암호화 방식인 ed25519를 사용합니다. 이때 안전을 위해 **암호(passphrase)**를 설정하는 것을 강력히 권장합니다.)
  2. Bash
     
    ssh-keygen -t ed25519 -C "사용자이름@서버이름"
    
  3. 서버에 공개키 복사: 생성된 공개키를 서버로 안전하게 복사합니다.(이후부터는 비밀번호 입력 없이 키를 통해 접속할 수 있습니다.)
  4. Bash
     
    ssh-copy-id 사용자명@서버-IP주소
    

💡 최종 점검: 시간대 변경 확인

모든 설정이 완료되었다면, 로그 파일을 확인하여 타임스탬프가 KST로 올바르게 표시되는지 최종적으로 확인합니다.

Bash
 
# 로그 파일의 최신 내용을 실시간으로 확인
tail -f /var/log/syslog
# 또는 
tail -f /var/log/auth.log 
# KST 시간으로 표시되는지 확인합니다.

이렇게 하면 완벽한 한국 시간대의 새로운 주 계정이 탄생하고, 기본적인 보안까지 튼튼하게 갖춘 서버가 됩니다!

LIST