기계적 인조 인간

centos 7에서 방화벽으로 방화벽을 설정하는 방법

Learn CentOS Part 7 - Changing the Hostname

Learn CentOS Part 7 - Changing the Hostname

차례:

Anonim

올바르게 구성된 방화벽은 전체 시스템 보안에서 가장 중요한 측면 중 하나입니다.

FirewallD는 시스템의 iptables 규칙을 관리하고이를 작동하기위한 D-Bus 인터페이스를 제공하는 완벽한 방화벽 솔루션입니다. CentOS 7부터 FirewallD는 iptables를 기본 방화벽 관리 도구로 대체합니다.

이 자습서에서는 CentOS 7 시스템에서 FirewallD를 사용하여 방화벽을 설정하는 방법과 기본 FirewallD 개념을 설명합니다.

전제 조건

이 학습서를 시작하기 전에 sudo 권한이있는 사용자 계정 또는 루트 사용자로 서버에 로그인했는지 확인하십시오. 가장 좋은 방법은 루트 대신 sudo 사용자로 관리 명령을 실행하는 것입니다. CentOS 시스템에 sudo 사용자가없는 경우 다음 지시 사항에 따라 사용자를 작성할 수 있습니다.

기본 방화벽 개념

FirewallD는 iptables 체인 및 규칙 대신 영역 및 서비스 개념을 사용합니다. 구성 할 영역과 서비스를 기반으로 시스템에 허용되거나 허용되지 않는 트래픽을 제어 할 수 있습니다.

firewall-cmd 명령 줄 유틸리티를 사용하여 FirewallD를 구성하고 관리 할 수 ​​있습니다.

방화벽 영역

영역은 컴퓨터가 연결된 네트워크의 신뢰 수준에 따라 허용 할 트래픽을 지정하는 미리 정의 된 규칙 집합입니다. 네트워크 인터페이스와 소스를 영역에 할당 할 수 있습니다.

다음은 영역의 신뢰 수준에 따라 FirewallD가 제공 한 영역을 신뢰할 수없는 영역에서 신뢰할 수있는 영역으로 정렬 한 것입니다.

  • drop: 모든 들어오는 연결이 알림없이 끊어집니다. 나가는 연결 만 허용됩니다. block: IPv4 경우 icmp-host-prohibited 메시지와 icmp6-adm-prohibited icmp-host-prohibited 메시지로 모든 수신 연결이 거부됩니다. 나가는 연결 만 허용됩니다. public: 신뢰할 수없는 공용 영역에서 사용합니다. 네트워크의 다른 컴퓨터는 신뢰하지 않지만 선택한 들어오는 연결은 허용 할 수 있습니다. external: 시스템이 게이트웨이 또는 라우터로 작동 할 때 NAT 마스커레이딩이 활성화 된 외부 네트워크에서 사용합니다. 선택된 들어오는 연결 만 허용됩니다. internal: 시스템이 게이트웨이 또는 라우터 역할을 할 때 내부 네트워크에서 사용합니다. 네트워크의 다른 시스템은 일반적으로 신뢰됩니다. 선택된 들어오는 연결 만 허용됩니다. dmz: 비무장 지대에 있으며 나머지 네트워크에 대한 액세스가 제한된 컴퓨터에 사용됩니다. 선택된 들어오는 연결 만 허용됩니다. 작업: 작업 기계에 사용됩니다. 네트워크의 다른 컴퓨터는 일반적으로 신뢰됩니다. 선택된 들어오는 연결 만 허용됩니다. home: 가정용 기기에 사용됩니다. 네트워크의 다른 컴퓨터는 일반적으로 신뢰됩니다. 선택된 들어오는 연결 만 허용됩니다. 신뢰할 수 있음: 모든 네트워크 연결이 허용됩니다. 네트워크의 모든 컴퓨터를 신뢰하십시오.

방화벽 서비스

방화벽 서비스는 영역 내에 적용되는 미리 정의 된 규칙이며 특정 서비스에 대한 들어오는 트래픽을 허용하는 데 필요한 설정을 정의합니다.

방화벽 런타임 및 영구 설정

Firewalld는 두 개의 분리 된 구성 세트, 런타임 및 영구 구성을 사용합니다.

런타임 구성은 실제 실행 구성이며 재부팅시 지속되지 않습니다. 방화벽 서비스가 시작되면 영구 구성이로드되어 런타임 구성이됩니다.

