웹사이트 검색

RHCSA 시리즈: FirewallD 및 Iptables를 사용한 방화벽 필수 요소 및 네트워크 트래픽 제어 - 11부


간단히 말해서, 방화벽은 미리 정의된 규칙 집합(예: 패킷 대상/소스 또는 트래픽 유형)을 기반으로 네트워크에서 들어오고 나가는 트래픽을 제어하는 보안 시스템입니다. .

이 문서에서는 Red Hat Enterprise Linux 7의 기본 동적 방화벽 데몬인 firewalld와 기존 서비스인 iptables 서비스의 기본 사항을 검토합니다. 대부분의 시스템 및 네트워크 관리자가 잘 알고 있는 Linux용 방화벽 서비스이며 RHEL 7에서도 사용할 수 있습니다.

FirewallD와 Iptable의 비교

내부적으로 firewalldiptables 서비스는 모두 동일한 인터페이스(놀랍지도 않게 iptables 명령)를 통해 커널의 netfilter 프레임워크와 통신합니다. . 그러나 iptables 서비스와 달리 방화벽은 기존 연결이 끊어지지 않고 정상적인 시스템 작동 중에 설정을 변경할 수 있습니다.

방화벽은 RHEL 시스템에 기본적으로 설치되어야 하지만 실행되고 있지 않을 수도 있습니다. 다음 명령을 사용하여 확인할 수 있습니다(firewall-config는 사용자 인터페이스 구성 도구입니다).


yum info firewalld firewall-config

그리고,


systemctl status -l firewalld.service

반면, iptables 서비스는 기본적으로 포함되어 있지 않으며, 이를 통해 설치할 수 있습니다.


yum update && yum install iptables-services

두 데몬 모두 일반적인 systemd 명령을 사용하여 시작하고 부팅 시 시작하도록 활성화할 수 있습니다.


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

추가 읽기: 시스템 서비스 관리에 유용한 명령

구성 파일의 경우 iptables 서비스는 /etc/sysconfig/iptables(패키지가 시스템에 설치되어 있지 않으면 존재하지 않음)를 사용합니다. 클러스터 노드로 사용되는 RHEL 7 상자에서 이 파일은 다음과 같습니다.

Firewalld는 /usr/lib/firewalld/etc/firewalld라는 두 디렉터리에 구성을 저장합니다.


ls /usr/lib/firewalld /etc/firewalld

여기저기에 몇 가지 규칙을 추가한 후 이 문서의 뒷부분에서 이러한 구성 파일을 자세히 살펴보겠습니다. 이제 두 도구에 대한 더 많은 정보를 언제든지 찾을 수 있다는 점을 상기시키는 것으로 충분할 것입니다.


man firewalld.conf
man firewall-cmd
man iptables

그 외에도 RHEL 7 시스템에 설치된 패키지에 대한 정보를 얻을 수 있는 여러 소스를 설명하는 필수 명령 및 시스템 문서 검토 – 현재 시리즈의 1부를 살펴보시기 바랍니다. .

Iptables를 사용하여 네트워크 트래픽 제어

IPtables 방화벽 구성 - Linux Foundation Certified Engineer(LFCE) 시리즈의 8부를 참조하여 iptables 내부에 대한 기억을 되새길 수도 있습니다. 더 진행하기 전에. 따라서 우리는 바로 예제로 들어갈 수 있을 것입니다.

예 1: 들어오고 나가는 웹 트래픽을 모두 허용

TCP 포트 80443은 Apache 웹 서버가 일반(HTTP) 및 보안(HTTPS<)을 처리하는 데 사용하는 기본 포트입니다.) 웹 트래픽. 다음과 같이 enp0s3 인터페이스의 두 포트를 통해 들어오고 나가는 웹 트래픽을 허용할 수 있습니다.


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
예 2: 특정 네트워크에서 들어오는 모든(또는 일부) 연결을 차단합니다.

특정 네트워크(예: 192.168.1.0/24)에서 발생하는 모든(또는 일부) 유형의 트래픽을 차단해야 하는 경우가 있을 수 있습니다.


iptables -I INPUT -s 192.168.1.0/24 -j DROP

192.168.1.0/24 네트워크에서 오는 모든 패키지를 삭제하는 반면,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

포트 22를 통한 수신 트래픽만 허용합니다.

