iptables

iptables
iptables
원저작자러스티 러셀
개발자Netfilter 코어 팀
초기 릴리즈1998
안정된 릴리스
1.8.8 / 2022년 5월 13일, 2개월 전(2022-05-13)[1]
저장소
기입처C
운영 체제리눅스
플랫폼넷필터
유형패킷 필터링
면허증.GPL
웹 사이트www.netfilter.org

iptables는 시스템 관리자Linux 커널방화벽IP 패킷필터 규칙을 다른 Netfilter 모듈로 구현할 수 있도록 하는 사용자 공간 유틸리티 프로그램입니다.필터는 네트워크트래픽 패킷 처리 방법에 관한 규칙 체인을 포함한 다양한 테이블로 구성되어 있습니다.iptables는 IPv4, ip6tables는 IPv6, arptablesARP, ebtables이더넷프레임에 적용됩니다.

iptables를 사용하려면 상승된 권한이 필요하며 사용자 루트에 의해 실행되어야 합니다. 그렇지 않으면 작동하지 않습니다.대부분의 Linux 시스템에서는 iptables는 다음과 같이 설치됩니다./usr/sbin/managlesman 페이지에 문서화되어 있습니다.이 페이지는 다음을 사용하여 열 수 있습니다.man iptables를 클릭합니다.다음에서도 찾을 수 있습니다./sbin/iptablesiptables는 "필수 바이너리"라기보다는 서비스에 가깝기 때문에 /usr/sbin이 선호됩니다.

iptables라는 용어는 커널 레벨의 컴포넌트를 포괄적으로 지칭하기 위해서도 일반적으로 사용됩니다.x_tables는 확장에 사용되는API를 제공하는 4개의 모듈 모두에서 사용되는 공유 코드 부분을 전송하는 커널 모듈의 이름입니다.따라서 Xtables는 방화벽(v4, v6, arp 및 eb) 아키텍처 전체를 가리키는 데 사용됩니다.

iptables는 ipchains를 대체하였고 iptables의 후속 버전은 nftables로 2014년 1월[2] 19일에 출시되었으며 커널 버전 3.13에서 Linux 커널 메인라인에 병합되었습니다.

개요

iptables 를 사용하면 시스템 관리자는 패킷 처리 규칙 체인포함하는 테이블을 정의할 수 있습니다.각 테이블은 다른 종류의 패킷 처리와 관련지어집니다.패킷은 체인으로 규칙을 순차적으로 통과함으로써 처리됩니다.체인의 규칙은 goto 또는 다른 체인으로 점프하는 원인이 될 수 있으며, 이는 원하는 수준의 네스팅으로 반복될 수 있습니다.(점프는 "콜"과 같다. 즉, 점프한 지점이 기억된다.)컴퓨터에서 송수신되는 모든 네트워크 패킷은 적어도1개의 체인을 통과합니다.

패킷 플로우 패스패킷은 특정 박스에서 시작하여 상황에 따라 특정 경로를 따라 흐릅니다.

패킷의 송신원에 의해서, 최초로 통과하는 체인이 정해집니다.사전 정의된 체인은 5개(5개의 사용 가능한 Netfilter 후크에 매핑) 있지만 테이블에 모든 체인이 있는 것은 아닙니다.사전 정의된 체인에는 DROP 등의 정책이 있으며 패킷이 체인의 끝에 도달했을 때 패킷에 적용됩니다.시스템 관리자는 필요한 수만큼 다른 체인을 만들 수 있습니다.이러한 체인에는 정책이 없습니다.패킷이 체인의 끝에 도달하면, 그 체인을 호출한 체인으로 돌아옵니다.체인은 비어 있을 수 있습니다.

  • PREROUTING: 패킷은 라우팅이 결정되기 전에 이 체인에 들어갑니다.
  • INPUT: 패킷은 로컬로 전달됩니다.오픈 소켓이 있는 프로세스와는 관계가 없습니다.로컬 전달은 "로컬 전달" 라우팅 테이블에 의해 제어됩니다.ip route show table local.
  • FORWARD: 로컬 전송이 아닌 라우팅된 모든 패킷은 이 체인을 통과합니다.
  • OUTPUT: 머신 자체에서 송신된 패킷이 이 체인을 방문합니다.
  • POSTROUTING: 라우팅이 결정되었습니다.패킷은 하드웨어로 전송되기 직전에 이 체인에 들어갑니다.

