Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.4.3. 소스 라우팅 비활성화

소스 라우팅은 IP 패킷이 패킷에 취해야 하는 경로를 라우터에 알리는 정보, 주소 목록을 전송할 수 있도록 하는 인터넷 프로토콜 메커니즘입니다. 경로가 트래버스될 때 홉을 기록하는 옵션도 있습니다. "route 레코드"인 홉 목록은 대상에 소스에 대한 반환 경로를 제공합니다. 이를 통해 소스(전송 호스트)에서 일부 또는 모든 라우터의 라우팅 테이블을 무시하고 경로를 느슨하게 또는 엄격하게 지정할 수 있습니다. 사용자가 악의적인 목적으로 네트워크 트래픽을 리디렉션할 수 있습니다. 따라서 소스 기반 라우팅을 비활성화해야 합니다.
accept_source_route 옵션을 사용하면 네트워크 인터페이스가 Strict Source Routing (SSR) 또는 Loose Source Routing (LSR) 옵션이 설정된 패킷을 허용합니다. 소스 라우팅 패킷의 수락은 sysctl 설정에 의해 제어됩니다. 다음 명령을 root로 실행하여 SSR 또는 LSR 옵션이 설정된 패킷을 삭제합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
패킷 전달을 비활성화하는 것도 가능한 경우 위의 항목과 함께 수행해야 합니다(가상화를 방해할 수 있음). root로 아래 명령을 실행합니다.
이러한 명령은 모든 인터페이스에서 IPv4 및 IPv6 패킷 전달을 비활성화합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.forwarding=0
이러한 명령은 모든 인터페이스에서 모든 멀티 캐스트 패킷의 전달을 비활성화합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
~]# /sbin/sysctl -w net.ipv6.conf.all.mc_forwarding=0
ICMP 리디렉션 수락에는 합법적인 사용이 거의 없습니다. 특별히 필요하지 않은 경우 ICMP 리디렉션 패킷의 수락 및 전송을 비활성화합니다.
이러한 명령은 모든 인터페이스에서 모든 ICMP 리디렉션 패킷을 수락하지 않도록 비활성화합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
~]# /sbin/sysctl -w net.ipv6.conf.all.accept_redirects=0
이 명령은 모든 인터페이스에서 보안 ICMP 리디렉션 패킷 수락을 비활성화합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.secure_redirects=0
이 명령은 모든 인터페이스에서 모든 IPv4 ICMP 리디렉션 패킷의 수락을 비활성화합니다.
~]# /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
중요
ICMP 리디렉션 전송은 net.ipv4.conf.all.send_redirects 또는 net.ipv4.conf 중 하나 이상이 활성 상태로 유지됩니다.인터페이스.send_redirects 옵션이 enabled로 설정됩니다. net.ipv4.conf.인터페이스.send_redirects 옵션을 모든 인터페이스0 값으로 설정해야 합니다. 새 인터페이스를 추가할 때마다 ICMP 요청 전송을 자동으로 비활성화하려면 다음 명령을 입력합니다.
~]# /sbin/sysctl -w net.ipv4.conf.default.send_redirects=0
IPv4 리디렉션 패킷 전송을 비활성화하는 지시문만 있습니다. IPv4와 IPv6의 차이로 인해 발생하는 IPv6 노드 요구 사항에 대한 설명은 RFC4294 를 참조하십시오.
참고
재부팅 후에도 이러한 설정을 지속하려면 /etc/sysctl.conf 파일을 수정하십시오. 예를 들어 모든 인터페이스에서 모든 IPv4 ICMP 리디렉션 패킷을 수락하려면 root 사용자로 실행되는 편집기로 /etc/sysctl.conf 파일을 열고 다음과 같이 행을 추가합니다.
net.ipv4.conf.all.send_redirects=0
자세한 내용은 sysctl 도움말 페이지 sysctl(8) 를 참조하십시오. 소스 기반 라우팅 및 해당 변형과 관련된 인터넷 옵션에 대한 설명은 RFC791 을 참조하십시오.
주의
이더넷 네트워크는 ARP 또는 MAC 주소 스푸핑, 무단 DHCP 서버, IPv6 라우터 또는 주변 광고와 같은 트래픽을 리디렉션하는 추가 방법을 제공합니다. 또한 유니캐스트 트래픽은 종종 브로드캐스트를 통해 정보 유출이 발생합니다. 이러한 약점은 네트워크 운영자에 의해 구현되는 특정 카운터에서만 해결할 수 있습니다. 호스트 기반 카운터는 완전히 작동하지 않습니다.

4.4.3.1. 역방향 경로 전달

