다음 이전 차례

4. 다른 IP Masquerade 문제와 무른모 지원

4.1 IP Masquerade가 가진 문제점들

몇몇 프로토콜은 폴트 번호에 관한 것들을 가정하거나 주소와 폴트에관한 데이터 흐름을 암호화하기 때문에 마스큐레이딩이 현재 작동하지 않는다. 이들 요즘의 프로토콜은 그들이 작동하도록 만드는 마스큐레이딩 코드로 지어진 특별한 프록시를 필요로 한다.

4.2 들어오는 서비스

마스큐레이딩은 들어오는 서비스를 전혀 다루지 못한다. 그들을 가능하게 하는 몇가지 방법이 있으나 그들은 마스큐레이딩과는 완벽하게 분리되어 있고 정발로 표준 방화벽 실습의 부분이다.

만일 당신이 고수준의 보안이 필요하지 않으면 단순히 폴트를 새방향으로 돌릴수 있다. 이것을 하는 여러 가지 방법이 있다. 나는 수정된 redir 프로그램(선사잇이나 그 미러에 곧 가능하게 되기를 바란다)을 사용한다. 만일 당신이 들어오는 연결상에서 몇가지 수준의 위임을 가지 기를 원한다면 단지 지정된 IP 주소를 통하는 것만을 허락하는 redir(0.7 혹은 그이상)의 꼭대기에서 TCP wrappers, Xinetd 혹은 다른 도구를 사용한다. TIS 방화벽 툴킷은 도구와 정보를 찾기 위해서 좋은 장소이다.

보다 자세한 내용은 IP Masquerade Resource에서 찾을수 있다.

4.3 지원되는 클라이언트 소프트웨어와 다른 설치 노트

** 아래 목록은 도이상 유지되지 않는다. 리눅스 IP 마스큐레이딩이 작동하는 프로그램상의 this page와 보다 자세한 내용을 위해 IP Masquerade Resource을 참조하기 바란다. **

일반적으로 TCP와 UDP를 사용하는 프로그램은 작동해야 한다. 만일 IP 마스큐레이드를 하는 프로그램에 관한 어떤 제안이나 힌트 혹은 질문이 있으면 Lee Nevo의 applications that work thru Linux IP masquerading를 방문하기 바란다.

작동하는 클라이언트들

일반 클라이언트

HTTP

모든 지원되는 플랫폼, 웹 파도타기

POP & SMTP

모든 지원되는 플랫폼, 전자우편 클라이언크

Telnet

모든 지원되는 플랫폼, 원격 컴퓨터사용

FTP

모든 지원되는 플랫폼, ip_masq_ftp.o 모듈 필요 (특정한 클라이언트로 모든 사이트가 가능하지 않다; 몇몇 사이트는 ws_ftp32로 갈 수 없지만 netscape는 갈 수 있다)

Archie

모든 지원되는 플랫폼, 파일 찾기 클라이언트(모든 알치 클라이언트는 지원되지 않는다)

NNTP (USENET)

모든 지원되는 플랫폼, 유즈넷 뉴스 클라이언트

VRML

윈도우즈(아마도 모든 지원되는 플랫폼), 가상현실 파도타기

traceroute

대부분이 유닉스 기반의 플랫폼, 몇몇 변형된 것들은 작동하지 않는다.

ping

모든 플랫폼, ICMP 패치가 필요

IRC를 기반으로 하는 모든 것

모든 지원되는 플랫폼, ip_masq_irc.o 모듈 필요

Gopher client

모든 지원되는 플랫폼

WAIS client

모든 지원되는 플랫폼

멀티미디아 클라이언츠

리얼오디어 재생기

윈도우즈, 네트웍 흐름 오디오, ip_masq_raudio 모듈의 적재 필요

트루 스피치 재생기 1.1b

윈도우즈, 네트웍 흐름 오디오

엔터넷 웨이브 재생기

윈도우즈, 네트웍 흐름 오디오

