시스템 메일 설정

CentOS 6과 달리 Centos 7은 데이터베이스에 새로운 방화벽(firewalld)이 함께 제공됩니다. 비활성화하고 좋은 오래된 iptables로 교체할 수 있지만 이에 대한 직접적인 전제 조건이 없다면 오래된 것에 의존하기보다는 새로운 것에 익숙해지는 것이 좋습니다. 이는 Windows 10이 Windows 7보다 우수하고 Windows XP가 Windows 7보다 우수하다는 의미는 아닙니다. ;) 이 주제에 대한 좋은 예는 selinux입니다. 처음에는 나를 포함한 거의 모든 사람이 전원을 끄고 약간 꾸짖었다면 이제는 필요하다고 확신하는 경우에만 조언하는 사람이 거의 없습니다. 오히려 많은 사람들이 이미 semanage 사용에 익숙해졌습니다(또는 익숙해지고 있습니다). Firewalld를 즉시 비활성화하지는 않겠지만, 맛이 어떤지 시험해 보겠습니다.

Firewalld는 근본적으로 다른 방화벽이 아닙니다. 이것은 netfilter의 또 다른 추가 기능이므로 iptables에 대한 경험이 있다면 약간의 문제 후에 쉽게 새 도구 사용을 시작할 수 있습니다.

방화벽 시작 및 중지

Firewalld가 실행 중인지 확인해 보겠습니다.

# systemctl 상태 방화벽

여기에 더 많은 정보가 있을 것입니다. 간단히 예(작동함) 또는 아니오라고 대답하려면 다음을 수행할 수 있습니다.

# 방화벽-cmd --state
달리기

네, 작동합니다.

방화벽 중지 중:

# systemctl 방화벽 중지

자동 시작 금지:

# systemctl 방화벽 비활성화

방화벽을 시작합니다:

# systemctl 시작 방화벽

자동 시작 활성화:

# systemctl 방화벽 활성화

방화벽 영역

Firewalld는 영역 개념을 광범위하게 사용합니다. 기본적으로 모든 유효한 영역 목록:

# 방화벽-cmd --get-zones
DMZ 차단 외부 집 내부 공개 신뢰할 수 있는 작업 차단

영역의 목적(물론 조건부):

  • 삭제 - 모든 수신 패킷이 응답 없이 삭제(삭제)됩니다. 나가는 연결만 허용됩니다.
  • 차단 - 들어오는 연결은 icmp-host-prohibited(또는 icmp6-adm-prohibited) 응답과 함께 거부됩니다. 시스템에서 시작한 연결만 허용됩니다.
  • 공공의 - 기본 영역. 이름에서 이 영역은 공용 네트워크에서의 작업을 목표로 한다는 것이 분명합니다. 우리는 이 네트워크를 신뢰하지 않으며 특정 수신 연결만 허용합니다.
  • 외부 - 라우터의 외부 인터페이스 영역(소위 가장). 우리가 정의한 들어오는 연결만 허용됩니다.
  • dmz - DMZ 영역, 특정 수신 연결만 허용됩니다.
  • 직장 - 직장 네트워크 영역. 우리는 여전히 누구도 신뢰하지 않지만 이전만큼은 아닙니다 :) 특정 수신 연결만 허용됩니다.
  • 홈 - 홈 존. 우리는 환경을 신뢰하지만 특정 수신 연결만 허용됩니다.
  • 내부 - 내부 영역. 우리는 환경을 신뢰하지만 특정 수신 연결만 허용됩니다.
  • 신뢰할 수 있음 - 모든 것이 허용됩니다.

모든 활성 영역 목록:

# 방화벽-cmd --get-활성 영역
공공의
인터페이스: enp1s0

네, enp1so 네트워크 인터페이스가 연결된 공개 영역입니다. 다음으로 sshd가 중단될 공개 영역에 새 포트를 추가하겠습니다.

네트워크 인터페이스의 이름(예: enp1s0)을 알면 해당 인터페이스가 속한 영역을 확인할 수 있습니다.

# 방화벽-cmd --get-zone-of-interface=enp1s0
공공의

특정 영역에 속하는 인터페이스를 확인할 수 있습니다.

# 방화벽-cmd --zone=public --list-인터페이스
enp1s0

예: 비표준 포트에서 SSH 허용

기본값인 22/tcp가 아닌 포트 2234/tcp에서 ssh를 통해 서버에 대한 액세스를 허용하겠습니다. 그 과정에서 selinux에 대해 조금 살펴보겠습니다.

먼저, 우리 서버에서 일반적으로 허용되는 것이 무엇인지 살펴보겠습니다.

# 방화벽-cmd --permanent --list-all
공개(기본값)
인터페이스:
출처:
서비스: ssh dhcpv6-client
가장 무도회: 아니요
정방향 포트:
ICMP 블록:
풍부한 규칙:

아직 ipv6를 사용하지 않으므로 해당 항목을 즉시 제거하겠습니다. 방화벽의 규칙:

# 방화벽-cmd --permanent --zone=public --remove-service=dhcpv6-client

포트 2234/tcp에 대한 연결을 영구적으로 허용해 보겠습니다(재부팅 후 손실되지 않도록). (sshd를 여기에 걸어 놓겠습니다):

# 방화벽-cmd --permanent --zone=public --add-port=2234/tcp

규칙을 다시 로드해 보겠습니다.

# 방화벽-cmd --reload

점검 해보자:

# 방화벽-cmd --zone=public --list-ports
2234/TCP

네, 포트가 열려 있습니다. sshd 구성 편집:

# 나노 /etc/ssh/sshd_config
...
포트 2234
...

# systemctl 재시작 sshd.service

그러나 비활성화하지 않았으면 하는 SELinux는 비표준 포트(sshd용 포트 2234/tcp는 비표준)에서 SSH에 연결하는 것을 허용하지 않습니다. 이 단계를 건너뛰고 SELinux 보호가 어떻게 작동하는지 확인하거나 모든 것을 즉시 구성할 수 있습니다.

# yum은 의미를 제공합니다
# yum installpolicycoreutils-python
# semanage 포트 -a -t ssh_port_t -p tcp 2234

이제 모든 것이 정상입니다. 새 포트에서 SSH 연결을 확인합니다. 모든 것이 정상이면 포트 22에 대한 액세스를 닫습니다.

# 방화벽-cmd --permanent --zone=public --remove-service=ssh
# 방화벽-cmd --reload

무슨 일이 일어났는지 봅시다:

# 방화벽-cmd --list-all
공개(기본값, 활성)
인터페이스:
출처:
서비스:
포트: 2234/tcp
가장 무도회: 아니요
정방향 포트:
ICMP 블록:
풍부한 규칙:

그게 다야.

다양한 유용한 명령:

나가고 들어오는 모든 패킷에 대해 차단 모드를 활성화합니다.

# 방화벽-cmd --panic-on

나가고 들어오는 모든 패킷에 대해 차단 모드를 비활성화합니다.

# 방화벽-cmd --panic-off

모든 나가고 들어오는 패킷에 대한 차단 모드가 활성화되어 있는지 확인하십시오.

# 방화벽-cmd --query-panic

현재 연결을 끊지 않고 방화벽 규칙을 다시 로드합니다.

# 방화벽-cmd --reload

방화벽 규칙을 다시 로드하고 현재 연결을 재설정합니다(문제가 있는 경우에만 권장됨):

# 방화벽-cmd --완전-재로드

