Fail2Ban, 다시 iptables-nft 체제로 전환하기 (feat. 최최최종ver)

2025. 11. 24. 20:49·Infra/DevOps

결국.. 다시 여기로

이게 몇번째냐고 ㅠㅠ

저번에 Fail2Ban이 iptable vs nft 문제로 터지고 나서 2번의 시도 이후에 다시 iptables로 돌아왔다

그렇게 삽질을 했는데!!! 개허탈하다! 이 개자석들!!!!

그 뒤로도 nft가 문제가 많았음...

서버가 네트워크가 안되는걸 해결하면 컨테이너가 외부랑 통신을 못하는 ㅋㅋ

하.. 이상하다 싶었고 좀 더 찾아보니.. 도커 공식 홈페이지에서 아래와 같은 글을 볼 수 있었다

도커 공홈 발췌

- Docker는 iptables-nft랑 iptables-legacy만 지원함

- Docker가 설치된 환경에서 nft는 지원되지 않음

- 아래가 원본 링크

https://docs.docker.com/engine/install/ubuntu/

 

Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 쓰지 말란거죠? 캭씨!!!!

아무튼 오늘은 서버를 iptables-nft 버전으로 전환하고 Fail2Ban과 호환되도록 세팅해보겠다

참고로 아래 순서대로 진행하면 서버 네트워크 규칙 같은 것들 전부 초기화되니 필요한 것들 (e.g. 포트, 네트워크 규칙, etc) 있으면 백업 필수!!


0. 기본 개념

- 일단 오늘 하는 과정에 대한 기본 개념을 정리하고 가자면 아래와 같다

1. 좋든 싫든 Ubuntu 22.04부터 nft가 디폴트가 되었다
- 좀 더 정확히는 커널의 netfilter는 nftables 엔진이 기본이 되었다는 의미
2. Docker는 nft랑 아직 친화적이지 못하다
3. 이 때 쓰는 것이 iptables-nft
4. iptables-nft는 iptables 명령을 쓰더라도 내부적으로 nft 규칙으로 변환해서 넣어줌

1. 현재 버전 확인

sudo iptables --version

- 여기서 iptables x.x.x (nf_tables) 면 진행할 필요 없다

- legacy는 진행하면 됨


2. iptables-nft 체제로 전환

sudo update-alternatives --set iptables /usr/sbin/iptables-nft
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
sudo update-alternatives --set arptables /usr/sbin/arptables-nft
sudo update-alternatives --set ebtables /usr/sbin/ebtables-nft

- 위 명령어를 진행하고, 버전 확인하면 nf_tables가 떠야 정상이다


3. 도커 환경 체크

cat /etc/docker/daemon.json

- 아래처럼 세팅

{
  "iptables": true,
  "userland-proxy": false
}

4. 전체 초기화

- ufw, iptables, nftables 전부 초기화한다 (추후에 꼬이는 것 방지)

- 백업할게 있다면 미리 해두자!! (포트 열어둔 것 등등)

sudo ufw disable
sudo ufw reset

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -t raw -F
sudo iptables -t raw -X

sudo nft flush ruleset

5. 도커 재시작

- 이 시점에서 Docker가 nft 백엔드 기반으로 NAT/FORWARD 체인을 재생성한다

- 쉽게 말해 자기가 기록할 권한이 있는 노트를 만듦

sudo systemctl restart docker

6. UFW 재생성

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

7. Fail2Ban 재실행

- 여기서 Fail2Ban 컨테이너 껐다 키면 된다

- 참고로 컨테이너 옵션에 iptables 수정할 권한이 있어야함

- 'NET_ADMIN', 'NET_RAW' 두개 추가 필수

- 근데 아마 Fail2Ban을 연동해두셨었다면 하셨을 가능성 100%

- 혹시 모르겠다면 아래 글 참조

https://ratatou2.tistory.com/190#2.%20Docker%20Container로%20fail2ban을%20띄워보자-1-3

 

[서버 보안 시리즈 #2] 서버에 Fail2Ban 적용하기

찾았다.. 이 도둑놈시키오늘은 서버 보안 챙기기 시리즈 2번째, Fail2Ban을 적용해볼 것이다몹쓸 요청 보내는 이놈들을 박멸해보자0. 요약- 아래 글은 내가 삽질하며 배운 것들을 정리하고, 왜 그렇

ratatou2.tistory.com


8. 생성여부 확인

- Docker가 DOCKER와 DOCKER-USER chain을 생성했는지 체크하는 단계

sudo iptables -t nat -L DOCKER -n
sudo iptables -L DOCKER-USER -n

- 잘 생성됐으면  아래처럼 무언가 뜬다

- 참고로 뭐가 등록된게 없으면 아무것도 안 뜰 수도 있다 (나는 Fail2Ban 컨테이너 바로 띄워서 등록 했음)


번외

거의 열흘 내내 이 문제로 골머리 싸맸네..

중간에 일이 있어서 3일쯤 묻어두다가 어제 이렇게 안정화 시키고 포스팅으로 기록 해뒀다 휴..

다들 평안한 서버 생활되시길!

반응형

'Infra > DevOps' 카테고리의 다른 글

홈서버 4대로 쿠버네티스(Kubernetes, K8s) 구축하기  (0) 2025.12.01
Prometheus, Out of Bound 해결방법 (feat. 서버 시간 통일 & TSDB 초기화)  (0) 2025.11.28
Fail2Ban, nftables 체제로 완전 전환하기 (feat. 눈물겨운 이유와 Ubuntu 22.04)  (0) 2025.11.15
Fail2Ban 돌연사 사건 및 해결방법 (feat. 그지같은 nftables)  (0) 2025.11.15
SSH 22번 포트 자동 복구 시스템 구축하기 (feat. 서버 잃고 뇌 약간 고치기 ㅠ)  (0) 2025.10.24
'Infra/DevOps' 카테고리의 다른 글
  • 홈서버 4대로 쿠버네티스(Kubernetes, K8s) 구축하기
  • Prometheus, Out of Bound 해결방법 (feat. 서버 시간 통일 & TSDB 초기화)
  • Fail2Ban, nftables 체제로 완전 전환하기 (feat. 눈물겨운 이유와 Ubuntu 22.04)
  • Fail2Ban 돌연사 사건 및 해결방법 (feat. 그지같은 nftables)
Ratatou2
Ratatou2
온갖 정보들을 기록해두는 메모보드 블로그
  • Ratatou2
    nak-z
    · Ratatou2 ·
  • 전체
    오늘
    어제
  • 공지사항

    • 블로그 이전 진행 중 (24.11.25 ~)
    • 분류 전체보기 (303) N
      • OS (89) N
        • Linux (39)
        • Window (24)
        • Mac (21) N
        • Android (5)
      • Infra (83) N
        • DevOps (38) N
        • Docker (14)
        • Jenkins (9)
        • n8n (13)
        • Nextcloud (8)
        • Rasberry Pi (1)
      • Dev (17)
        • JAVA (7)
        • Python (1)
        • DB (3)
        • Vue (2)
        • AI (4)
        • Git (0)
      • Tools (10)
      • Study (69)
        • Algorithm (66)
        • CS (3)
      • Game (10)
        • Project Zomboid (9)
        • Don't Starve Together (1)
      • etc (24)
        • Temp (0)
      • 개발 외 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Ratatou2
Fail2Ban, 다시 iptables-nft 체제로 전환하기 (feat. 최최최종ver)
상단으로

티스토리툴바