역방향 경로 전달은 하나의 인터페이스를 통해 들어오는 패킷이 다른 인터페이스를 통해 나가는 것을 방지하는 데 사용됩니다. 나가는 경로와 들어오는 경로가 다른 경우 종종 symmetric 라우팅 이라고 합니다. 라우터는 종종 이러한 방식으로 패킷을 라우팅하지만 대부분의 호스트는 이 작업을 수행할 필요가 없습니다. 예외는 하나의 링크를 통해 트래픽을 보내고 다른 서비스 공급자의 다른 링크를 통해 트래픽을 수신하는 것을 포함하는 애플리케이션입니다. 예를 들어, X DSL 또는 위성 링크와 3G 모뎀과 함께 리스된 라인 사용. 이러한 시나리오가 사용자에게 적용 가능한 경우 들어오는 인터페이스에서 역방향 경로 전달을 해제해야 합니다. 즉, 필요하지 않은 경우 사용자가 로컬 서브넷에서 IP 주소를 스푸핑하고 DDoS 공격의 가능성을 줄일 수 있으므로 이 기능이 가장 적합합니다.
주의
전달이 활성화된 경우 source-address 검증 방법(예: iptables 규칙 등)이 있는 경우에만 Reverse Path Forwarding을 비활성화해야 합니다.
rp_filter
역방향 경로 전달은 rp_filter 지시문을 통해 활성화됩니다. sysctl 유틸리티를 사용하여 실행 중인 시스템을 변경할 수 있으며 /etc/sysctl.conf 파일에 행을 추가하여 영구적으로 변경할 수 있습니다. rp_filter 옵션은 커널에 세 가지 모드 중 하나를 선택하도록 지시하는 데 사용됩니다.
임시 전역 변경을 수행하려면 root 로 다음 명령을 입력합니다.
sysctl -w  net.ipv4.conf.default.rp_filter=integer
sysctl -w net.ipv4.conf.all.rp_filter=integer
여기서 integer 는 다음 중 하나입니다.
  • 0 - 소스 검증 없음
  • 1 - RFC 3704에 정의된 엄격한 모드.
  • 2 - RFC 3704에 정의된 느슨한 모드입니다.
설정은 net.ipv4.conf를 사용하여 네트워크 인터페이스별로 재정의할 수 있습니다.인터페이스.rp_filter 명령은 다음과 같습니다.
sysctl -w net.ipv4.conf.interface.rp_filter=integer
참고
재부팅 후에도 이러한 설정을 지속하려면 /etc/sysctl.conf 파일을 수정하십시오. 예를 들어 모든 인터페이스의 모드를 변경하려면 root 사용자로 실행되는 편집기로 /etc/sysctl.conf 파일을 열고 다음과 같이 행을 추가합니다.
net.ipv4.conf.all.rp_filter=2
IPv6_rpfilter
IPv6 프로토콜의 경우 firewalld 데몬은 기본적으로 Reverse Path Forwarding에 적용됩니다. 설정은 /etc/firewalld/firewalld.conf 파일에서 확인할 수 있습니다. IPv6_rpfilter 옵션을 설정하여 firewalld 동작을 변경할 수 있습니다.
Reverse Path Forwarding의 사용자 지정 구성이 필요한 경우 다음과 같이 ip6tables 명령을 사용하여 firewalld 데몬 없이 이를 수행할 수 있습니다.
ip6tables -t raw -I PREROUTING -m rpfilter --invert -j DROP
이 규칙은 원시/PREROUTING 체인의 시작 부분에 삽입해야 하므로 특히 상태 저장 일치 규칙보다 먼저 모든 트래픽에 적용됩니다. iptablesip6tables 서비스에 대한 자세한 내용은 5.13절. “iptables를 사용하여 IP 세트 설정 및 제어” 을 참조하십시오.
패킷 전달 활성화
시스템 외부에서 도착한 패킷을 다른 외부 호스트로 전달하려면 커널에서 IP 전달을 활성화해야 합니다. root 로 로그인하고 /etc/sysctl.conf 파일에서 net.ipv4.ip_forward = 0 을 읽는 행을 다음으로 변경합니다.
net.ipv4.ip_forward = 1
/etc/sysctl.conf 파일에서 변경 사항을 로드하려면 다음 명령을 입력합니다.
/sbin/sysctl -p
IP 전달이 설정되어 있는지 확인하려면 root 로 다음 명령을 실행합니다.
/sbin/sysctl net.ipv4.ip_forward
위의 명령에서 1 을 반환하면 IP 전달이 활성화됩니다. 0 을 반환하는 경우 다음 명령을 사용하여 수동으로 설정할 수 있습니다.
/sbin/sysctl -w net.ipv4.ip_forward=1