Nextcloud에서 A+ 보안 등급을 획득하기 위해 필요한 것

Nextcloud 사이트가 정상적으로 작동하더라도 외부 보안 검사에서 낮은 등급을 받을 수 있습니다. 일반적인 원인으로는 오래되었거나 지원이 종료된 서버 버전, HSTS 헤더 누락, 또는 Nextcloud에서 HTTPS 연결을 숨기는 리버스 프록시 등이 있습니다. 먼저 Nextcloud를 업데이트하고, 공용 웹 서버 경계에서 HTTPS를 강제 적용하고, 프록시 신뢰 범위를 좁게 설정하고, Nextcloud 관리 페이지에 표시되는 경고를 삭제해 보세요.

보편적인 "A+" 표준은 없습니다. Nextcloud의 공식 보안 검사는 알려진 보안 권고 사항과 외부에서 수행할 수 있는 보안 강화 점검을 바탕으로 공개적으로 접근 가능한 Nextcloud 서버를 평가하며, SSL Labs는 TLS 구성을 평가합니다. 모든 등급은 특정 시점의 결과일 뿐이며, 서버가 안전하다는 증거 또는 알려지지 않은 취약점에 대한 보장으로 간주해서는 안 됩니다.

1. 스캐너를 식별하고 서버를 업데이트합니다.

설정을 변경하기 전에 어떤 스캐너가 등급을 생성했는지 기록해 두세요. Nextcloud의 공식 검사는 알려진 취약점, 지원 종료 버전 및 눈에 띄는 보안 강화 문제를 보고합니다. TLS 전용 등급은 SSL Labs에서 제공될 수도 있습니다. 사용 중인 스캐너의 경고를 수정한 다음 동일한 검사를 다시 실행하세요. 서비스마다 사용하는 기준이 다를 수 있습니다.

Nextcloud 관리 설정에서 서버 버전과 보안 또는 설정 경고를 확인하십시오. 지원되는 Nextcloud 릴리스로 업그레이드하고 최신 보안 업데이트를 설치한 후 헤더를 조정하십시오. 이전 릴리스는 헤더 스캐너에서 A+ 등급을 받더라도 취약한 상태일 수 있습니다. 설치 패키지에 대한 업그레이드가 제공되지 않는 경우, 파일을 수동으로 교체하는 대신 해당 패키지에서 지원하는 업그레이드 경로를 따르십시오.

2. HTTPS를 필수로 설정하고 HSTS를 추가합니다.

유효한 인증서를 사용하여 공개 Nextcloud URL을 HTTPS로 제공하고, 암호화되지 않은 HTTP 트래픽을 HTTPS로 리디렉션하십시오. Nextcloud 보안 강화 가이드에서는 프로덕션 서버에서 HTTPS 사용을 권장합니다. 그런 다음 공개 HTTPS 응답을 보내는 서버 또는 프록시에 HTTP Strict Transport Security(HSTS)를 추가하십시오. Nextcloud 관리자 경고에서는 Strict-Transport-Securitymax-age를 최소 15,552,000초로 설정하라고 권고합니다.

Nginx의 경우, 활성 TLS 서버 블록에 다음과 같은 지시문을 추가하고 호스트 이름을 바꾸되, 기존의 Nextcloud 설정은 그대로 유지하십시오.

add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
Nginx TLS 서버 블록에서 max-age가 15,552,000초이고 includeSubDomains 옵션이 포함된 HSTS 헤더가 표시됩니다.
공개 방문자에게 응답을 보내는 HTTPS 서버 블록에 HSTS를 설정하십시오.

모든 서브도메인이 HTTPS를 통해서도 접속 가능한 경우에만 사용하십시오 includeSubDomains. 선택적 플래그를 함부로 추가하지 마십시오 preload. 브라우저 사전 로드 목록에서 도메인이 삭제되는 데 몇 달이 걸릴 수 있습니다. 리버스 프록시에서 TLS를 처리하는 경우, 해당 공개 프록시에 HSTS를 구성하십시오. 내부 Nextcloud 호스트에만 설정하면 스캐너가 인식하는 헤더가 변경되지 않을 수 있습니다.

X-Content-Type-OptionsNextcloud는 기본 환경에서 `<header>` , X-Frame-Options`<header> Referrer-Policy`, ` <header> `와 같은 기본 헤더를 이미 전송합니다 X-Robots-Tag. 응답을 확인하기 전에 중복되거나 충돌하는 버전을 추가하지 마십시오. Nextcloud의 Nginx 예제 구성은 Nginx에서 이러한 헤더를 제공하는 방법을 보여줍니다.

3. 모든 클라이언트를 신뢰하지 않고 리버스 프록시를 구성합니다.

