• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

Nextcloud 보안 관련 셋팅하기

게르노 1752

5

2

서버나 네트워크를 잘 알지 못하는 취미로 하는 사람이 쓴 글이니

부족한 부분이나 잘못된 부분이 있다면 댓글 달아주시기 바랍니다.

 

사용 환경

OMV6

linuxserver/nextcloud

 

0. 리버스 프록시

기본 중의 기본입니다! 

jc21/nginx-proxy-manager 이미지로 리버스 프록시를 설정해줍니다.

 

1. Geoblocker

Nextcloud 스토어에서 설치 가능한 앱입니다.

IP 위치 기반으로 로그인을 차단하고, 지연시킵니다.

 

image.png.jpg

 

설치 후 관리자 계정의 설정 탭에 Geoblocker 항목에서 설정이 가능합니다.

서비스가 처음엔 Dummy로 되어있을텐데 이것을 RIRData(로컬) 로 바꿔줍니다.

IP 지역 정보들이 담긴 데이터베이스입니다.

 

서비스를 선택 후 최초 업데이트를 눌러줍시다.

 

image.png.jpg

 

우리나라를 제외한 모든 국가에서의 로그인을 차단하고 싶다면 위와 같이 설정하시면 됩니다.

IP로그인 지연을 체크하게 되면 로그인 시 해외 IP라고 판단되면 지연시간을 주어 로그인 한 번 시도하는데 30초가 걸리게 합니다.

IP로그인 차단을 체크하게 되면 로그인 시 해외 IP라고 판단되면 프론트엔드 기반으로 로그인을 막습니다.

 

영구적으로 IP를 차단하는 것은 아닙니다. 

아이디와 비번을 맞게 입력했다해도 IP가 차단 대상 지역의 IP이면 로그인을 막습니다.

 

로그인 지연과 로그인 차단 모두 체크하게 되면 로그인 시도 시 30초 지연 후 로그인 차단 페이지가 나옵니다.

 

*주의

Geoblocker 데이터베이스 업데이트 중 nextcloud 컨테이너를 종료하거나, 시스템을 종료해버리면 영원히 데이터베이스 업데이트가 끝나지 않는 버그가 있습니다.

"서비스 업데이트 중에 nextcloud 인스턴스가 다시 시작되면 서비스는 업데이트 프로세스에서 영원히 유지됩니다."

데이터베이스 업데이트 중 Nextcloud나 시스템이 꺼지지 않도록 유의해주시기 바랍니다.

 

2. Two-Factor TOTP Provider

Nextcloud 스토어에 있는 앱입니다. 

여러 TOTP 앱들 중 '추천' 마크가 있는 앱입니다.

구글 OTP와 연동되며, 설정-보안(개인)-2단계 인증 탭에서 설정 가능합니다. 

 

3. Brute-Force settings

기본적으로 Nextcloud에 설치되어있는 앱인데 활성화가 안돼있습니다.

활성화해주세요

 

4. Suspicious Login

Nextcloud 앱 스토어에 있습니다.

따로 건드릴 것은 없고, 앱을 설치해놓면 알아서 작동합니다.

설정-보안(관리) 탭에서 확인할 수 있습니다.

 

Nextcloud는 로그인에 실패한 경우 로그에서 IP와 로그인 시도 정보를 볼 수 있지만 성공한 로그인에 대해서는 로그가 나오지 않습니다.

그래서 이 앱은 60일간 로그인 정보를 이용해 모델을 훈련한 후, 성공한 로그인이다 하더라도 UID와 IP가 수상하다고 판단되면 이메일과 푸시 알림으로 로그인 정보를 보내줍니다.

앱 설치 후 60일간 기다려야하는게 단점이라면 단점입니다.

 

5. Fail2ban

요즘은 국내 VPN을 이용해서 로그인 시도를 하는 경우도 있습니다.

Geoblocker는 지역 기반이라 국내 IP로 로그인을 시도하는 경우에는 차단하기 어렵습니다.

Fail2ban을 이용하면 시도 횟수에 따라 IP를 차단할 수 있습니다.

 

Nextcloud 자체적으로도 로그인 일정 횟수 실패하면 차단하는 기능이 있지만, IP를 차단하는 방식이 아닌 사용자 계정을 블락해버리는 방식이기 때문에 리스크가 있습니다. 

 

