규칙을 추가할 때 방화벽은 내부적으로 패킷 상태를 어떻게 처리합니까?

규칙을 추가할 때 방화벽은 내부적으로 패킷 상태를 어떻게 처리합니까?

상황에 따라 새 방화벽 규칙을 정의할 때 iptables패킷 연결 상태(일반적으로 NEW및/또는)를 지정할 수 있습니다. 예를 들어, 다음 규칙 쌍은 내 호스트에 의해 시작될 때만 연결이 허용되고 원격 호스트에 의해 시작되면 연결이 끊어지도록 ESTABLISHED보장합니다 .http

iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

그러나 대안을 모색하기 시작했을 때 firewalld방화벽이 상태 저장 방화벽 관리 서비스이고 어떤 방식으로든 내부적으로 패킷 상태를 처리하는 것 같다는 것 외에는 상태에 대한 문서를 많이 찾을 수 없었습니다. iptables위의 예와 같이 방화벽 규칙 생성을 사용할 때 패킷 상태를 정의할 수 있는지 설명하는 데 도움을 줄 수 있는 사람이 있습니까 firewalld? 그렇지 않으면 어떻게 사용할 때 동일한 효과를 얻을 수 있습니까 firewalld?

답변1

--direct명령을 통해 규칙을 사용할 수 있습니다 firewall-cmd. 귀하의 경우 실행할 명령은 다음과 같습니다.

# Check for existing firewalld direct rules
$ sudo firewall-cmd --direct --get-all-rules
# Now add your direct rule
$ sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport=80 -j ACCEPT -m state --state NEW
# Return traffic (ESTABLISHED for example) is automatically allowed due to firewalld's stateful nature
# Reload firewalld
$ sudo firewall-cmd --reload
# Check if your direct rule was successfully added
$ sudo firewall-cmd --direct --get-all-rules
# From server side create a listening port (if there is no service listening on TCP 80)
$ nc -vlt 80
# From client side, initiate a connection to server on port 80
# Where X.X.X.X is server IP or hostname (with a 3 seconds timeout)
$ nc -v -w 3 X.X.X.X 80

인용하다:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/using_the_direct_interface

답변2

물론아니요ESTABLISHEDRELATED대부분의 매뉴얼, 튜토리얼 및 방화벽에서는 이 세 가지 규칙을 생성하고 해당 INPUT/OUTPUT/FORWARD 체인의 맨 위에 배치하므로 각 특정 규칙에 대해 개별적으로 상태를 지정하는 것이 합리적입니다 .

iptables -A INPUT   -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT  -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

nft의 경우 다음과 같습니다. ct state { established, related } accept

이러한 전역 규칙을 사용하지 않는 상황은 거의 상상할 수 없습니다. TCP/IP 스택을 테스트할 수도 있지만 이 경우 미리 정의된 규칙을 사용하지 않는 것이 더 좋습니다.

관련 정보