월드 챗 0.9a

윈도우즈, 클라이언트-서버 3D 대화 프로그램

알파 월드

윈도우즈, 클라이언트-서버 3D 대화 프로그램

인터넷 폰 3.2

윈도우즈, 피어-투-피어 오디오 통신, 당신이 전화를 걸면 사람들과 연결 될 수 있으나 다른 사람들은 당신에게 전화할수 없다.

Powwow

윈도우즈, 피어-투-피어 문자/오디오 칠판 통신, 당신이 연결할 때만 다른 사람들과 연결할 수 있으나 다른 사람들은 당신에게 연결할수 없다.

CU-SeeMe

모든 지원되는 플랫폼, cuseeme 모듈 필요, 자세한 것은 IP Masquerade Resource을 보기 바람

VDOLive

윈도우즈, vdolive 패치가 필요

노트: 인터넷 폰이나 파우와우 같은 몇몇 클라이언트들은 ipautofw 꾸러미(섹션 4.6 참조)를 사용하여 연결을 시작하지 하지 않아도 작동할 수도 있다.

다른 클라이언츠

NCSA Telnet 2.3.08

도스, telnet, ftp, ping등을 담고있는 꾸러미

PC-anywhere for windows 2.0

윈도우즈, TCP/IP상에서 컴퓨터를 원격조종, 단지 클라이언트일때만 작동하고 호스트 일때는 작동하지 않는다.

Socket Watch

ntp를 사용 - 네트웍 시간 프로토콜

리눅스 net-acct 꾸러미

리눅스, 네트웍 관리계정 꾸러미

작동하지 않는 클라이언츠

인텔 인터넷 폰 베타 2

연결되지만 한쪽방향으로만 소리가 전달된다.

인텔 Streaming Media Viewer Beta 1

서버에 연결할수 없다.

Netscape CoolTalk

상대편으로 연결할수 없다.

talk,ntalk

작동하지 않는다. - 쓰여진 커널 프록시가 필요.

WebPhone

현재까지 작동안함 (주소에 대하여 잘못된 가정을 만듬).

X

시험 안됨, 내 생각엔 아마도 마스큐레이딩 코드로의 외부 프로그램인 X 프록시를 만들지 않는한 작동하지 않을 것이다. 이것의 한 방법이 연결로서의 ssh와 성공하게 만드는 그것의 내부 X 프록시를 사용하는 것이다.

다른 머신으로 테스트된 플랫폼/OS

4.4 IP Firewall 관리 (ipfwadm)

이 섹션에서는 ipfwadm을 사용하는 좀더 자세한 내용을 다룬다.

이것은 따르는 정적 PPP 주소를 가지는 PPP 링크 뒤의 방화벽/마스큐레이딩을 위한 설정이다. 믿을만한 인터페이스는 192.168.255.1이고 PPP 인터페이스는 죄의식을 덜기 위해 바꾸었다. :). 나는 채워진 루팅 그리고/혹은 마스큐레이딩과 마찬가지로 개인적으로 IP 속임수를 잡아내는 각각의 들어오고 나가는 인터페이스들의 목록을 작성하였다. 마찬가지로 명백하게 허락되지 않은 어떤 것도 금지된다.

