[홈서버] 보안

홈서버를 지키기 위한 최소한의 보안설정을 조사해본다.
이어지는 네트워크1, 2에서 보안설정을 실제 적용한다.


1. 요구사항

홈서버의 기본적인 보안 요구사항을 정리해 보았다.

  1. 기본적인 보안
  2. 특정 IP 차단
  3. 특정 IP 허용
  4. 국내 IP만 허용 → 일부 서비스 이용에 지장이 발생, IP 우회로 실효성도 떨어짐
  5. 특정 국가 IP 차단
  6. 비정상적인 접속을 시도하는 IP 차단
  7. 침입 탐지
  8. 안전한 외부 접속

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

  1. Cloudflare Reverse Proxy 설정
  2. 홈서버 방화벽에 Cloudflare의 IP만 허용하도록 설정 (VPN 용 노드는 제외)
  3. Cloudflare 보안 설정 추가
  4. IDS/IPS 설정하기

3. VLAN

하나의 컴퓨터가 해킹당해도 다른 컴퓨터들을 보호하기 위한 방법.

가상의 LAN을 생성하여 이들 간의 통신을 통제한다.

https://svrforum.com/software/31568

VLAN은 네트워크에서 따로 다룰 예정.


4. 안전한 외부 접속

가. Fail2Ban

일정한 횟수 이상으로 SSH 접속에 실패하면 차단하는 방법.

https://nitr0.tistory.com/328

🏠홈서버 만들기🏠 보안

우분투의 방화벽을 구성해 보고 fail2ban 을 통해 침입을 차단하며 Google OTP로 2단계 인증을 활성화 해서 SSH 접속의 보안을 강화하자.

# 외부에서 접근한 기록 확인
journalctl -f
Code language: PHP (php)

나. 2FA

SSH 접속 시 OTP인증을 통과해야 하도록 설정.

🏠홈서버 만들기🏠 보안

우분투의 방화벽을 구성해 보고 fail2ban 을 통해 침입을 차단하며 Google OTP로 2단계 인증을 활성화 해서 SSH 접속의 보안을 강화하자.


5. VPN

Fail2Ban, 2FA 조합은 SSH를 위한 포트를 열어둬야 하는 문제점이 있다.

VPN을 사용한다면 SSH 포트를 외부에 공개하지 않아도 외부에서 충분히 작업할 수 있다.

  • vpn

https://svrforum.com/os/282701

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

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을 위해 널리 사용된다.

https://svrforum.com/os/294591

가. IDS/IPS

https://svrforum.com/os/138584

비정상적인 접속을 시도하는 IP 탐지 및 차단


나. Black list

비정상적으로 접근하는 IP를 차단하는 방법.


댓글 남기기