Computer >> 컴퓨터 >  >> 체계 >> Linux

CentOS 8/7에서 FirewallD 시작하기

CentOS 7에서는 방화벽D 트래픽 필터링 규칙을 구성하는 것으로 나타났습니다. iptables 규칙을 관리하는 데 사용하는 것이 좋습니다. CentOS 8은 nftables를 사용하고 있습니다. 표준 iptables 패킷 필터링 서비스 대신 프레임워크를 사용하고 firewalld에서 방화벽 규칙을 구성할 때 실제로는 nftables를 구성하는 것입니다. 이 기사에서는 Linux CentOS 8(및 CentOS 7)을 실행하는 서버에 firewalld를 설치하고 구성하는 방법과 이 방화벽의 주요 개념을 고려할 것입니다.

방화벽D 원치 않는 트래픽으로부터 서버를 보호하는 데 사용되는 방화벽 서비스입니다. 다시 시작하지 않고 동적 방화벽 규칙 관리를 지원합니다. iptables 및 nftables에 대한 인터페이스로 작동합니다. FirewallD는 거의 모든 Linux 배포판에서 사용할 수 있습니다.

방화벽 기본 개념:영역 및 규칙

방화벽 설치 및 구성 전 , 우리는 다른 연결에 대한 신뢰 수준을 결정하는 데 사용되는 영역을 배웁니다. 방화벽에 다른 필터링 규칙을 적용할 수 있습니다. 영역, 미리 정의된 서비스, 프로토콜 또는 포트, 포트 전달 및 풍부한 규칙에 대한 활성 방화벽 옵션을 설정합니다.

방화벽 영역에 적용된 규칙에 따라 영역별로 인바운드 트래픽을 필터링하고 있습니다. 발신자 IP 주소가 영역의 규칙과 일치하면 패킷이 이 영역을 통해 전송됩니다. IP 주소가 서버에 구성된 영역 중 하나와 일치하지 않으면 기본 영역에서 패킷을 처리합니다. firewalld를 설치하면 기본 영역을 public이라고 합니다.

방화벽에는 다른 서비스에 대해 미리 구성된 권한이 있는 일부 영역이 있습니다. 이러한 설정을 사용하거나 고유한 영역을 만들 수 있습니다. 다음은 firewalld(/usr/lib/firewalld/zones/에 있음)를 설치할 때 생성되는 기본 영역 목록입니다.

드롭 최소 신뢰 수준을 가집니다. 모든 인바운드 연결은 응답 없이 차단되고 아웃바운드 연결만 허용됩니다.
차단 이 영역은 이전 영역과 유사하지만 들어오는 요청은 icmp-host-prohibited와 함께 거부됩니다. IPv4 또는 icmp6-adm-prohibited용 메시지 IPv6용 메시지.
공개 신뢰할 수 없는 공용 네트워크에 사용됩니다. 들어오는 연결을 개별적으로 허용할 수 있습니다.
외부 방화벽이 게이트웨이로 사용될 때 외부 네트워크를 나타냅니다. NAT를 마스킹하는 데 사용되므로 내부 네트워크는 비공개로 유지되지만 사용 가능합니다.
내부 외부 구역의 반의어입니다. 호스트의 신뢰 수준이 충분하고 여러 추가 서비스에 액세스할 수 있습니다.
dmz 이 영역은 비무장 지대(DMZ)에 있는 컴퓨터에 사용되며 네트워크에 액세스할 수 없는 격리된 컴퓨터를 포함합니다. 선택한 수신 연결만 허용됩니다.
작업 업무용 컴퓨터를 위한 영역입니다(네트워크에 있는 대부분의 컴퓨터는 신뢰할 수 있음).
홈 네트워크를 의미합니다. 대부분의 다른 컴퓨터를 신뢰할 수 있지만 선택한 수신 연결만 지원됩니다.
신뢰할 수 있음 네트워크의 모든 컴퓨터는 신뢰할 수 있습니다. 책임감 있는 사용이 필요한 가장 개방적인 옵션입니다.

방화벽 영구 및 런타임의 두 가지 규칙 집합을 사용합니다. 런타임 규칙은 서버가 다시 시작될 때까지 활성화됩니다. 기본적으로 방화벽에 추가하는 규칙은 런타임으로 간주됩니다. . 영구 규칙을 추가하려면 –영구를 사용해야 합니다. 깃발. 이 규칙은 서버를 다시 시작한 후에 적용됩니다.

