안녕하세요. 하얀 도화지 남편입니다.
오늘은 리눅스 서버 보안에 대해 공부해 볼까합니다.
리눅스 서버는 다양한 환경에서 널리 사용되며 강력한 보안 기능을 제공하지만, 기본 설정 그대로 운영하면 보안 위협에 노출될 가능성이 큽니다. 이에 따라 효과적인 보안 설정과 유지 관리가 필수적이며 하기는 리눅스 서버 보안을 강화하는 다양한 방법 입니다.
1. 사용자 및 접근 관리
(1) 사용자 계정 관리
리눅스 서버에서 보안을 강화하는 첫 번째 단계는 사용자 계정을 적절히 관리하는 것이다.
- 최소 권한 원칙 적용: 사용자에게 필요한 최소 권한만 부여해야 한다.
- root 계정 직접 사용 금지:
sudo
를 사용하여 필요할 때만 관리자 권한을 사용한다. - 비활성 사용자 계정 삭제:
userdel
명령어를 사용하여 불필요한 계정을 정리한다.
(2) SSH 보안 강화
SSH(Secure Shell)는 원격 접속을 위한 필수 서비스이지만, 기본 설정으로 사용하면 보안 위험이 있다.
- SSH 포트 변경: 기본 포트(22번) 대신 다른 포트 사용 (
/etc/ssh/sshd_config
수정) - 비밀번호 로그인 차단:
PasswordAuthentication no
설정 후 SSH 키 인증 방식 사용 - root 사용자 로그인 차단:
PermitRootLogin no
설정 - Fail2Ban 사용: SSH 무차별 대입 공격을 방지
2. 방화벽 및 네트워크 보안
(1) 방화벽 설정
리눅스 서버는 방화벽을 활용하여 불필요한 네트워크 접근을 차단해야 한다.
- UFW(Uncomplicated Firewall) 사용:
sudo ufw enable sudo ufw allow 22/tcp # SSH 허용 sudo ufw allow 80/tcp # HTTP 허용 sudo ufw allow 443/tcp # HTTPS 허용 sudo ufw status
- firewalld 사용:
sudo systemctl start firewalld sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
(2) 네트워크 모니터링
서버의 네트워크 트래픽을 지속적으로 모니터링하여 의심스러운 접근을 탐지해야 한다.
netstat -tulnp
: 현재 열려 있는 포트 확인tcpdump -i eth0
: 실시간 패킷 캡처 및 분석iftop
: 실시간 네트워크 사용량 확인
3. 파일 및 디렉터리 보안
(1) 파일 권한 및 소유권 관리
- 파일 권한 설정: 중요한 파일에 대한 권한을 제한 (
chmod
사용) - 소유권 변경:
chown
명령어로 적절한 사용자에게 파일 소유권 부여 - SUID 및 SGID 제거: 불필요한 실행 파일의 권한을 제거하여 보안 강화
find / -perm -4000 -type f
(2) 중요한 시스템 파일 보호
/etc/passwod
및/etc/shadow
파일 접근 제한immutable
속성 설정: 중요한 파일이 수정되지 않도록 방지chattr +i /etc/passwod
4. 로그 및 모니터링
(1) 로그 관리
서버에서 발생하는 이벤트를 추적하여 보안 문제를 조기에 감지할 수 있다.
/var/log/auth.log
: 사용자 로그인 및 인증 실패 로그journalctl -xe
: 시스템 로그 확인last
: 최근 로그인 사용자 확인
(2) 자동 로그 분석 도구 사용
- Logwatch: 시스템 로그 분석 및 보고
- OSSEC: 실시간 침입 탐지 시스템(IDS)
- Tripwire: 파일 변경 모니터링 도구
5. 소프트웨어 업데이트 및 패치 관리
소프트웨어의 보안 취약점을 악용하는 공격을 방지하려면 최신 보안 업데이트를 유지해야 한다.
- 패키지 업데이트 실행:
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu sudo yum update -y # CentOS/RHEL
- 자동 업데이트 설정:
sudo apt install unattended-upgrades # Ubuntu 자동 업데이트 설정
6. 보안 모범 사례 요약
보안 영역 | 주요 조치 |
---|---|
사용자 관리 | root 로그인 금지, 최소 권한 부여, 불필요한 계정 삭제 |
SSH 보안 | 포트 변경, 비밀번호 로그인 차단, Fail2Ban 사용 |
방화벽 설정 | UFW/firewalld 활성화, 불필요한 포트 차단 |
네트워크 보안 | netstat/tcpdump/iftop을 활용한 네트워크 모니터링 |
파일 보호 | 중요한 시스템 파일 보호, SUID/SGID 제거 |
로그 모니터링 | auth.log 및 journalctl 분석, Logwatch 활용 |
소프트웨어 업데이트 | 정기적인 패치 및 자동 업데이트 설정 |
리눅스 서버 보안을 유지하는 것은 지속적인 모니터링과 관리가 필요합니다 사용자 및 접근 권한 관리, 방화벽 및 네트워크 보호, 파일 및 디렉터리 보안, 로그 분석 및 소프트웨어 업데이트를 철저히 수행하면 보다 안전한 서버 환경을 구축할 수 있습니다. 또한, 정기적인 보안 점검과 최신 보안 동향을 학습하여 지속적으로 보안을 강화해야 합니다.