본문 바로가기

IT/Linux

[Linux] firewalld 방화벽 설정하기

RHEL 7 부터 방화벽을 관리하는 데몬이 iptables에서 firewalld로 변경되었습니다.

iptables을 사용하지 않는 것은 아니고 firewalld의 기반 기능으로 동작하고 있습니다. 

firewalld는 firewall-cmd 명령어를 이용해 사용할 수 있습니다.  firewalld의 기본 설정은 /usr/lib/firewalld/ 경로에 저장되고, 이후 커스텀 설정은 /etc/firewalld/ 경로에 저장됩니다.

1. 방화벽이란?

허용된 접속을 제외하고 외부 사용자들이 내부 네트워크에 접근하지 못하도록 하는 네트워크 방어 도구 입니다. 

2. 방화벽 실행

systemctl start firewalld

3. Zone

방화벽에는 기본적으로 Zone이라는 개념이 존재합니다. Zone은 서버의 용도에 맞게 미리 정의된 네트워크 보안 레벨을 의미합니다. 아무 설정도 하지 않았다면 기본적으로 public Zone을 사용합니다.

아래 명령어를 입력하면 현재 적용되고 있는 Zone이 출력됩니다.

firewall-cmd --get-default-zone

Zone에 허용 및 금지할 포트와 서비스를 설정할 수 있습니다. 

public zone에 9000번 포트와 9001포트 그리고 mysql 서비스를 등록해보겠습니다.

1. 포트 등록

 방법 1

  firewall-cmd --permanent --zone=public --add-port={9000,9001}/tcp

 방법 2
  firewall-cmd --permanent --zone=public --add-port=9000/tcp
  firewall-cmd --permanent --zone=public --add-port=9001/tcp

 방법 3 (포트를 범위로 지정하여 허용할 수 있습니다.)
  firewall-cmd --permanent --zone=public --add-port=9000-9010/tcp

2. 서비스 등록
 firewall-cmd --permanent --zone=public --add-service=mysql

 firewall-cmd --reload
--permanent 
지정한 옵션을 영구적으로 적용합니다. 해당 옵션을 주지 않는다면 리눅스 리부팅 시, 설정한 옵션이 모두 초기화 됩니다.

--zone=ZoneName
지정한 zone에 설정을 적용합니다. zone을 지정하지 않으면 현재 사용하고 있는 zone에 적용됩니다.

firewall-cmd --reload
방화벽 설정이 끝나면 반드시 방화벽 리로드를 해주어야 적용됩니다. 

zone에 대한 설정 정보를 보려면 다음과 같은 명령어를 입력해주세요.

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

public zone에 대한 설정 정보는 /etc/firewalld/zones/public.xml 경로에서 확인할 수 있습니다.

다른 Zone으로 변경하기

firewall-cmd --set-default-zone=ZoneName

public zone에 9000번 포트 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-port=9000/tcp

public zone에 mysql 서비스 허용 옵션 삭제

firewall-cmd --permanent --zone=public --remove-service=mysql

public zone의 특정 IP대역에서 mysql 접근을 허용

firewall-cmd --permanent --zone=public --add-source=192.168.1.0/24 --add-service=mysql

public zone의 mysql에 접근하는 특정 ip 차단

firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=220.92.5.144 service name=mysql reject"

4. 유용한 명령어

firewall-cmd --state
방화벽 상태 확인

firewall-cmd --get-zones
모든 Zone 출력

firewall-cmd --get-default-zone
현재 적용된 Zone 출력

firewall-cmd --list-all
사용 가능한 서비스/포트 출력

firewall-cmd --reload
방화벽 리로드

참조 : https://www.lesstif.com/pages/viewpage.action?pageId=22053128

도움이 되셨다면 공감 한번씩 눌러주세요.