iptables, 진정한 개방성은 무엇일까?

iptables, 진정한 개방성은 무엇일까?

RSA 장치가 있고 장치의 방화벽 규칙을 확인하여 어떤 포트가 활성화되어 있는지 확인했습니다. 나에게는 그것이 활짝 열려 있는 것처럼 보였지만 판매인은 내가 그것에 대해 틀렸고 내가 그것을 올바르게 읽지 않았다고 말했습니다. 보안상의 이유로 전체 iptables를 게시할 수는 없지만 공급업체에서는 다음과 같이 말합니다.

날 믿으세요. 잠겨 있어요. iptables에 대해 클라이언트를 교육할 수는 없지만 온라인에서 iptables 설명서를 참조하면 각 규칙이 어떻게 설정되는지 더 잘 이해할 수 있습니다. Linux 방화벽 iptables 초보자 가이드

아래 예는 허용 정책이 아닌 DROP 정책입니다. 모든 곳에서 ACCEPT를 읽고 열려 있다고 생각하는 대신 이 점에 유의하시기 바랍니다.

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

나중에 그들은 말했다

  1. 모든 포트가 열려 있나요?

    아니요. Iptable은 첫 번째 규칙이 프로세스를 충족하는 pam 구성 파일과 다릅니다. iptables에서는 모든 규칙을 충족해야 합니다. 어느 곳에서도 모든 것이 허용되지 않으면 아무것도 방화벽을 통과할 수 없습니다.

나에게 이것은 말이되지 않습니다. 이 예는 accept any any any정책 삭제로 시작됩니다. 온라인에서 본 바에 따르면 정책 제거는 기본 수락 대신 기본 거부로 설정됩니다. 예제를 정책 삭제 또는 수락으로 설정하면 결과가 어떻게 변경되는지 이해가 되지 않습니다.

내가 무엇을 놓치고 있나요?

답변1

Iptables는 첫 번째 규칙이 특정 프로그램을 충족해야 하는 pam 구성 파일과 다릅니다. iptables에서는 모든 규칙을 충족해야 합니다.

이것은 완전히 잘못된 것입니다. 규칙은 순서대로 순회되며, 일치하는 규칙이 기본 제공 대상( ACCEPT, DROP또는 QUEUE) 중 하나로 점프하면 패킷 처리가 종료됩니다. 더 이상 규칙이 순회되지 않습니다. "어디에도 ACCEPT가 없으면 아무것도 방화벽을 통과할 수 없습니다"라는 주장은 참이지만(DROP 정책 사용), 패킷이 참이 되기 위해 모든 ACCEPT 규칙과 일치할 필요는 없으며 하나만 도달하면 됩니다.

사용자 정의 체인으로 점프하거나(이 경우 체인의 규칙이 순서대로 시도됨) 전혀 점프하지 않고 단순히 존재한다는 이유로 차단되는 일부 규칙이 있을 수 있으므로 패킷은 여러 일치 규칙에 의해 처리될 수 있습니다. 다른 이유로(예: 로깅) 그러나 일단 도착하면 ACCEPT패킷 DROP이 전송되거나 삭제됩니다. QUEUE도착하면 패킷은 추가 처리를 위해 사용자 영역으로 전달되며 이 패킷에 대해 더 이상 규칙이 처리되지 않습니다. 마지막으로 처리가 내장 체인의 끝에 도달하는 경우에만 해당 체인의 정책이 적용됩니다.

예를 들어 iptables -L다음과 같이 표시된다고 가정해 보겠습니다.

Chain INPUT (policy DROP) target prot opt source
destination ACCEPT all -- anywhere anywhere

정책은 이므로 DROP특정 규칙에 의해 명시적으로 허용되는 패킷만 통과됩니다. 규칙것 같다모든 것을 허용하는 것과 같지만 반드시 그런 것은 아닙니다. iptables -L생략된 조건이 있을 수 있습니다. Run은 iptables -vL모든 조건을 인쇄합니다. 일반적으로 생략되는 조건은 인터페이스입니다. 모든 루프백 트래픽을 허용하는 규칙을 갖는 것이 일반적입니다. 당신은 다음과 같은 것을 보게 될 것입니다

# iptables -L INPUT 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
# iptables -vL INPUT
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            

규칙이 모든 트래픽을 허용하는 경우 보낸 사람 열에 any표시 됩니다 .iniptables -vL INPUT

관련 정보