영역에 네트워크 인터페이스를 추가합니다.

# 방화벽-cmd --zone=public --add-interface=em1

영역에 네트워크 인터페이스를 추가합니다(방화벽 재부팅 후 저장됨).

# 방화벽-cmd --zone=public --permanent --add-interface=em1

이 인터페이스가 속한 영역을 ifcfg-enp1s0 구성에서 지정할 수 있습니다. 이렇게 하려면 /etc/sysconfig/network-scripts/ifcfg-enp1s0 파일에 ZONE=work를 추가합니다. ZONE 매개변수가 지정되지 않은 경우 기본 영역이 할당됩니다(/etc/firewalld/firewalld.conf 파일의 DefaultZone 매개변수).

포트 범위 허용:

# 방화벽-cmd --zone=public --add-port=5059-5061/udp

가장 무도회 (가장 무도회, 일명 nat, 일명...):

상태 확인:

# 방화벽-cmd --zone=external --query-masquerade

켜다:

# 방화벽-cmd --zone=external --add-masquerade

예를 들어 공개 영역에 대해 가장 무도회를 활성화할 수 있다는 점에 유의해야 합니다.

포트 22에서 들어오는 메시지를 다른 호스트로 리디렉션합니다.

# 방화벽-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

대상 포트(22에서 192.168.1.23:2055로)를 변경하여 포트 22에서 들어오는 메시지를 다른 호스트로 리디렉션합니다.

# 방화벽-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

여기서 마치겠습니다 왜냐면... 예는 무한히 많을 수 있습니다. 개인적으로 방화벽 혁신에 대한 내 의견이 완전히 형성되지 않았다는 점을 덧붙이겠습니다. 왜냐하면... 구문에 익숙해지는 데 오랜 시간이 걸리며 동물원에 다른 OS Linux가 있는 경우 우선 습관에 문제가 있을 수 있습니다. 그러나 방화벽을 마스터하면 시야가 넓어질 것입니다. 대개 노력할 가치가 있습니다.

방화벽의 이점

가장 큰 장점은 iptables 체인에서 약간 추상화되어 있다는 점이며, 포트 포워딩을 활성화하려면 FORWARD 외에 PREROUTING이나 POSTROUTING을 생각할 필요가 없습니다. "제조업체의 IPtables API"와 같은 정보가 제공됩니다. nat를 활성화한 경우 규칙이 정확히 어디에(현재 규칙의 일련 번호에 따라) 있는지는 중요하지 않습니다. 간단히 표시하면 eth0에서 nat를 활성화할 수 있습니다. 말도 안되는 소리는 아닙니다.) 정리가 필요한 경우 편리할 수 있습니다. 웹 인터페이스방화벽 관리.

상태(예: nat 활성화 여부!)를 확인할 수 있습니다. 예를 들어 스크립트, 애플리케이션 로직에서도 이를 사용하세요. iptables에서 상태 요청(on/off)을 생성하는 방법을 모르겠습니다. 물론 iptables -L -t nat | grep "...", 그러나 이는 "firewall-cmd --zone=external --query-masquerade"를 실행하는 것과 약간 다르다는 점을 인정해야 합니다. 예를 들어 CentOS를 사용하는 수백 개의 VM이 있는데, WAN 인터페이스 이름 등이 약간 다를 수 있습니다. 따라서 다양한 컴퓨터에서 예상되는 결과를 제공하는 범용 cmdlet이 있습니다.

방화벽의 단점

내 생각에 가장 큰 단점은 익숙해지면 Debian, Ubuntu, CentOS 및 일반적으로 모든 곳에 있는 "순수한" iptables에 익숙해지기 시작한다는 것입니다. 그건 그렇고, Mikrotik에서는 구문과 체인 유형이 iptables와 유사합니다. 물론 이것은 모든 사람에게 해당되는 것은 아닙니다. 그리고 전문가는 무엇을 가지고 일할지 신경 쓰지 않고 특정한 조건이 있으면 자신이 가지고 있는 것을 가지고 일할 것입니다. 하지만... 저는 퇴행적인 사람이고 (명백한 이점이 없는 경우) 각 주요 플레이어가 자체적으로 구현하는 신제품에 필사적으로 저항합니다. RedHat은 점점 더 많은 새로운 전문가가 방화벽의 에이스가 됨으로써 이익을 얻을 것입니다.

그리고 방화벽으로 전환한 경우 순수한 iptables 구문은 방해가 될 뿐입니다. 표준 방화벽 구문을 사용하지 않고 규칙을 변경/추가하기 시작하면 혼란이 발생하거나 방화벽이 단순히 무너질 것입니다.

나는 방화벽을 원하지 않는다! 내 오래된 iptables를 돌려주세요!

여전히 과거로 돌아가 방화벽을 iptables로 교체하고 싶다면 전혀 어렵지 않습니다:

이곳은 초보자를 위한 곳이 아닙니다:

# systemctl 방화벽 비활성화
# systemctl 방화벽 중지

좋은 오래된 iptables를 설치하십시오:

# 냠 설치 iptables-서비스

방화벽을 실행합니다:

# systemctl 시작 iptables
# systemctl start ip6tables

켜져 있으면 자동 시작:

# systemctl iptables 활성화
# systemctl ip6tables 활성화

저장하려면 iptables 규칙재부팅 후:

# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables

또는 구식 방식:

# 서비스 iptables 저장

현재 규칙은 다음 파일에 있습니다.
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

iptables 다시 시작(예: 변경 후):

# systemctl 재시작 iptables.service


CentoOS 7부터 트래픽 필터링 규칙을 구성하는 새로운 도구가 나타났습니다. 방화벽. 제어하는 데 사용하는 것이 좋습니다. iptables 규칙. CentOS 8에서는 이제 표준 iptables 필터링 패키지 대신 nftables 프레임워크가 사용되며, Firewalld를 통해 방화벽 규칙을 구성하면 실제로 nftables가 구성됩니다. 이 기사에서는 CentOS 8(CentOS 7도 동일)을 실행하는 서버에 방화벽을 설치하고 기본 개념을 구성하는 방법을 살펴보겠습니다.


방화벽D– 동적 규칙 관리(다시 시작하지 않음) 및 영구 방화벽 규칙 구현을 지원하여 원치 않는 트래픽으로부터 서버를 보호하는 방화벽입니다. nftables의 인터페이스로 작동합니다. FirewallD는 거의 모든 Linux 배포판에서 사용할 수 있습니다.

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

설치 및 구성을 시작하기 전에 방화벽에서는 다양한 연결에 대한 신뢰 수준을 정의하는 데 사용되는 영역 개념을 소개합니다. 다양한 구역의 경우 방화벽다양한 필터링 규칙을 적용하고 사전 정의된 서비스, 프로토콜 및 포트, 포트 전달 및 풍부한 규칙의 형태로 활성 방화벽 옵션을 지정할 수 있습니다.

방화벽필터 들어오는 트래픽구역에 적용되는 규칙에 따라 구역별로. 만약에 IP- 요청 발신자의 주소가 특정 구역의 규칙과 일치하면 패킷이 이 구역을 통해 전송됩니다. 주소가 서버에 구성된 영역과 일치하지 않으면 패킷은 기본 영역에서 처리됩니다. 설치시 방화벽기본 영역이 호출됩니다. 공공의.