Nextcloud 앞에 리버스 프록시가 있는 경우, 해당 프록시의 실제 IP 주소 또는 사설 네트워크 범위만 나열하십시오 trusted_proxies. Nextcloud는 신뢰할 수 있는 프록시에 대해서만 전달된 클라이언트 IP 헤더를 사용합니다. 잘못된 주소를 신뢰하면 클라이언트가 겉보기 IP 주소를 위장하여 액세스 제어 또는 로그를 무력화할 수 있습니다.

예를 들어, TLS 종료 프록시가 실제로 에 있는 경우 10.0.0.10관련 항목을 기존 $CONFIG배열 에 병합합니다 config/config.php.

'trusted_proxies' => ['10.0.0.10'],
'overwriteprotocol' => 'https',
trusted_proxies가 10.0.0.10으로 설정되고 overwriteprotocol이 https로 설정된 것을 보여주는 코드 발췌문입니다.
이 항목들은 예시일 뿐입니다. 실제 프록시 IP를 사용하고 기존 Nextcloud 구성 배열에 병합하십시오.

프록시에서 TLS 연결이 종료되고 Nextcloud가 내부 HTTP 연결을 공용 HTTP로 감지하는 경우 overwriteprotocol이 설정 을 적용하십시오. 프록시에서 표준이 아닌 forwarded-IP 헤더를 사용하는 경우, 해당 헤더와 정확히 일치하도록 구성하십시오. .과 같은 광범위한 신뢰 범위를 설정하지 마십시오 . 파일을 편집한 후 병합된 구성을 확인하고 로그인, 공유 및 생성된 링크를 테스트하십시오.httpsforwarded_for_headers0.0.0.0/0

4. 남아있는 Nextcloud 경고를 모두 지우세요.

관리자 설정에서 개요 또는 보안 및 설정 경고를 검토하십시오. 등급을 받기 위해 관련 없는 보안 강화 지침을 적용하기보다는 나타나는 경고를 해결하십시오.

  • HSTS 누락: 특히 프록시 또는 로드 밸런서가 TLS를 종료하는 경우 공용 HTTPS 엔드포인트의 응답을 확인하십시오.
  • 서버가 HTTP를 사용하는 것으로 보입니다. 엣지에서 HTTPS가 구성되어 있는지 확인하고, 필요한 경우 overwriteprotocol신뢰할 수 있는 프록시 설정도 확인하십시오.
  • 디버그 모드 활성화: 운영 환경에서는 비활성화 상태를 유지하고 debug, 특정 문제 해결 시에만 활성화한 후 다시 비활성화하십시오.
  • 프록시 또는 클라이언트 IP 경고: 신뢰할 수 있는 프록시 설정을 변경하기 전에 프록시의 실제 소스 주소와 전달 헤더를 확인하십시오.
  • 취약점이 있거나 지원이 종료된 버전인 경우, 지원되는 업그레이드 프로세스를 통해 Nextcloud 및 해당 서버 패키지를 업데이트하십시오.

관리자에게 안정적이고 알려진 관리 IP 범위가 있는 경우 에만 관리자 작업을 제한하십시오 allowed_admin_ranges. 잘못된 IP 범위를 사용하면 정당한 관리자조차 관리 기능에 접근할 수 없게 될 수 있습니다. Nextcloud의 보안 강화 가이드에서는 BREACH 취약점을 완화하기 위해 HTTP 압축을 비활성화할 것을 권장합니다. 인증된 페이지에 압축이 활성화되어 있는지 웹 서버 또는 프록시 구성을 확인하십시오.

5. 공개 응답을 확인하고 스캔을 다시 실행합니다.

구성 파일의 내용뿐만 아니라 외부 클라이언트가 실제로 수신하는 내용도 확인하십시오.

curl -I https://cloud.example.com

응답에 의도한 최대 유효 기간이 포함된 HSTS 헤더와 기본 Nextcloud 보안 헤더가 있는지 확인하십시오. 브라우저 개발자 도구를 사용하여 동일한 응답 헤더를 확인할 수 있습니다. 값이 구성과 다른 경우 TLS 종료자, 프록시 및 캐시되거나 중첩된 Nginx 위치를 검사하십시오.

curl -I 명령의 터미널 출력 예시로, HSTS, X-Content-Type-Options 및 X-Frame-Options 응답 헤더 목록을 보여줍니다.
공개 HTTPS URL에서 반환되는 헤더를 검사하십시오. 설정 라인 하나만으로는 방문자가 실제로 수신하는 내용을 확인할 수 없습니다.

다음으로, 공식 Nextcloud 보안 검사를 공개 호스트 이름으로 실행한 다음 관리 설정을 다시 검토하십시오. 별도의 TLS 등급 및 세부 정보가 필요한 경우 Qualys SSL Labs를 사용하십시오 . 공식 검사를 수행하려면 접근 가능한 Nextcloud 호스트 이름이 필요하며, 공용 인터넷에서 개인 전용 인스턴스를 평가할 수 없습니다.

