nftables를 사용하여 포트 80을 닫을 수 없는 이유는 무엇입니까?

nftables를 사용하여 포트 80을 닫을 수 없는 이유는 무엇입니까?

localhost에서 포트 80을 닫고 싶습니다.

sudo nft add rule inet  filter input tcp dport 80 drop

nmap을 사용하여 다음을 확인하세요.

sudo nmap  -p 80   127.0.0.1
Starting Nmap 7.70 ( https://nmap.org ) at 2021-05-02 05:16 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).

PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds

포트 80을 닫을 수 없는 이유는 무엇입니까?

sudo nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        iif "lo" accept comment "Accept any localhost traffic"
        iif != "lo" ip daddr 127.0.0.0/8 counter packets 0 bytes 0 drop comment "drop connections to loopback not coming from loopback"
        tcp dport { http } ct state established,new drop
        tcp dport http drop
    }

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

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

이제 삽입하세요:

sudo nft insert rule inet  filter input tcp dport 80 drop
sudo nmap  -p 80   127.0.0.1
Starting Nmap 7.70 ( https://nmap.org ) at 2021-05-02 08:29 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up.

PORT   STATE    SERVICE
80/tcp filtered http

Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds

답변1

규칙의 순서가 중요합니다. 이전 규칙이 패킷과 일치하고 패킷을 수락해야 함을 나타내는 경우 이후 규칙이 해당 결정을 재정의할 수 없습니다. 트래픽을 차단하는 규칙을 삽입할 때는 주의해야 합니다.앞으로이를 허용하는 모든 규칙 또는삭제현재 트래픽을 허용하는 이전 규칙입니다(해당하는 경우).

기본적으로 nft add새 규칙이 추가됩니다.꼬리특정 기존 규칙 뒤에 규칙이 삽입되도록 명시적으로 지정하지 않는 한 규칙 체인의 일부를 지정합니다. 규칙 추가시작기존 규칙보다 먼저 체인을 사용해야 합니다 nft insert.

관련 정보