Linux Admin-방화벽 설정
firewalld 는 CentOS의 iptables에 대한 기본 프런트 엔드 컨트롤러입니다. firewalld 프런트 엔드는 원시의 iptables를 통해 두 가지 장점이 있습니다 -
구성하기 쉬운 영역을 사용하여 체인 및 규칙을 추상화합니다.
규칙 세트는 동적이므로 설정이 변경 및 / 또는 수정 될 때 상태 저장 연결이 중단되지 않습니다.
기억 firewalld 하지 대체 - iptables에 대한 래퍼입니다. 사용자 지정 iptables 명령은 firewalld 와 함께 사용할 수 있지만 방화벽 기능을 중단하지 않으려면 firewalld를 사용하는 것이 좋습니다.
먼저 firewalld 가 시작되고 활성화되어 있는지 확인하겠습니다 .
[root@CentOS rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
firewalld가 활성화되어 (부팅시 시작) 현재 실행 중임을 알 수 있습니다. 비활성 상태이거나 시작되지 않은 경우 다음을 사용할 수 있습니다.
systemctl start firewalld && systemctl enable firewalld
방화벽 서비스를 구성 했으므로 이제 작동하는지 확인하겠습니다.
[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#
방화벽 서비스가 완전히 작동한다는 것을 알 수 있습니다.
방화벽은 영역 개념에서 작동 합니다 . 영역은 Network Manager를 통해 네트워크 인터페이스에 적용됩니다. 네트워킹 구성 에서 이에 대해 설명합니다 . 그러나 지금은 기본적으로 기본 영역을 변경하면 기본 상태 인 "기본 영역"에 남아있는 모든 네트워크 어댑터가 변경됩니다.
firewalld 로 기본 제공되는 각 영역을 간략히 살펴 보겠습니다 .
Sr. 아니. | 구역 및 설명 |
---|---|
1 | drop 낮은 신뢰 수준. 모든 수신 연결과 패킷이 삭제되고 상태 완전성을 통해 발신 연결 만 가능합니다. |
2 | block 들어오는 연결은 개시 자에게 요청이 금지되었음을 알리는 ICMP 메시지로 응답됩니다. |
삼 | public 모든 네트워크가 제한됩니다. 그러나 선택된 들어오는 연결은 명시 적으로 허용 될 수 있습니다. |
4 | external NAT에 대해 firewalld를 구성합니다. 내부 네트워크는 비공개로 유지되지만 연결할 수 있습니다. |
5 | dmz 특정 수신 연결 만 허용됩니다. DMZ 격리 시스템에 사용 |
6 | work 기본적으로 시스템이 안전한 작업 환경에 있다고 가정하면 네트워크에서 더 많은 컴퓨터를 신뢰합니다. |
7 | hone 기본적으로 더 많은 서비스가 필터링되지 않습니다. 시스템이 NFS, SAMBA 및 SSDP와 같은 서비스가 사용되는 홈 네트워크에 있다고 가정합니다. |
8 | trusted 네트워크의 모든 컴퓨터는 신뢰할 수 있습니다. 대부분의 들어오는 연결은 제한없이 허용됩니다.This is not meant for interfaces exposed to the Internet |
사용하는 가장 일반적인 영역은 공공, 드롭, 직장 및 집입니다.
각 공통 영역이 사용되는 몇 가지 시나리오는 다음과 같습니다.
public− 관리자가 사용하는 가장 일반적인 영역입니다. 사용자 지정 설정을 적용하고 LAN 작업에 대한 RFC 사양을 준수 할 수 있습니다.
drop− 드롭을 사용하는 좋은 예는 보안 회의, 공용 WiFi 또는 인터넷에 직접 연결된 인터페이스입니다. drop은 ICMP 프로브를 포함하여 모든 원치 않는 요청이 악성이라고 가정합니다. 따라서 다른 상태의 요청은 응답을받지 못합니다. 드롭의 단점은 엄격한 RFC 준수가 필요한 특정 상황에서 애플리케이션의 기능을 손상시킬 수 있다는 것입니다.
work− 준 보안 기업 LAN을 사용 중입니다. 모든 교통이 적당히 안전하다고 가정 할 수있는 곳. 이는 WiFi가 아니며 IDS, IPS 및 물리적 보안 또는 802.1x가있을 수 있음을 의미합니다. 우리는 또한 LAN을 사용하는 사람들에 대해서도 잘 알고 있어야합니다.
home− 홈 LAN에 있습니다. LAN상의 모든 시스템과 사용자에 대해 개인적으로 책임을 져야합니다. LAN에있는 모든 시스템을 알고 있으며 손상되지 않은 시스템은 없습니다. 신뢰할 수있는 개인 간의 미디어 공유를 위해 종종 새로운 서비스가 제공되며 보안을 위해 추가 시간을 할애 할 필요가 없습니다.
영역과 네트워크 인터페이스는 일대 다 수준에서 작동합니다. 하나의 네트워크 인터페이스에는 한 번에 하나의 영역 만 적용 할 수 있습니다. 그러나 영역은 여러 인터페이스에 동시에 적용 할 수 있습니다.
사용 가능한 영역과 현재 적용된 영역이 무엇인지 살펴 보겠습니다.
[root@CentOS]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
firewalld에 사용자 지정 규칙을 추가 할 준비가 되셨습니까?
먼저, 우리의 상자가 외부에서 포트 스캐너에게 어떻게 보이는지 봅시다.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
들어오는 요청을 포트 80으로 허용합시다.
먼저 기본으로 적용되는 영역을 확인합니다.
[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#
그런 다음 포트 80을 허용하는 규칙을 현재 기본 영역으로 설정합니다.
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#
이제 포트 80 연결을 허용 한 후 상자를 선택하겠습니다.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
이제 원치 않는 트래픽을 80으로 허용합니다.
기본 영역을 드롭 하고 포트 스캔에 어떤 일이 발생하는지 살펴 보겠습니다 .
[root@CentOS]# firewall-cmd --set-default-zone=drop
success
[root@CentOS]# firewall-cmd --get-default-zone
drop
[root@CentOs]#
이제보다 안전한 영역에서 네트워크 인터페이스를 사용하여 호스트를 검색해 보겠습니다.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
이제 모든 것이 외부에서 필터링됩니다.
아래에 설명 된 것처럼 호스트는 드롭 상태 일 때 ICMP 핑 요청에도 응답하지 않습니다 .
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
기본 영역을 다시 공개로 설정하겠습니다 .
[root@CentOs]# firewall-cmd --set-default-zone=public
success
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
이제 public 에서 현재 필터링 규칙 세트를 확인하겠습니다 .
[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@CentOS rdc]#
구성된대로 포트 80 필터 규칙은 실행중인 구성의 컨텍스트 내에 만 있습니다. 즉, 시스템이 재부팅되거나 방화벽 서비스가 다시 시작되면 규칙이 삭제됩니다.
곧 httpd 데몬을 구성 할 예정이므로 변경 사항을 지속적으로 적용 해 보겠습니다.
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@CentOS]# systemctl restart firewalld
[root@CentOS]#
이제 퍼블릭 영역의 포트 80 규칙은 재부팅 및 서비스 재시작시에도 지속됩니다.
다음은 firewall-cmd 와 함께 적용되는 일반적인 firewalld 명령 입니다.
명령 | 동작 |
---|---|
방화벽 -cmd --get-zones | 인터페이스에 적용 할 수있는 모든 영역을 나열합니다. |
firewall-cmd — 상태 | 방화벽 서비스의 현재 상태를 반환합니다. |
방화벽 -cmd --get-default-zone | 현재 기본 영역을 가져옵니다. |
firewall-cmd --set-default-zone = <영역> | 기본 영역을 현재 컨텍스트로 설정합니다. |
방화벽 -cmd --get-active-zone | 인터페이스에 적용된 컨텍스트의 현재 영역을 가져옵니다. |
방화벽 -cmd --zone = <영역> --list-all | 제공된 영역의 구성을 나열합니다. |
firewall-cmd --zone = <zone> --addport = <포트 / 전송 프로토콜> | 영역 필터에 포트 규칙을 적용합니다. |
--영구적 인 | 영역을 지속적으로 변경합니다. 플래그는 수정 명령과 함께 인라인으로 사용됩니다. |
이는 firewalld 관리 및 구성의 기본 개념입니다 .
CentOS에서 호스트 기반 방화벽 서비스를 구성하는 것은보다 정교한 네트워킹 시나리오에서 복잡한 작업이 될 수 있습니다. CentOS에서 firewalld 및 iptables 의 고급 사용 및 구성은 전체 자습서를 수행 할 수 있습니다. 그러나 우리는 대부분의 일상적인 작업을 완료하기에 충분한 기본 사항을 제시했습니다.