Fail2ban을 시스템에 설치합니다. (OMV에서는 플러그인으로 간단히 설치할 수 있습니다.)

ssh로 접속해 /etc/fail2ban/filter.d 로 이동합니다.

sudo touch nextcloud.conf 라고 입력합니다. 

sudo nano nextcloud.conf 를 입력하여 생성한 파일을 나노에디터로 엽니다.

다음을 복사하여 붙여넣기합니다.

[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
            ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"

 

Ctrl+X를 눌러 저장하고 빠져나옵니다.

Fail2ban Jail을 만들어주면 완료입니다.

 

필터 이름은 nextcloud

log path는 nextcloud.log 파일의 절대경로를 찾아 복붙해주시면 됩니다. (OMV의 경우 locate 라는 플러그인을 사용하면 빠르게 파일의 위치를 찾을 수 있습니다.)

 

*참고

Geoblocker에 의해 로그인이 차단된 경우는 Fail2ban에서는 로그인 실패로 판단하지 않습니다. (아마 Geoblocker에서 선제적으로 로그인 시도 자체를 차단했기 때문인 것으로 생각됩니다.)

따라서 Geoblocker에 의해 같은 IP가 Fail2ban의 Max try 횟수 이상 차단되었다 하더라도 Fail2ban에서는 IP를 차단하지 않습니다.

 

Geoblocker와 Fail2ban을 동시 사용하는 경우 Geoblocker=해외IP차단, Fail2ban=로그인허용지역IP차단 으로 생각하시면 될 것 같습니다.

 

Geoblocker에 대한 Fail2ban의 필터를 따로 만들 수 있지만... 아직까지는 이렇게까지 하지 않아도 될 것 같습니다.

해외에서 미친듯이 로그인을 찔러본다면 그때는 해봐야겠죠 ㅎㅎ

 

신고공유스크랩
2
profile image 2등
달소 2022.05.02. 09:33

정말 좋은글입니다!!

나중에 nextcloud관련글만모아서 가이드로 만들어도 참좋을듯하네요ㅎㅎ

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

첨부 0

번호 분류 제목 글쓴이 날짜 조회 추천
공지 정보 DSM 7.2v) Mshell로 헤놀로지 부트로더 빌드하기. 61 달소 23.05.29.01:57 24353 +23
공지 정보 DSM 7.2v) ARPL-i18n(rr)으로 헤놀로지 부트로더 빌드하기. 72 달소 23.05.23.23:58 25907 +23
잡담 헤놀로 넘어오고 가장 만족스러운 부분 (Hyper Backup) 1 N4100 5시간 전22:38 90 +1
잡담 RAID5(SHR)의 저장속도가 이렇게나 빠른거였네요.. (NVMe SSD삽질) 10 estel1 4일 전23:51 500 +2
가이드 시놀로지 도커로 Wireguard VPN + qBittorrent + tsharp(It's torr) 사용하기 10 펜타네스트 24.04.12.16:13 448 +4
5074 질문
image
햄뽁이아빠 4시간 전23:42 55 0
5073 잡담
image
N4100 5시간 전22:38 90 +1
5072 질문
normal
유기농밀크 13시간 전14:28 184 0
5071 질문
image
ezcamp 16시간 전11:15 185 0
5070 질문
image
두데 17시간 전10:31 205 0
5069 질문
normal
서브어린이 1일 전20:33 135 0
5068 후기
image
추주비 1일 전12:21 261 0
5067 질문
image
서브어린이 2일 전19:59 464 0
5066 질문
normal
현이들아빠 2일 전15:02 182 0
5065 질문
image
서브어린이 2일 전12:18 428 0
5064 질문
image
지나가는_문과생 2일 전12:14 301 0
5063 질문
image
동도리군 2일 전07:16 107 0
5062 질문
normal
서브어린이 3일 전21:48 99 0
5061 질문
image
사십동 3일 전05:49 182 0
5060 질문
image
서브어린이 4일 전23:57 129 0
5059 잡담
image
estel1 4일 전23:51 500 +2
5058 질문
image
까칠한나그네 4일 전14:20 236 0
5057 질문
normal
라라라라데이 4일 전12:29 310 0
5056 질문
image
orange0909 4일 전12:20 311 0
5055 질문
image
금화 5일 전15:14 373 0