기본적으로 firewall-cmd 유틸리티를 사용하여 방화벽 구성을 변경하면 변경 사항이 런타임 구성에 적용됩니다. 변경 사항을 영구적으로 유지하려면 --permanent 옵션을 사용해야합니다.

FirewallD 설치 및 활성화

  1. 방화벽은 CentOS 7에 기본적으로 설치되지만 시스템에 설치되어 있지 않은 경우 다음을 입력하여 패키지를 설치할 수 있습니다.

    sudo yum install firewalld

    방화벽 서비스는 기본적으로 비활성화되어 있습니다. 다음과 같이 방화벽 상태를 확인할 수 있습니다.

    sudo firewall-cmd --state

    FirewallD 서비스를 시작하고 부팅시 활성화하려면:

    sudo systemctl start firewalld sudo systemctl enable firewalld

방화벽 영역 작업

FirewallD 서비스를 처음으로 활성화하면 public 영역이 기본 영역으로 설정됩니다. 다음을 입력하여 기본 영역을 볼 수 있습니다.

sudo firewall-cmd --get-default-zone

public

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

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

기본적으로 모든 네트워크 인터페이스에는 기본 영역이 할당됩니다. 네트워크 인터페이스에서 사용하는 영역을 확인하려면 다음을 입력하십시오.

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

위의 결과는 eth0 eth1 인터페이스가 모두 공용 영역에 할당되어 있음을 나타냅니다.

다음과 같이 영역 구성 설정을 인쇄 할 수 있습니다.

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

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

위 출력에서 ​​공개 영역이 활성화되어 있고 eth0 eth1 인터페이스에서 사용되는 기본값으로 설정되어 있음을 알 수 있습니다. 또한 DHCP 클라이언트 및 SSH와 관련된 연결이 허용됩니다.

sudo firewall-cmd --list-all-zones

이 명령은 사용 가능한 모든 영역의 설정으로 큰 목록을 인쇄합니다.

인터페이스 영역 변경

--zone 옵션을 --change-interface 옵션과 함께 사용하여 인터페이스 영역을 쉽게 변경할 수 있습니다. 다음 명령은 eth1 인터페이스를 작업 영역에 할당합니다.

sudo firewall-cmd --zone=work --change-interface=eth1

다음을 입력하여 변경 사항을 확인하십시오.

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

기본 영역 변경

기본 영역을 변경하려면 --set-default-zone 옵션 다음에 기본으로 만들 영역의 이름을 사용하십시오.

예를 들어, 기본 영역을 홈으로 변경하려면 다음 명령을 실행해야합니다.

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

다음을 사용하여 변경 사항을 확인하십시오.

sudo firewall-cmd --get-default-zone

home

포트 또는 서비스 열기

FirewallD를 사용하면 서비스라고하는 미리 정의 된 규칙을 기반으로 특정 포트에 대한 트래픽을 허용 할 수 있습니다.

사용 가능한 모든 기본 서비스 유형 목록을 가져 오려면 다음을 수행하십시오.

sudo firewall-cmd --get-services

/usr/lib/firewalld/services 디렉토리에서 관련.xml 파일을 열어 각 서비스에 대한 자세한 정보를 찾을 수 있습니다. 예를 들어, HTTP 서비스는 다음과 같이 정의됩니다.

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

공용 영역의 인터페이스에 대해 들어오는 HTTP 트래픽 (포트 80)을 허용하려면 현재 세션 (런타임 구성)에 대해서만 입력하십시오.

sudo firewall-cmd --zone=public --add-service=http 기본 영역을 수정하는 경우 --zone 옵션을 --zone 할 수 있습니다.

서비스가 성공적으로 추가되었는지 확인하려면 --list-services 옵션을 사용하십시오.

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

ssh dhcpv6-client

sudo firewall-cmd --permanent --zone=public --add-service=http

--permanent 옵션과 함께 --list-services 를 사용하여 변경 사항을 확인하십시오.

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

서비스 제거 구문은 서비스를 추가 할 때와 동일합니다. --add-service 옵션 대신 --remove-service 사용하십시오.

sudo firewall-cmd --zone=public --remove-service=http --permanent

위의 명령은 공개 영역 영구 구성에서 http 서비스를 제거합니다.

사용 가능한 적절한 서비스가없는 Plex Media Server와 같은 응용 프로그램을 실행중인 경우 어떻게합니까?

이러한 상황에서는 두 가지 옵션이 있습니다. 적절한 포트를 열거 나 새로운 FirewallD 서비스를 정의 할 수 있습니다.