체인은 그 자체로 존재하는 것이 아니라 테이블에 속합니다.테이블에는 nat, filtermagle의 3가지가 있습니다.옵션 -t가 선행되지 않는 한,iptables명령어는 기본적으로 필터 테이블과 관련되어 있습니다.예를 들어 명령어는iptables -L -v -n(일부 체인과 그 규칙을 표시)는 다음과 같습니다.iptables -t filter -L -v -n테이블 nat 체인을 표시하려면명령어를 사용합니다.iptables -t nat -L -v -n

체인의 각 규칙에는 일치하는 패킷의 지정이 포함됩니다.또한 대상(확장에 사용됨) 또는 평결(기본 제공 결정 중 하나)을 포함할 수도 있습니다.패킷이 체인을 통과할 때 각 규칙이 차례로 검사됩니다.규칙이 패킷과 일치하지 않으면 패킷은 다음 규칙으로 전달됩니다.규칙이 패킷과 일치하는 경우 규칙은 타겟/버딕트에 의해 지정된 액션을 수행합니다.이것에 의해, 패킷이 체인을 따라서 계속 되는 것이 허가되는 경우와 허가되지 않는 경우가 있습니다.일치에는 패킷이 테스트되는 조건이 포함되어 있기 때문에 규칙 집합의 대부분을 차지합니다.이는 OSI 모델의 거의 모든 레이어에서 발생할 수 있습니다.예를 들어,--mac-source그리고.-p tcp --dport매개 변수 및 프로토콜에 의존하지 않는 일치도 있습니다.-m time.

패킷은 다음 중 하나가 될 때까지 체인을 계속 통과합니다.

  1. 규칙이 패킷과 일치하여 패킷의 최종적인 운명을 결정합니다.예를 들어 다음 중 하나를 호출함으로써ACCEPT또는DROP또는 이러한 궁극의 운명을 반환하는 모듈 또는
  2. 규칙이 을 호출하다RETURN평결(이 경우 처리는 발신자 체인으로 돌아갑니다) 또는
  3. 체인의 끝에 도달한다; 횡단은 부모 체인으로 계속된다(마치)RETURN사용되었습니다.) 또는 궁극적인 운명인 베이스 체인 정책이 사용됩니다.

대상자들은 또한 다음과 같은 평결을 내립니다.ACCEPT(NAT모듈이 이 작업을 수행합니다.) 또는DROP(예:REJECTmodule) 단, 의미할 수도 있습니다.CONTINUE(예:LOG모듈CONTINUE내부명)을 지정하면, 타겟/패킷이 전혀 지정되어 있지 않은 것처럼, 다음의 룰로 속행합니다.

사용자 공간 유틸리티

프론트 엔드

iptables용 서드파티 소프트웨어 어플리케이션은 규칙을 쉽게 설정하기 위해 노력하고 있습니다.텍스트 또는 그래피컬한 프런트 엔드로 사용자는 단순한 규칙 집합을 클릭 생성할 수 있습니다.스크립트는 보통 iptables를 호출하는 셸 스크립트(단, 다른 스크립트 언어도 가능)를 참조합니다.iptables-restore사전 정의된 규칙 집합 또는 간단한 구성 파일을 사용하여 템플릿에서 규칙을 확장합니다.Linux 디스트리뷰션에서는 일반적으로 후자의 템플릿 사용 방식을 사용합니다.이러한 템플릿 기반 접근법은 실질적으로 규칙 생성기의 제한된 형식이며, 이러한 생성기도 PHP 웹 페이지와 같은 독립 실행형 방식으로 존재합니다.

이러한 프런트 엔드, 생성기 및 스크립트는 대부분의 경우 내장된 템플릿 시스템에 의해 제한되며 템플릿은 사용자 정의 규칙을 대체할 수 있는 위치를 제공합니다.또한 생성된 규칙은 일반적으로 사용자가 원하는 특정 방화벽 효과에 최적화되지 않습니다. 그렇게 하면 개발자의 유지 보수 비용이 증가할 수 있습니다.iptables를 합리적으로 이해하고 규칙 집합을 최적화하고자 하는 사용자는 자체 규칙 집합을 구성하는 것이 좋습니다.

기타 주목할 만한 도구

  • FireHOL – iptables를 알기 쉬운 플레인 텍스트 구성 파일로 포장한 셸 스크립트
  • NuFW – Netfilter에 대한 인증 방화벽 확장
  • Shorewall – 게이트웨이/방화벽 구성 도구. 보다 쉬운 규칙을 사용하여 iptables에 매핑할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "News of the netfilter/iptables project". netfilter.org. Retrieved 15 June 2022.
  2. ^ "Linux 3.13, Section 1.2. nftables, the successor of iptables". kernelnewbies.org. 19 January 2014. Retrieved 20 January 2014.

문학.

외부 링크