홈서버를 지키기 위한 최소한의 보안설정을 조사해본다.
이어지는 네트워크1, 2에서 보안설정을 실제 적용한다.
1. 요구사항
홈서버의 기본적인 보안 요구사항을 정리해 보았다.
- 기본적인 보안
- 특정 IP 차단
- 특정 IP 허용
국내 IP만 허용→ 일부 서비스 이용에 지장이 발생, IP 우회로 실효성도 떨어짐- 특정 국가 IP 차단
- 비정상적인 접속을 시도하는 IP 차단
- 침입 탐지
- 안전한 외부 접속
2. 기본 보안 설정
중요한 포인트
- Network Segmentation
- Firewall & Portforwarding
- Cloudflare (Reverse Proxy)
- Cloudflare Settings & Stats
- Cloudflare Conditional Portforwarding
- Cloudflare Firewall Rules
- IDS and IPS
- Internal Reverse Proxy
- Auth Proxy
TODO
- Cloudflare Reverse Proxy 설정
- 홈서버 방화벽에 Cloudflare의 IP만 허용하도록 설정 (VPN 용 노드는 제외)
- Cloudflare 보안 설정 추가
- IDS/IPS 설정하기
3. VLAN
하나의 컴퓨터가 해킹당해도 다른 컴퓨터들을 보호하기 위한 방법.
가상의 LAN을 생성하여 이들 간의 통신을 통제한다.
VLAN은 네트워크에서 따로 다룰 예정.
4. 안전한 외부 접속
가. Fail2Ban
일정한 횟수 이상으로 SSH 접속에 실패하면 차단하는 방법.
# 외부에서 접근한 기록 확인
journalctl -f
Code language: PHP (php)
나. 2FA
SSH 접속 시 OTP인증을 통과해야 하도록 설정.
5. VPN
Fail2Ban, 2FA 조합은 SSH를 위한 포트를 열어둬야 하는 문제점이 있다.
VPN을 사용한다면 SSH 포트를 외부에 공개하지 않아도 외부에서 충분히 작업할 수 있다.
- vpn
services:
wg-easy:
environment:
# ~Z| ~O Required:
# Change this to your host's public address
- LANG=en
- WG_HOST=도메인 또는 IP
# Optional:
- PASSWORD_HASH=비밀번호
- WG_PORT=포트번호
- WG_DEFAULT_ADDRESS=192.168.35.x
- WG_DEFAULT_DNS=1.1.1.1
- WG_MTU=1420
- WG_ALLOWED_IPS=192.168.35.0/24
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
Code language: PHP (php)
PASSWORD_HASH 주의 : https://github.com/wg-easy/wg-easy/blob/master/How_to_generate_an_bcrypt_hash.md
특히 마지막 줄 꼭 읽어보기.
6. Opnsense
OPNsense는 오픈소스 방화벽/라우터 소프트웨어
FreeBSD를 기반으로 한다.
- 방화벽 및 라우팅
- IDS/IPS (침입 탐지/방지 시스템)
- 트래픽 셰이핑
- VPN 서버
- 웹 필터링
GUI 기반의 직관적인 인터페이스로 네트워크 관리할 수 있다.
pfSense와 더불어 홈서버의 방화벽, IDS/IPS 및 VPN을 위해 널리 사용된다.
가. IDS/IPS
비정상적인 접속을 시도하는 IP 탐지 및 차단
나. Black list
비정상적으로 접근하는 IP를 차단하는 방법.
