pfSense는 FreeBSD 기반의 오픈소스 방화벽입니다. Rubicon Communications LLC (Netgate)라는 회사가 배포 및 장비(어플라이언스) 판매, 기술지원 서비스를 제공하고 있고, Apache 2.0 라이선스로 배포하기 때문에 pfSense 자체는 자유롭게 사용할 수 있습니다.
pfSense 말고도 오픈소스 네트워크 솔루션들이 꽤 있습니다.
유명한 제품으로는 베어메탈 스위치 제어를 위한 NVIDIA Cumulus Linux, Brocade Vyatta의 오픈소스 후속작인 VyOS, BSD기반의 pfSense/OPNsense등이 있습니다. 오픈소스는 아니지만 Windows Server도 RRAS를 통해 각종 방화벽 기능을 제공합니다.
https://en.wikipedia.org/wiki/List_of_router_and_firewall_distributions
pfSense는 꽤 많은 기능을 제공하는데, pfSense documentation을 보면 대략 아래와 같습니다. Add-on으로 제공되는 WireGuard 프로토콜 등은 제외했습니다.
https://docs.netgate.com/pfsense/en/latest/
사용자 관리/인증(AAA): 콘솔, VPN, Captive Portal 인증 등에 사용되는 인증 매커니즘
PKI 인증서 관리
방화벽: Ingress/Egress, 시간 기반 패킷 필터링
네트워킹: NAT, 라우팅, 브릿징, VLAN
Multi-WAN: 부하분산, Failover, PBR
VPN: IPsec, L2TP VPN, OpenVPN
네트워크 서비스: DHCP, DNS, Dynamic DNS, NTPD
Traffic Shaper(QoS)
Captive Portal
High Availability: CARP (Common Address Redundancy Protocol) 활용
모니터링: Monitoring Graphs, System Logs, Diagnostics(패킷 캡쳐, DNS Query, ping 등)
Wireless, Cellular Wireless: WLAN 인터페이스, 3G/4G 모뎀 지원
pfSense를 설치해서 해체해 보면서 주요 기능들이 어떻게 구현되어 있는지 알아보고자 합니다.
먼저 SSH로 pfSense에 접속해서 어떤 서비스들이 설치되어 있는지 확인해 보았습니다. 그 중 주요 기능과 관련된 서비스만 추려보았습니다.
/usr/local/etc/
- choparp - ARP 프록시 데몬
- dhcp6relay, dhcp6s - IPv6 DHCP 및 DHCP 릴레이 데몬
- dnsmasq - DNS, DHCP 서버
- expiretable - pfctl이 이 기능을 지원하기 전에 만들어진, 일정 시간 동안 사용되지 않은 ACL을 제거하는 데몬
- igmpproxy - IGMP 프록시 데몬
- isc-dhcpd, isc-dhcrelay - IPv4 DHCP 및 DHCP 릴레이 데몬
- miniupnpd - UPnP Internet Gateway Device 데몬. IGD는 처음 들어봤는데, 인터넷 게이트웨이 장비를 제어하기 위한 표준 프로토콜이라고 합니다.
- mpd5 - PPP 지원을 위한 데몬
- nginx, php-fpm - 관리 콘솔, Captive Portal 호스팅용 웹서버
- openvpn - OpenVPN 데몬
- openldap - OpenLDAP 데몬
- radvd - IPv6 Route Advertisement 데몬
- rrdcached - RRDtool(그래프 로깅 도구) 데이터 캐싱 데몬
- sshguard - 로그 파일을 모니터링하여 규칙에 따라 각종 서비스 접근을 차단하는 데몬. fail2ban과 같은 기능을 제공하는 것 같습니다.
- strongswan - IKEv1/IKEv2 데몬, 예전엔 IKEv1용으로 pluto라는 별도의 데몬이 있었는데, 5.0.0부터 통합되었다 합니다.
이외 대부분의 네트워킹 기능(QoS, PF, LB, HA 등)은 FreeBSD 커널에 의존합니다.
다음부터는 이 기능들이 어떻게 구현되어 있는지 알아보려 합니다.