프로덕션용 Ubuntu Linux 서버 보안 설정 방법
Source: Dev.to
프로덕션 Linux 서버를 보안하는 것은 시스템 관리자의 가장 중요한 책임 중 하나입니다. 설정이 잘못된 서버는 무차별 대입 공격, 악성코드, 무단 접근 및 서비스 중단의 쉬운 표적이 될 수 있습니다.
이 가이드에서는 Ubuntu 서버를 프로덕션 환경에 맞게 강화하고 보안하는 필수 단계를 제시합니다.
1. 서버를 정기적으로 업데이트하기
시스템 패키지를 항상 최신 상태로 유지하여 보안 취약점을 패치하십시오.
sudo apt update && sudo apt upgrade -y
사용하지 않는 패키지를 제거합니다:
sudo apt autoremove -y
2. 비루트 사용자 만들기
일상적인 관리 작업에 루트 사용자를 직접 사용하는 것을 피하십시오.
새 사용자를 생성합니다:
sudo adduser adminuser
사용자를 sudo 그룹에 추가합니다:
sudo usermod -aG sudo adminuser
3. 루트 SSH 로그인 비활성화
SSH를 통한 루트 로그인은 큰 보안 위험입니다.
SSH 설정 파일을 편집합니다:
sudo nano /etc/ssh/sshd_config
다음 줄을 찾습니다:
PermitRootLogin yes
다음과 같이 변경합니다:
PermitRootLogin no
SSH를 재시작합니다:
sudo systemctl restart ssh
4. 기본 SSH 포트 변경
기본 SSH 포트를 변경하면 자동화된 무차별 대입 공격을 줄이는 데 도움이 됩니다.
/etc/ssh/sshd_config 내부에 새로운 포트를 설정합니다(예시):
Port 2222
SSH를 재시작합니다:
sudo systemctl restart ssh
새 포트를 방화벽에서 허용하는 것을 잊지 마세요.
5. UFW 방화벽 구성
Ubuntu에는 UFW(간편 방화벽)가 기본으로 제공됩니다.
필요한 서비스 허용:
sudo ufw allow 2222/tcp # SSH (사용자 지정 포트)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
방화벽을 활성화합니다:
sudo ufw enable
상태를 확인합니다:
sudo ufw status
6. Fail2Ban 설치
Fail2Ban은 반복된 로그인 실패 시도를 자동으로 차단합니다.
설치합니다:
sudo apt install fail2ban -y
서비스를 활성화하고 시작합니다:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
상태를 확인합니다:
sudo fail2ban-client status
7. SSH 키 인증 사용
SSH 키는 비밀번호보다 훨씬 안전합니다.
로컬 머신에서 SSH 키를 생성합니다:
ssh-keygen
공개 키를 서버에 복사합니다:
ssh-copy-id user@server-ip
그런 다음 /etc/ssh/sshd_config에서 비밀번호 인증을 비활성화합니다:
PasswordAuthentication no
SSH를 다시 재시작합니다:
sudo systemctl restart ssh
8. Docker 컨테이너 보안 (프로덕션에서 Docker를 사용하는 경우)
- 컨테이너를 루트로 실행하지 않기
- 이미지 최신 상태 유지
- 신뢰할 수 있는 이미지만 사용
- 노출되는 포트 제한
- 이미지 취약점 스캔
Docker를 정기적으로 업데이트합니다:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
9. 자동 보안 업데이트 활성화
unattended-upgrades를 설치합니다:
sudo apt install unattended-upgrades -y
자동 보안 업데이트를 활성화합니다:
sudo dpkg-reconfigure unattended-upgrades
10. 로그 및 시스템 활동 모니터링
정기적인 모니터링은 의심스러운 활동을 조기에 감지하는 데 도움이 됩니다.
유용한 명령어:
sudo journalctl -xe
sudo tail -f /var/log/auth.log
고려해볼 수 있는 추가 모니터링 도구:
- Prometheus
- Grafana
- Netdata
- Uptime Kuma
11. 서버 백업
다음과 같은 모범 사례를 적용하여 안전한 백업을 유지하십시오:
- 일일 자동 백업
- 오프사이트 저장소
- 데이터베이스 덤프
- 백업 검증
일반적인 백업 도구:
rsync- BorgBackup
- Restic
- Rclone
최종 생각
서버 보안은 일회성 설정이 아닙니다. 지속적인 모니터링, 업데이트 및 최적화가 필요한 지속적인 프로세스입니다. 제대로 보안된 Ubuntu 서버는 위험을 줄이고 신뢰성을 향상시키며 안정적인 프로덕션 환경을 유지하는 데 도움이 됩니다.
Tags: #ubuntu #security #devops