예 3: 수신 트래픽을 다른 대상으로 리디렉션

RHEL 7 상자를 소프트웨어 방화벽뿐만 아니라 실제 하드웨어 기반 방화벽으로도 사용하여 두 개의 개별 네트워크 사이에 위치하는 경우 시스템에서 IP 전달이 이미 활성화되어 있어야 합니다. . 그렇지 않은 경우 다음과 같이 /etc/sysctl.conf를 편집하고 net.ipv4.ip_forward 값을 1로 설정해야 합니다.


net.ipv4.ip_forward = 1

그런 다음 변경 사항을 저장하고 텍스트 편집기를 닫은 후 마지막으로 다음 명령을 실행하여 변경 사항을 적용합니다.


sysctl -p /etc/sysctl.conf

예를 들어 IP 192.168.0.10을 사용하여 내부 상자에 프린터를 설치하고 CUPS 서비스가 포트 631에서 수신 대기할 수 있습니다(둘 다 인쇄 서버 및 방화벽에서). 방화벽 반대편에 있는 클라이언트의 인쇄 요청을 전달하려면 다음 iptables 규칙을 추가해야 합니다.


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

iptables는 규칙을 순차적으로 읽으므로 기본 정책이나 이후 규칙이 위 예에 설명된 정책을 재정의하지 않도록 하세요.

방화벽 시작하기D

방화벽에 도입된 변경 사항 중 하나는 영역입니다. 이 개념을 사용하면 네트워크를 사용자가 해당 네트워크 내의 장치 및 트래픽에 적용하기로 결정한 다양한 신뢰 수준으로 분리할 수 있습니다.

활성 영역을 나열하려면:


firewall-cmd --get-active-zones

아래 예에서는 공개 영역이 활성화되어 있고 enp0s3 인터페이스가 자동으로 할당되었습니다. 특정 영역에 대한 모든 정보를 보려면:


firewall-cmd --zone=public --list-all

RHEL 7 보안 가이드에서 영역에 대한 자세한 내용을 읽을 수 있으므로 여기에는 몇 가지 구체적인 예만 나열하겠습니다.

예시 4: 방화벽을 통한 서비스 허용

지원되는 서비스 목록을 얻으려면 다음을 사용하십시오.


firewall-cmd --get-services

방화벽을 통한 httphttps 웹 트래픽을 허용하려면 즉시 적용되고 이후 부팅 시 적용됩니다.


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

code>–zone이 생략되면 기본 영역(firewall-cmd –get-default-zone으로 확인 가능)이 사용됩니다.

규칙을 제거하려면 위 명령에서 add라는 단어를 제거로 바꾸십시오.

예시 5: IP/포트 포워딩

먼저 원하는 영역에 대해 매스커레이딩이 활성화되어 있는지 확인해야 합니다.


firewall-cmd --zone=MyZone --query-masquerade

아래 이미지에서는 외부 영역에 대해 매스커레이딩이 활성화되어 있지만 공개에 대해서는 활성화되어 있지 않음을 확인할 수 있습니다.

공개적으로 가장을 활성화할 수 있습니다.


firewall-cmd --zone=public --add-masquerade

또는 외부에서 가장을 사용하세요. 방화벽을 사용하여 예 3을 복제하기 위해 수행할 작업은 다음과 같습니다.


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

그리고 방화벽을 다시 로드하는 것을 잊지 마세요.

웹 서버와 FTP 서버에서 일반적으로 사용되는 포트를 허용하거나 비활성화하는 방법과 해당 서비스의 기본 포트가 해당 규칙을 변경하는 방법을 설명했던 RHCSA 시리즈의 9부에서 추가 예제를 찾을 수 있습니다. 변경되었습니다. 또한 추가 예제를 보려면 방화벽 위키를 참조할 수도 있습니다.

참조: RHEL 7에서 방화벽을 구성하는 데 유용한 방화벽D 예

결론

이 문서에서는 방화벽이 무엇인지, RHEL 7에서 방화벽을 구현하는 데 사용할 수 있는 서비스는 무엇인지 설명하고 이를 시작하는 데 도움이 될 수 있는 몇 가지 예를 제공했습니다. 일. 의견, 제안, 질문이 있는 경우 아래 양식을 사용하여 언제든지 알려주시기 바랍니다. 미리 감사드립니다!