본문 바로가기
Today I Learned/Linux

[Linux] Rich Rules

by dbs_ 2025. 6. 17.

 

 

방화벽에서 매번 포트 설정만 열고 닫았는데, 수석님이 새로 설정하신 것에 rich rules가 있어서 이번 기회에 간단히 학습해 보았다.

 

Rich Rules 란

  • firewalld에서 고급 방화벽 규칙을 설정할 수 있도록 도와주는 방식
  • 리눅스에서 방화벽 설정을 할 때, 가장 많이 쓰는 명령어 중 하나가 firewall-cmd다. 보통 아래처럼 단순한 규칙만으로 포트를 열거나 닫을 수 있다.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 하지만 때로는, 특정 IP에 대해서만 포트를 열거나, 로그를 남기거나, 포트포워딩을 적용하는 등 복잡한 조건을 걸어야 할 경우도 있다. 이럴 때 사용하는 것이 바로 rich rule.

 

왜 Rich Rule을 사용할까?

  • 기본 규칙만으로는 다음과 같은 상황을 처리할 수 없다.
    • 보안 강화를 위해 특정 IP 또는 서브넷만 허용하고 싶을 때
    • 불필요한 접근을 차단하면서도 특정 요청만 허용할 때
    • 로그를 남기면서 트래픽을 허용하거나 거부하고 싶을 때
    • 포트포워딩이나 마스커레이딩 설정이 필요할 때
  • 이런 복잡한 방화벽 정책이 필요할 때 Rich Rule을 사용하면 된다. 이름 그대로  더 풍부한 조건(Rich)을 표현할 수 있는 규칙.

 

Rich Rule 기본 문법

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="22" accept'
  • family : IPv4인지 IPv6인지
  • source : 어떤 IP에서 오는 트래픽인지
  • port : 어떤 포트인지
  • protocol : TCP or UDP
  • accept / reject / drop : 허용 / 거부 / 무시

 

예시

# 현재 설정된 rich rule 확인
sudo firewall-cmd --zone=public --list-rich-rules

# rich rule 삭제
sudo firewall-cmd --permanent --zone=public \
  --remove-rich-rule='rule family="ipv4" source address="203.0.113.10" port port=22 protocol=tcp accept'
  
# 203.0.113.10 에게만 22번 포트 허용 (SSH) - 특정 IP만 포트 허용
sudo firewall-cmd --permanent --zone=public \
  --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port protocol="tcp" port="22" accept'

# 203.0.113.20 의 모든 트래픽 무시(drop) - 특정 IP 차단
sudo firewall-cmd --permanent --zone=public \
  --add-rich-rule='rule family="ipv4" source address="203.0.113.20" drop'

 

주의할 점

  1. 기본 규칙과 충돌 여부 확인
    • 일반 --add-port 설정과 rich rule이 동일 포트에 적용될 경우, 우선순위 문제로 의도와 다르게 작동할 수 있음.
  2. 클라우드 방화벽과 중복 설정 주의
    • AWS EC2, Oracle Cloud 등에서는 보안 그룹(Security Group) 설정이 이중으로 적용될 수 있음.
    • 예 : EC2에서 22 포트를 닫았는데, 서버 내부 firewalld에서 열려 있어도 접근 불가.
  3. 로그를 남길 땐 level 설정도 함께
    • level="info" 외에도 notice, warning, debug 등 사용 가능. 로깅 정책에 따라 다르게 설정 가능.