웹사이트 검색

패킷 필터링, 네트워크 주소 변환을 수행하고 커널 런타임 매개변수를 설정하는 방법 - 2부


1부("정적 네트워크 라우팅 설정")에서 약속한 대로 이 문서(RHCE 시리즈의 2부)에서는 소개하는 것부터 시작하겠습니다. 특정 조건이 변경되거나 필요한 경우 실행 중인 커널의 동작을 수정하기 위해 런타임 커널 매개변수 설정에 대해 알아보기 전에 Red Hat Enterprise Linux 7의 패킷 필터링 및 네트워크 주소 변환(NAT) 원칙을 살펴보세요.

RHEL 7의 네트워크 패킷 필터링

패킷 필터링에 관해 이야기할 때 방화벽이 방화벽을 통과하려고 시도하는 각 데이터 패킷의 헤더를 읽는 프로세스를 말합니다. 그런 다음 시스템 관리자가 이전에 정의한 규칙을 기반으로 필요한 조치를 취하여 패킷을 필터링합니다.

아시다시피 RHEL 7부터 방화벽 규칙을 관리하는 기본 서비스는 방화벽입니다. iptables와 마찬가지로 네트워크 패킷을 검사하고 조작하기 위해 Linux 커널의 netfilter 모듈과 통신합니다. iptables와 달리 활성 연결을 중단하지 않고 업데이트가 즉시 적용될 수 있습니다. 서비스를 다시 시작할 필요도 없습니다.

firewalld의 또 다른 장점은 사전 구성된 서비스 이름을 기반으로 규칙을 정의할 수 있다는 것입니다(자세한 내용은 잠시 후에 설명하겠습니다).

1부에서는 다음 시나리오를 사용했습니다.

그러나 아직 패킷 필터링을 다루지 않았기 때문에 예제를 단순화하기 위해 라우터 #2에서 방화벽을 비활성화했다는 것을 기억하실 것입니다. 이제 대상의 특정 서비스나 포트로 향하는 수신 패킷을 활성화하는 방법을 살펴보겠습니다.

먼저 enp0s3(192.168.0.19)에서 enp0s8(10.0.0.18):

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

위 명령은 규칙을 /etc/firewalld/direct.xml에 저장합니다.

cat /etc/firewalld/direct.xml

그런 다음 즉시 적용되도록 규칙을 활성화합니다.

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

이제 RHEL 7 상자에서 웹 서버에 텔넷으로 연결하고 tcpdump를 다시 실행하여 두 시스템 간의 TCP 트래픽을 모니터링할 수 있습니다. 이번에는 라우터 #2의 방화벽을 사용합니다. 활성화되었습니다.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

192.168.0.18에서 웹 서버(포트 80)로 들어오는 연결만 허용하고 192.168.0.0/의 다른 소스로부터의 연결은 차단하려면 어떻게 해야 합니까? 24 네트워크?

웹 서버의 방화벽에 다음 규칙을 추가합니다.

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

이제 192.168.0.18192.168.0.0/24의 다른 시스템에서 웹 서버에 HTTP 요청을 할 수 있습니다. 첫 번째 경우에는 연결이 성공적으로 완료되어야 하지만 두 번째 경우에는 결국 시간 초과됩니다.

그렇게 하려면 다음 명령 중 하나를 사용하면 됩니다.

telnet 10.0.0.20 80
wget 10.0.0.20

풍부한 규칙에 대한 자세한 내용은 Fedora Project Wiki의 Firewalld Rich Language 문서를 확인하시기 바랍니다.

RHEL 7의 네트워크 주소 변환

네트워크 주소 변환(NAT)은 개인 네트워크에 있는 컴퓨터 그룹(그 중 하나일 수도 있음)에 고유한 공용 IP 주소가 할당되는 프로세스입니다. 결과적으로 그들은 네트워크 내부에서는 여전히 자신의 개인 IP 주소로 고유하게 식별되지만 외부에서는 모두 동일하게 "보입니다".