Firewalld에는 다양한 서비스에 대한 권한이 사전 구성된 영역이 있습니다. 이러한 설정을 사용하거나 자신만의 영역을 만들 수 있습니다. Firewalld를 설치할 때 생성되는 기본 영역 목록(/usr/lib/firewalld/zones/ 디렉터리에 저장됨):

떨어지다 최소 레벨신뢰하다. 들어오는 모든 연결은 응답 없이 차단되고 나가는 연결만 허용됩니다.
차단하다 영역은 이전 영역과 유사하지만 들어오는 요청이 거부되면 Ipv4의 경우 icmp-host-prohibited 또는 Ipv6의 경우 icmp6-adm-prohibited 메시지가 전송됩니다.
공공의 신뢰할 수 없는 공개 네트워크를 나타냅니다. 선택한 수신 연결을 개별적으로 허용할 수 있습니다.
외부 방화벽을 게이트웨이로 사용할 때 외부 네트워크. NAT 위장용으로 구성되어 내부 네트워크가 비공개로 유지되지만 액세스 가능합니다.
내부 외부 구역의 반대말. 호스트는 충분한 수준의 신뢰를 갖고 있으며 다양한 추가 서비스를 사용할 수 있습니다.
DMZ DMZ에 있는 컴퓨터(나머지 네트워크에 액세스할 수 없는 격리된 컴퓨터)에 사용됩니다. 특정 수신 연결만 허용됩니다.
일하다 업무용 컴퓨터 영역(네트워크상의 대부분의 컴퓨터는 신뢰할 수 있음)
홈 네트워크. 대부분의 PC는 신뢰할 수 있지만 특정 수신 연결만 지원됩니다.
신뢰할 수 있는 네트워크의 모든 시스템을 신뢰하십시오. 무엇보다도 가장 개방적이다 사용 가능한 옵션, 의식적인 사용이 필요합니다.

안에 방화벽영구 및 임시의 두 가지 규칙 세트가 사용됩니다. 임시 규칙은 서버가 재부팅될 때까지 작동합니다. 기본적으로 규칙을 추가할 때 방화벽, 규칙은 일시적인 것으로 간주됩니다( 실행 시간). 영구적으로 규칙을 추가하려면 플래그를 사용해야 합니다. - 영구적인. 이러한 규칙은 서버가 재부팅된 후에 적용됩니다.

CentOS에 방화벽 설치 및 활성화

CentOS 7/8에서는 기본적으로 OS와 함께 Firewalld가 설치됩니다. 방화벽을 제거하고 방화벽을 설치하려는 경우 표준 /dnf 관리자를 사용할 수 있습니다.

# yum install Firewalld -y - Centos 7용
# dnf install Firewalld -y - Centos 8용

악마에게 방화벽서버가 시작될 때 자동으로 시작되면 다음에 추가해야 합니다.

# systemctl 방화벽 활성화

그리고 다음을 실행하세요:

# systemctl 시작 방화벽

서비스 상태 확인:

# systemctl 상태 방화벽

● Firewalld.service - Firewalld - 동적 방화벽 데몬 로드됨: 로드됨(/usr/lib/systemd/system/firewalld.service; 활성화됨, 공급업체 사전 설정: 활성화됨) 활성: 2019-10-14 14:54 이후 활성(실행 중) :40 +06; 22초 전 문서: man:firewalld(1) 기본 PID: 13646(firewalld) C그룹: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 10월 14일 14:54:40 server.vpn.ru systemd: Firewalld 시작 - 동적 방화벽 데몬... 10월 14일 14:54:40 server.vpn.ru systemd: Firewalld 시작 - 동적 방화벽 데몬.

또는 다음 명령을 사용하세요.

# 방화벽-cmd --state

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

# 방화벽-cmd --state

방화벽 규칙 작업

기본 규칙:

방화벽 규칙을 설정하기 전에 기본적으로 사용되는 영역을 확인해야 합니다.

# 방화벽-cmd --get-default-zone

방금 Firewalld를 설치하고 아직 구성하지 않았으므로 기본 영역이 있습니다. 공공의.

활성 영역을 확인해 보겠습니다. 또한 하나의 공개가 있습니다.

# 방화벽-cmd --get-활성 영역

공용 인터페이스: eth0

보시다시피 eth0 네트워크 인터페이스는 영역에 의해 제어됩니다. 공공의.

핵심 규칙을 보려면 다음을 입력하십시오.

# 방화벽-cmd --list-all

공개(활성) 대상: 기본 icmp-block-inversion: 인터페이스 없음: eth0 소스: 서비스: dhcpv6-client ssh 포트: 프로토콜: 가장 무도회: 전달 포트 없음: 소스 포트: icmp-blocks: 풍부한 규칙:

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

사용 가능한 영역

모든 영역 목록을 보려면 다음 명령을 실행해야 합니다.

# 방화벽-cmd --get-zones

나는 다음 목록을 얻었습니다.

DMZ 삭제 외부 가정 내부 공개 신뢰할 수 있는 작업 차단

특정 구역의 규칙을 확인하려면 - 구역 플래그를 추가해야 합니다.

# 방화벽-cmd --zone=home --list-all

홈 대상: 기본 icmp-block-inversion: 인터페이스 없음: 소스: 서비스: dhcpv6-client mdns samba-client ssh 포트: 프로토콜: 가장 무도회: 전달 포트 없음: 소스 포트: icmp-blocks: 풍부한 규칙:

모든 영역의 규칙은 다음 명령으로 볼 수 있습니다.

# 방화벽-cmd --list-all-zones

구역이 많을 수 있으므로 목록이 상당히 클 것입니다.

기본 영역을 변경합니다.

기본적으로 모든 네트워크 인터페이스는 영역에 있습니다. 공공의, 그러나 다음 명령을 사용하여 모든 영역으로 전송할 수 있습니다.

# 방화벽-cmd --zone=home -change-interface=eth0

매개변수 이후 --zone=원하는 구역을 표시합니다.

기본 영역을 변경하려면 다음 명령을 사용해야 합니다.

# 방화벽-cmd --set-default-zone=home

애플리케이션 규칙 추가

애플리케이션에 대한 포트를 열려면 예외에 서비스를 추가할 수 있습니다. 사용 가능한 서비스 목록을 표시합니다.

출력에는 많은 수의 서비스가 포함됩니다. 서비스에 대한 자세한 정보는 해당 서비스에 포함되어 있습니다. xml파일. 이 파일은 디렉토리에 있습니다 /usr/lib/방화벽/서비스.

예를 들어:

# cd /usr/lib/firewalld/services

메일(SMTP) 이 옵션을 사용하면 들어오는 SMTP 메일 배달이 허용됩니다. 원격 호스트가 메일을 배달하기 위해 시스템에 직접 연결하도록 허용해야 하는 경우 이 옵션을 활성화합니다. POP3 또는 IMAP을 통해 ISP 서버에서 메일을 수집하거나 fetchmail과 같은 도구를 사용하는 경우에는 이 기능을 활성화할 필요가 없습니다. 잘못 구성된 SMTP 서버에서는 원격 시스템이 서버를 사용하여 메일을 보낼 수 있습니다. 스팸.

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

규칙을 추가할 때 매개변수를 사용할 수 있습니다. --서비스 추가특정 서비스에 대한 액세스를 열려면:

# 방화벽-cmd --zone=public --add-service=http

# 방화벽-cmd --zone=public --add-service=https

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

# 방화벽-cmd --zone=public --list-services

Dhcpv6-클라이언트 http https ssh

이러한 규칙을 영구적으로 만들려면 추가할 때 매개변수를 추가해야 합니다. -영구적인.

