Iptables: 두 판 사이의 차이

Ubuntu Korea Community Wiki
둘러보기로 이동 검색으로 이동
imported>Darkcircle
편집 요약 없음
9번째 줄: 9번째 줄:
* 이 문서에는 iptables와 관련한 모든 내용을 하나 빠짐없이 문서화할 필요는 없다. 물론 실무에서 활용할 기술을 넣는 것도 좋겠지만, 전적으로 이 문서는 일반 사용자 측면에서 우선적으로 접근하기 쉬워야한다. 어차피 기본 내용이 들어가도 내용이 쓸데없을 만큼 길 수밖에 없고, 그게 이 문서의 한계이다. 어떤 내용을 넣어야 할지에 대해서는 굳이 상의할 이유가 없으니 문서 작성에 참여하는 스스로가 알아서 판단하고 추가하는 것이 좋겠다.
* 이 문서에는 iptables와 관련한 모든 내용을 하나 빠짐없이 문서화할 필요는 없다. 물론 실무에서 활용할 기술을 넣는 것도 좋겠지만, 전적으로 이 문서는 일반 사용자 측면에서 우선적으로 접근하기 쉬워야한다. 어차피 기본 내용이 들어가도 내용이 쓸데없을 만큼 길 수밖에 없고, 그게 이 문서의 한계이다. 어떤 내용을 넣어야 할지에 대해서는 굳이 상의할 이유가 없으니 문서 작성에 참여하는 스스로가 알아서 판단하고 추가하는 것이 좋겠다.


== netfilter 소개 ==
== netfilter ==
netfilter는 리눅스 커널에서 지원하는 패킷 선별 프레임워크이다. 기본적으로 다음과 같은 기능을 지원한다.<ref>http://netfilter.org/</ref>
netfilter는 리눅스 커널에서 지원하는 패킷 선별 프레임워크이다. 기본적으로 다음과 같은 기능을 지원한다.<ref>http://netfilter.org/</ref>