결과가 표시되기 전, 호스트 이름 입력란과 검사 버튼이 있는 공식 Nextcloud 보안 검사 페이지입니다.
변경 사항을 적용한 후 공개 호스트 이름에 대해 공식 검사를 실행하십시오. 검사 결과는 특정 시점의 상태를 나타내는 것이며 보안 보장을 의미하는 것은 아닙니다.

등급이 A+ 미만인 경우, 특정 문제점을 파악하여 문제의 원인을 찾아내십시오. 문제를 하나씩 해결하고, Nextcloud가 공식 URL을 통해 정상적으로 작동하는지 확인한 후 다시 스캔하십시오. A+ 등급은 유용한 구성 개선 신호이지만, 스캔 통과 후에도 패치 적용, 백업, 접근 제어 및 지속적인 모니터링은 필수적입니다.

공식 문서

댓글 남기기

Redis를 사용하여 Nextcloud의 파일 잠금 경고를 해결하세요

Nextcloud 파일 잠금 기능을 안정적으로 활성화하고, 적절한 Redis 또는 Valkey 백엔드를 선택한 다음, 동시 파일 변경 위험 없이 경고가 사라지는지 확인하십시오.

Nextcloud에서 A+ 보안 등급을 획득하기 위해 필요한 것

Nextcloud에서 A+ 보안 등급을 획득하기 위해 필요한 것

최신 업데이트, HTTPS 및 HSTS 지원, 정확한 리버스 프록시 신뢰 설정, 그리고 공용 서버 검사를 통해 Nextcloud 스캔에서 흔히 발견되는 문제들을 해결하세요.

Nextcloud 서버 측 암호화를 활성화하고 영향 분석을 통해 효과를 확인하세요.

기존 파일을 암호화하기 전에 필요한 스토리지에 맞게 Nextcloud SSE를 구성하고, 암호화 키를 보호하고, 전송 및 CPU 사용량에 미치는 영향을 측정하십시오.

Nextcloud에 Elasticsearch 전문 검색 기능을 추가하세요

Nextcloud의 파일 검색 기능을 Elasticsearch에 연결하고, 문서 콘텐츠를 색인화하고, 서버 및 보안 요구 사항에 맞는 설정을 선택하세요.

Nextcloud에서 삭제된 파일에 대한 신뢰할 수 있는 만료 정책을 설정하세요

Nextcloud에서 삭제된 파일에 대한 신뢰할 수 있는 만료 정책을 설정하세요

Nextcloud에서 지정된 보존 기간이 지나면 삭제된 파일을 제거하도록 설정하고, 백그라운드 작업을 안정적으로 예약하며, 모든 사용자의 휴지통을 비우는 명령을 사용하지 않도록 구성하십시오.

Nextcloud의 누락된 데이터베이스 인덱스 경고를 지우세요

Nextcloud의 누락된 데이터베이스 인덱스 경고를 지우세요

Nextcloud의 OCC 복구 기능을 안전하게 실행하고, 데이터베이스 변경 사항을 미리 보고, 경고가 계속 표시되는 이유를 확인하십시오.

Nextcloud의 웹 업로드 제한을 2GB 이상으로 상향 조정하세요

Nextcloud의 웹 업로드 제한을 2GB 이상으로 상향 조정하세요

PHP, Nginx 또는 Apache, 임시 저장소 및 시간 초과 설정을 조정하여 Nextcloud 브라우저의 대용량 파일 업로드를 허용하고, 어떤 제한 사항이 파일 업로드를 차단하는지 확인하십시오.

Nextcloud 웹 서버의 PHP 메모리 경고를 해결하는 방법

Nextcloud에서 실제로 사용하는 PHP 메모리 제한을 설정하고, 해당 서비스를 재시작한 다음, 관리자 개요에서 512MB 설정이 제대로 되었는지 확인하십시오.

S3 호환 버킷을 Nextcloud 외부 스토리지에 연결하기

Nextcloud의 S3 백엔드를 사용하여 호환되는 객체 스토리지 버킷을 마운트하고, 올바른 엔드포인트, 자격 증명, 액세스 범위 및 검증 단계를 설정하십시오.

기존 스토리지를 손상시키지 않고 Nextcloud 데이터를 외장 드라이브로 옮기기

기존 스토리지를 손상시키지 않고 Nextcloud 데이터를 외장 드라이브로 옮기기

영구 UUID 마운트, 유지 관리 모드, 검증된 복사본 및 원본 경로 심볼릭 링크를 사용하여 Linux Nextcloud 데이터 디렉터리를 외부 드라이브로 안전하게 이동합니다.