CentOS 방화벽(firewalld) 기본 설정 가이드

CentOS 방화벽 firewalld 이해하기

CentOS는 서버 운영체제로 널리 사용되며, 보안은 매우 중요한 고려 사항입니다. firewalld는 CentOS의 기본 방화벽 관리 도구로, 시스템을 보호하기 위한 첫 번째 방어선 역할을 합니다. 이 가이드에서는 firewalld의 기본 개념부터 설정 방법, 실생활 활용 사례까지 자세히 알아보겠습니다.

방화벽, 왜 중요할까요?

방화벽은 네트워크 트래픽을 검사하여 미리 정의된 규칙에 따라 허용하거나 차단하는 시스템입니다. 해커의 침입 시도, 악성 코드 감염, 데이터 유출 등 다양한 위협으로부터 시스템을 보호합니다. 방화벽이 없으면 서버는 인터넷에 무방비 상태로 노출되어 공격에 취약해집니다.

firewalld의 기본 개념

firewalld는 zone 기반으로 작동합니다. zone은 네트워크 환경에 따라 미리 정의된 규칙 집합입니다. 예를 들어, home zone은 개인 네트워크에 적합하고, public zone은 공용 네트워크에 적합합니다. 각 zone은 허용되는 서비스, 포트, 트래픽 등을 정의합니다. firewalld는 네트워크 인터페이스를 특정 zone에 할당하여 해당 인터페이스를 통해 들어오는 트래픽에 해당 zone의 규칙을 적용합니다.

firewalld 설정 시작하기

이제 firewalld를 설정하는 방법을 단계별로 살펴보겠습니다.

firewalld 상태 확인

가장 먼저 firewalld가 실행 중인지 확인해야 합니다. 다음 명령어를 사용하여 firewalld의 상태를 확인할 수 있습니다.

sudo systemctl status firewalld

만약 firewalld가 실행 중이지 않다면, 다음 명령어로 firewalld를 시작할 수 있습니다.

sudo systemctl start firewalld

부팅 시 자동으로 firewalld가 실행되도록 설정하려면 다음 명령어를 사용합니다.

sudo systemctl enable firewalld

기본 zone 확인 및 변경

firewalld의 기본 zone은 시스템이 시작될 때 활성화되는 zone입니다. 기본 zone을 확인하려면 다음 명령어를 사용합니다.

firewall-cmd --get-default-zone

기본 zone을 변경하려면 다음 명령어를 사용합니다. (예: public zone으로 변경)

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

변경 후에는 firewalld를 재시작하여 변경 사항을 적용해야 합니다.

sudo systemctl restart firewalld

zone 정보 확인

각 zone의 설정 정보를 확인하려면 다음 명령어를 사용합니다. (예: public zone 정보 확인)

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

이 명령어는 public zone에 허용된 서비스, 포트, 소스 등을 보여줍니다.

firewalld 규칙 설정하기

firewalld의 핵심은 규칙을 설정하여 원하는 트래픽을 허용하거나 차단하는 것입니다.

서비스 허용

특정 서비스를 허용하려면 다음 명령어를 사용합니다. (예: HTTP 서비스 허용)

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

--permanent 옵션은 변경 사항을 영구적으로 저장합니다. 이 옵션 없이 명령어를 실행하면 시스템 재부팅 시 변경 사항이 사라집니다.

변경 사항을 적용하려면 firewalld를 재시작해야 합니다.

sudo firewall-cmd --reload

사용 가능한 서비스 목록을 확인하려면 다음 명령어를 사용합니다.

firewall-cmd --get-services

포트 허용

특정 포트를 허용하려면 다음 명령어를 사용합니다. (예: 8080 포트 허용, TCP 프로토콜 사용)

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

UDP 프로토콜을 사용하려면 /tcp 대신 /udp를 사용합니다.

변경 사항을 적용하려면 firewalld를 재시작해야 합니다.

sudo firewall-cmd --reload

소스 IP 주소 허용

특정 IP 주소에서 오는 트래픽을 허용하려면 다음 명령어를 사용합니다. (예: 192.168.1.100 IP 주소 허용)

sudo firewall-cmd --zone=public --add-source=192.168.1.100 --permanent

변경 사항을 적용하려면 firewalld를 재시작해야 합니다.

sudo firewall-cmd --reload

규칙 삭제

설정한 규칙을 삭제하려면 --add 옵션 대신 --remove 옵션을 사용합니다. (예: HTTP 서비스 제거)

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

변경 사항을 적용하려면 firewalld를 재시작해야 합니다.

sudo firewall-cmd --reload

firewalld 실생활 활용 사례

firewalld는 다양한 상황에서 유용하게 활용될 수 있습니다.

firewalld 고급 설정

firewalld는 더 복잡한 네트워크 환경에 맞게 고급 설정을 제공합니다.

Rich Rules

Rich Rules는 더 복잡한 규칙을 정의할 수 있는 기능입니다. 예를 들어, 특정 IP 주소에서 특정 포트로 오는 트래픽만 허용하는 규칙을 만들 수 있습니다.

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8080" protocol="tcp" accept' --permanent

이 규칙은 192.168.1.100 IP 주소에서 8080 포트로 오는 TCP 트래픽만 허용합니다.

변경 사항을 적용하려면 firewalld를 재시작해야 합니다.

sudo firewall-cmd --reload

Direct Interface

Direct Interface는 firewalld 규칙을 직접 iptables에 추가하는 기능입니다. 이 기능은 firewalld에서 제공하지 않는 고급 기능을 사용해야 할 때 유용합니다. 하지만 Direct Interface를 사용하면 firewalld의 관리 기능을 사용하지 못할 수 있으므로 주의해야 합니다.

sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 80 -j ACCEPT

이 규칙은 80 포트로 오는 TCP 트래픽을 허용합니다.

Direct Interface 규칙은 firewalld를 재시작해도 유지됩니다.

firewalld 흔한 오해와 사실

firewalld 문제 해결

firewalld를 사용하면서 문제가 발생할 수 있습니다. 몇 가지 일반적인 문제와 해결 방법을 소개합니다.

자주 묻는 질문

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다