VM 보안 설정하기

민정·2025년 8월 27일

VM 보안

방화벽 활성화 및 ssh 설정

  • 방화벽
    • ufw 방화벽을 활성화하고 최소한의 포트만 허용
    • sudo ufw default deny incoming로 인바운드 트래픽 차단
  • ssh
    • /etc/ssh/sshd_config에서 PasswordAuthentication no, PermitRootLogin no 설정

수상한 접근 확인하기

리눅스 시스템 로그

  • /var/log/auth.log
    • ssh 로그인 시도
    • sudo 명령어 사용 기록
    • 사용자 계정 생성, 비밀번호 변경
    • 원격, 로컬 로그인
  • 로그인 기록
    • /var/log/wtmp(성공) → who, last로 확인
    • /var/log/btmp(실패) → lastb로 확인
  • lastb로 로그인 기록을 확인해보면, 정말 수많은 알 수 없는 IP가 접속하려고 시도한 흔적이 보인다...

프로세스, 포트 확인

  • ps aux, top으로 수상한 프로세스 확인
  • ss -tulpn로 설정하지 않은 포트가 열려있는지 확인

사용자 계정 확인

  • /etc/passwd, /etc/sudoers 확인

cronjob 확인

  • 등록한 적 없는 cronjob이 등록되어 있는지 확인
  • crontab -l으로 확인

fail2ban 사용

fail2ban이란?

https://github.com/fail2ban/fail2ban

  • 로그 파일을 검사해 자주 로그인 시도에 실패하는 IP 주소를 차단
    • 리눅스 시스템 로그부터 sshd, apache까지 다양한 프로그램의 로그 파일을 읽을 수 있음
    • 자동으로 시스템 방화벽 규칙을 업데이트해 해당 IP 주소를 차단

fail2ban 설정하기

  • 기존의 *.conf 파일은 수정하지 않음
  • *.local 파일을 새로 생성해 필요한 설정 추가 및 재정의

https://github.com/fail2ban/fail2ban/blob/master/config/jail.conf

  • 해당 파일의 주석 부분을 참고해서 설정 진행
변수명변수 의미
bantime차단된 IP가 얼마나 차단될지 지정
findtime실패 시도 감시 기간
maxretry감시 기간 동안 허용되는 최대 실패 횟수
ignoreipfail2ban이 차단하지 않을 신뢰 IP 목록
enabled해당 jail의 활성화 여부
port보호 대상 서비스의 포트 또는 서비스명
filter적용할 로그 분석 패턴(주로 jail 명칭과 동일)
logpath감시할 로그 파일 경로
  • sshd는 기본적으로 활성화되어있음
    • /etc/fail2ban/jail.d/defaults-debian.conf에서 확인 가능
[DEFAULT]
bantime = 1d
bantime.increment = true
findtime = 5m

[postfix]
enabled = true

[sshd]
bantime = 31d
maxretry = 2

[dovecot]
enabled = true

[recidive]
enabled = true
  • 현재 해당 vm은 ssh, postfix, dovecot을 사용하고 있어 위와 같이 설정함
    • recidive는 여러 번 차단되는 IP를 장기 밴하는 기능
  • 설정을 완료한 후 sudo fail2ban-server reload로 설정을 적용
Status
|- Number of jail:      4
`- Jail list:   dovecot, postfix, recidive, sshd
  • sudo fail2ban-client status를 통해 설정이 제대로 적용되었는지 확인
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     2
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:
  • sudo fail2ban-client status sshd와 같이 입력해 개별 필터의 상태만 따로 상세하게 확인 가능
profile
시스템 + 리눅스 + 클라우드

0개의 댓글