반응형

#. CentOS 7 방화벽(firewall) 정책 설정

 

학습 목표

- CentOS 7에서 방화벽 정책을 할 수 있다.

 

 

[ 에듀쉐어 ] - 유튜브 채널

 

 

전통적인 iptables, TCP wrapper 등의 프로그램은 생략하고 CentOS 7에서의 방화벽 정책 설정에 대해 알아보도록 하겠습니다. 방화벽 서비스 데몬인 firewalld를 시작 또는 중지하게 되면 방화벽 자체를 동작 또는 중지하는 것이며 CUI기반 명령어인 firewall-cmd명령어를 이용하면 특정 서비스 또는 포트를 접속 허용하거나 거부할 수 있습니다. (참고로 GUI환경에서는 firewall-config입니다.) 또한 SELinux 기능도 있습니다. 

 

- 방화벽 동작(중지 / 부팅 시 시작 / 부팅 시 동작안함 / 재시작 / 상태 보기)

#systemctl start(stop / enable / disable / restart / status) 

 

 - firewall-cmd

#firewall-cmd --add(remove)-service=http : http 접속 허용(제거)

#firewall-cmd --add(remove)-port=80/tcp : http 접속 허용(제거)

 

두 가지의 결과는 같으므로 한 가지만 설정하면 됩니다.

 

#firewall-cmd --permanent --add(remove)-service=http : 재부팅 시(영구적) http 접속 허용(제거)

#firewall-cmd --permanent --add-icmp-block=echo-request : 재부팅 시(영구적) Ping에 대해 응답하지 않기

 

방화벽 정책을 변경했으면 반드시 #firewall-cmd --reload명령어를 통해 적용해주어야 되며 현재 설정된 방화벽 정책을 보기 위해서는 #firewall-cmd --list-all 명령어를 이용하면 간단하게 살펴볼 수 있습니다.

 

 

[ 그림 #-1. firewall-cmd --list-all 방화벽 내용 확인 ] - 후티(출처)

 

 

 

firewalld는 다양한 영역(Zone)으로 구분하여 네트워크 접속 제어를 하고 있으며 기본 영역은 위의 그림과 같이'public'으로 SSH, dhcpv6-client를 제외하고 들어오는 모든 패킷을 거부하고 나가는 패킷은 모두 허용하도록 설정이 되어 있습니다. 이러한 각 영역의 기본 값에 대한 설명은 /usr/lib/firewalld/zones 디렉토리에 영역별 .xml파일이 있으며 아래 그림에서 보여지는 block ~ trusted가 바로 영역의 이름이 되며 아래는 public 영역에 대한 파일을 확인한 내용입니다.

 

 

 

[ 그림 #-2. firewalld zones(영역) 파일 ] - 후티(출처)

 

 

각 서비스별 프로토콜, 포트 등에 대한 정의가 되어 있는 곳이 /usr/lib/firewalld/services 디렉토리에 .xml파일로 제공되어 있으며 아래 그림은 많은 파일들 중 http.xml의 내용을 확인한 것이며 프로토콜, 포트 등이 정의되어져 있는 것을 확인할 수 있습니다.

 

firewalld를 사용하여 Ping에 응답하지 않게 하거나 Masquerading을 설정하거나 포트 포워딩을 설정하는 등의 추가적인 정책도 설정할 수 있습니다.

 

 

 [ 그림 #-3. firewalld services(서비스) 파일 ] - 후티(출처)

 

 


SELinux(Security-Enhanced Linux)는 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 Linux® 시스템용 보안 아키텍처입니다. 이는 원래 미국 국가안보국(United States National Security Agency, NSA)이 LSM(Linux Security Module)을 사용하여 Linux 커널에 대한 일련의 패치로 개발한 것입니다.

SELinux는 2000년에 오픈소스 커뮤니티에 릴리스되어 2003년에 업스트림 Linux 커널로 통합되었습니다.


- redhat.com 인용

 

SELinux는 한 마디로 시스템의 프로세스, 파일, 장치에 대한 접근 제어에 관련된 보안 정책 세트를 말하는 것으로 특정 서비스를 동작하기 위해서 설정을 변경하여야 되는 경우가 있으며 기본 파일은 /etc/sysconfig/selinux로 세 가지 모드가 있습니다.

 

- enforcing : 기본 값으로 정책에 어긋나는 트래픽은 거부

- permissive : 정책에 어긋나는 트래픽이더라도 허용하되 Audit log 남김

- disabled : 비활성화

 

 

[ 그림 #-4. selinux 설정 ] - 후티(출처)

 

 

설정 파일에서 변경을 하였다면 반드시 재부팅하여야 적용이 되며 #setenforce 0(1) 명령어를 통해 모드 변경이 가능하고 disabled 모드로 변경 시에는 파일에서 변경을 해야 됩니다.

SELinux 동작 모드 및 내용은 #getenforce / #sestatus 명령어로 가능합니다.

 

 

 

[ 그림 #-4. setenforce / sestatus ] - 후티(출처)

 

 

CentOS 7에서의 방화벽 정책인 firewalld와 selinux에 대해 알아보았으며 관련 내용은 유튜브 채널 'youtube.com/에듀쉐어'를 통해 확인이 가능하며 구독 및 좋아요는 콘텐츠 제작에 많은 도움이 됩니다.

감사합니다.^^

 

 

[ Centos 7 - firewall-cmd / selinux 방화벽 설정 ] - 에듀쉐어

[에듀쉐어-강좌공유]

반응형

+ Recent posts