개발개발/Python

시놀로지 무작위 접근 막기

꾸냥 2021. 9. 14. 18:23

몇달 전부터 시놀로지의 admin 계정으로 무작위 접근이 발생하고

빈번하게 찌르면 시놀로지에서 기본 세팅으로 막아주는데 천천히 오랫동안 거슬리게 접근 해당 계정은 비활성 상태이지만 거슬려서 작업 진행했음.

리눅스 fail2ban 가 있는데 python 공부도 할겸, 말끔하게 시놀로지 차단 디비에 넣고 싶어서 작업 진행.

 

기본 프로세스

  1. 허용되지 않는 아이디로 실패 로그 검색
  2. 내부 아이피 및 지정된 아이피 제외
  3. 지정된 기간동안 차단

작업 히스토리

  • 시놀로지 내부에 들어가는 거라 모듈 설치하기도 그렇고 해서 필요한건 만들거나 기본 내장 함수 선에서 처리함
  • ipv4 를 ipv6 로 변환하는 로직에서 좀 어려웠음. 시놀로지에서 사용하는 ipv6 패턴과 구글이 알려준 패턴에 차이 때문에 검색에 다소 시간이 소요됨
  • 시놀로지 IP 차단 목록은 sqlite 로 만들어져 있음
    • 만료 시간이 되면 어디선가 해당 아이피를 삭제함
  • 접근 로그에 정규 표현식 만드는게 좀 걸림. 그냥 split 사용할껄 싶었음.
  • date 함수 자잘하게 많이 사용함. php 를 주력으로 하다 보니 python 에서 날짜 함수 사용하는게 좀 어색
  • 문법 규칙이 강하다 보니 만들고 나면 소스가 깔끔해서 좋긴함.

소스코드

자세한 건 아래 소스코드를 보시면 됩니다. 내용이 거창하지 않아서...

https://github.com/quenyatic/synology_ip_block

 

반응형