Nginx Proxy Manager의 개선판 NPM Plus(HTTP3/보안모듈 탑재)
안녕하세요. 달소입니다.
또 여기저기 기웃기웃거리다가 발견한 저의 이상향 같은 NPM입니다.
기존 NPM의 경우에 유지보수가 어느순간부터 잘 되지않고 기능개선도 이뤄지지않고있었는데요.
NPM Plus라는 새로운 프로젝트가 또 나왔네요 ㅎㅎ
기본적인 NPM의 기능은 모두 동일하며 추가기능만 있습니다.
NPM을 사용하는 목적
마음에 드는건 HTTP와 CrowdSec IPS, ModSecurity네요 ㅎㅎ
CrowdSec IPS와 ModSecurity는 모두 웹 애플리케이션 방화벽(WAF) 솔루션입니다. 이들은 웹 애플리케이션의 보안을 강화하기 위해 사용되는 도구입니다.
1. CrowdSec IPS:
CrowdSec IPS는 오픈 소스 기반의 실시간 침입 방지 시스템입니다. 이는 악성 트래픽을 탐지하고 차단하여 웹 애플리케이션의 보안을 강화합니다. CrowdSec IPS는 다양한 공격 유형을 탐지할 수 있으며, 이를 위해 실시간으로 로그를 분석하고 악성 행위를 식별합니다. CrowdSec는 커뮤니티 기반의 방화벽이기 때문에, 사용자들은 공격 시도에 대한 정보를 공유하고 이를 통해 보다 정확한 보안 대응을 할 수 있습니다.
2. ModSecurity:
ModSecurity는 Apache 웹 서버와 Nginx 웹 서버에서 사용할 수 있는 오픈 소스 웹 애플리케이션 방화벽입니다. ModSecurity는 웹 애플리케이션의 취약점을 탐지하고, 악성 트래픽을 차단하여 웹 애플리케이션의 보안을 강화합니다. ModSecurity는 다양한 보안 규칙을 사용하여 웹 애플리케이션의 취약점을 탐지하고, 이를 통해 공격을 차단합니다. 또한, ModSecurity는 사용자 정의 규칙을 생성하여 특정한 보안 요구에 맞게 웹 애플리케이션을 보호할 수 있습니다.
CrowdSec IPS와 ModSecurity는 모두 웹 애플리케이션의 보안을 강화하기 위해 사용되는 도구이지만, CrowdSec IPS는 실시간으로 로그를 분석하여 악성 행위를 탐지하고 차단하는 반면, ModSecurity는 웹 애플리케이션의 취약점을 탐지하고 차단하는 데 중점을 둡니다. 두 도구는 웹 애플리케이션의 보안을 강화하기 위해 함께 사용될 수도 있습니다.
새로운 기능 목록
- HTTP/3(QUIC) 프로토콜을 지원합니다.
- CrowdSec IPS를 지원합니다. 활성화하려면 여기를 참조하세요 .
- 옵션으로 coreruleset을 사용하여 ModSecurity를 지원합니다. 폴더 의 파일을 편집하여 ModSecurity/coreruset을 구성할 수 있습니다
/opt/npm/etc/modsecurity
.- 핵심 규칙 세트가 유효한 요청을 차단하는 경우
/opt/npm/etc/modsecurity/crs-setup.conf
파일을 확인하십시오. - 보내는 Content-Type을 화이트리스트에 추가해 보세요(예:
application/activity+json
Mastodon 및application/dns-message
DoH의 경우). - 사용 중인 HTTP 요청 방법을 화이트리스트에 추가해 보세요(예:
PUT
기본적으로 차단되어 NPM에도 영향을 미침). - 참고: 이 문제를 해결하려면 를 실행하는 대신
nginx -s reload
이 포크는 nginx를 중지하고 다시 시작합니다. 호스트를 업데이트하면 502 오류가 발생합니다. #296 및 #283을 참조하세요 .
- 핵심 규칙 세트가 유효한 요청을 차단하는 경우
- 편안한 보기를 위한 바닥글의 다크모드 버튼(CSS는 @theraw 가 수행 )
- 원본이 TLSv1.3만 허용하는 경우 프록시를 https 원본으로 수정합니다.
- TLSv1.2 및 TLSv1.3 프로토콜만 활성화합니다.
- 불필요한 Nginx 재로드 및 구성 생성을 제거하면 TLS 인증서를 더 빠르게 생성할 수 있습니다.
- 보안 강화를 위해 OCSP 스테이플링 사용
- 사용자 정의 인증서를 사용하는 경우 폴더에 CA/중간 인증서(파일 이름:
chain.pem
) 를 업로드합니다/opt/npm/tls/custom/npm-[certificate-id]
(수동 마이그레이션이 필요할 수 있음).
- 사용자 정의 인증서를 사용하는 경우 폴더에 CA/중간 인증서(파일 이름:
- 해결된 dnspod 플러그인 문제
- 수동으로 마이그레이션하려면 모든 dnspod 인증서를 삭제하고 다시 생성하거나 여기 에 제공된 템플릿에 따라 자격 증명 파일을 변경하세요.
- 알파인 기반 배포를 사용한 더 작은 도커 이미지
- 관리 백엔드 인터페이스는 https로 실행됩니다.
- 기본 페이지도 https로 실행됩니다.
- 웹 서버로 사용되는 경우 fancyindex를 사용합니다.
- 내부 백엔드 API를 localhost에만 노출합니다.
- HSTS를 활성화하면 기본 보안 헤더가 추가됩니다(HSTS에는 항상 하위 도메인과 사전 로드가 활성화되어 있습니다).
- 액세스 로그가 비활성화되었습니다.
- 콘솔에 기록된 오류 로그
Server
응답 헤더가 숨겨져 있습니다.- PHP는 선택 사항이며 확장 기능을 추가하는 옵션이 있습니다. 사용 가능한 패키지는 여기 및 여기에서 찾을 수 있습니다.
- 다양한 acme 서버/certbot 구성 파일 허용(/opt/npm/tls/certbot/config.ini)
- 인증서당 최대 99개의 도메인을 지원합니다.
- Brotli 압축을 활성화할 수 있습니다.
- 고정 업로드를 사용하면 HTTP/2가 항상 활성화됩니다.
- 무한한 업로드 크기 허용
- 자동 데이터베이스 진공(sqlite만 해당)
- 오래된 certbot 인증서 자동 정리(FULLCLEAN을 true로 설정)
- 다음을 사용하여 비밀번호 재설정(sqlite만 해당)
docker exec -it npmplus password-reset.js USER_EMAIL PASSWORD
- MariaDB/MySQL에 대한 TLS를 지원합니다. env를 true로 설정하십시오
DB_MYSQL_TLS
. 자체 서명된 인증서를 업로드/data/etc/npm/ca.crt
하고 다음으로DB_MYSQL_CA
설정할 수 있습니다/data/etc/npm/ca.crt
(테스트되지 않음). - 네트워크 모드 호스트에서 PUID/PGID를 지원합니다.
net.ipv4.ip_unprivileged_port_start=0
끝에 추가/etc/sysctl.conf
- 네트워크 모드 호스트의 여러 인스턴스에 대한 IP 바인딩을 설정하는 옵션
- 백엔드 포트 변경 옵션
- 사용 가능한 모든 옵션은 composefile을 참조하세요.
- 모든 HTTP 트래픽을 HTTPS로 리디렉션하려는 경우
compose.override.yaml
파일을 사용할 수 있습니다.
깃허브 / 설정방법
아무쪼록 오래 유지되었으면 좋겠습니다..
오… http3…!!
근데 nguni로 기억하는데, 얘가… http2 클라이언트가 안되요…
외부에서 mom 까지는 http3인데, npm에서 백엔드는 http1…
npm +는 이 부분이 어떤지 궁그하네요 ㅎㅎ
nginx에서 http1은 안되고 2로만 가능하게 웹서버 하나 만들고 글루 리버스 프록시 해서 테스트 해보고 싶네요
cmt alert