🐰 접속 관련
성공한 접속 기록
grep "Accepted" /var/log/auth.log | tail -20
=> publickey면 SSH 키로 접속, password면 비밀번호로 접속한 거예요.
실패한 접속 시도 (해킹 시도)
grep "Failed" /var/log/auth.log | tail -20
=> 수백 개 나와도 정상이에요. 전 세계 봇들이 자동으로 시도하는 거예요. Fail2Ban이 차단하고 있으면 걱정 없어요.
현재 접속 중인 사용자
who
=> 본인 세션만 보여야 해요. 모르는 사용자가 있으면 즉시 sudo kill -9 로 강제 종료하세요.
최근 로그인 기록
last -20
=> 시간대를 확인하세요. 본인이 안 썼던 시간(새벽 3시 등)에 접속 기록 있으면 의심이에요. reboot은 서버 재시작 기록이라 정상이에요.
🐰 방화벽
열려있는 포트 확인
sudo ufw status
=> 모르는 포트가 열려있으면 sudo ufw delete allow 포트번호로 닫으세요.
실제 열린 포트 확인
sudo ss -tlnp
=> UFW 설정과 별개로 실제 리스닝 중인 포트를 보여줘요. ufw status에는 없는데 여기 있으면 뭔가 몰래 돌아가는 거예요. (정상적으로 보이는 것들은 sshd, dockerd, node:3000, java:8080 정도)
🐰 서버 상태
CPU / 메모리
top -bn1 | head -5
=> %Cpu(s) 줄에서 us는 사용 중, id는 여유, st는 제한이에요. id가 80% 이상이면 여유 있는 거예요. st가 높으면 또 제한 걸린 거예요. (저는 Vurtr에서 CPU 제한 당했다가 2주만에 겨우 해제해써요,,ㅎ..ㅠ)
CPU 많이 쓰는 프로세스 TOP 10
ps aux --sort=-%cpu | head -11
=> 모르는 프로세스가 CPU 많이 쓰고 있으면 채굴 악성코드일 수 있어요.
디스크 용량
df -h
=> 만약 docker 쓸 경우, /dev/vda2의 Use%를 보세요. 80% 넘으면 docker system prune -a -f로 정리하세요. 100% 되면 서버가 멈춰요.
폴더별 용량 TOP 10
sudo du -h / --max-depth=2 2>/dev/null | sort -rh | head -20
=> Docker 이미지가 가장 클 거예요. 갑자기 용량 늘었으면 확인해보세요.
메모리 상태
free -h
=> available이 중요해요. 200MB 이하면 위험해요. Swap 사용량이 계속 늘어나면 메모리가 부족하다는 신호예요.
🐰 Docker 관련
실행 중인 컨테이너
docker compose -f ~/app/docker-compose.yml ps
=> 모든 서비스가 Up이고 healthy면 정상이에요. Restarting이 반복되면 컨테이너가 계속 죽고 있다는 뜻이에요. 로그 확인하세요.
컨테이너별 리소스 사용량
docker stats --no-stream
=> MEM %가 50% 넘는 컨테이너가 있으면 메모리 누수 의심이에요. Spring Boot는 보통 300 ~ 500MB, Next.js는 100 ~ 200MB 정도가 정상이에요.
도커 이미지 용량
docker system df
=> Images의 RECLAIMABLE이 크면 안 쓰는 이미지가 많다는 뜻이에요. docker image prune -f로 정리하세요.
🐰 보안 점검
Fail2Ban 차단된 IP
sudo fail2ban-client status sshd
=> Currently banned에 숫자가 있으면 Fail2Ban이 잘 작동하는 거예요. Total banned가 많을수록 봇 시도가 많았다는 뜻인데, 다 차단됐으니 안전해요.
서버 유저 목록
cat /etc/passwd | grep -v nologin | grep -v false
=> 모르는 유저가 있으면 해커가 만들었을 수 있어요.
현재 외부 네트워크 연결 목록 확인
sudo ss -tnp
=> ESTAB 상태에서 모르는 IP로 연결되어 있으면 의심이에요.
최근 24시간 내 수정된 시스템 파일 확인
sudo find /etc -mtime -1 -ls
=> 본인이 수정 안 했는데 변경된 파일 있으면 의심이에요.
예약 작업 확인
# 내 cron 작업 목록
crontab -l
# root cron 확인
sudo crontab -l
# 시스템 전체 cron
ls -la /etc/cron.d/
=> 모르는 cron 작업이 있으면 해커가 심어놓은 거일 수 있어요.
SSH 설정 확인 (비밀번호 로그인 차단됐는지)
grep "PasswordAuthentication" /etc/ssh/sshd_config
=> PasswordAuthentication no로 나와야 해요. yes면 비밀번호 로그인이 열려있는 거라 위험해요.
보안 업데이트 확인, 업데이트 필요한 패키지
sudo apt list --upgradable
=> 보안 업데이트가 밀려있을 경우 아래 실행
sudo apt update && sudo apt upgrade -y
