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 을 이용하는가를 기술한다.
-----------------------------------------------------------------------------------
3. 그렇다면, Packet Filter란 무엇일까?
Packet Filter는 지나가는 Packet의 Header를 살펴보고 그 전체 Packet의 운명을 결정하는 Software의 일부이다. 이것은 Packet을 'DROP'(즉, 마치 전혀 전달되지도 못 했던 것처럼 Packet을 거부) 하던가, 'ACCEPT'(즉, Packet이 지나가도록 내버려 둠) 하던가 또는 다른 더욱 복잡한 무엇을 할 것인가를 결정할 것이다.
Linux에서 Packet Filtering은 Kernel 내부에 구성되고(Kernel의 Module로서 또는 그 내부에 포함 되는 형태이다), 우리가 Packet으로 해야 할 몇몇 복잡한 것이 있다. 그러나, 그 Packet의 Header를 관찰하고 그 Packet의 운명을 결정하는 기본 원칙은 여전히 적용 된다.
3.1 왜 우리는 Packet을 Filter 하려고 하나?
제어, 보안, 관찰가능성
제어:
여러분이 내부 Network에서 다른 Network로 Linux Box를 이용하여 접속을 하고자 할 때(소위, Internet) 여러분은 어떤 형태의 전송은 가능하게 하고 다른 것은 불가능하게 할 기회를 가진다. 예를 들어, Packet Header에는 목적지의 주소를 포함하고 있고 이것으로 Packet이 바깥 Network의 다른 곳으로 가지 않도록 한다. 다른 예로, 나는 Dilbert archives를 호출하기 위하여 Netscape을 이용한다. 그곳의 Web Page에는 doubleclick.net으로 부터의 광고가 있고 Netscape은 그 광고를 받기 위하여 나의 시간을 소비한 다. doubleclick.net의 주소로 가거나 또는 그곳에서 오는 어떠한 Packet도 허락하지 않도록 Packet Filter에게 이야기 해 놓음으로 이 문제를 해결할 수 있다. (이렇게 하는 더 좋은 방법도 있다: Junkbuster를 보세요)
보안:
여러분의 멋지고, 잘 정돈된 Network와 Internet의 혼돈 사이에 Linux Box 만이 있다면, 여러분의 Network로 들어오려는 것을 억제할 수 있다는 것은 근사한 일이다. 예를 들어, 여러분은 여러분의 Network로부터 나가는 모든 것을 허용하고 싶지만, 반면에 밖으로부터 들어오는, "죽음의 핑"같은, 악의 있는 것에 대하여는 걱정이 될 것이다. 다른 예로, 아무리 여러분 Linux Box의 모든 계정사용자가 암호를 가지고 있다고 하더라도 바깥으로부터의 텔넷시도는 바라지 않을 것이다. 대부분의 사람들처럼 Internet에서 구경꾼 이 되고 싶고 제공자는 되고 싶지 않을 것이다. 간단히 말해서, 접속 중에 모든 들어오려는 Packet을 Packet Filter를 이용하고 거부하려고 할 것이다.
관찰가능성:
가끔 잘못 설정된 지역Network는 Packet을 바깥세상으로 토해놓는다. Packet Filter에게 어떠한 이상한 일이라도 일어나면 여러분에게 알려 주도록 말해 두는 것은 근사한 일이다. 여러분은 이런 일에 대하여 무엇인가를 할 수도 있고 그냥 '이상한 일이네'하고 넘길 수도 있다.
3.2 Linux에서 Packet Filter는 어떻게 하나?
1.1 Series부터 Linux Kernel은 Packet Filtering을 포함하기 시작했다. 제 1세대는 BSD의 ipfw를 기본으로 하였고 1994년 후반기에 Alan Cox에 의해서 Port 되었다. 이것은 Linux 2.0에서 Jos Vos와 다른 이들에 의해서 개선되었고 Kernel의 Filtering 규칙을 제어하는 사용자 Tool로는 'ipfwadm'이 사용되었다. 1998년 중반에 Linux 2.2를 위하여 나는 Michael Neuling의 도움으로 Kernel에 대하여 열심히 일하였고 사용자 Tool로 'ipchains'를 내놓았다. 마지막으로, 제 4세대 Tool이 'iptables'이고 Linux 2.4를 위하여 1999년 중반에 Kernel을 제 작성 하였다. 이 How-To 문서가 초점을 맞추고 있는 것이 이 iptables 에 대한 내용이다.
netfilter를 가지고 있는 Kernel이 필요하다. netfilter는 다른 것들(iptables Module 같은)이 붙을 수 있는 Linux Kernel의 일반적인 기본 구조이다. 이것은 2.3.15 이상 의 Linux Kernel에 들어있고 Kernel 설정에서 CONFIG_NETFILTER 에 'Y'로 대답하고 Compile한 것이어야 한다.
iptables라는 Tool은 Kernel에게 어떤 Packet을 Filter할 것인지를 알려준다. 여러분이 Programmer나 변태가 아니라면, 이것이 Packet Filtering을 제어하는 수단이다.
iptables
iptables 는 Kernel의 Packet Filtering Table에 Filtering 규칙을 삽입하거나 삭제하는 도구이다. 이것은 여러분이 무엇을 설정했든지, 재부팅시에는 소실된다는 것을 의미한다. 다음에 Linux가 다시 부팅되었을 때 설정 내용들이 재설치 되기를 바란다면 규칙들을 영속시키기를 보아라
iptables는 ipfwadm과 ipchains를 대치한다. 손실 없이 iptables 의 사용을 피하고 싶다면 ipchains와 ipfwadm 사용하기를 보아라.
규칙들을 영속시키기
여러분의 Firewall 설정은 Kernel에 저장되므로 재부팅시에 손실된다. iptables-save 와 iptables-restore을 구현하는 것은 나의 TODO List에 있다. 이것들이 나오게 되면 정말 좋을 것이다. 약속한다.
그 동안은 여러분의 규칙을 설정하는 명령들을 초기화 Script에 기록해야 한다. 명령들 중 하나가 실패하였을 때를 대비하여 뭔가 이성적인 것을 해두어야 한다. (보통 'exec /sbin/sulogin'을 사용한다.)
'Operating System > Linux' 카테고리의 다른 글
| Linux 2.4 Packet Filtering How-To (iptables와 ipchains의 차이점) (0) | 2007/06/22 |
|---|---|
| Linux 2.4 Packet Filtering How-To (iptables 사용하기) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (Packet이 Filter 지나는 경로) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (Packet Filtering Guide) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (Kernel 보안) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (Packet Filter란 무엇인가?) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (Web Site와 List가 어디에 있나?) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (소개) (0) | 2007/06/22 |
| Linux 2.4 Packet Filtering How-To (목차) (0) | 2007/06/22 |
| 표준 Permission 설정 (0) | 2007/06/20 |
| 기본 Daemon 설명 (0) | 2007/06/20 |