CentOS에서 FirewallD를 설치 및 활성화하는 방법

CentOS 7/8에서 firewalld는 OS 설치 중에 기본적으로 설치됩니다. firewalld를 제거한 후 다시 설치하려면 표준 yum/dnf 패키지 관리자를 사용할 수 있습니다.

# yum install firewalld -y — Centos 7에서
# dnf install firewalld -y — Centos 8에서

CentOS 8/7에서 FirewallD 시작하기

firewalld 데몬이 자동으로 시작되도록 하려면 이를 시작에 추가하십시오:

# systemctl enable firewalld

그리고 시작하세요:

# systemctl start firewalld

서비스 상태 확인:

# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
Docs: man:firewalld(1)
Main PID: 13646 (firewalld)
CGroup: /system.slice/firewalld.service
└─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
systemd[1]: Starting firewalld - dynamic firewall daemon...

또는 다음 명령을 사용하여 수행하십시오.

# firewall-cmd --state

방화벽 cmd 명령은 nftables/iptables에 대한 방화벽 프런트 엔드입니다.

# firewall-cmd --state

running

FirewallD 규칙 관리

기본 FirewallD 규칙

firewalld 규칙을 구성하기 전에 기본적으로 사용되는 영역을 확인해야 합니다.

# firewall-cmd --get-default-zone

CentOS 8/7에서 FirewallD 시작하기

방금 firewalld를 설치했고 아직 구성하지 않았기 때문에 기본 영역은 공개입니다. .

활성 영역을 확인하십시오. 동일한 영역이 하나만 있습니다. 공개:

# firewall-cmd --get-active-zones

public
interfaces: eth0

보시다시피 eth0 인터페이스는 public에 의해 관리됩니다. 구역.

CentOS 네트워크 인터페이스 목록을 다음과 같이 표시할 수 있습니다.

# ip link show
또는:
# nmcli device status

활성 영역의 규칙을 보려면 다음 명령을 사용하십시오.

# firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

이 목록에서 DHCP 클라이언트 및 SSH와 관련된 일반적인 작업이 영역에 추가된 것을 볼 수 있습니다.

가용 영역

모든 영역 목록을 보려면 다음 명령을 실행하십시오.

# firewall-cmd --get-zones

다음 목록이 있습니다:

block dmz drop external home internal public trusted work

특정 영역의 규칙을 보려면 다음 명령에 -zone 플래그를 추가합니다.

# firewall-cmd --zone=home --list-all

home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

모든 영역의 규칙을 볼 수 있습니다.

# firewall-cmd --list-all-zones

기본 영역을 변경하는 방법

기본적으로 모든 네트워크 인터페이스는 공개 영역이지만 다음 명령을 사용하여 모든 영역으로 이동할 수 있습니다.

# firewall-cmd --zone=home —change-interface=eth0

zone= 뒤에 원하는 영역을 지정합니다. 매개변수.

기본 영역을 홈으로 변경하려면 다음 명령을 실행하십시오.

# firewall-cmd --set-default-zone=home

FirewallD에 앱 규칙을 추가하는 방법

앱에 대한 포트를 열려면 서비스를 예외로 추가할 수 있습니다. 사용 가능한 서비스 목록을 표시하는 방법은 다음과 같습니다.

# firewall-cmd --get-services

CentOS 8/7에서 FirewallD 시작하기

출력에는 많은 서비스가 포함됩니다. 서비스에 대한 자세한 정보는 XML에 포함되어 있습니다. 파일. 이 파일은 /usr/lib/firewalld/services.에 있습니다.

예:

# cd /usr/lib/firewalld/services
# cat smtp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Mail (SMTP)</short>
<description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You do not need to enable this if you collect your mail from your ISP's server by POP3 or IMAP, or if you use a tool such as fetchmail. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.</description>
<port protocol="tcp" port="25"/>
</service>

XML 파일에는 서비스 설명, 프로토콜 및 방화벽에서 열릴 포트 번호가 포함되어 있습니다.

CentOS 8/7에서 FirewallD 시작하기

규칙을 추가할 때 –서비스 추가 를 사용할 수 있습니다. 특정 서비스에 대한 방화벽 액세스를 허용하는 매개변수:

# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --add-service=https

규칙을 추가한 후 서비스가 지정된 영역에 추가되었는지 확인할 수 있습니다.

# firewall-cmd --zone=public --list-services

dhcpv6-client http https ssh

규칙을 영구적으로 만들려면 –permanent를 사용하세요. 추가할 때 매개변수입니다.