20번째 줄: 20번째 줄:
netfilter 프레임워크를 사용하는 데이터 흐름 선별 프로그램으로는 iptables, ip6tables, arptables, ebtables가 있으며, 이 중, 이 문서에서 설명할 대상은 iptables이다(추후 ip6tables의 내용을 이곳에 추가할 수 있다). 네트워크 '패킷' 흐름을 관리하기 때문에 통상적으로 OSI Layer 3를 처리하는 것으로 알려져 있으나, 실제로는 iptables에서도 '프레임' 통제가 가능(MAC address 필터링)<ref>[http://www.cyberciti.biz/tips/iptables-mac-address-filtering.html Iptables MAC Address Filterling - nixCraft]</ref>하며, 전송 계층에서의 흐름 통제도 가능하기 때문에 OSI 계층 이론으로는 데이터 단위 선별 처리에 대한 계층이나 기본 데이터 처리 단위 구분이 모호하다. netfilter 프로젝트에서는 데이터 흐름 선별 도구 프로젝트가 문어발식으로 퍼져나가는 문제로 인해, 네트워크 데이터 흐름을 관리할 새로운 도구 nftables<ref>[http://netfilter.org/projects/nftables/index.html The netfilter.org "nftables" project]</ref>를 만들고있다.
netfilter 프레임워크를 사용하는 데이터 흐름 선별 프로그램으로는 iptables, ip6tables, arptables, ebtables가 있으며, 이 중, 이 문서에서 설명할 대상은 iptables이다(추후 ip6tables의 내용을 이곳에 추가할 수 있다). 네트워크 '패킷' 흐름을 관리하기 때문에 통상적으로 OSI Layer 3를 처리하는 것으로 알려져 있으나, 실제로는 iptables에서도 '프레임' 통제가 가능(MAC address 필터링)<ref>[http://www.cyberciti.biz/tips/iptables-mac-address-filtering.html Iptables MAC Address Filterling - nixCraft]</ref>하며, 전송 계층에서의 흐름 통제도 가능하기 때문에 OSI 계층 이론으로는 데이터 단위 선별 처리에 대한 계층이나 기본 데이터 처리 단위 구분이 모호하다. netfilter 프로젝트에서는 데이터 흐름 선별 도구 프로젝트가 문어발식으로 퍼져나가는 문제로 인해, 네트워크 데이터 흐름을 관리할 새로운 도구 nftables<ref>[http://netfilter.org/projects/nftables/index.html The netfilter.org "nftables" project]</ref>를 만들고있다.


== iptables 소개 ==
== iptables ==
=== 소개 ===
흔히들 알고 있는 기본 방화벽의 '''근본''' 도구다. 레드햇 기반의 배포판에서는 방화벽을 활성화 한 상태를 기본으로 설치<ref>[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-Firewalls-Basic_Firewall_Configuration.html Basic Firewall Configuration - RedHat Customer Portal]</ref>하는데, 이 방화벽을 구성하는 부분이 바로 커널에 내장된 netfilter 프레임워크와 iptables다. 일반 초보자라면 iptables 자체가 워낙 무식하게 복잡한 느낌이기 때문에 우분투 배포판 사용자의 경우 배포판에서 제공하는 ufw<ref>[https://wiki.ubuntu.com/UncomplicatedFirewall Uncomplicated Fire Wall - ubuntu wiki, official.]</ref><ref>[https://help.ubuntu.com/community/UFW UFW - ubuntu documentation, official.]</ref><ref>[http://webdir.tistory.com/206 우분투 방화벽(UFW) 설정 - WEBDIR]</ref>를 쓰는데, ufw도 결국 iptables를 쓰게 만들어놓은 프론트엔드일 뿐이다. 만약 iptables의 근본 동작 따위(?)는 이해하고 싶지 않고, 속시원하게 ufw만 신경쓰겠다면 [http://wiki.ubuntu-kr.org/index.php/UFWHowToKo 이 문서]를 참고한다. 어쨌든, 어떤 리눅스 플랫폼에서든 직접적이든 간접적이든 무조건 netfilter+iptables를 쓴다.
흔히들 알고 있는 기본 방화벽의 '''근본''' 도구다. 레드햇 기반의 배포판에서는 방화벽을 활성화 한 상태를 기본으로 설치<ref>[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-Firewalls-Basic_Firewall_Configuration.html Basic Firewall Configuration - RedHat Customer Portal]</ref>하는데, 이 방화벽을 구성하는 부분이 바로 커널에 내장된 netfilter 프레임워크와 iptables다. 일반 초보자라면 iptables 자체가 워낙 무식하게 복잡한 느낌이기 때문에 우분투 배포판 사용자의 경우 배포판에서 제공하는 ufw<ref>[https://wiki.ubuntu.com/UncomplicatedFirewall Uncomplicated Fire Wall - ubuntu wiki, official.]</ref><ref>[https://help.ubuntu.com/community/UFW UFW - ubuntu documentation, official.]</ref><ref>[http://webdir.tistory.com/206 우분투 방화벽(UFW) 설정 - WEBDIR]</ref>를 쓰는데, ufw도 결국 iptables를 쓰게 만들어놓은 프론트엔드일 뿐이다. 만약 iptables의 근본 동작 따위(?)는 이해하고 싶지 않고, 속시원하게 ufw만 신경쓰겠다면 [http://wiki.ubuntu-kr.org/index.php/UFWHowToKo 이 문서]를 참고한다. 어쨌든, 어떤 리눅스 플랫폼에서든 직접적이든 간접적이든 무조건 netfilter+iptables를 쓴다.


36번째 줄: 37번째 줄:
마지막으로, 이 문서가 너무 허접해서 못봐주겠다고 하는 "자칭 전문가"는 [http://www.iptables.info/en/iptables-contents.html iptables 문서]를 정독하면 되겠다.
마지막으로, 이 문서가 너무 허접해서 못봐주겠다고 하는 "자칭 전문가"는 [http://www.iptables.info/en/iptables-contents.html iptables 문서]를 정독하면 되겠다.


== iptables 동작 개념 ==
=== 설명 모델 ===
앞으로 설명을 진행할 하드웨어 레벨의 네트워크 구조는 다음과 같다.
 
=== 동작 개념 ===
iptables는 전송 계층 위로 패킷이 도달하기 전에 규칙을 검사하고 패킷을 넘겨줄지 폐기할지를 결정하는 역할을 한다. iptables의 동작 개념은 다음 그림과 같다.
iptables는 전송 계층 위로 패킷이 도달하기 전에 규칙을 검사하고 패킷을 넘겨줄지 폐기할지를 결정하는 역할을 한다. iptables의 동작 개념은 다음 그림과 같다.


== 참고자료 ==
== 참고자료 ==
<references/>
<references/>

2015년 7월 26일 (일) 05:28 판

파일:Pictogram-virtualisation-orange-hex.svg
  작업 중인 문서!

  미완성이며, 디자인이 완성되지 않았거나, 아직 채워지지 않은 내용이 있어 여러분의 참여가 필요한 문서입니다.

서문

커널에서 지원하는 iptables와 관련한 모든 내용을 이곳에 기록하고자 한다. 경우에 따라서 어려울 수도 있다. 이 문서를 읽기 전 반드시 컴퓨터 네트워크 개론서를 "정독" 하여 네트워크 기본 지식을 습득하라. 누군가에게 물어보는 것에 대해 답변을 해주는 사람의 소중한 시간을 빼앗을 가능성에 대해 미안해하는 감정 정도는 가질 수 있겠으나, 누군가에게 질문하는 자체 또는 자기 자신의 치부를 드러내는 것을 두려워해선 안된다. 적당히 어설픈 지식을 갖추면 대강이라도 이해할 수 있지만 그렇지 못하면 외계어 내지는 고대 상형문자 문서보다 더 난해한 ― 흰 것은 도화지요, 검은 것은 그림이다(?) ― "예술" 작품으로밖에 안보일지도 모른다.

참고

  • 이 문서의 최초 작성자는 질문에 답하지 않으며, 메우메우(?) 게으르므로 문서의 업데이트에 대해 보장하지 않는다. 이 문서는 GFDL 1.3을 따르므로 무단 복제 및 전제를 권장하되, 문서 편집 또는 배포시 이 문서 작업에 관여한 모든 구성원의 닉네임을 반드시 포함하도록 한다.
  • 이 문서에 내용을 추가할 경우 내용의 근거가 되는 자료(참고문헌, 예:설명서, 안내서, 포럼, HOWTO, 블로그 게시글 등)를 필히 명시하도록 한다. 방법은 위키 원문 전체를 참고한다.
  • 이 문서에는 iptables와 관련한 모든 내용을 하나 빠짐없이 문서화할 필요는 없다. 물론 실무에서 활용할 기술을 넣는 것도 좋겠지만, 전적으로 이 문서는 일반 사용자 측면에서 우선적으로 접근하기 쉬워야한다. 어차피 기본 내용이 들어가도 내용이 쓸데없을 만큼 길 수밖에 없고, 그게 이 문서의 한계이다. 어떤 내용을 넣어야 할지에 대해서는 굳이 상의할 이유가 없으니 문서 작성에 참여하는 스스로가 알아서 판단하고 추가하는 것이 좋겠다.

netfilter

netfilter는 리눅스 커널에서 지원하는 패킷 선별 프레임워크이다. 기본적으로 다음과 같은 기능을 지원한다.<ref>http://netfilter.org/</ref>

  • 무상태 패킷 선별(IPv4, IPv6)
  • 상태별 패킷 선별(IPv4, IPv6)
  • 모든 방식의 네트워크 주소, 포트 해석, 예: NAT/NAPT(IPv4, IPv6)
  • 유연한 운영 기반
  • 개별 기능 확장에 유리한 다중 계층 API

netfilter 프레임워크를 사용하는 데이터 흐름 선별 프로그램으로는 iptables, ip6tables, arptables, ebtables가 있으며, 이 중, 이 문서에서 설명할 대상은 iptables이다(추후 ip6tables의 내용을 이곳에 추가할 수 있다). 네트워크 '패킷' 흐름을 관리하기 때문에 통상적으로 OSI Layer 3를 처리하는 것으로 알려져 있으나, 실제로는 iptables에서도 '프레임' 통제가 가능(MAC address 필터링)<ref>Iptables MAC Address Filterling - nixCraft</ref>하며, 전송 계층에서의 흐름 통제도 가능하기 때문에 OSI 계층 이론으로는 데이터 단위 선별 처리에 대한 계층이나 기본 데이터 처리 단위 구분이 모호하다. netfilter 프로젝트에서는 데이터 흐름 선별 도구 프로젝트가 문어발식으로 퍼져나가는 문제로 인해, 네트워크 데이터 흐름을 관리할 새로운 도구 nftables<ref>The netfilter.org "nftables" project</ref>를 만들고있다.

iptables

소개

흔히들 알고 있는 기본 방화벽의 근본 도구다. 레드햇 기반의 배포판에서는 방화벽을 활성화 한 상태를 기본으로 설치<ref>Basic Firewall Configuration - RedHat Customer Portal</ref>하는데, 이 방화벽을 구성하는 부분이 바로 커널에 내장된 netfilter 프레임워크와 iptables다. 일반 초보자라면 iptables 자체가 워낙 무식하게 복잡한 느낌이기 때문에 우분투 배포판 사용자의 경우 배포판에서 제공하는 ufw<ref>Uncomplicated Fire Wall - ubuntu wiki, official.</ref><ref>UFW - ubuntu documentation, official.</ref><ref>우분투 방화벽(UFW) 설정 - WEBDIR</ref>를 쓰는데, ufw도 결국 iptables를 쓰게 만들어놓은 프론트엔드일 뿐이다. 만약 iptables의 근본 동작 따위(?)는 이해하고 싶지 않고, 속시원하게 ufw만 신경쓰겠다면 이 문서를 참고한다. 어쨌든, 어떤 리눅스 플랫폼에서든 직접적이든 간접적이든 무조건 netfilter+iptables를 쓴다.

iptables를 제대로 쓸 줄 알면 다음과 같은걸 만들 수 있다.

  • 공유기
  • 라우터
  • 홈 게이트웨이
  • 보안 방화벽
  • 분산 서버
  • 등.

물논. iptables로 무슨 짓이든 가능케 하는 문서가 구글 창고를 뒤지면 엄청나게 많이 있다. 그게 다 영어로 써져 있다는게 문제지. 다음부터 진행할 이야기는 iptables 동작 기본 개념이다. 일단 이 부분을 알고 넘긴 후에는 실제로 유무선 공유기와 같은 여러가지 실제 구축 사례를 예제로 선보이겠다. 예제에 대해서는 충분히 기대 안 하는게 좋다. 생각처럼 바로바로 쉽게 되는게 아니니까. 게다가 장비도 제대로 갖추어야 한다. 네트워크 구성에 대한 치밀한 이해가 필요하다. 멘탈을 아끼고 싶으면 그냥 iptime 공유기를 사서 쓰는게 낫다. 이 문서는 iptime 공유기에 충분히 불만이 있는 사람들을 위한 문서니까.

마지막으로, 이 문서가 너무 허접해서 못봐주겠다고 하는 "자칭 전문가"는 iptables 문서를 정독하면 되겠다.

설명 모델

앞으로 설명을 진행할 하드웨어 레벨의 네트워크 구조는 다음과 같다.

동작 개념

iptables는 전송 계층 위로 패킷이 도달하기 전에 규칙을 검사하고 패킷을 넘겨줄지 폐기할지를 결정하는 역할을 한다. iptables의 동작 개념은 다음 그림과 같다.

참고자료

<references/>