달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

1.    ‘Packet Filtering’?

 

Packet filter는 지나가는 packet header를 살펴보고 그 전체 packet의 운명을 결정하는 소프트웨어의 일부이다. 이것은 packet'DROP'(, 마치 전혀 전달되지도 못 했던 것처럼 packet을 거부) 하던가, 'ACCEPT'(, packet이 지나가도록 내버려 둠) 하던가 또는 다른 더욱 복잡한 무엇을 할 것인가를 결정할 것이다.

 

2.    ‘Packet Filtering’은 왜 필요한 것인가?

 

1)      제어

내부 네트워크에서 다른 네트워크로 인터넷을 이용하여 접속을 하고자 할 때 어떤 형태의 전송은 가능하게 하고 다른 것은 불가능하게 할 수 있다. 예를 들어, packet header에는 목적지의 주소를 포함하고 있고 이것으로 packet이 바깥 네트워크의 다른 곳으로 가지 않도록 한다. 다른 예로, 나는 인터넷으로 스포츠 신문을 보기 위해 Explorer를 이용하는 상황을 생각해 보자. 그곳의 웹 페이지에는 NATE의 광고가 있고 Explorer는 그 광고를 받기 위하여 나의 시간을 소비한 다. Nate.com의 주소로 가거나 또는 그곳에서 오는 어떠한 packet도 허락하지 않도록 packet filter에게 이야기 해 놓음으로 이 문제를 해결할 수 있다.

 

2)      보안:

컴퓨터 network는 누구나 사용할 수 있는 것이기 때문에 외부로부터 자신의 컴퓨터 시스템을 보호해야 한다. 그러기 위해서는 건물에 경비 아저씨가 있는 것처럼 나쁜 정보나 불확실한 의도를 가진 것들을 내 컴퓨터에 들어오기 전에 미리 차단하는 것이 필요하다. 따라서 어떠한 정보는 허용하고 어떠한 것은 차단하는 방법이 요구된다. 예를 들어, 여러분은 여러분의 네트워크로부터 나가는 모든 것을 허용하고 싶지만, 반면에 밖으로부터 들어오는, "죽음의 핑" 같은, 악의 있는 것에 대하여는 차단해야 한다. 다른 예로, 아무리 여러분 리눅스 박스의 모든 계정사용자가 암호를 가지고 있다고 하더라도 바깥으로부터의 telnet 시도는 바라지 않을 것이다. 대부분의 사람들처럼 인터넷에서 구경꾼 이 되고 싶고 제공자는 되고 싶지 않을 것이다. 간단히 말해서, 접속 중에 모든 들어오려는 packetpacket filter를 이용하여 거부하려고 할 것이다.

 

3)      관찰가능성

가끔 잘못 설정된 지역네트워크는 packet을 바깥세상으로 토해놓는다. Packet filter에게 어떠한 이상한 일이라도 일어나면 시스템 혹은 사용자에게 알려 주도록 말해 두는 것은 근사한 일이다. 이런 일에 대하여 무엇인가를 할 수도 있고 그냥 '이상한 일이네' 하고 넘길 수도 있다. 내 컴퓨터에서 유입 혹은 유출되고 있는 정보에 대한 monitoring을 할 수 있다는 점에서 유용하다.

 

3.    Filtering Factors

 

1)    Protocol

 

프로토콜은 '-p' 지시자로 지정할 수 있다. 프로토콜을 숫자가 될 수 있고 (IP의 프로토콜 번호를 알고 있다면) 'TCP', 'UDP', 'ICMP' 같은 이름이 될 수도 있다. 그리고 'tcp' 'TCP'와 같은 역할을 한다.

프로토콜 이름 지정에 '!'을 이용할 수 있다. '-p ! TCP'

 

Ex) ./iptables –A INPUT –p TCP –j DROP

  è 들어오는 모든 TCP packet을 차단

 

-        extension option  

 

      TCP Extension

