업데이트로 돌아가기
New releaseSep 4, 2026

easywall v2.14.0

Go로 작성된 Linux용 nftables 방화벽 웹 인터페이스입니다. 적용(apply)은 확인하지 않으면 120초 후 자동으로 되돌려지므로, 스스로 잠길 수 없습니다. Debian 및 Docker 설치를 지원합니다.

공유

easywall

당신의 방화벽. 당신의 규칙. 예상치 못한 일은 없습니다.

Tests Build Security Coverage

Latest release Go version GPL-3.0 Discord Support on Ko-fi

라이브 데모 · 문서 · 변경 로그

당신을 잠글 수 없는 웹 인터페이스를 통한 nftables: 확인하지 않으면 모든 적용은 스스로 되돌아갑니다.

easywall 대시보드: 수락 상태, 대기 중인 변경 사항 및 마지막 적용이 표시된 방화벽 상태; TCP 포트, UDP 포트, 차단 목록, 허용 목록, 사용자 지정 규칙 및 포워딩을 집계하는 타일; 그리고 최근 활동 목록.

아이디어

규칙을 편집해도 아무것도 바뀌지 않습니다. 적용하면 모든 것이 바뀝니다 — 120초 동안. 새 규칙이 당신의 연결을 끊는다면 확인을 클릭할 수 없으며, 확인하지 않는 것이 바로 이전 규칙을 되살리는 방법입니다.

상태 머신: 편집은 Staged로 이어지고, 적용은 Live로 이어지며, 시간 창 내에 확인하면 Confirmed로 이어지고, 시간 창이 만료되면 Rolled back으로 이어지며, 그곳에서도 스테이징된 편집 내용은 여전히 사용할 수 있습니다.

아키텍처

두 개의 프로세스. 네트워크에 노출된 프로세스는 탈취할 가치가 있는 권한을 전혀 보유하지 않습니다.

브라우저는 HTTPS로 권한 없이 실행되는 easywall-web과 통신하며, easywall-web은 Unix 소켓을 통해 타입이 지정된 JSON으로 root로 실행되는 easywall-core와 통신하고, easywall-core는 netlink를 통해 nftables의 inet easywall 테이블과 통신합니다.

원본 easywall(Python, Flask, subprocess를 통한 iptables)을 완전히 재작성한 것입니다. 원본은 CVE 이후 2022년에 아카이브되었습니다. 두 가지 근본 원인 모두 사라졌습니다. 권한은 별도의 프로세스에 존재하며, 적용 경로는 명령줄 대신 Go 구조체를 빌드합니다. 작동 방식 →

설치

의사 결정 트리: 단순히 살펴보는 경우 데모 모드로, Debian 또는 Ubuntu인 경우 .deb 패키지로, 이미 컨테이너를 실행 중인 경우 Docker로, 그 외의 경우 소스에서 빌드합니다.
# Debian / Ubuntu — amd64 and arm64
ARCH=$(dpkg --print-architecture)
wget https://github.com/jp1337/easywall/releases/latest/download/easywall_$ARCH.deb
sudo dpkg -i easywall_$ARCH.deb && sudo apt-get install -f

# Docker
git clone https://github.com/jp1337/easywall.git && cd easywall && docker compose up -d

# From source — Go 1.27+, nftables
git clone https://github.com/jp1337/easywall.git && cd easywall
make build && sudo make install
sudo systemctl enable --now easywall-core easywall-web

그런 다음 https://localhost:12227을 엽니다. 첫 방문 시 계정을 설정하고 첫 번째 규칙을 준비합니다.

제공 기능

포트TCP 및 UDP, 단일 또는 범위, 규칙별 SSH 무차별 대입 라우팅 지원
차단 목록 및 허용 목록IPv4, IPv6 및 CIDR, 모든 포트 규칙보다 먼저 평가됨
보호 모듈12개, 기본 활성화 5개 — 플러드, 스캔, 보곤, 프래그먼트, 브로드캐스트/멀티캐스트/애니캐스트
포트 포워딩프로토콜 선택이 가능한 NAT 리다이렉트
사용자 지정 규칙원시 nftables, 적용 전 구문 검사
내보내기 / 가져오기전체 규칙 집합을 JSON으로
감사 로그무엇이 언제 변경되었는지, 한 줄에 하나의 JSON 객체
Docker 공존table inet easywall만 소유하고 그 외에는 건드리지 않음
영어, 독일어, 프랑스어인터페이스에서 전환 가능, 로그인 전에도 가능. 일부 언어는 부분적일 수 있음: 누락된 부분은 영어로 표시되며, 그 공백은 숨기지 않고 보고됨
라이트 & 다크OS 설정을 따르며 수동 전환 가능; 둘 다 대비 검사 완료

사용 기술

Go 1.27, 단일 바이너리go-chi/chi · html/template
google/nftables를 통한 nftables타입 지정 규칙에는 netlink; 사용자 지정 규칙에만 nft 사용
Argon2idgolang.org/x/crypto, 비밀번호당 16바이트 솔트
CSRFnet/http.CrossOriginProtection, Go 1.25 네이티브
디자인 시스템DESIGN.md + Tailwind v4 — 서드파티 UI 라이브러리 없음
폰트Inter + JetBrains Mono, 자체 호스팅, ~145 KB — 에어갭 환경에서 작동
CIgovulncheck, gosec, CodeQL, -race, 그리고 실제 커널을 대상으로 한 통합 테스트 스위트

도움 받기

질문 또는 동작이 이상한 경우Discord
버그 또는 원하는 기능GitHub issues
보안 취약점보안 권고 — Discord가 아니며, 공개 이슈도 아닙니다

기여하기

설정, 커밋 규칙 및 리뷰 체크리스트: CONTRIBUTING.md. 시각적인 모든 것은 먼저 DESIGN.md를 거칩니다.

보안 문제: 공개 이슈로 올리지 마세요 — GitHub Security Advisories를 사용하세요.

라이선스

GPL-3.0 — LICENSE를 참조하세요.

카테고리