2011. 8. 20. 08:19

♧ 컴퓨터의 네트워크 인터페이스의 모든 데이터 패킷을 검사하여 컴퓨터를 보호하고,

그때 설정한 파라미터를 기반으로 패킷을 함께 해야 할지에 대해 결정한다. 현재 리눅스

커널에 내장된 방화벽은 iptables라고 한다(커널2.2의 iptables의 전신은 ipchains)

우분투는 완벽하게 iptables를 시작하고 리눅스를 설치할 때 구성한다.

 

iptables(www.netfilter.org)는 예외적으로 강력하지만 아직 커맨드라인에서의 사용은 복잡.

그래픽 인터페이스를 사용하여 방화벽 규칙을 설정 : firestarter 패키지 설치.

firestarter는 방화벽 구성 마법사 및 설정을 제공한다. 또한 그래픽 방화벽 구성을 위해서

FWBuilder(fwbuilder 패키지), Shorewall(shorewall 패키지) 같은 패키지를 추가할 수 있다.

 

 

▶ 리눅스 시스템의 방화벽이 현재 규칙을 어떻게 설정하는지 표시

☞ 우분투를 처음 설치할 때, 앞의 명령어 출력은 정의에 대한 어떠한 규칙도 없다.

iptables을 방화벽 테이블 기본 필터를 보여준다.

☞ udp 상에서 인터넷 프린팅 프로토콜(ipp)을 위한 패킷이 컴퓨터의 네트워크 인터페이스가 들어오는 것을

보여주고 tcp 프로토콜을 허용.

☞ 마찬가지로 FTP(ftp)와 매치되는 tcp 패킷, 시큐얼 쉘(ssh), 웹(http) 목적지 포트를 수용한다.

패킷이 활성화된 패킷과 연관이 있다면 또한 수용.

 

▶ 현재 iptables nat 테이블을 표시.

☞ nat 테이블은 단지 네트워크 주소 변환 기능이 적용되는 것을 보여줌.

☞ NAT 방화벽 뒤에 개인 어드레스 같은 것들을 허용한다.

☞ 내부 LAN 머신에서 패킷은 방화벽을 종료한다.

비공개 소스 어드레스는 방화벽의 외부 인터페이스의 IP 어드레스를 재작성한다.

방화벽은 LAN 머신을 통하여 트래픽 반환을 허용하기 위하여 세션 추적을 유지한다.

이 모든 것은 POSTROUTING체인에 있는 MASQUERADE 라인으로 구성된다.

 

PREROUTING 체인에 DNAT 라인은 내부 LAN IP 어드레스 10.0.0.155:22번 포트에서 포워드하여

IP 어드레스 11.22.33.44에 8785번 포트에 어떤 요청을 발생한다

(비표준 포트를 통해 방화벽 뒤에 컴퓨터에서 ssh로 누군가 트릭)

 

▶ 방화벽에 대한 정보를 나열( ipstate 명령어는 iptstate 패키지의 일부)

 

다음은 우분투 시스템에서 모든 iptables 규칙을 멈출 수 있는지 혹은 플러시할 수 있는 방법이다.

이 명령어는 모든 규칙을 제거한다. 그래서 실행할 때 주의하여야 한다.

바로 새로운 규칙의 추가를 원할지 모르기 때문이다.

 

▶ iptables 명령어로 활성화 방화벽 규칙을 어떻게 변경하여 사용하는지 몇 가지 예를 들어보자.

☞ 첫 번째 예 : 시스템의 25번 포트에 새로운 응답을 허용하는 규칙을 생성한다.

메일서버(센드메일, postfix, 혹은 SMTP 서비스)가 컴퓨터에 구성되어 있기 때문이다.

☞ 두 번째 예 : 소스 네트워크 어드레스 변환(SNAT)을 방화벽에 허용하여 nat 테이블에 규칙을 생성한다.

SNAT 기능을 사용하면 공용 인터넷 방화벽의 외부 IP 어드레스를 사용하여 통신할 수 있도록 방화벽 뒤에

있는 사설 IP 어드레스를 가지고 있다.

 

SNAT 혹은 다른 폼의 NAT를 사용하려면, 머신에서 IP 포워딩을 활성화해야만 한다.

/etc/sysctl.conf 파일을 편집하여 수행할 수 있고 다음 변수에 uncommenting 할 수 있다.

net.ipv4.conf.default.forwarding=1

 

방화벽 뒤에 머신에서 인터넷 서비스를 제공하는 경우,

머신이 서비스에 대한 요청을 포워드하도록 방화벽에 지시할 수 있다.

 

다음 예는 방화벽 뒤에 있는 머신에 방화벽을 통해 서비스에 대한 요청을 전달하도록 port forwarding 기능을 사용.

방화벽 동작의 변경을 만들 수 있는 많은 유형의 규칙이 있다.

iptables 사용의 더 많은 정보를 보려면 iptables 맨 페이지 혹은 Netfilter 웹사이트(www.netfilter.org)를 참조.

 

위와 같이 변경 후, 정의된 다음 규칙을 볼 수 있다.

 

모든 iptables 규칙 변경은 이 세션에서만 적용이 된다. 우분투를 재부팅하는 경우,

일반적으로 원하지 않은 기본 설정 규칙을 얻어 온다. iptables 규칙을 보존하려면, iptables-save 실행하라.

2단계 프로세스는 /etc/ 디렉토리에 대한 제한 때문에 필요하다.

( 제한을 변경할 수 있지만, 좋은 생각은 아니다) 여태까지 규칙은 나중에 사용을 위해 저장한다.

 

다음은 이더넷 인터페이스(시스템상에서 특정 각각의 네트워크 카드 혹은 인터페이스)가 가능하게

매시간 저장된 규칙을 로드할 수 있게 구성할 수 있다. /etc/network/interfaces 파일을 편집하라.

eth0 같은 이더넷 인터페이스를 위해 iface 구성후, 미리보기 표시된 iptables-restore를 호출.

인터페이스 파일에 추가로 /etc/iptables.rules 파일 이전에 규칙을 복원하기 위해 iptables-restore를 호출

 

 

 

ipTables HowTo 문서 : https://help.ubuntu.com/community/IptablesHowTo

Posted by devanix