메뉴 닫기

[Rocky 10] nftables 설치 및 설정

chatgpt 생성 이미지

 

안녕하세요,

오늘은 Rocky Linux 10 부터 공식 백엔드로 사용되는 nftables 설치 및 설정 방법을 기재하겠습니다.

 

<h3> iptables-services 패키지 설치를 통한 비교 </h3>

Rocky Linux 9부터 기존 iptables 커맨드가 내부적으로 nftables를 백엔드로 사용하도록 변경됩니다.

예를 들어 Rocky 10에서 iptables-services 패키지를 설치하면 아래와 같이 iptables-nft-services 패키지를 다운로드합니다.

Rocky 8에서 같은 명령어 사용 시 일반 iptables-services 패키지를 설치합니다.

 

익숙한 명령어를 사용하기 위해 iptables를 사용할 수도 있지만 nftables를 익히기 위해 nftables 설치 및 사용해보겠습니다. 

 

※ 목차

  1. 설치
  2. 설정파일을 이용한 규칙 설정
  3. 터미널 명령어

 

1.설치

dnf 명령어로 nftables 패키지를 간단하게 설치 가능합니다. 

dnf install -y nftables

 

설치 이후 기본적인 설정으로 서버 부팅 시 자동 재시작 설정을 걸어줄 수 있습니다. 

systemctl enable nftables --now

 

2. 설정파일을 이용한 규칙 설정

 

보통 시스템 파일을 설치하면 /etc/패키지명 하단에 설정 파일들이 생기기 때문에 한 번 살펴보면, 

이렇게 무언가 규칙 선언 파일처럼 보이는 파일들이 있습니다. 

파일 또는 폴더 명 파일 설명
 main.nft  메인 규칙 (INPUT, OUTPUT, FORWARD 등) 설정 파일
 nat.nft  NAT 관련 규칙 (SNAT, DNAT, MASQUERADE) 설정 파일
 osf  OS Fingerprint 관련 설정, 확장 기능 관련 파일 폴더
 router.nft  Routing 체인 관련 규칙 설정 파일

그러나 해당 파일들을 사용하기 전에 먼저 nftables daemon이 실제로 어떤 설정 파일을 참고하고 있는지 확인해야 합니다. 

 

systemctl cat nftables

systemctl cat 명령어를 사용하면 실제 서비스 데몬이 어떻게 정의되어 있는지 알 수 있습니다. 

해당 명령어로 불러온 파일과 실제 서비스 데몬 선언 파일이 동일합니다. 

nftables 서비스 데몬은 설정 파일 경로를 /etc/sysconfig/nftables.conf를 기반으로 실행되고 있습니다. 

서비스 데몬 설정 파일을 보면 nftables는 실행 시마다 /sbin/nft -f /etc/sysconfig/nftables.conf 명령어로 본 파일을 규칙으로 적용시킵니다.

따라서 /etc/nftables 하단에 파일에 규칙을 설정해도 지금 상태에서는 규칙이 적용되지 않습니다. 

만일 /etc/nftables 하단 파일을 이용하고 싶다면 /etc/sysconfig/nftables.conf 안에 규칙이 아닌 include “/etc/nftables/main.nft” 이런 식으로 기재해주면 됩니다.

그럼 서비스 데몬은 재실행 시 무조건 nftables.conf 파일을 적용하기 때문에 본 파일 안에 적용된 main.nft도 실행하게 됩니다. 

 

본 게시 글에서는 nftables.conf 파일에 규칙을 기재해보겠습니다. 코멘트로 설명을 달아두었습니다. 

# 백업
cp -arp /etc/sysconfig/nftables.conf /etc/sysconfig/nftables.conf_ori

# 설정파일 수정
vi /etc/sysconfig/nftables.conf
===
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0;
        policy drop;

        # 루프백 허용
        iif lo accept comment "루프백"

        # 이미 연결된 세션 허용
        ct state established,related accept comment "기존 연결 허용"

        # 특정 IP 전체 허용
        ip saddr 192.168.10.100 accept comment "단일 IP 기준으로 모든 접근 허용 (PC)"
        # 8080 포트 전부 허용
        tcp dport 8080 accept comment "단일 포트 허용 정책 (웹 서비스 허용)"
        # HTTP / HTTPS 포트 전부 허용
        tcp dport {80, 443} accept comment "다중 포트 허용 정책 (웹 서비스 허용)"

        # UDP SNMP 포트 1개 전부 허용 
        udp dport 161 accept comment "UDP 단일 포트 허용 정책 (SNMPD 서비스 허용)"

        # Ping 허용
        icmp type echo-request accept comment "Ping 허용"
    }

    chain forward {
        type filter hook forward priority 0;
        policy accept;
    }

    chain output {
        type filter hook output priority 0;
        policy accept;
    }
}
===

# 룰셋 적용
systemctl restart nftables # 또는 
nft -f /etc/sysconfig/nftables.conf

 

3. 터미널 명령어

터미널에서 쓸 수 있는 명령어는 iptables에서 많이 쓰이는 몇 가지 옵션을 nftables 방식으로 기재하겠습니다. 

기능 iptables nftables
규칙 파일 재적용  iptables-restore < /etc/sysconfig/iptables  nft -f /etc/sysconfig/nftables.conf
적용 중인 규칙 리스트 확인  iptables -vnL  nft list ruleset
현재 운영 중인 규칙 리스트를 파일로 저장  iptables-save > /etc/sysconfig/iptables  nft list ruleset > /etc/sysconfig/nftables.conf

 

  • <h3> 참고 게시물 링크 </h3>

마지막으로 아래에는 참고할 수 있는 게시글입니다.

👉 [nftables 설치에 이어 기본 문법 개념들의 정리~]

👉 [nftables 를 설치해보자 (Centos7 환경 기반)]

🌍 [nftables 관련 설명이 잘 되어 있는 외부 게시글]

 

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다