[Opnsense - WAF] WAF(Naxsi) 설정 및 룰셋 적용(1)
- 사용할 WAF는 Naxsi로 Nginx 서버를 보호하는 WAF입니다. 혹시 Apache 등 다른 웹 서버를 사용한다면 제대로 동작하지 않을 가능성이 있습니다.
1. WAF 플러그인 설치
System - Firmware - Plugins - os-nginx 설치
- 필요한 경우 Opnsense 업데이트를 먼저 진행합니다. GUI에서 업데이트가 제대로 안된다면 Cli를 사용하면 됩니다. 다만, 업데이트 전 문제가 생길 수 있으니 스냅샷 등 백업을 해두는 것을 추천합니다.
2. Reverse Proxy 설정
- Reverse Proxy는 클라이언트가 서버로 접근할 때, 서버로 직접 접근(요청)하지 못하도록 중간에서 클라이언트에게 요청 받고 서버 응답을 대신 전달하는 역할을 수행한다. 덕분에 로드 밸런싱 및 보안 강화를 수행할 수 있다.
Sevices - Nginx - Configuration - Upstream - Upstream Server - +버튼
- 동일한 서비스를 2개 이상의 서버에서 운영하고 있다면 2개 서버 모두 등록
- Description: 웹 서버 이름(구분하기 위한 적절한 이름)
- Server: 서버 IP(서브넷 마스크 없이 EX - 10.0.0.1)
- Port: 서비스 포트
- Server Priority: 로드밸런싱 할 때 우선 순위(단일 서버라면 그냥 1 입력)
- 서버 최대 연결 수, 로드밸런싱 대상에서 서버를 제외할 실패 횟수 기준, 최대 대기 시간 등은 필수 입력 아님
Sevices - Nginx - Configuration - Upstream - Upstream - +버튼
- Description: 서비스 명(위에 등록한 웹 서버 묶음으로 구분하기 위한 적절한 이름)
- Server Entries: 서비스 대상(여러 서버 등록 가능)
- Load Balancing Algorithm: 로드밸런싱 방식
=> 'Weighted Round Robin' 은 서버에 가중치 부여 후 가중치에 따라 적절히 트래픽 배분
=> 'IP Hash'은 IP를 기억하여 한 번 연결된 서버로 계속 트래픽 전달
- 나머지는 TLS 설정으로 우선 기본값 유지
Sevices - Nginx - Configuration - HTTP(S) - Location - +버튼
- Description: 적절한 이름
- URL Pattern: 접근 가능한 경로 설정(접근 경로를 필터링 할 목적이 있다면 지정하고 아니면 루트경로 / 입력)
=> EX) /abc/로 URL Pattern을 등록하면 /abc/ 경로론 접근 가능하나 /123/ 경로는 실제 존재해도 접근 불가(404 Error)
- Upstream Servers: 요청을 프록시할 서버(위에서 생성한 Upstream Servers 선택)
Sevices - Nginx - Configuration - HTTP(S) - HTTP Server - +버튼
- HTTP(S) Listen Address: HTTP 혹은 HTTPS 서비스 Port 입력
=> EX) HTTP Listen Address를 8888로 지정한다면 외부에서 서비스 접근을 8888 Port로 해야한다.
- Server Name: IP 접근을 허용한다면 WAN IP, 도메인으로 접근을 허용할 거면 허용할 도메인을 입력 / IP 접근, 도메인 접근 동시 허용 가능
- Locations: Server Name + Listen Address로 접근했을 때 배분할 서버 지정(위에서 생성한 Location)
-
Sevices - Nginx - Configuration - General Settings - Enable nginx 체크 - Apply
- Nginx 프록시 (재)시동
3.접근 테스트
- 테스트 전에 Opnsense 방화벽 정책을 생성해줘야한다. (WAF 설정 관련 글이기에 방화벽 룰은 생략)
=> 인터페이스는 WAN, 오픈할 Port는 위에 ' HTTP Server'에서 정의한 HTTP(S) Listen Address로 설정
참고 사이트: https://docs.opnsense.org/manual/firewall.html
- 외부에서 접근 시 접근 가능
- opnsense에서 접근 로그 확인 가능
Sevices - Nginx - Logs / HTTP Access
- 접근 시간, 접근한 IP, 접근 경로 등 확인 가능
- Nginx 웹 서버에서 tcpdump로 트래픽을 확인하면 출발지 IP는 OPNsense.localdomain으로 확인된다.
=> 웹 서버에 클리이언트의 요청이 직접 도달하지 않음
이렇게 되면 Reverse Proxy 설정이 완료된다. 이제 다음 글에서는 웹 서버를 외부 위협에서 보호하기 위한 WAF 설정을 진행할 예정이다.
참고 사이트: https://docs.opnsense.org/manual/how-tos/nginx.html
'내 웹 서버 > IPS & WAF' 카테고리의 다른 글
[Opnsense - WAF] 사용자 정의 룰 생성 (0) | 2023.12.24 |
---|---|
[Opnsense - WAF] WAF(Naxsi) 설정 및 룰셋 적용(2) (0) | 2023.12.24 |
[Opnsense - IPS] 사용자 정의 룰 생성 (0) | 2023.12.21 |
[Opnsense - IPS] IPS 설정 및 룰셋 적용 (0) | 2023.12.21 |
[Opnsense - IPS/WAF] Opnsense 설치 (0) | 2023.12.17 |