SafeLine
SafeLine은 자체 호스팅이 가능한 오픈 소스 웹 애플리케이션 방화벽으로, SQL 인젝션, XSS, 명령어 인젝션 등의 공격을 효과적으로 방어할 수 있으며, 안티 크롤링, 속도 제한 등의 기능도 갖추고 있습니다.
스마트 다운로드
프로젝트 홈페이지 방문
아직 설치 프로그램이 없습니다 — 소스 저장소로 이동하세요
자체 구축 WAF로 해커와 크롤러를 차단하며, 정확도가 높고 오탐률이 낮습니다.
주요 기능
- 일반적인 웹 공격 방어 (SQL 인젝션, XSS, 명령어 인젝션 등)
- IP 기반 속도 제한으로 무차별 대입 공격 및 DDoS 방지
- 크롤러 방지 인증 (사람과 기계 식별)
- 비밀번호 인증 챌린지 (접근 시 비밀번호 입력 필요)
- HTML 및 JavaScript 동적 암호화로 변조 및 도용 방지
할 수 없는 것
- •중국 본토 사용자는 중국 버전을 설치하세요(문서에 별도의 링크가 있습니다). 그렇지 않으면 국제 버전으로는 클라우드 서비스에 연결할 수 없을 수 있습니다. 또한, 처음 배포한 후에는 반드시 기본 관리자 비밀번호를 변경하세요.
사용 사례
- 중소형 웹사이트 또는 API 서비스에 저비용 보안 보호가 필요한 경우
- 자체 호스팅 및 데이터 해외 반출 금지가 요구되는 컴플라이언스 시나리오
- WordPress, Discuz 등 일반적인 CMS의 알려진 취약점 방어
- 트래픽이 많은 웹사이트에 부정 투표 방지 및 크롤러 방지가 필요한 경우
상세 설명
SafeLine은 웹 애플리케이션을 각종 공격으로부터 보호하기 위해 설계된 셀프 호스팅 오픈 소스 웹 애플리케이션 방화벽(WAF)입니다. 리버스 프록시로 동작하며 HTTP 트래픽을 필터링하고 모니터링하여 악성 요청이 서버에 도달하기 전에 차단합니다. 핵심 기능으로는 SQL 인젝션, XSS, 코드 인젝션, 명령 인젝션, 경로 순회, CSRF, SSRF 등의 공격 방어, 무차별 대입 공격과 DoS 공격을 방지하는 속도 제한, 사람과 봇을 구분하는 안티 크롤러 챌린지, 민감한 페이지를 보호하는 비밀번호 인증 챌린지, 그리고 변조를 방지하기 위한 HTML 및 JavaScript 코드 동적 암호화가 포함됩니다. 전 세계적으로 18만 회 이상 설치되어 100만 개 이상의 웹사이트를 보호하고 있으며, 매일 300억 건 이상의 HTTP 요청을 처리합니다. SafeLine의 탐지 정확도는 최대 99.45%에 달하고 오탐률은 0.07%에 불과하여 ModSecurity와 CloudFlare 무료 버전의 성능을 크게 능가합니다.
문제 해결 & FAQ (2)
문제 해결SafeLine이 내 SSL 인증서를 자동 갱신한 후 왜 'SSLPeerUnverifiedException: Certificate pinning failure' 오류가 발생하나요?
**근본 원인:** v9.4.3 이전 버전에서는 SafeLine이 ACME 인증서 발급/갱신 시마다 새로운 개인 키를 생성했습니다. 이로 인해 인증서의 SPKI 공개 키 해시가 변경되어, 공개 키 해시를 고정(pin)하는 SSL 피닝을 사용하는 앱(예: Android OkHttp CertificatePinner)에서 문제가 발생합니다. 브라우저와 curl은 피닝을 수행하지 않으므로 서버 측 테스트는 정상적으로 통과하지만 피닝이 적용된 모든 앱 클라이언트는 실패하게 되며, 실패가 TLS 핸드셰이크 중에 발생하기 때문에 SafeLine이나 백엔드 액세스 로그에 어떠한 요청도 나타나지 않습니다.
**해결 방법:** SafeLine을 **v9.4.3 이상**으로 업그레이드하세요. 해당 버전은 인증서 갱신 시 기존 개인 키를 재사용하는 기능(certbot의 --reuse-key와 동일)을 지원하여, 갱신 후에도 공개 키 해시가 안정적으로 유지됩니다. 이 기능은 공식 릴리스에서 사용 가능한 것이 확인되었습니다.
**우회 방법 (v9.4.3 이전):** SafeLine의 자동 ACME 발급을 사용하는 대신, 개인 키를 외부에서 관리하고 인증서를 수동으로 업로드하세요. 고정된 자체 개인 키를 기반으로 인증서를 생성/발급받은 후(예: certbot --reuse-key 또는 acme.sh 사용), 두 파일을 모두 SafeLine의 사이트 구성에 업로드하면 갱신 시에도 키가 교체되지 않습니다.
문제 해결Custom HTML 'Application Offline' 페이지에서 'Reset to default' 버튼이 작동하지 않는 이유는 무엇인가요?
이것은 확인된 버그입니다: Custom HTML → Application Offline 설정 페이지에서 'Reset to default'를 클릭하면 JavaScript 콘솔 오류가 발생하고 아무 동작도 하지 않으며, 다른 페이지는 정상적으로 작동합니다. 이 버그는 최신 릴리스에서 수정되었습니다. 설치를 최신 버전으로 업데이트하면 해결됩니다. 업데이트할 수 있을 때까지 재설정 버튼 사용을 피하고 대신 사용자 지정 HTML 콘텐츠를 수동으로 지우거나 편집하세요.
태그
시작하기
소프트웨어 설치
다운로드한 설치 프로그램을 더블 클릭하고 안내에 따르세요
1단계: 공식 문서에 접속하여 시스템에 맞는 설치 방법 선택 (Docker 원클릭 배포 권장)
2단계: 설치 명령을 실행한 후 관리 콘솔에 접속 (기본 포트 9443)
3단계: 콘솔에서 보호가 필요한 Web 애플리케이션 추가 (도메인 또는 IP와 포트 입력)
- 1단계: 공식 문서에 접속하여 시스템에 맞는 설치 방법 선택 (Docker 원클릭 배포 권장)
- 2단계: 설치 명령을 실행한 후 관리 콘솔에 접속 (기본 포트 9443)
- 3단계: 콘솔에서 보호가 필요한 Web 애플리케이션 추가 (도메인 또는 IP와 포트 입력)
체크섬 없음
이 프로젝트는 GitHub Release 페이지에 SHA-256 체크섬을 게시하지 않았습니다
SHA256 체크섬
체크섬 없음
GitHub Releases에서 직접 다운로드하고 파일 무결성을 직접 확인하세요
이 플랫폼의 모든 SHA-256 체크섬은 프로젝트의 공식 GitHub Release 페이지에서 추출되었으며, 어떠한 변경도 없습니다. GitHub Releases 페이지에서 직접 검증할 수 있습니다.
오픈소스 투명성
GitHub 소스 보기제거 정보
SafeLine 컨테이너를 중지하고 데이터 볼륨을 삭제합니다: `docker compose down -v` (참고: 이 작업은 모든 구성과 로그를 삭제하므로 먼저 백업하세요).
추가 의존성 없음
다운로드 후 바로 사용 가능. 추가 런타임이 필요하지 않습니다.
문제 발생? 아래 FAQ 확인
2 FAQs