개요
firewall-cmd는 firewalld 서비스와 상호작용하여 시스템의 네트워크 트래픽을 제어합니다. 영구적인 규칙과 런타임 규칙을 구분하여 적용할 수 있으며, 다양한 네트워크 존(zone)을 통해 유연한 보안 정책을 제공합니다. 이를 통해 서버의 보안을 강화하고 특정 서비스에 대한 접근을 허용하거나 차단할 수 있습니다.
주요 기능
- 포트 및 서비스 관리 (추가/제거)
- 네트워크 존(Zone) 설정 및 관리
- IP 주소 및 네트워크 기반 규칙 (Rich Rules)
- 런타임 및 영구 규칙 적용
- 마스커레이딩(Masquerading) 및 포트 포워딩 설정
주요 옵션
firewall-cmd는 다양한 옵션을 통해 방화벽 규칙을 조회하고 설정할 수 있습니다.
규칙 적용 및 관리
정보 조회
생성된 명령어:
명령어를 조합해 보세요.
설명:
`firewall-cmd` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
firewall-cmd를 사용하여 방화벽 규칙을 설정하고 관리하는 다양한 예시입니다.
현재 활성 존 및 규칙 확인
firewall-cmd --list-all
기본 존(public)의 현재 런타임 설정을 모두 확인합니다.
특정 존의 모든 설정 확인
firewall-cmd --zone=internal --list-all
지정된 존(예: internal)의 모든 설정을 확인합니다.
HTTP 서비스 추가 (런타임)
sudo firewall-cmd --zone=public --add-service=http
public 존에 HTTP 서비스를 일시적으로 허용합니다. 재부팅 시 사라집니다.
HTTP 서비스 추가 (영구적)
sudo firewall-cmd --zone=public --add-service=http --permanent
public 존에 HTTP 서비스를 영구적으로 허용합니다. 변경 사항을 적용하려면 --reload가 필요합니다.
방화벽 규칙 재로드
sudo firewall-cmd --reload
영구적으로 설정된 모든 규칙을 현재 런타임 방화벽에 적용합니다.
포트 8080/tcp 추가 (영구적)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
public 존에 TCP 8080 포트를 영구적으로 허용합니다. 적용 후 재로드해야 합니다.
SSH 서비스 제거 (영구적)
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
public 존에서 SSH 서비스를 영구적으로 제거합니다. 적용 후 재로드해야 합니다.
모든 영구 규칙 적용
sudo firewall-cmd --reload
영구적으로 변경된 모든 규칙을 즉시 적용합니다.
설치
firewall-cmd는 firewalld 패키지의 일부입니다. 대부분의 최신 Linux 배포판에 기본으로 설치되어 있거나 쉽게 설치할 수 있습니다.
CentOS/RHEL/Fedora
sudo dnf install firewalld
Red Hat 계열 리눅스에서 firewalld를 설치합니다.
Ubuntu/Debian
sudo apt install firewalld
Debian 계열 리눅스에서 firewalld를 설치합니다.
서비스 시작 및 활성화
sudo systemctl start firewalld
sudo systemctl enable firewalld
설치 후 firewalld 서비스를 시작하고 시스템 부팅 시 자동 실행되도록 활성화합니다.
팁 & 주의사항
firewall-cmd 사용 시 유의할 점과 유용한 팁입니다.
런타임 vs 영구 규칙
- `--permanent` 옵션 없이는 현재 세션에만 규칙이 적용되며, 재부팅 시 사라집니다.
- 영구적으로 적용하려면 `--permanent`를 사용한 후 `firewall-cmd --reload` 명령으로 변경 사항을 적용해야 합니다.
존(Zone) 이해
- firewalld는 네트워크 인터페이스를 여러 보안 존에 할당하여 관리합니다. 각 존은 다른 보안 수준을 가질 수 있습니다.
- 기본 존은 `public`이며, 대부분의 외부 연결에 사용됩니다. `home`, `internal`, `trusted` 등 다양한 존이 있습니다.
서비스 이름 사용
- 포트 번호(예: 80/tcp) 대신 `http`, `https`, `ssh`와 같은 미리 정의된 서비스 이름을 사용하는 것이 가독성과 관리 편의성 면에서 좋습니다.
- `firewall-cmd --get-services` 명령으로 사용 가능한 서비스 목록을 확인할 수 있습니다.
백업 및 테스트
- 중요한 변경을 하기 전에 `firewall-cmd --list-all --zone=<zone>` 명령으로 현재 설정을 기록해두는 것이 좋습니다.
- 변경 사항 적용 후에는 해당 서비스가 정상적으로 작동하는지 반드시 테스트해야 합니다.