#!/bin/sh
#
# /etc/rc.d/rc.firewall, 방화벽 설정의 정의, rc.local로부터 불려진다.
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 테스팅, 잠시 기다린 후 모든 방화벽 규칙을 제거한다.
# 만일 10분후에 방화벽이 자동적으로 해제 되기를 바란다면 아래 줄들의 주석을 제거하라.
# 
# (sleep 600; \
# ipfwadm -I -f; \
# ipfwadm -I -p accept; \
# ipfwadm -O -f; \
# ipfwadm -O -p accept; \
# ipfwadm -F -f; \
# ipfwadm -F -p accept; \
# ) &
# 들어오기의 모든 방침을 없애고 기본방침을 거부로 정의한다.
# 실제로 기본 방침은 거부와 기록의 모든 규칙을 잡아내기 때문에 부적절하다.
ipfwadm -I -f
ipfwadm -I -p deny
# 지역 인터페이스, 지역 컴퓨터, 어디로 나가던지 유효
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
# 원격 인터페이스, IP 속이기를 몰아내도록 지역 컴퓨터에 요구
ipfwadm -I -a deny -V 당신의.정적.PPP.주소 -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# 원격 인터페이스, 영구 PPP주소로 가는 어떠한 출처도 유효
ipfwadm -I -a accept -V 당신의.정적.PPP.주소 -S 0.0.0.0/0 -D
당신의.정적.PPP.주소/32
# loopback 인터페이스가 유효
ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# 모든 규칙을 잡아내고 모든 다른 들어오는 것들을 거부하고 기록함
# 방침에는 기록하도록 선택하는 것은 없지만 대신에 이것이 그역할을 한다.
ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o
# 나가기의 모든 방침을 없애고 거부의 기본 방침을 정한다.
# 실제로 기본 방침은 거부와 기록의 모든 규칙을 잡아내기 때문에 부적절하다.
ipfwadm -O -f
ipfwadm -O -p deny
# 지역 인터페이스를 거쳐 지역 넽으로 오는 어떠한 출처도 유효
ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16
# 원격 인터페이스를 거쳐 지역 넽으로의 나가기, 채워진 루팅, 거부
ipfwadm -O -a deny -V 당신의.정적.PPP.주소 -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# 원격 인터페이스를 거쳐 지역 넽으로부터 나가기, 내용을 가진 마스큐레이딩, 거부
ipfwadm -O -a deny -V 당신의.정적.PPP.주소 -S 192.168.0.0/16 -D 0.0.0.0/0 -o
# 원격 인터페이스를 거쳐 지역 넽으로부터 나가기, 채워진 마스큐레이딩, 거부
ipfwadm -O -a deny -V 당신의.정적.PPP.주소 -S 0.0.0.0/0 -D 192.168.0.0/16 -o
# 원격 인터페이스를 거쳐 나가는 것은 유효
ipfwadm -O -a accept -V 당신의.정적.PPP.주소 -S 당신의.정적.PPP.주소/32 -D
0.0.0.0/0
# loopback 인터페이스 유효
ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0
# 모든 규칙을 잡아내고 모든 다른 나가는 것들을 거부하고 기록함
# 방침에는 기록하도록 선택하는 것은 없지만 대신에 이것이 그역할을 한다.
ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o
# 되돌리기의 모든 방침을 없애고 거부의 기본 방침을 정한다.
# 실제로 기본 방침은 거부와 기록의 모든 규칙을 잡아내기 때문에 부적절하다.
ipfwadm -F -f
ipfwadm -F -p deny
# 지역 넽으로부터 지역 인터페이스를 거쳐 다른 곳으로 나가는 마스큐레이딩
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
# 모든 규칙을 잡아내고 모든 다른 되돌리기를 거부하고 기록함
# 방침에는 기록하도록 선택하는 것은 없지만 대신에 이것이 그역할을 한다.
ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o
당신은 특정한 사이트로의 트래픽을 -I, -O or -F.를 사용하여 막을수 있다. 규칙의 모임들은 위에서부터 아래로 읽혀지고 -a는 기존의 명령어들에다 추가하는 것을 뜻하므로 어떠한 제약들이 전역적인 규칙앞에 와야만 한다. 예를들면(시험되지 않음) :-

-I 규칙을 사용하기. 가장 빠른 것이지만 단지 지역 컴퓨터들만을 막을 뿐이고 방화벽 자신은 금지된 사이트로 접근할수 있다. 물론 당신은 이러한 조합들을 허락하기를 원할 것이다.