영역에서 서비스를 제거하려면 다음 안내를 따르세요.

# 방화벽-cmd --permanent --zone=public --remove-service=http

Dhcpv6-클라이언트 https SSH 테스트

서비스를 예외에 추가하려면 파일을 생성하면 됩니다. xml직접 작성해 보세요. 모든 서비스에서 데이터를 복사하고 이름, 설명 및 포트 번호를 변경할 수 있습니다.

파일을 복사해보자 smtp.xml사용자 서비스 작업을 위한 디렉토리:

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

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

xml 파일 자체도 서비스 이름에 따라 이름을 바꿔야 합니다. 그런 다음 방화벽을 다시 시작하고 우리 서비스가 목록에 있는지 확인해야 합니다.

서비스에 전화했어요 시험그리고 그것은 목록에 나타났습니다:

Syslog-tls 텔넷 테스트 tftp

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

# 방화벽-cmd --zone=public --add-service=test --permanent

# 방화벽-cmd --zone=public --permanent --list-services

Dhcpv6-클라이언트 http https ssh 테스트

목록에서 필요한 서비스를 찾지 못한 경우 다음 명령을 사용하여 방화벽에서 필요한 포트를 열 수 있습니다.

# Firewall-cmd --zone=public -add-port=77/tcp - 포트 77 열기 TCP
# Firewall-cmd --zone=public -add-port=77/udp - 포트 77 열기 UDP
# Firewall-cmd --zone=public -add-port=77-88/udp - 개방 포트 범위 77-88 UDP
# Firewall-cmd --zone=public -list-ports - 허용된 포트 목록을 확인하세요.

ICMP 응답 차단/허용:

# 방화벽-cmd --zone=public --add-icmp-block=echo-reply
# 방화벽-cmd --zone= 공개 --remove-icmp-block=echo-reply

추가된 포트 ​​제거:

# Firewall-cmd --zone=public -remove-port=77/udp - 임시 규칙 제거 77 UDP

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

자신만의 영역 추가

당신은 자신만의 영역을 만들 수 있습니다(나는 그것을 부를 것입니다) 우리의):

# 방화벽-cmd --permanent --new-zone=our

새 영역을 생성한 후, 서비스를 생성한 후에는 재부팅이 필요합니다. 방화벽:

# 방화벽-cmd --reload

# 방화벽-cmd --get-zones

DMZ 차단 외부 집 내부 공개 신뢰할 수 있는 작업 차단

우리의사용 가능. 서비스를 추가하거나 특정 포트를 열 수 있습니다.

Firewalld: 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풍부한 규칙의 예외에 추가됨:

공개(활성) 대상: 기본 icmp-block-inversion: 인터페이스 없음: eth0 소스: 서비스: dhcpv6-client http https ssh 테스트 포트: 프로토콜: 가장 무도회: 전달 포트 없음: 소스 포트: icmp-blocks: 풍부한 규칙: 규칙 패밀리="ipv4" 소스 주소="8.8.8.8" 수락

차단하려면 IP, 교체해야 함 수용하다~에 거부하다:

# Firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" 소스 주소="8.8.4.4" 거부"

# 방화벽-cmd --zone=public --list-all

공개(활성) 대상: 기본 icmp-block-inversion: 인터페이스 없음: eth0 소스: 서비스: dhcpv6-client http https ssh 테스트 포트: 프로토콜: 가장 무도회: 전달 포트 없음: 소스 포트: icmp-blocks: 풍부한 규칙: 규칙 패밀리="ipv4" 소스 주소="8.8.8.8" 수락 규칙 패밀리="ipv4" 소스 주소="8.8.4.4" 거부

특정 IP 주소의 요청에 대해서만 특정 서비스를 허용할 수 있습니다.

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" 소스 주소="10.10.1.0/24" 서비스 이름="https" 수락"

서버에 대한 모든 요청을 긴급하게 차단해야 하는 경우에는 다음 명령을 사용하십시오.

# 방화벽-cmd --panic-on

다음 명령을 사용하여 패닉 모드를 비활성화할 수 있습니다.

# 방화벽-cmd --panic-off

아니면 서버를 재부팅하면 됩니다.

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

# 방화벽-cmd --lockdown-on

차단 모드를 비활성화합니다.

# 방화벽-cmd --lockdown-off

방화벽의 포트 전달

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

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

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

# 방화벽-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090

FirewallD는 CentOS 7 서버에서 기본적으로 사용 가능한 방화벽 관리 도구로, 기본적으로 IPTables를 둘러싼 래퍼이며 그래픽 구성 도구인 Firewall-config 및 방화벽 구성 도구와 함께 제공됩니다. 명령줄방화벽-cmd. IPtables 서비스를 사용하면 모든 변경 사항에 대해 기존 규칙을 삭제하고 ` 파일에 새 규칙을 만들어야 합니다. /etc/sysconfig/iptables`, 그리고 방화벽을 사용하면 차이점만 적용됩니다.

방화벽D 영역

FirewallD는 Iptables의 규칙과 체인 대신 서비스와 영역을 사용합니다. 기본적으로 다음 영역을 사용할 수 있습니다.

  • 떨어지다– 들어오는 모든 네트워크 패킷을 응답 없이 삭제하고 나가는 패킷만 삭제합니다. 네트워크 연결사용 가능.
  • 차단하다– icmp-host-prohibited 메시지와 함께 들어오는 모든 네트워크 패킷을 거부하고 나가는 네트워크 연결만 허용합니다.
  • 공공의– 공공 장소에서는 선택된 수신 연결만 허용됩니다.
  • 외부– 가장을 사용하는 외부 네트워크의 경우 선택된 수신 연결만 허용됩니다.
  • DMZ– 비무장지대 DMZ, 공개적으로 접근 가능 제한된 액세스내부 네트워크에 대해서는 선택된 수신 연결만 허용됩니다.
  • 일하다
  • – 홈 영역에 있는 컴퓨터의 경우 선택된 수신 연결만 허용됩니다.
  • 내부– 내부 네트워크에 있는 컴퓨터의 경우 선택된 수신 연결만 허용됩니다.
  • 신뢰할 수 있는– 모든 네트워크 연결이 허용됩니다.

사용 가능한 모든 영역 목록을 얻으려면 다음을 수행하십시오.

# Firewall-cmd --get-zones 작업 삭제 내부 외부 신뢰할 수 있는 홈 dmz 공개 블록

기본 영역 목록을 보려면:

# 방화벽-cmd --get-default-zone 공개

기본 영역을 변경하려면:

방화벽 서비스

FirewallD 서비스는 방화벽에 대한 서비스 항목 정보가 포함된 XML 구성 파일입니다. 사용 가능한 모든 서비스 목록을 얻으려면:

# Firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp 고가용성 http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy Proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh 시너지 syslog syslog-tls telnet tftp tftp-client Tinc Tor-socks 전송 클라이언트 vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

XML 구성 파일은 디렉터리에 저장됩니다. /usr/lib/방화벽/서비스/그리고 /etc/firewalld/services/.

FirewallD를 사용하여 방화벽 설정

예를 들어 웹 서버, 포트 7022의 SSH 및 메일 서버를 실행하는 경우 FirewallD로 방화벽을 구성하는 방법은 다음과 같습니다.

먼저 DMZ의 기본 영역을 설정하겠습니다.

# 방화벽-cmd --set-default-zone=dmz # 방화벽-cmd --get-default-zone dmz

