7.4.1. 넷필터 동작
Netfilter는 패킷에 대한 XNUMX가지 작업을 규제하는 규칙을 저장하는 XNUMX개의 개별 테이블을 사용합니다.
• 필터링 필터링 규칙(패킷 수락, 거부 또는 무시)에 관한 것입니다.
• NAT (네트워크 주소 변환) 패킷의 소스 또는 대상 주소 및 포트 변환에 관한 것입니다.
• 압착 롤러 IP 패킷에 대한 다른 변경 사항(ToS 포함—서비스 유형— 필드 및 옵션);
• 살갗이 벗어 진 연결 추적 시스템에 도달하기 전에 패킷에 대한 다른 수동 수정을 허용합니다.
각 테이블에는 쇠사슬. 방화벽은 표준 체인을 사용하여 미리 정의된 상황에 따라 패킷을 처리합니다. 관리자는 표준 체인 중 하나(직접 또는 간접)에서 참조할 때만 사용되는 다른 체인을 만들 수 있습니다.
XNUMXD덴탈의 필터링 테이블에는 세 가지 표준 체인이 있습니다.
• 입력: 대상이 방화벽 자체인 패킷에 관한 것입니다.
• 출력: 방화벽에서 내보내는 패킷에 관한 것입니다.
• 앞으로: 방화벽(발신지도 목적지도 아님)을 통과하는 패킷에 관한 것입니다.
XNUMXD덴탈의 NAT 테이블에는 세 가지 표준 체인도 있습니다.
• PREROUTING: 패킷이 도착하자마자 수정합니다.
• POSTROUTING: 패킷이 이동할 준비가 되었을 때 패킷을 수정합니다.
• 출력: 방화벽 자체에서 생성된 패킷을 수정합니다.
이러한 체인은 그림 7.1, "Netfilter 체인이 호출되는 방식"에 설명되어 있습니다."[페이지 155].
그림 7.1 방법 넷 필터 체인이 호출됨
각 체인은 규칙 목록입니다. 각 규칙은 일련의 조건과 조건이 충족될 때 수행할 작업입니다. 패킷을 처리할 때 방화벽은 적절한 체인을 한 규칙씩 스캔하고 한 규칙의 조건이 충족되면 점프합니다(따라서 -j 명령의 옵션) 처리를 계속하기 위해 지정된 조치로. 가장 일반적인 행동은 표준화되어 있으며 전용 조치가 존재합니다. 이러한 표준 작업 중 하나를 수행하면 패킷 운명이 이미 봉인되었기 때문에 체인 처리가 중단됩니다(아래에 언급된 예외 제외). 아래 목록은 넷 필터 행위.
• 동의: 패킷이 진행되도록 허용합니다.
• 받지 않다: ICMP(Internet Control Message Protocol) 오류 패킷이 있는 패킷을 거부합니다. --거부 유형 의 옵션 iptables에 보낼 오류 유형을 결정합니다).
• DROP: 패킷을 삭제(무시)합니다.
• LOG: 로그(통해 syslogd) 패킷에 대한 설명이 있는 메시지. 이 작업은 처리를 중단하지 않으며 다음 규칙에서 체인 실행이 계속되므로 거부된 패킷을 기록하려면 LOG 및 REJECT/DROP 규칙이 모두 필요합니다. 로깅과 관련된 일반적인 매개변수는 다음과 같습니다.
- --로그 수준, 기본값 사용 경고, 나타냅니다 syslog 심각도 수준.
- --로그 접두사 기록된 메시지를 구분하기 위해 텍스트 접두사를 지정할 수 있습니다.
- --log-tcp-sequence, --log-tcp-options 및 --log-ip-options는 각각 TCP 시퀀스 번호, TCP 옵션 및 IP 옵션과 같이 메시지에 통합할 추가 데이터를 나타냅니다.
• ULOG: 다음을 통해 메시지를 기록합니다. ulogd,보다 더 잘 적응하고 더 효율적일 수 있습니다. syslogd 많은 수의 메시지를 처리하기 위해; 이 작업은 LOG와 마찬가지로 호출 체인의 다음 규칙으로 처리를 되돌립니다.
• 체인_이름: 주어진 체인으로 점프하고 그 규칙을 평가합니다.
• RETURN: 현재 체인의 처리를 중단하고 호출 체인으로 돌아갑니다. 현재 체인이 표준 체인인 경우 호출 체인이 없으므로 기본 동작( -P ~에 대한 옵션 iptables에) 대신 실행됩니다.
• SNAT (에서만 NAT 테이블): 적용 소스 네트워크 주소 변환 (SNAT). 추가 옵션은 다음을 포함하여 적용할 정확한 변경 사항을 설명합니다. --소스로 주소:포트 새 소스 IP 주소 및/또는 포트를 정의하는 옵션.
• DTA (에서만 NAT 테이블): 적용 대상 네트워크 주소 변환 (DNAT). 추가 옵션은 다음을 포함하여 적용할 정확한 변경 사항을 설명합니다. --to-목적지 주소:포트 새 대상 IP 주소 및/또는 포트를 정의하는 옵션입니다.
• 가장 무도회 (에서만 NAT 테이블): 적용 가장 한 (특별한 경우 소스 NAT).
• 리디렉션 (에서만 NAT 표): 패킷을 방화벽 자체의 지정된 포트로 투명하게 리디렉션합니다. 이것은 통신이 실제로 프록시를 통과하는 반면 클라이언트는 수신자에게 연결된다고 생각하기 때문에 클라이언트 측에서 구성 없이 작동하는 투명한 웹 프록시를 설정하는 데 사용할 수 있습니다. 그만큼 --to-포트 포트 옵션은 패킷이 리디렉션되어야 하는 포트 또는 포트 범위를 나타냅니다.
기타 조치, 특히 다음과 관련된 조치 압착 롤러 이 텍스트의 범위를 벗어납니다. 그만큼 iptables(8) 과 IP6테이블(8) 매뉴얼 페이지에는 포괄적인 목록이 있습니다.
ICMP 란 무엇입니까? 인터넷 제어 메시지 프로토콜 (ICMP)는 통신에 대한 보조 정보를 전송하는 데 사용되는 프로토콜입니다. 다음과의 네트워크 연결을 테스트합니다. 핑 ICMP를 보내는 명령 에코 요청 수신자가 ICMP로 응답해야 하는 메시지 에코 답장 메시지. 방화벽에 패킷 거부 신호를 보내고 수신 버퍼의 오버플로를 나타내며 연결의 다음 패킷에 대한 더 나은 경로를 제안하는 등의 작업을 수행합니다. 이 프로토콜은 여러 RFC 문서에 정의되어 있습니다. RFC777 및 RFC792가 처음이었지만 다른 많은 사람들이 프로토콜을 확장 및/또는 수정했습니다.
➨ http://www.faqs.org/rfcs/rfc777.html
➨ http://www.faqs.org/rfcs/rfc792.html
참고로 수신 버퍼는 네트워크에서 데이터가 도착하는 시점과 커널이 처리하는 시점 사이에 데이터를 저장하는 작은 메모리 영역입니다. 이 영역이 가득 차면 새 데이터를 수신할 수 없으며 ICMP에 문제 신호를 보내 방출기가 전송 속도를 늦출 수 있도록 합니다(이상적으로는 일정 시간이 지나면 평형에 도달해야 함).
IPv4 네트워크는 ICMP 없이도 작동할 수 있지만 IPv6 네트워크에는 ICMPv6이 엄격하게 필요합니다. 인터넷 그룹 멤버십 프로토콜 (IGMP) 및 주소 확인 프로토콜 (ARP). ICMPv6은 RFC4443에 정의되어 있습니다.
➨ http://www.faqs.org/rfcs/rfc4443.html
ICMP 란 무엇입니까? 인터넷 제어 메시지 프로토콜 (ICMP)는 통신에 대한 보조 정보를 전송하는 데 사용되는 프로토콜입니다. 다음과의 네트워크 연결을 테스트합니다. 핑 ICMP를 보내는 명령 에코 요청 수신자가 ICMP로 응답해야 하는 메시지 에코 답장 메시지. 방화벽에 패킷 거부 신호를 보내고 수신 버퍼의 오버플로를 나타내며 연결의 다음 패킷에 대한 더 나은 경로를 제안하는 등의 작업을 수행합니다. 이 프로토콜은 여러 RFC 문서에 정의되어 있습니다. RFC777 및 RFC792가 처음이었지만 다른 많은 사람들이 프로토콜을 확장 및/또는 수정했습니다.
➨ http://www.faqs.org/rfcs/rfc777.html
➨ http://www.faqs.org/rfcs/rfc792.html
참고로 수신 버퍼는 네트워크에서 데이터가 도착하는 시점과 커널이 처리하는 시점 사이에 데이터를 저장하는 작은 메모리 영역입니다. 이 영역이 가득 차면 새 데이터를 수신할 수 없으며 ICMP에 문제 신호를 보내 방출기가 전송 속도를 늦출 수 있도록 합니다(이상적으로는 일정 시간이 지나면 평형에 도달해야 함).
IPv4 네트워크는 ICMP 없이도 작동할 수 있지만 IPv6 네트워크에는 ICMPv6이 엄격하게 필요합니다. 인터넷 그룹 멤버십 프로토콜 (IGMP) 및 주소 확인 프로토콜 (ARP). ICMPv6은 RFC4443에 정의되어 있습니다.
➨ http://www.faqs.org/rfcs/rfc4443.html