... -I 규칙의 시작 ...
# 204.50.10.13으로 가는 지역 컴퓨터들을 지역 인터페이스가 거부하고 기록함
reject and log local interface, local machines going to 204.50.10.13
ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# 지역 인터페이스를 거쳐 다른 곳으로가는 지역 컴퓨터가 유효
ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0
... -I 규칙의 끝 ...

-O 규칙 사용하기. 패킷이 마스큐레이등을 먼저 거치기 때문에 가장 느리지만 이 규칙은 금지된 사이트에 방화벽이 접근하는 것도 막는다.

... -O 규칙의 시작 ...
# 204.50.10.13으로가는 것을 거부하고 기록함
ipfwadm -O -a reject -V 당신의.정적.PPP.주소 -S 당신의.정적.PPP.주소/32 -D
204.50.10.13/32 -o
# anything else outgoing on remote interface is valid
ipfwadm -O -a accept -V 당신의.정적.PPP.주소 -S 당신의.정적.PPP.주소/32 -D
0.0.0.0/0
... -O 규칙의 끝 ...
-F 규칙 사용하기. -I 보다는 느릴테지만 아직 마스큐레이드된 내부 컴퓨터들을 막을 수 있지만 방화벽은 아직도 금지된 사이트에 갈수 있다.
... -F 규칙의 시작 ...
# PPP 인터페이스를 거쳐 지역 넽으로부터 204.50.10.13으로가는 것을 거부하고 기록함
ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o
# 지역 인터페이스를 거쳐 지역 넽으로부터 다른 곳으로 가는 것을 마스큐레이드함.
ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0
... -F 규칙의 끝 ...
192.168.0.0/16을 204.50.11.0로 가는 것을 허락하는 특별한 규칙은 필요없다. 그것은 전역 규칙에 의해 커버된다.

위의 규칙들에서 인터페이스를 짜는 여러 가지 방법이 있다. 예를 들면 -V 192.168.255.1대신에 -W eth0로 쓸수 있다. -V 당신의.정적.PPP.주소 대신에 -W ppp0라고 쓸 수 있다. 개인적인 취향과 작성방법일 뿐이다.

4.5 IP Masquerade와 필요시 전화걸기

  1. 당신이 인터넷에 자동적으로 연결되도록 네트웍을 설치하고자 하면 diald 필요시 전화걸기 꾸러미가 가장좋은 도구가 될것이다.
  2. diald를 설치하기 위해서 Setting Up Diald for Linux Page을 확인해 보기 바란다.
  3. 일단 diald와 IP Masquerade가 설치되면 당신은 어떠한 다른 컴퓨터에 가서 웹, 텔넷 혹은 ftp를 시작할수 있다.
  4. Diald는 들어오는 요구신호를 알아채고 당신의 인터넷 제공회사에 전화를 걸어 연결시킬 것이다.
  5. 시간초과가 첫번째 연결 시에 발생할 것이다. 이것은 만일 아날로그 모뎀을 사용한다면 피할 수 없다. 모뎀으로 PPP 연결을 만들기 위해 사용되는 시간이 당신의 클라이언트 프로그램에서 시간초과를 발생시킨다. 만일 ISDN을 사용한다면 이것은 피할 수 있다. 당신이 해야할 것은 지금 사용하는 클라이언트 프로그램을 중지시키고 다시 실행하는 것 밖에는 없다.

4.6 IPautofw 패킷 전송자

IPautofw은 리눅스 마스큐레이딩을 위한 TCP와 UDP의 포괄적인 전달자이다. 일반적으로 UDP를 필요로 하는 꾸러미를 사용 가능하게 하려면 ip_masq_raudio, ip_masq_cuseeme 등과 같은 지정된 ip-masq 모듈이 적재되어야 한다. ipautofw는 보다 포괄적인 방법으로 행동한다. 특정한 그 어플리케이션에 특정한 모듈이 전송하지 않을 것들을 포함하는 어떠한 형태의 트래픽도 전송할 것이다. 이것은 적절하게 관리되지 않으면 보안에 구멍을 만들 수 있다.


다음 이전 차례