예를 들어, Plex 서버는 포트 32400에서 수신 대기하고 TCP를 사용하여 현재 세션의 공용 영역에서 포트를 열려면 --add-port= 옵션을 사용하십시오.

sudo firewall-cmd --zone=public --add-port=32400/tcp 프로토콜은 tcp 또는 udp 수 있습니다.

포트가 성공적으로 추가되었는지 확인하려면 --list-ports 옵션을 사용하십시오.

sudo firewall-cmd --zone=public --list-ports

32400/tcp

재부팅 후 포트 32400 열어 두려면 --permanent 옵션을 사용하여 동일한 명령을 실행하여 영구 설정에 규칙을 추가하십시오.

포트를 제거하는 구문은 포트를 추가 할 때와 동일합니다. --add-port 옵션 대신 --remove-port 사용하십시오.

sudo firewall-cmd --zone=public --remove-port=32400/tcp

새로운 FirewallD 서비스 생성

이미 언급했듯이 기본 서비스는 /usr/lib/firewalld/services 디렉토리에 저장됩니다. 새로운 서비스를 생성하는 가장 쉬운 방법은 기존 서비스 파일을 /etc/firewalld/services 디렉토리에 복사하는 것입니다.이 디렉토리는 사용자가 만든 서비스의 위치이며 파일 설정을 수정합니다.

예를 들어, Plex Media Server에 대한 서비스 정의를 작성하기 위해 SSH 서비스 파일을 사용할 수 있습니다.

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

새로 작성된 plexmediaserver.xml 파일을 열고 서비스의 짧은 이름 및 설명을 태그. 변경해야 할 가장 중요한 태그는 열려는 포트 번호와 프로토콜을 정의하는 포트 태그입니다.

다음 예에서는 포트 1900 UDP 및 32400 TCP를 엽니 다.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

파일을 저장하고 FirewallD 서비스를 다시로드하십시오.

sudo firewall-cmd --reload

이제 다른 서비스와 동일한 영역에서 plexmediaserver 서비스를 사용할 수 있습니다.

방화벽이있는 전달 포트

한 포트에서 다른 포트 또는 주소로 트래픽을 전달하려면 먼저 --add-masquerade 스위치를 사용하여 원하는 영역에 대한 마스 쿼 레이 딩을 활성화하십시오. 예를 들어 external 영역 유형에 대한 가장 무도회를 활성화하려면

sudo firewall-cmd --zone=external --add-masquerade

  • 동일한 서버의 한 포트에서 다른 포트로 트래픽 전달

다음 예에서는 동일한 서버에서 포트 80 에서 포트 8080 으로 트래픽을 전달합니다.

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

  • 다른 서버로 트래픽 전달

다음 예에서는 IP 10.10.10.2 서버의 포트 80 에서 포트 80 으로 트래픽을 전달합니다.

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

  • 다른 포트의 다른 서버로 트래픽 전달

다음 예에서는 IP 10.10.10.2 서버에서 포트 80 에서 포트 8080 으로 트래픽을 전달합니다.

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

FirewallD로 규칙 세트 작성

다음 예에서는 웹 서버를 실행중인 경우 방화벽을 구성하는 방법을 보여줍니다. 서버에 eth0 인터페이스가 하나만 있다고 가정하고 SSH, HTTP 및 HTTPS 포트에서만 들어오는 트래픽을 허용하려고합니다.

  1. 기본 영역을 dmz로 변경

    기본적으로 SSH 트래픽 만 허용하므로 dmz (완충) 영역을 사용합니다. 기본 영역을 dmz로 변경하고 eth0 인터페이스에 지정하려면 다음 명령을 실행하십시오.

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    HTTP 및 HTTPS 포트를 엽니 다.

    HTTP 및 HTTPS 포트를 열려면 영구 서비스 규칙을 dmz 영역에 추가하십시오.

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    방화벽을 다시로드하여 변경 사항을 즉시 적용하십시오.

    sudo firewall-cmd --reload

    변경 사항 확인

    dmz 영역 구성 설정을 확인하려면 다음을 입력하십시오.

    sudo firewall-cmd --zone=dmz --list-all

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

    위의 결과는 dmz가 기본 영역이며 eth0 인터페이스에 적용되며 ssh (22) http (80) 및 https (443) 포트가 열려 있음을 나타냅니다.

결론

CentOS 시스템에서 FirewallD 서비스를 구성하고 관리하는 방법을 배웠습니다.

불필요한 모든 연결을 제한하면서 시스템의 올바른 기능에 필요한 모든 들어오는 연결을 허용하십시오.

방화벽 방화벽 iptables centos 보안