--tcp-flags  : '!' 옵션을 사용한다면 이것 뒤에 두 개의 단어를 사용한다. 첫 번째 것은 검사하고자 하는 지시자 리스트의 마스크이다. 두 번째 단어는 지시자에게 어떤 것이 설정 될 것인지를 말해준다. 예를 들어,

# iptables -A INPUT –p tcp --tcp-flags ALL SYN,ACK -j DENY

이것은 모든 것이 검사되어야 함을 말한다.('ALL' `SYN,ACK,FIN,RST,URG,PSH' 와 같다.) 그러나 SYN ACK 만 설정된다. 'NONE'는 지시자가 없음을 말한다.

 

--syn :  '!' 옵션이 선행될 수 있다. 이것은 '--tcp-flags SYN,RST,ACK,SYN'의 약어이다. SYN flag가 붙어있는 packet Connection 초기화 packet으로서 처음 서비스를 요청할 때 SYN packet이 오게 된다. SYN packet만 막으면 자신은 다른 곳으로부터 서비스 되는 packet을 받을 수 있으면서, 자기 컴퓨터로 들어오는 서비스 요청은 차단할 수 있다.

 

ICMP Extension

--icmp-type : '!' 옵션이 선행될 수 있다. 이후에 ICMP 타입의 이름('host-unreachable') 이나 숫자형태 ('3'), 또는 숫자형태와 코드('/'로 분리 예. '3/3') 의 형 태가 사용된다. 사용할 수 있는 ICMP 형태의 이름의 리스트는 '-p icmp --help' 하면 나타난다.

 

2)     Port

 

 기본적으로 하나의 source-port 혹은 하나의 destination-port에 대해 filtering 할 수 있고, 추가적인 module을 사용하면 한 번에 여러 개의 port를 동시에 지정할 수 있고, source & destination port를 모두 차단할 수 있다.

 

--source-port : '!' 옵션이 선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를 지정한다. /etc/services 에 기록된 것과 같은 포트 이름이 사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는 두개의 포트 이름을 '-' 으 로 연결해서 사용하거나 (크거나 같은 경우를 위해서) 하나의 포트 뒤에 '-'를 사용하거나 (작거나 같은 경우를 위해서) 하나의 포트 앞에 '-' 를 덧붙일 수 있다.

--sport : 이것은 '--source-port'와 동의어이다.

--destination-port --dport 는 위의 내용과 같으나 목적지를 지정한다.

 

Port 지정에는 port 번호를 직접 써도 되고 service의 이름을 사용할 수도 있다.

Ex) http, telnet, ftp, smtp, rlogin, rsh 등등

 

l      mport patch

 

포트를 여러 개를 동시에 지정해서 명시한다.

 

Ex) –m mport –ports 20:23, 80...  è 20-23, 80 port를 차단 (source, destination 동시)

 

♦ 사용법

-m mport     +      --source-ports  xxxx   (source port filtering)

                     --destination-ports xxxx (destination port filtering)

                     --ports xxxx            (source destination 둘 다)

 

 

3) IP

 

packet source IP 혹은 destination IP로부터 filtering이 가능하다.

 

      source IP : xxx IP로부터 오는 모든 packet filtering한다.

Ex) ./iptables –A INPUT –s 141.223.201.119 –j DROP

è 141.223.201.119에서 오는 모든 packet을 차단한다.

 

      Destination IP : 목적지가 xxx IP인 모든 packet filtering한다.

Ex) ./iptables –A INPUT –d 141.223.201.119 –j DROP

è 141.223.201.119로 가는 모든 packet을 차단한다.

 

      여러 개의 IP 동시 지정하기

: 한 개의 IP일 경우 그냥 써준다.

: 여러 개의 IP 동시 지정.

200.200.200.0/24 와 같이 설정한다면 200.200.200.* 에 해당하는 모든 IP.

4부분을 8 비트로 보고, 24는 앞의 3부분의 IP가 같은 모든 IP를 뜻한다.

 

4)    INTERFACE

 

 컴퓨터가 Local Area Network (LAN)에 있고 인터넷 접속이 가능하다고 가정하면 LAN eth0 Internet 연결은 ppp0로 구분할 수 있다.

 

¨       사용법

 

i)                    input interface : -i option        +     eth0, ppp0, lo (localhost)

ii)                   output interface : -o option

 

ex) telnet service LAN 상의 컴퓨터에게는 허락하고, Internet 상에서는 연결할 수 없도록 하고 싶다면,

 

  ./iptables –A INPUT –p tcp –destination-port telnet –I ppp0 –j DROP

 

5)    SPI (security parameter index)

 

``ah'' : Security Parameter Index (SPI)에 기초한 AH 패킷을 match할 수 있도록 한다.

``esp'' : SPI에 기초한 ESP 패킷을 match할 수 있도록 한다.

 

# iptables -A INPUT -p 51 -m ah --ahspi 500 -j DROP

è 500과 일치하는 SPI를 가지는 모든 AH 패킷을 DROP 시킨다.

 

ah match가 지원하는 옵션 : --ahspi [!] spi[:spi] -> match spi (range)

esp match가 지원하는 옵션 : --espspi [!] spi[:spi] -> match spi (range)

6)    The Number Of Connection

 

Iplimit module을 사용해서 특정 host network로부터의 TCP 연결 개수를 제한할 수 있 다. 

 

¨       사용법

 -m iplimit      +       --iplimit-above N (숫자)

                        --iplimit-mask N ( ex. 8 : Class A에 대한)  –iplimit-above N

 

 ex) ./iptables –A INPUT –p tcp –-syn –-dport http –m iplimit –-iplimit-above 4 –j REJECT

 è 자신의 컴퓨터로 들어오는 http 연결을 4개로 제한한다.

 

 

7)    IP option

 

Ipv4options module을 사용하면 설정된 ip option에 의해 패킷을 filtering 할 수 있다.

 

¨       사용법

 

-m ipv4options    +    --ssrr   à  strict source routing flag match되는 것 filtering

                        --lsrr   à  loose source routing flag             

                        --no-srr  à source routing을 가지지 않는 packet match

                                                         되는 것을 filtering

                        --rr     à  record route flagmatch 되는 것을 filtering

                        [!] –-ts   à  time stamp flag option을 가지는 것

                        [!] –-ra    à  router-alert option

                        [!] –-any-opt   à 적어도 하나의 ip option을 가진 packet...

 

ex)   ./iptables -A INPUT -m ipv4options --rr -j DROP

./iptables -A INPUT -m ipv4options --ts -j DROP

è IP 옵션에 설정된 record-route 또는 timestamp를 가진 모든 packet DROP

 

8)    Packet Length

 

Length module을 사용하면 길이에 의한 filtering이 가능하다. 길이는 0x0000(0)부터 0xFFFF(65535)까지 지정할 수 있다.

¨       사용법

 

[!] --length L(L packet length)   :  length L packet을 막는다 (or length L인 것          허용한다 (! 사용할 때))

[!] --length L1 : L2   :  L1에서 L2 범위의 length를 막는다 (or 범위의 것만 허용한다)

 

ex)   ./iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 85:0xffff -j DROP

è 85 바이트보다 큰 패킷 크기를 가진 모든 ping packetDROP한다.

 

9)    Host / Broadcast / Multicast : type-base packet matching

 

 pkttype module

'OS > LINUX' 카테고리의 다른 글

[펌] RedHat 9.0 설치후 기본셋  (0) 2004.06.14
[펌] ftp 이용한 Hacking  (0) 2004.06.10
[펌] rm으로 지운파일 복구하기  (0) 2004.06.10
[펌] Dos 공격막기  (0) 2004.06.10
[펌] ☞ 센드메일 설정하기  (0) 2004.06.10
Posted by tornado
|