간단히 말해서, 방화벽은 미리 정의된 규칙 세트(예: 패킷 목적지/출처 또는 트래픽 유형과 같은)에 따라 네트워크에서 들어오고 나가는 트래픽을 제어하는 보안 시스템입니다.

이 기사에서는 firewalld의 기본 사항과 Red Hat Enterprise Linux 7의 기본 동적 방화벽 데몬, 그리고 대부분의 시스템 및 네트워크 관리자가 잘 알고 있는 리눅스의 레거시 방화벽 서비스인 iptables 서비스를 검토할 것입니다. 이 서비스는 RHEL 7에서도 사용할 수 있습니다.
A Comparison Between FirewallD and Iptables
실제로, firewalld와 iptables 서비스는 둘 다 커널의 netfilter 프레임워크와 동일한 인터페이스인 iptables 명령을 통해 통신합니다. 그러나 iptables 서비스와 달리 firewalld는 기존 연결이 손실되지 않고 정상적인 시스템 작동 중에 설정을 변경할 수 있습니다.
Firewalld는 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
그 외에도, 현재 시리즈의 필수 명령어 및 시스템 문서 검토 – 파트 1을 확인하는 것을 기억하세요. 여기에서는 RHEL 7 시스템에 설치된 패키지에 대한 정보를 얻을 수 있는 여러 소스를 설명했어요.
네트워크 트래픽 제어를 위한 Iptables 사용
iptables 방화벽 구성 – 第八部分에서 Linux 재단 인증 엔지니어(LFCE) 시리즈의 내용을 확인하여 iptables의 내부 구조에 대해 기억을 refresh하고자 합니다. 따라서 예제를 통해 dive into할 수 있습니다.
예제 1: 들어오는 그리고 나가는 웹 전화기 허용
TCP 포트 80과 443는 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 네트워크에서 오는 모든 패킷을 drop합니다.,
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
는 포트 22에 대한 들어오는 전화기만 허용합니다.
예제 3: 들어오는 전화기를 다른 목적지로 리다이렉트하기
RHEL 7 기반의 软件 방화벽 terminal로만 사용할 것이 아니라, 실제 하드웨어 기반의 방화벽으로 사용하고자 하는 경우, 두 개의 독립적인 네트워크를 사이에 위치시키는 것이 아닌가요? IP 转发(Forwarding)이 이미 시스템에 활성화 되었는지 여부를 확인해야 합니다. 그렇지 않다면, /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 규칙은 순차적으로 읽기 때문에, 기본 정책 또는 나중의 규칙이 위의 예시에서 보여지는 규칙을 재정의하지 않는지 확인하세요.iptables를 이용하여 방화벽을 시작하기
FirewallD로 introduced하여
One of the changes가 있습니다.firewalld로 인한 변화로 zones가 있습니다. 이러한 개념은 사용자가 네트워크에 대한 의도한 레벨의 신뢰를 표현하기 위해 네트워크를 다른 구역으로 나누는 것입니다.
활성화 된 구역을 列出하기 위해:
# firewall-cmd --get-active-zones
下記 예시에서, public zone이 활성화 되어 있으며, enp0s3 인터페이스가 자동으로 그에 할당되었습니다. particular zone에 대한 모든 정보를 보기 위해:
# firewall-cmd --zone=public --list-all

지oni에 대해 자세히 읽을 수 있는 RHEL 7 Security guide을 참조하시면 좋습니다. 따라서 이곳에서는 일부 예시만 列出시겠습니다.
예시 4: 방화벽 traversal 서비스 허용
지원하는 서비스의 목록을 얻으시려면 다음을 사용하십시오.
# firewall-cmd --get-services

방화벽에서 http 및 https 웹 통신을 즉시 및 subsequenct 부팅 시에 허용하는 것은 다음과 같습니다.
# 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를 省略하면, 기본 지oni (firewall-cmd –get-default-zone를 사용하여 확인 가능)가 사용됩니다.
规칙을 제거하려면 위의 명령에서 add를 remove로 대체하십시오.
예시 5: IP / 포트 转发
まず, 기원하는 지oni에 대한 가면 사용 여부를 찾아봐야 합니다.
# firewall-cmd --zone=MyZone --query-masquerade
아래 그림에서, masquerading가 external zone에 대해 활성화 되었고, public에 대해서는 아니었음을 볼 수 있습니다.

public에 대해 가면 사용을 활성화 할 수 있습니다.
# firewall-cmd --zone=public --add-masquerade
또는 external에서 가면 사용을 할 수 있습니다. Example 3을 firewalld를 사용하여 복제하기 위해서는 다음과 같이 함께 하시면 좋습니다.
# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
firewalld을 다시 로드하면 안 됩니다.
제 9부 에서는 웹 서버와 ftp 서버에서 보통 사용되는 포트를 허용하거나 비활성화하는 방법 및 해당 서비스의 기본 포트가 변경될 때 해당 규칙을 변경하는 방법에 대해 설명했습니다. 또한 추가적인 예제는 firewalld 위키를 참조할 수 있습니다.
관련 글: RHEL 7에서 방화벽 구성을 위한 유용한 FirewallD 예제
결론
본 문서에서는 방화벽이 무엇이며, RHEL 7에서 이를 구현할 수 있는 사용 가능한 서비스, 이 작업을 시작하는 데 도움이 되는 몇 가지 예제에 대해 설명했습니다. 댓글, 제안 또는 질문이 있으시면 아래 양식을 사용하여 알려주시기 바랍니다. 미리 감사드립니다!
Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/