2022. 7. 7. 20:15ㆍ프로젝트 로그/테스트x솔루션 JIG 개발기
AWS에 테스트 서버를 배포 하고 몇일 구동 시켰더니, DB 접속이 안된다면서 웹 서비스 구동이 멈췄다.
Docker Log를 확인 해 보니, DB에 User, Password가 일치 하지 않아 접속에 실패 되는 것을 확인 하였다.
아무래도, 누군가 DB에 접속해서 Password를 변경 한 것으로 보인다. ( 기본 DB 계정에, Default Port 번호, 쉬운 비밀번호를 사용 했더니 쉽게 보안이 뚤린거 같다. )
보안을 강화 하기 DB 포트 변경 및 강화된 비밀번호를 사용하고, 무차별 접속 시도를 하는 IP를 OS 단에서 차단 하기 위해 "fail2ban"을 설치 하여 설정 하였다.
fail2ban 설치
$ apt-get install fail2ban
fail2ban 설정
설정 파일 경로 : /etc/fail2ban/jail.local
[DEFAULT]
ignoreip : ban이 절대 되지 않을 아이피를 적는다. (123.234.123.234/32 형태로 적는다. 추가시 스페이스바로 구분) 관리자 ip를 입력하면 됨. 입력한 ip는 차단되지 않음.
bantime : 접속을 차단할 시간. 60=1분, 600=10분, 86400=1일... (초단위임) 영구차단을 하거나 차단시간을 많이 주면 재부팅시 느려짐.
findtime : 입력시간
maxretry : 인증시도하여 fail된 횟수
[옵션] destemail : 메일 수신자. 다중 수신자는 지원하지 않음.
[옵션] sender : 메일 보낸 사람 (= fail2ban)
[옵션] mta : 메일 전송 프로그램. mta = sendmail
fail2ban 시작및 종료
fail2ban 서비스 재시작: service fail2ban restart
fail2ban 설정확인 : fail2ban-client status sshd
실시간 SSH로그인 실패기록 보기 : journalctl -f
fail2ban 동작 원리
ssh연결 로그인 성공/실패 여부는 모두 /var/log/auth.log에 저장 된다. fail2ban이 /var/log/auth.log파일을 읽어 findtime동안 maxretry회 이상 실패 기록이 있으면 bantime동안 연결을 차단 시킨다.
fail2ban이 reload되거나, restart될 때에는 ban목록이 초기화된다. 서버재부팅시 목록이 초기화된다.
만약 bruteforce 공격으로 ssh접속 시도가 엄청나게 많아지면 fail2ban 작동 시 서버가 부하에 걸릴 수도 있다.
'프로젝트 로그 > 테스트x솔루션 JIG 개발기' 카테고리의 다른 글
[Django]쉘 스크립트에서 collectstatic 실행 시 yes 입력하는 방법 (0) | 2022.07.19 |
---|---|
[PyQT] Could not load the Qt platform plugin "windows" in "" even though it was found. 에러 해결 (0) | 2022.07.11 |
[CAN]Python에서 PCANBasic 라이브러리 사용 시 문제 해결 (0) | 2022.06.14 |
[Python] 정수형 Class 변수 선언 방법 (0) | 2022.06.01 |
[Docker] 사용하지 않는 모든 데이터 제거 및 볼륨만 제거 (0) | 2022.05.31 |