DMZ에서 HTTP 및 HTTPS에 대한 영구 서비스 규칙을 추가하려면 다음 명령을 실행합니다.

# 방화벽-cmd --zone=dmz --add-service=http --permanent # 방화벽-cmd --zone=dmz --add-service=https --permanent

포트 25(SMTP) 및 포트 465(SMTPS)를 엽니다.

Firewall-cmd --zone=dmz --add-service=smtp --영구적인 Firewall-cmd --zone=dmz --add-service=smtps --영구적인

개방형, IMAP, IMAPS, POP3 및 POP3S 포트:

Firewall-cmd --zone=dmz --add-service=imap --영구 방화벽-cmd --zone=dmz --add-service=imaps --영구 방화벽-cmd --zone=dmz --add-service= pop3 --영구적인 방화벽-cmd --zone=dmz --add-service=pop3s --영구적인

SSH 포트가 7022로 변경되었으므로 SSH 서비스(포트 22)를 제거하고 포트 7022를 엽니다.

Firewall-cmd --remove-service=ssh --영구적인 방화벽-cmd --add-port=7022/tcp --영구적인

변경 사항을 구현하려면 방화벽을 다시 시작해야 합니다.

방화벽-cmd --reload

마지막으로 규칙을 나열할 수 있습니다.

그러나 iptables 명령은 복잡하기 때문에 많은 사용자가 모든 옵션과 언제 사용해야 하는지 기억하는 데 어려움을 겪습니다. 따라서 배포 개발자는 iptables를 통해 자체 추가 기능을 만들어 방화벽 관리를 단순화합니다. CentOS에는 Firewalld라는 iptable 관리용 추가 기능이 있습니다.

Firewalld는 iptables와 비교하여 몇 가지 중요한 차이점이 있습니다. 여기서 네트워크 접근 제어는 체인이나 룰이 아닌 존(Zone)과 서비스 수준에서 이루어집니다. 또한 실행 중인 세션을 중단하지 않고 규칙이 동적으로 업데이트됩니다. 이 문서에서는 Firewalld를 예로 들어 방화벽 CentOS 7을 설정하는 방법을 살펴보겠습니다.

위에서 말했듯이 Firewalld는 규칙 체인이 아닌 영역에서 작동합니다. 각 네트워크 인터페이스에 특정 영역을 할당할 수 있습니다. 영역은 해당 네트워크 인터페이스에 적용되는 규칙, 제한 사항 및 권한 집합입니다. 인터페이스당 하나의 영역만 선택할 수 있습니다. 개발자는 여러 사전 설정 영역을 만들었습니다.

  • 떨어지다- 들어오는 패킷은 모두 차단하고 나가는 패킷만 허용
  • 차단하다- 이전 옵션과 달리 패키지를 보낸 사람에게 패키지를 차단하라는 메시지가 전송됩니다.
  • 공공의- 들어오는 연결은 ssh 및 dhclient에 대해서만 지원됩니다.
  • 외부- 내부 네트워크를 숨기기 위해 NAT를 지원합니다.
  • 내부- ssh, samba, mdns 및 dhcp 서비스가 허용됩니다.
  • DMZ- 네트워크에 액세스할 수 없는 격리된 서버에 사용됩니다. SSH를 통한 연결만 허용됩니다.
  • 일하다- SSH 및 DHCP 서비스가 허용됩니다.
  • - 내부와 유사합니다.
  • 신뢰할 수 있는- 모든 것이 허용됩니다.

따라서 서비스를 허용하거나 거부하려면 현재 영역에서 해당 서비스를 추가 또는 제거하거나 인터페이스 영역을 허용되는 영역으로 변경하면 됩니다. iptables의 패킷에 대한 기본 작업 정책을 사용하여 비유를 그릴 수 있습니다. 신뢰할 수 있는 영역에는 ACCEPT 정책이 있고 모든 연결을 허용하고, 차단 영역에는 모든 연결을 거부하는 DENY 정책이 있으며, 다른 모든 영역은 차단 영역의 후속 영역으로 간주될 수 있으며, 일부에 대한 네트워크 연결을 허용하기 위한 사전 정의된 규칙이 이미 있습니다. 서비스.

Firewalld에는 두 가지 유형의 구성도 있습니다.

  • 실행 시간- 재부팅할 때까지만 유효하며 달리 명시적으로 명시되지 않은 모든 변경 사항은 이 구성에 적용됩니다.
  • 영구적인- 재부팅 후에도 작동하는 영구 설정입니다.

이제 필요한 모든 것을 알았으므로 Firewalld-cmd 유틸리티로 넘어가겠습니다.

Firewall-cmd 구문 및 옵션

Firewall-cmd 콘솔 유틸리티를 사용하거나 다음에서 방화벽 설정을 관리할 수 있습니다. 그래픽 인터페이스. CentOS는 서버에서 가장 자주 사용되므로 터미널에서 작업해야 합니다. 유틸리티의 구문을 살펴보겠습니다.

방화벽 cmd 옵션

영역을 관리하는 데는 다음 구문이 사용됩니다.

Firewall-cmd --configuration --zone=옵션 영역

구성으로 --permanent 옵션을 지정하여 재부팅 후 변경 사항을 저장하거나 아무 것도 지정하지 않으면 변경 사항은 재부팅할 때까지만 유효합니다. 영역에는 원하는 영역의 이름을 사용합니다. 유틸리티 옵션을 살펴보겠습니다.

  • --상태- 방화벽 상태를 표시합니다.
  • --다시 로드- 영구 구성에서 규칙을 다시 로드합니다.
  • --완전 새로고침- 모든 연결이 중단된 규칙의 하드 재부팅
  • --런타임에서 영구적으로- 런타임 구성 설정을 영구 구성으로 전송합니다.
  • --영구적인- 영구 구성을 사용합니다.
  • --get-기본 영역- 기본 영역을 표시합니다.
  • --set-기본 영역- 기본 영역을 설정합니다.
  • --get-활성 영역- 활성 영역을 표시합니다.
  • --get-zones- 사용 가능한 모든 영역을 표시합니다.
  • --get-서비스- 미리 정의된 서비스를 표시합니다.
  • --목록-모든 영역- 모든 구역의 구성을 표시합니다.
  • --새로운 영역- 새 영역을 생성합니다.
  • --delete-zone- 영역을 삭제합니다.
  • --목록-모두- 선택한 영역에서 추가된 모든 항목을 표시합니다.
  • --목록 서비스- 해당 영역에 추가된 모든 서비스를 표시합니다.
  • --서비스 추가- 영역에 서비스를 추가합니다.
  • --제거 서비스- 해당 영역에서 서비스를 제거합니다.
  • --목록 포트- 영역에 디스플레이 포트가 추가되었습니다.
  • --추가 포트- 영역에 포트를 추가합니다.
  • --제거 포트- 영역에서 포트를 제거합니다.
  • --쿼리 포트- 포트가 영역에 추가되었는지 여부를 표시합니다.
  • --목록 프로토콜- 영역에 추가된 프로토콜을 표시합니다.
  • --추가 프로토콜- 영역에 프로토콜을 추가합니다.
  • --제거 프로토콜- 영역에서 프로토콜을 삭제합니다.
  • --목록-소스-포트- 영역에 추가된 소스 포트를 표시합니다.
  • --추가 소스 포트- 영역에 소스 포트를 추가합니다.
  • --제거-소스-포트- 영역에서 소스 포트를 제거합니다.
  • --목록-icmp-블록- ICMP 차단 목록을 표시합니다.
  • --추가-icmp-블록- ICMP 차단을 추가합니다.
  • --추가-icmp-블록- ICMP 차단을 제거합니다.
  • --추가-앞으로-포트- NAT로의 리디렉션을 위한 포트를 추가합니다.
  • --제거-앞으로-포트- NAT로 리디렉션하기 위한 포트를 제거합니다.
  • --추가-가장 무도회- NAT를 활성화합니다.
  • --제거-가장- NAT를 제거합니다.