영역에서 서비스를 제거하려면:

# firewall-cmd --permanent --zone=public --remove-service=http
# firewall-cmd --zone=public --permanent --list-services

dhcpv6-client https ssh test

서비스를 yj 예외에 추가하려면 XML을 만들 수 있습니다. 파일을 직접 작성하고 거기에 데이터를 지정하십시오. 모든 서비스에서 데이터를 복사하고 이름, 설명 및 포트 번호를 변경할 수 있습니다.

smtp.xml 복사 사용자 서비스 디렉토리로:

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

파일에서 서비스 설명을 변경합니다.

CentOS 8/7에서 FirewallD 시작하기

XML 파일도 이름을 바꿔야 합니다(내 서비스를 test ). 그런 다음 firewalld를 다시 시작하고 서비스가 목록에 나타나는지 확인하십시오.

# firewall-cmd --get-services

syslog-tls telnet test tftp

이제 모든 영역에 서비스를 추가할 수 있습니다.

# firewall-cmd --zone=public --add-service=test --permanent
# firewall-cmd --zone=public --permanent --list-services

dhcpv6-client http https ssh test

목록에서 서비스를 찾지 못한 경우 다음 명령을 사용하여 firewalld에서 원하는 포트를 열 수 있습니다.

# firewall-cmd --zone=public —add-port=77/tcpTCP를 엽니다. 포트 77
# firewall-cmd --zone=public —add-port=77/udpUDP를 엽니다. 포트 77
# firewall-cmd --zone=public —add-port=77-88/udpUDP를 엽니다. 포트 범위 77-88
# firewall-cmd --zone=public —list-ports — 허용된 포트 목록을 표시합니다.

ICMP 요청을 차단/허용하려면:

# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

추가된 포트를 제거하려면:
# firewall-cmd --zone=public —remove-port=77/udpUDP에 대한 런타임 규칙을 제거합니다. 포트 77

# firewall-cmd --permanent --zone=public —remove-port=77/udp — 영구 규칙 제거

CentOS 8/7에서 FirewallD 시작하기

FirewallD에서 새 영역을 만드는 방법은 무엇입니까?

자신만의 영역을 만들 수 있습니다(저는 이 영역을 우리라고 부를 것입니다. ):

# firewall-cmd --permanent --new-zone=our

서비스를 만든 후와 같이 새 영역을 만든 후에는 방화벽을 다시 시작해야 합니다. :

# firewall-cmd --reload
# firewall-cmd --get-zones

block dmz drop external home internal our public trusted work

우리의 영역을 사용할 수 있습니다. 서비스를 추가하거나 일부 포트를 열 수 있습니다.

방화벽:IP 주소 차단 및 예외 생성 방법

방화벽 예외에 신뢰할 수 있는 IP 주소를 추가하거나 원치 않는 IP 주소를 차단할 수 있습니다.

IP 주소(예:8.8.8.8)를 추가하려면 방화벽을 사용하여 서버에 예외를 추가하려면 다음 명령을 실행하십시오.

# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.8.8" accept'

영역을 확인하고 IP 주소가 풍부한 규칙의 예외에 추가되었습니다:

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

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh test
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="8.8.8.8" accept

IP 주소를 차단하려면 accept를 바꿉니다. 거부 :

# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="8.8.4.4" reject'
# firewall-cmd --zone=public --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh test
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="8.8.8.8" accept
rule family="ipv4" source address="8.8.4.4" reject

서비스가 특정 IP 주소의 요청만 수락하도록 허용할 수 있습니다.

#firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="https" accept'

서버에 대한 모든 요청을 빠르게 차단하려면 다음과 같은 패닉 명령을 사용하십시오.

# firewall-cmd --panic-on

다음 명령으로 패닉 모드를 비활성화할 수 있습니다.

# firewall-cmd --panic-off

또는 서버를 다시 시작하여.

루트 권한이 있는 로컬 서비스가 생성한 방화벽 규칙을 변경할 수 없도록 firewalld 구성을 차단할 수 있습니다.

# firewall-cmd --lockdown-on

잠금 모드를 비활성화하려면:

# firewall-cmd --lockdown-off

방화벽D로 포트 전달 구성

방화벽에서 포트 전달 규칙을 만들 수 있습니다. TCP 포트 443을 9090으로 전달하려면:

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Windows에서는 netsh를 사용하여 포트 전달을 구성할 수 있습니다.

포트 전달 규칙을 제거하려면:

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090