Simple is IT, 누구나 보고 누구나 깨닫는 IT

리눅스 방화벽_Firewalld(CentOS7) 본문

Simple is IT/Security

리눅스 방화벽_Firewalld(CentOS7)

currenjin 2020. 4. 29. 09:47

리눅스의 방화벽

: 커널의 Netfilter 모듈에 기초를 두고 있는 하나의 프로그램이다.

일반적으로 내부와 외부 네트워크의 경계 지점에 위치한다.(들어오고 나가는 패킷에 대해 지정된 정책과 규칙 사용_허용,거절)

방화벽의 종류

1. 패킷 필터링(Layer 1 ~ 4, 단순하고 빠름)

2. Stateful(패킷의 연결 상태 관찰, 메모리 상태 테이블 사용)

3. Application Layer(Layer 1 ~ 7, 고사양 장비 필요)

구성요소

1. 규칙(Rule) - 하나 또는 그 이상 match 되어야 할 항목들로 구성

2. 타겟(Target) - 규칙에 match 된 패킷에 대한 구체적인 행동 정의

ex) DNAT, SNAT, Accept, Drop, Reject, Log

3. 체인(Chain) - 정책이 결합된 하나의 그룹(1 Chain = N Rule + 1 Policy)

ex) PREROUTING, INPUT, OUTPUT, FORWARD, POSTROUTING

4. 정책(Policy) - 체인에서 각 규칙을 모두 통과한 패킷에 적용된다.(최종 타겟이라고도 함)

ex) DROP, ACCEPT

5. 테이블(Table) - 여러 체인이 결합된 하나의 그룹

다음과 같은 구성에서 각종 사용법 등을 알아볼 것이다.

서로 간의 라우팅, 인터넷은 되는 상태

Kali : 외부에서 침입을 시도하는 Hacker

Firewalld : 침입을 방어하기 위한 일종의 보안 장비(CenOS)

Windows Server : 사용자

Firewalld

# yum insatll firewall-config

# firewall-cmd --version // version 확인

# firewall-cmd --list-all

# firewall-cmd --get-service // 추가할 수 있는 서비스 check

# firewall-cmd --list-service // 사용하고 있는 서비스 check

서비스 추가 파일 및 명령어

# cat /etc/firewalld/zones/public.xml // 양식대로 추가하면 된다.

Firewall Zone

Drop Zone

: 외부로 나가는 연결만 허용하며 들어오는 패킷은 버린 후 이에 대한 응답 메세지도 보내지 않는다.

Block Zone

: Drop Zone과 같지만 들어오는 연결에 대해 icmp-host-prohibited 응답을 보낸다.

Public Zone(Default)

: 서비스를 제공하는 특별한 포트로의 연결만을 허용, 나머지는 모두 거부

External Zone

: 매스커레이딩 규칙이 적용되는 외부를 위하며, 내부로의 연결 요청 중에서 선택된 연결만을 허용

DMZ Zone

: 내부 네트워크로의 접근은 제한적으로 허용, 공개된 네트워크 접근을 허용(선택된 연결만을 허용)

Work Zone

: 같은 네트워크에 위치한 다른 시스템을 신뢰, 선택된 연결만을 허용

Home Zone

: 같은 네트워크에 존재하는 다른 시스템을 신뢰, 선택된 연결만을 허용

Internal Zone

: 내부 네트워크를 위해 사용, 선택된 연결만을 허용

Trusted Zone

: 모든 네트워크 접속 연결을 허용하는 경우 사용


Example 1)

-> 내부와 외부를 지정해 외부에서 내부의 80, 9090포트로 접속이 가능하도록

# firewall-cmd --zone=public --add-interface=ens37(외부)

# firewall-cmd --zone=trusted --add-interface=ens33(내부)

!! 변경 방법 : --add-interface 대신 --change-interface

!! 제외 방법 : --add-interface 대신 --remove-interface

Kali Linux

http://10.0.0.10:80 // 접속 시도

80 Port 접속 실패

Firewall

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

# firewall-cmd --zone=public --add-port=9090/tcp --permanent

# firewall-cmd --zone=public --add-masquerade

# firewall-cmd --reload

!! --permanent : 영구히 적용

Kali Linux

9090 Port, 80 Port 접속

Example 2)

-> 외부에서 1000 포트로 접속 시 내부 10.0.0.10:80 포트로 접속이 되도록 설정 (PortForwarding)

Firewall

# firewall-cmd --zone=public --add-forward-port=port=1000:proto=tcp:toport=80:toaddr=10.0.0.10

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

Kali Linux

Firewalld IP의 1000 Port로 접속한 모습

매핑시킨 IP로도 접속이 된다. (1000 Port)


Comments