이것이 유틸리티의 모든 옵션은 아니지만 이 기사에서는 이것으로 충분합니다.

CentOS 7에서 방화벽 설정

1. 방화벽 상태

첫 번째 단계는 방화벽의 상태를 살펴보는 것입니다. 이렇게 하려면 다음을 실행하세요.

sudo systemctl 상태 방화벽

Firewalld 서비스가 비활성화된 경우 이를 활성화해야 합니다.

sudo systemctl 방화벽 시작
sudo systemctl 방화벽 활성화

이제 Firewall-cmd 명령을 사용하여 Firewalld가 실행되고 있는지 확인해야 합니다.

sudo 방화벽-cmd --state

프로그램이 실행 중이고 모든 것이 정상이면 "실행 중" 메시지를 받게 됩니다.

2. 구역 관리

이미 알고 있듯이 영역은 네트워크 연결을 관리하는 주요 도구입니다. 기본 영역을 보려면 다음을 실행하세요.

sudo 방화벽-cmd --get-default-zone

내 경우에는 이것이 공개 영역이다. --set-default-zone 옵션을 사용하여 현재 영역을 변경할 수 있습니다.

sudo 방화벽-cmd --set-default-zone=public

모든 사람이 어떤 영역을 사용하고 있는지 확인하려면 네트워크 인터페이스, 하다:

sudo 방화벽-cmd --get-active-zones

목록에는 할당된 영역과 인터페이스가 표시됩니다. 이 명령을 사용하면 특정 영역에 대한 구성을 볼 수 있습니다. 예를 들어 공개 영역의 경우:

3. 서비스 설정

다음 명령을 사용하여 사전 정의된 모든 서비스를 볼 수 있습니다.

sudo 방화벽-cmd --get-services

이 명령은 사용 가능한 모든 서비스를 나열하며, 해당 서비스 중 하나를 영역에 추가하여 허용할 수 있습니다. 예를 들어 http:에 대한 연결을 허용해 보겠습니다.

sudo 방화벽-cmd --zone=public --add-service=http --permanent

이 서비스를 제거하려면 다음을 실행하세요.

sudo 방화벽-cmd --zone=public --remove-service=http --permanent

두 경우 모두 --permanent 옵션을 사용하여 재부팅 후에도 구성이 유지되도록 했습니다. 변경 후에는 규칙을 업데이트해야 합니다.

sudo 방화벽-cmd --reload

그런 다음 영역 구성을 보면 추가된 서비스가 표시됩니다.

sudo 방화벽-cmd --zone=public --list-all

4. Firewalld에서 포트를 여는 방법

필요한 프로그램에 대한 서비스가 없는 경우 해당 포트를 수동으로 열 수 있습니다. 이렇게 하려면 원하는 포트를 영역에 추가하기만 하면 됩니다. 예를 들어 포트 8083은 다음과 같습니다.

sudo Firewall-cmd --zone=public --add-port=8083/tcp --permanent

영역에서 이 포트를 제거하려면 다음을 실행하세요.

sudo 방화벽-cmd --zone=public --remove-port=8083/tcp --permanent

서비스와 마찬가지로 centos 7 방화벽에서 포트를 열려면 방화벽을 다시 시작해야 합니다.

sudo 방화벽-cmd --reload

5. 방화벽 포트 포워딩

Firewalld의 포트 검색은 iptables보다 구성하기가 훨씬 쉽습니다. 예를 들어 포트 2223에서 포트 22로 트래픽을 리디렉션해야 하는 경우 해당 영역에 리디렉션을 추가하기만 하면 됩니다.

sudo Firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22

여기서 리디렉션은 현재 시스템에서만 수행됩니다. NAT 네트워크를 설정하고 포트를 다른 시스템으로 전달하려면 먼저 가장 무도회 지원을 활성화해야 합니다.

sudo 방화벽-cmd --zone=public --add-masquerade

그런 다음 포트를 추가할 수 있습니다.

sudo Firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. 고급 규칙

영역의 기능이 충분하지 않은 경우 고급 규칙을 사용할 수 있습니다. 고급 규칙의 일반 구문은 다음과 같습니다.

규칙 패밀리 = "패밀리" 소스 값 대상 값 로그 감사 작업

주요 매개변수의 의미는 다음과 같습니다.

  • 처럼 프로토콜 계열 ipv4 또는 ipv6을 지정하거나 아무것도 지정하지 않으면 규칙이 두 프로토콜 모두에 적용됩니다.
  • 원천그리고 목적지패킷의 발신자이자 수신자입니다. 이러한 매개변수는 IP 주소, 서비스 이름, 포트, 프로토콜 등이 될 수 있습니다.
  • 통나무- 예를 들어 syslog에 패킷 통과를 기록할 수 있습니다. 이 설정에서는 로그 줄 접두사와 로깅 세부 정보 수준을 지정할 수 있습니다.
  • 심사- 메시지가 auditd 서비스로 전송되는 대체 로깅 방법입니다.
  • 행동일치하는 패킷에 대해 수행해야 하는 작업입니다. 사용 가능: 수락, 삭제, 거부, 표시.

몇 가지 예를 살펴보겠습니다. IP 135.152.53.5를 가진 사용자의 서버에 대한 액세스를 차단해야 합니다.

sudo Firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" 소스 주소=135.152.53.5 거부"

또는 동일한 사용자의 포트 22에 대한 액세스만 거부해야 합니다.

sudo Firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" 소스 주소=135.152.53.5 포트 포트=22 프로토콜=tcp 거부"

다음 명령을 사용하여 모든 확장 규칙을 볼 수 있습니다.

sudo 방화벽-cmd --list-rich-rules

결론

이 기사에서는 CentOS 7에서 방화벽을 구성하는 방법과 이를 사용하여 수행할 수 있는 작업에 대해 살펴보았습니다. 이 프로그램은 iptables보다 사용하기 훨씬 쉽지만 제 생각에는 Ubuntu 방화벽 추가 기능이 사용하기 더 쉽습니다.

설치 위치 운영 체제방화벽은 컴퓨터 네트워크 간에 승인되지 않은 트래픽이 전달되는 것을 방지하는 데 사용됩니다. 방화벽에 대한 특수 규칙은 액세스 제어를 담당하는 수동 또는 자동으로 생성됩니다. CentOS 7은 Linux 커널을 기반으로 개발된 OS로 방화벽이 내장되어 있으며, 방화벽을 이용해 관리됩니다. FirewallD는 기본적으로 활성화되어 있으며 오늘은 이를 설정하는 방법에 대해 이야기하고 싶습니다.

위에서 언급했듯이 CentOS 7의 표준 방화벽은 FirewallD 유틸리티입니다. 이것이 바로 이 도구를 예로 들어 방화벽 설정을 논의하는 이유입니다. 동일한 iptables를 사용하여 필터링 규칙을 설정할 수 있지만 이는 약간 다른 방식으로 수행됩니다. 다음 링크를 클릭하여 언급된 유틸리티의 구성을 숙지하는 것이 좋습니다. 그러면 FirewallD 분석을 시작하겠습니다.

