Linux에서 방화벽이 어떻게 작동하는지 이해하려고 합니다... 설명서를 읽었지만 몇 가지 사항에 대해 잘 모르겠습니다...
Netfilters는 최신 커널에 포함되어 있으며 후크를 사용하여 내용을 변경하지 않고도 패키지를 모니터링할 수 있습니다.
iptables는 netfilter와 ip_tables 모듈을 사용하는 소프트웨어라고 하는데..
제 질문은....
- IPTables 사용자 공간 소프트웨어가 후크를 등록합니까?
- ip_table 모듈은 무엇을 합니까?
- iptable이나 모듈은 누가 처리하나요?
- IPtable은 무엇을 합니까? (단지 메모리의 규칙을 관리합니까? 아니면 후크가 있고 트래픽을 처리합니까?)
답변1
웹 필터
netfilter는 커널의 네트워킹 코드 전체에 분산된 후크 세트입니다. 이는 코드 조각이 중요한 작업(X라고 부르겠습니다)을 수행하려는 경우 "X를 수행하겠습니다"라고 말하는 함수를 호출한다는 의미입니다. 그러면 이 함수는 등록된 콜백을 통해 다른 관심 있는 당사자에게 알립니다. IPVS와 같은 다른(iptables가 아닌) 시스템에서도 사용됩니다.
netfilter에는 사용자 공간 프로그램에 패킷을 전달하는 메커니즘도 포함되어 있습니다. iptables는 이를 QUEUE 및 ULOG 대상에 사용하여 사용자가 사용자 공간에서 패킷을 처리할 수 있도록 합니다.
ip_tables(커널 모듈)
ip_tables는 netfilter를 사용하여 이러한 알림을 받는 모듈입니다. 관련이 있는 패킷을 식별하고 수행하라는 작업을 수행합니다. 이는 사용자가 제공한 규칙을 기반으로 어떤 패킷이 관련되어 있고 해당 패킷으로 무엇을 해야 하는지를 알고 있으며 이러한 규칙을 테이블에 저장합니다. 실제로 ip_tables에서 사용하는 보다 일반적인 모듈 xtables를 사용합니다.
확장 모듈
확장 모듈은 일치 기준 및 대상 작업을 제공하는 대부분의 작업을 수행합니다. 확장 모듈의 몇 가지 예로는 IP_NF_TARGET_LOG 및 NF_NAT가 있습니다.
iptables(사용자 공간 도구)
iptables는 ip_tables 모듈에서 이러한 규칙을 설정하는 데 사용되는 사용자 공간 도구입니다. 이 도구에는 명령줄 옵션을 구문 분석하고 규칙을 등록하는 여러 플러그인도 함께 제공됩니다.
iptables 내부에 대해 자세히 알아보기
내부 원칙에 대해 더 알고 싶다면 다음을 참조하십시오.훌륭한 책그것에 대해. iptables에 대한 추가 기능을 만들고 싶다면 이 책이 필요한 모든 것을 제공하지만 iptables 사용 방법을 더 깊이 이해하는 데는 도움이 되지 않습니다.
iptables 사용에 대해 자세히 알아보기
iptables 사용 방법을 더 잘 이해하려면 몇 가지 다른 문서를 읽어서 iptables가 어떻게 다른 방식으로 설명되어 있는지 살펴보는 것이 좋습니다. 더 중요한 것은,iptables를 직접 가지고 놀아보세요. 나는 특히 LOG 대상을 사용하여 테이블과 체인을 통한 패킷 흐름과 이에 대한 규칙의 영향을 확인하는 것을 좋아합니다. 또한,테이블을 통한 패킷 흐름 다이어그램굉장히 유용하다. 마지막으로, iptables로 어떤 작업을 하려고 했는데 예상한 대로 작동하지 않으면 사이트에서 구체적인 질문을 하십시오. iptables에 대해 잘 아는 사람들이 자주 질문에 대답합니다.
답변2
이 iptables
명령은 커널의 패킷 필터링 규칙만 작동합니다. 이러한 규칙에 따르면 네트워크 트래픽은 일반적으로 커널에 의해 완전히 관리됩니다. 커널은 매우 정교한 라우팅 및 모니터링을 수행할 수 있습니다. 게다가 iptables
,IP 경로 2고급 시나리오에서 커널 동작을 제어하려면 유틸리티 모음이 필요합니다.
이 ip_tables
모듈(모듈 없음 ip_table
)은 커널 패킷 처리 구성 요소의 일부입니다. 커널 네트워킹 코드를 개발하거나 누군가로부터 사용자 정의 패치를 설치하지 않는 한, 어떤 모듈이 실제로 무엇을 하는지 신경 쓸 필요가 없습니다.
사용자 공간 코드는 패킷이 수신될 때 호출될 수 있습니다. 이는 매우 구체적인 필터링, 수정, 라우팅 또는 로깅 요구 사항에 해당합니다. 커널에는 특정 이벤트에서 사용자 공간 코드를 실행하는 후크가 있습니다.netfilter 사용자 공간 라이브러리이러한 후크에 대한 인터페이스를 제공하십시오.
답변3
우선 리눅스에서는 TCP/IP의 송신, 수신, 전달이 모두 커널에서 완료된다는 점을 이해하세요. 따라서 네트워킹과 관련된 모든 것은 커널에 내장되거나 modprobe
부팅 후 제거되어야 하는 커널 모듈입니다.
에서 인용http://www.netfilter.org/: "netfilter는 커널 모듈이 네트워크 스택에 콜백 함수를 등록할 수 있도록 하는 Linux 커널의 후크 세트입니다. 그런 다음 등록된 콜백 함수는 네트워크 스택의 해당 후크를 통과하는 각 패킷에 대해 콜백됩니다."
즉, Netfilter는 Linux가 네트워킹과 관련된 모든 작업을 수행하는 방식을 변경하는 다른 코드를 생성하고 삽입할 수 있는 커널의 "개구부" 모음일 뿐입니다.
기사에서는 "iptables는 규칙 세트를 정의하는 데 사용되는 일반 테이블 구조입니다. IP 테이블의 각 규칙에는 여러 분류자(iptables 일치)와 연결된 작업(iptables 대상)이 포함되어 있습니다."라고 추가로 설명합니다.
iptables
규칙 기반 패킷 필터링(방화벽이라고도 함) 등을 구현하기 위해 Netfilter에서 제공하는 "개구부"를 활용하는 특정 프로젝트이자 커널 모듈 세트입니다.
따라서 iptables
1) Netfilter에 자체적으로 후크하여 커널이 NIC 또는 응용 프로그램으로 보낼 네트워크 패킷을 가로채고, 2) 현재 규칙 집합 각각에 따라 이 패킷을 처리하고, 3) 규칙이 일치하면 규칙으로 전송된 데이터 패킷표적.
적절하게 구성된 규칙을 사용하면 NIC에서 특정 패킷을 삭제하거나, NAT 또는 포트 리디렉션을 구현하도록 패킷을 변경하거나, 패킷의 프로토콜별 콘텐츠 또는 패킷의 페이로드 콘텐츠에 따라 조치를 취할 수 있습니다. 추가 처리를 위해 패킷을 사용자 공간 애플리케이션(대상)에 전달하는 규칙을 작성할 수도 있습니다 ( 이와 NFQUEUE
같은 사용자 공간 기반 필터 ).moblock
저는 Linux 커널 전문가는 아니지만 iptables
규칙 추가/제거를 처리하는 기본 모듈이 있고 이것이 iptables
바로 사용자 공간 애플리케이션과 관련되어 있다고 생각합니다. 거의 모든 대상은 별도의 모듈로 존재하거나 커널에 내장될 수 있는 자체 커널 모듈에 의해 처리됩니다.
직접 찾아보실 수 있습니다. 커널을 다운로드하고 www.kernel.org
, un-bzip2-it, cd를 직접 실행하고 make menuconfig
"Network Support"에서 시작하여 드릴다운하면 iptables에 사용 가능한 모든 모듈을 볼 수 있습니다.