Operating System/Linux2007/06/22 02:35

Rusty Russell, mailing list netfilter@lists.samba.org
v1.0 Tue Mar 21 23:29:42 EST 2000

-----------------------------------------------------------------------------------
이 문서는 2.4 Linux Kernel 에서 잘못된 Packet을 Filtering하기 위하여 어떻게 iptables 을 이용하는가를 기술한다.
-----------------------------------------------------------------------------------

6. Packet이 Filter를 어떻게 지나는가?

Kernel은 'Filter' Table에 세 개의 규칙을 가지고 시작한다. 이것을 Firewall Chain 또는 그냥 Chain이라고 한다. 그 세 개의 Chain은 INPUT, OUTPUT, FORWARD 이다.

이것은 2.0 이나 2.2 Kernel과는 아주 다르게 움직인다.

이 Chain은 아래 그림처럼 생겼다.

 

위 그림에서 세 개의 원은 위에서 언급한 세 개의 Chain을 나타낸다. Packet이 그림에서 동그라미로 나타낸 곳에 이르면 그 Chain은 그 Packet의 운명을 결정하기 위하여 시험한다. Chain이 그 Packet을 DROP 하라고 하면 Packet은 그곳에서 삭제된다. 그러나 그 Chain이 ACCEPT 하고 하면 이 그림의 다음 부분으로 계속 전달된다.

Chain은 규칙의 점검표이다. 각 규칙은 'Packet의 Header가 이렇게 되어있으면 이 곳에서 무엇을 하라'는 형태로 되어 있다. 규칙이 그 Packet에 맞지 않으면 다음 규칙을 참고한다. 마지막으로 더 이상 고려할 규칙이 없으면 Kernel은 무엇을 할 것인가를 결정하기 위하여 그 Chain의 정책을 확인한다. 보안을 생각하는 System에서 이러한 정책은 보통 Kernel에게 그 Packet을 DROP 하도록 한다.

Packet이 Kernel에 도착하면 그 Packet의 목적지를 확인한다. 이것은 'Routing' 이라고 한다.

이것의 목적지가 이곳이면, Packet은 위 그림에서 아래쪽 방향으로 전달 되어 입력 Chain에 도달한다. 이것이 이 Chain을 통과하면 Packet을 기다리고 있던 어떤 Processor도 그것을 받게 된다.

그렇지 않으면, Kernel이 Forwarding 불능으로 되어있던가, Packet을 어떻게 Forwarding해야 하는가를 알지 못하면, 그 Packet은 DROP 된다. Forwarding이 가능하게 되어있고 다른 곳이 목적지이면 Packet은 그림의 오른쪽 방향으로 전달 되어 Forwarding Chain으로 간다. 이 Chain이 ACCEPT 하게 되면 이것은 Forwarding 할 Network로 보내진다.

마지막으로, 이곳에서 돌아가던 Program은 Network Packet을 전송할 수 있게 된다. 이 Packet은 즉시 출력 Chain에 보내진다. 이 Chain이 ACCEPT 하게 되면 이 Packet은 그 목적지가 어디든지 보내진다.

Creative Commons License
Posted by BLUEDAY™