방화벽 기본 사항

네트워크 신뢰를 기반으로 트래픽을 관리하기 위한 규칙 세트인 여러 영역이 있습니다. 이들 모두에는 자체 정책이 제공되며 그 전체가 방화벽 구성을 형성합니다. 각 영역에는 하나 이상의 네트워크 인터페이스가 할당되며 이를 통해 필터링을 조정할 수도 있습니다. 적용되는 규칙은 사용되는 인터페이스에 직접적으로 의존합니다. 예를 들어 공용 Wi-Fi에 연결할 때 방화벽은 제어 수준을 높이고 홈 네트워크에서는 체인 참가자에게 추가 액세스를 제공합니다. 문제의 방화벽에는 다음 영역이 포함되어 있습니다.

  • 신뢰할 수 있음 — ​​모든 네트워크 장치에 대한 최대 신뢰 수준입니다.
  • 홈 - 로컬 네트워크 그룹. 환경에는 신뢰가 있지만 들어오는 연결은 특정 시스템에서만 사용할 수 있습니다.
  • 작업 - 작업 영역. 대부분의 장치에는 신뢰가 있으며 추가 서비스가 활성화됩니다.
  • dmz는 격리된 컴퓨터를 위한 영역입니다. 이러한 장치는 나머지 네트워크와의 연결이 끊어지고 특정 수신 트래픽만 허용됩니다.
  • 내부 — 내부 네트워크 영역. 모든 시스템에 신뢰가 적용되고 추가 서비스가 열립니다.
  • 외부 — 이전 영역과 반대되는 영역입니다. 외부 네트워크에서는 NAT 위장이 활성화되어 내부 네트워크를 닫지만 액세스 권한을 차단하지는 않습니다.
  • 공개 - 모든 장치를 불신하고 들어오는 트래픽을 개별적으로 수신하는 공용 네트워크 영역입니다.
  • block - 들어오는 모든 요청이 오류 전송과 함께 재설정됩니다. ICMP 호스트 금지또는 icmp6-adm 금지;
  • 드롭 - 최소 신뢰 수준. 들어오는 연결은 알림 없이 삭제됩니다.

정책 자체는 일시적일 수도 있고 영구적일 수도 있습니다. 매개변수가 나타나거나 편집되면 재부팅할 필요 없이 방화벽 동작이 즉시 변경됩니다. 임시 규칙이 적용된 경우 FirewallD가 다시 시작된 후 재설정됩니다. 영구 규칙은 그런 식으로 호출됩니다. -permanent 인수가 적용될 때 영구적으로 저장됩니다.

방화벽 활성화D

먼저 FirewallD를 시작하거나 활성 상태인지 확인해야 합니다. 작동하는 데몬(다음에서 실행되는 프로그램)만 배경) 방화벽 규칙을 적용합니다. 몇 번의 클릭만으로 활성화가 완료됩니다.

  1. 클래식 시작 "단말기"예를 들어 메뉴를 통한 편리한 방법 "애플리케이션".
  2. sudo systemctl start Firewalld.service 명령을 입력하고 키를 누릅니다. 입력하다.
  3. 이 유틸리티는 수퍼유저를 대신하여 관리되므로 비밀번호를 입력하여 진위 여부를 확인해야 합니다.
  4. 서비스가 작동하는지 확인하려면 Firewall-cmd --state 를 지정하세요.
  5. 열리는 그래픽 창에서 진위 여부를 다시 확인하십시오.
  6. 새로운 라인이 표시됩니다. 의미 "달리기"방화벽이 작동 중임을 나타냅니다.

방화벽을 일시적 또는 영구적으로 비활성화해야 하는 경우 다음 링크의 다른 문서에 제시된 지침을 사용하는 것이 좋습니다.

기본 규칙 및 사용 가능한 영역 보기

정상적으로 작동하는 방화벽에도 고유한 특정 규칙과 액세스 가능한 영역이 있습니다. 정책 편집을 시작하기 전에 현재 구성을 숙지하는 것이 좋습니다. 이는 간단한 명령을 사용하여 수행됩니다.

  1. Firewall-cmd --get-default-zone 명령은 기본 영역을 결정하는 데 도움이 됩니다.
  2. 활성화하면 볼 수 있습니다. 새 줄, 여기에 필수 매개변수가 표시됩니다. 예를 들어 아래 스크린샷에서는 영역이 활성 상태로 간주됩니다. "공공의".
  3. 그러나 여러 영역이 동시에 활성화될 수 있으며 이들은 별도의 인터페이스와 연결됩니다. Firewall-cmd --get-active-zones 를 통해 이 정보를 알아보세요.
  4. Firewall-cmd --list-all 명령은 기본 영역에 대해 구성된 규칙을 표시합니다. 아래 스크린샷을 살펴보세요. 활성 영역이 표시됩니다. "공공의"할당된 규칙 "기본"- 기본 동작, 인터페이스 "enp0s3"그리고 두 가지 서비스가 추가되었습니다.
  5. 사용 가능한 모든 방화벽 영역을 찾으려면 Firewall-cmd --get-zones 를 입력하세요.
  6. 특정 영역의 매개변수는 Firewall-cmd --zone=name --list-all 을 통해 결정됩니다. 여기서 이름— 구역 이름.

필요한 매개변수를 결정한 후 해당 매개변수를 변경하고 추가할 수 있습니다. 가장 인기 있는 몇 가지 구성을 자세히 살펴보겠습니다.

인터페이스 영역 설정

위 정보에서 알 수 있듯이 각 인터페이스에는 고유한 기본 영역이 있습니다. 사용자가 설정을 변경하거나 프로그래밍 방식으로 변경할 때까지 해당 위치에 유지됩니다. 한 세션 동안 인터페이스를 영역으로 수동으로 전송할 수 있으며 이는 sudo Firewall-cmd --zone=home --change-interface=eth0 명령을 활성화하여 수행됩니다. 결과 "성공"전송이 성공했음을 나타냅니다. 이러한 설정은 방화벽이 재부팅되는 즉시 재설정된다는 점을 알려드립니다.

이와 같이 매개변수를 변경할 경우 서비스가 재설정될 수 있다는 점을 고려해야 합니다. 예를 들어 SSH는 다음에서 사용할 수 있지만 일부는 특정 영역에서의 작업을 지원하지 않습니다. "집", 그러나 맞춤식 또는 특수 서비스에서는 서비스가 작동을 거부합니다. Firewall-cmd --get-active-zones 를 입력하여 인터페이스가 새 분기에 성공적으로 연결되었는지 확인할 수 있습니다.

이전에 지정한 설정을 재설정하려면 방화벽을 다시 시작하세요. sudo systemctl restart Firewalld.service .

때로는 한 세션에 대한 인터페이스 영역을 변경하는 것이 항상 편리한 것은 아닙니다. 이 경우 모든 설정이 영구적으로 입력되도록 구성 파일을 편집해야 합니다. 이렇게 하려면 텍스트 편집기를 사용하는 것이 좋습니다. 나노, sudo yum install nano 를 사용하여 공식 저장소에서 설치됩니다. 다음으로 남은 것은 다음을 수행하는 것입니다.

  1. sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 을 입력하여 편집기를 통해 구성 파일을 엽니다. 여기서 eth0— 필요한 인터페이스의 이름입니다.
  2. 계속 진행하려면 계정 진위를 확인하세요.
  3. 매개변수 찾기 "존"그 값을 원하는 값(예: public 또는 home )으로 변경합니다.
  4. 키를 누르세요. Ctrl+O변경 사항을 저장합니다.
  5. 파일 이름을 바꾸지 말고 그냥 클릭하세요. 입력하다.
  6. 다음을 통해 텍스트 편집기를 종료하세요. Ctrl+X.

이제 인터페이스 영역은 다음에 구성 파일을 편집할 때까지 지정한 대로 유지됩니다. 업데이트된 설정을 적용하려면 sudo systemctl restart network.service 및 sudo systemctl restart Firewalld.service 를 실행하세요.

기본 영역 설정

위에서 우리는 이미 기본 영역을 찾을 수 있는 명령을 시연했습니다. 원하는 매개변수를 설정하여 변경할 수도 있습니다. 이렇게 하려면 콘솔에 sudo Firewall-cmd --set-default-zone=name을 입력하면 됩니다. 이름— 필요한 영역의 이름입니다.

명령의 성공은 비문으로 표시됩니다. "성공"별도의 줄에. 그 후에는 구성 파일에 달리 지정하지 않는 한 모든 현재 인터페이스가 지정된 영역에 바인딩됩니다.

프로그램 및 유틸리티에 대한 규칙 만들기

기사 시작 부분에서 각 영역의 작업에 대해 이야기했습니다. 이러한 지점에서 서비스, 유틸리티 및 프로그램을 정의하면 각 사용자의 요구 사항에 맞게 각 서비스, 유틸리티 및 프로그램에 개별 매개변수를 적용할 수 있습니다. 시작하려면 다음에서 사용 가능한 전체 목록을 숙지하는 것이 좋습니다. 이 순간서비스: Firewall-cmd --get-services .

결과는 콘솔에 직접 표시됩니다. 각 서버는 공백으로 구분되어 있으며 목록에서 관심 있는 도구를 쉽게 찾을 수 있습니다. 필요한 서비스가 제공되지 않는 경우에는 추가로 설치해야 합니다. 공식 소프트웨어 문서에서 설치 규칙을 읽어보세요.

위 명령은 서비스 이름만 표시합니다. 자세한 정보각각에 대한 정보는 /usr/lib/firewalld/services 경로에 있는 개별 파일을 통해 얻습니다. 이러한 문서는 XML 형식으로 되어 있으며, 예를 들어 SSH에 대한 경로는 /usr/lib/firewalld/services/ssh.xml과 같으며 문서 내용은 다음과 같습니다.

SSH
SSH(Secure Shell)는 원격 시스템에 로그인하고 명령을 실행하기 위한 프로토콜입니다. 안전한 암호화 통신을 제공합니다. 방화벽이 있는 인터페이스를 통해 SSH를 통해 원격으로 시스템에 액세스할 계획이라면 이 옵션을 활성화하세요. 이 옵션을 유용하게 사용하려면 openssh-server 패키지를 설치해야 합니다.

특정 영역의 서비스 지원은 수동으로 활성화됩니다. 안에 "단말기" sudo Firewall-cmd --zone=public --add-service=http 명령을 실행해야 합니다. 여기서 --zone=공개- 활성화 영역 --추가 서비스=http— 서비스 이름. 이러한 변경 사항은 하나의 세션에만 적용됩니다.

영구 추가는 sudo Firewall-cmd --zone=public --permanent --add-service=http 를 통해 수행되며 결과는 다음과 같습니다. "성공"작업이 성공적으로 완료되었음을 나타냅니다.

별도의 콘솔 줄( sudo Firewall-cmd --zone=public --permanent --list-services )에 목록을 표시하여 특정 영역에 대한 영구 규칙의 전체 목록을 볼 수 있습니다.

서비스 접근 불가 문제 해결

기본적으로 방화벽 규칙은 허용되는 가장 인기 있고 안전한 서비스를 나열하지만 일부 표준 또는 타사 애플리케이션그는 차단합니다. 이 경우 액세스 문제를 해결하려면 사용자가 수동으로 설정을 변경해야 합니다. 이는 두 가지 방법으로 수행할 수 있습니다.

포트 포워딩

아시다시피 모든 네트워크 서비스는 특정 포트를 사용합니다. 방화벽을 통해 쉽게 탐지되며, 이를 이용하여 차단이 가능합니다. 방화벽에서 이러한 작업을 방지하려면 sudo Firewall-cmd --zone=public --add-port=0000/tcp 명령을 사용하여 필요한 포트를 열어야 합니다. --zone=공개- 항구 지역, --추가 포트=0000/tcp— 포트 번호 및 프로토콜. Firewall-cmd --list-ports 옵션은 열린 포트 목록을 표시합니다.

범위에 포함된 포트를 열어야 하는 경우 sudo Firewall-cmd --zone=public --add-port=0000-9999/udp 줄을 사용합니다. --추가 포트=0000-9999/udp— 포트 범위 및 해당 프로토콜.

위의 명령을 사용하면 해당 매개변수의 사용을 테스트할 수만 있습니다. 성공했다면 동일한 포트를 영구 설정에 추가해야 하며, 이는 sudo Firewall-cmd --zone=public --permanent --add-port=0000/tcp 또는 sudo Firewall-cmd --를 입력하여 수행됩니다. zone=public --permanent --add-port=0000-9999/udp . 열려 있는 영구 포트 목록은 sudo Firewall-cmd --zone=public --permanent --list-ports 와 같이 표시됩니다.

서비스 정의

보시다시피 포트를 추가해도 문제가 발생하지 않지만 많은 수의 응용 프로그램을 사용하면 절차가 더 복잡해집니다. 사용 중인 모든 포트를 추적하는 것이 어려워지므로 서비스를 정의하는 것이 더 나은 옵션이 될 것입니다.


귀하가 해야 할 일은 서비스 접근 문제를 해결하기 위한 가장 적절한 방법을 선택하고 제공된 지침을 따르는 것뿐입니다. 보시다시피 모든 작업은 매우 쉽게 수행되며 어려움이 발생하지 않습니다.

사용자 정의 영역 만들기

FirewallD가 처음에 특정 규칙을 사용하여 수많은 서로 다른 영역을 생성했다는 것을 이미 알고 있습니다. 그러나 시스템 관리자가 다음과 같이 사용자 영역을 생성해야 하는 상황이 있습니다. "공개웹"설치된 웹 서버의 경우 또는 "비공개DNS"— DNS 서버의 경우. 이 두 가지 예를 사용하여 분기 추가를 살펴보겠습니다.


이 문서에서는 사용자 지정 영역을 만들고 여기에 서비스를 추가하는 방법을 배웠습니다. 위에서 기본 설정 및 인터페이스 할당에 대해 이미 설명했습니다. 사용자가 해야 할 일은 지정하는 것뿐입니다. 정확한 이름. 영구적으로 변경한 후에는 방화벽을 재부팅하는 것을 잊지 마십시오.

보시다시피 FirewallD 방화벽은 가장 유연한 방화벽 구성을 만들 수 있는 상당히 포괄적인 도구입니다. 남은 것은 유틸리티가 시스템과 함께 시작되고 지정된 규칙이 즉시 작업을 시작하는지 확인하는 것입니다. sudo systemctl 활성화 방화벽d 명령을 사용하여 이 작업을 수행합니다.