OS/CentOS

Rocky, CentOS Redhat 계열 방화벽 관리

Lawmin 2024. 6. 27. 14:10

서버 방화벽의 기본 zone인 public에 대해 많이 사용하는 명령어 위주로 기재합니다.

(Zone 단위로 관리도 가능하나 복잡해서 배제)

root 계정으로 실행합니다.

 

1. 방화벽 켜기/끄기

* Whitelist 기반으로서 켜자마자 추가적인 접속이 차단되므로 주의 필요 (현재 접속은 유지)

systemctl start firewalld

systemctl stop firewalld

 

2. 기존 설정내역 확인

firewall-cmd --list-all

 

3. 정책 추가

1) Source 제한 없이 허용 포트/서비스 추가 (택 1), 아래는 80 또는 http 추가 예시

firewall-cmd --zone=public --permanent --add-port=80/tcp

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

여러 포트인 경우, 

firewall-cmd --zone=public --permanent --add-port={3306,4567,4568,4444}/tcp

* 서비스 참조 /etc/services (필요 시 해당 파일에 추가 가능)

 

2) Source 제한하여 허용 포트/서비스 추가 (택 1), 아래는 80 또는 http 추가 예시

firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="Source IP" port port="80" protocol="tcp" accept'

firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="Source IP" service name="http" accept'

firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="Source CIDR" port port="80" protocol="tcp" accept'

firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="Source CIDR" service name="http" accept'

* CIDR 참조 https://www.ipaddressguide.com/cidr (IP 대역 변환)

 

3) 정책 제거는 --add-* 부분을 --remove-* 로 대체

firewall-cmd --zone=public --permanent --remove-port=...

firewall-cmd --zone=public --permanent --remove-rich-rule=...

 

4) Outbound 차단 (예전 방식으로 설정)

Outbound 는 firewall-cmd 기본 설정으로 안되어서 --direct 방식으로 설정 (아래는 특정 IP 에 대한 1521 포트 접근 차단)

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 2 -d 1.1.1.1 -p tcp --dport=1521 -j DROP

firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 2 -d 2.2.2.2 -p tcp --dport=1521 -j DROP

firewall-cmd --direct --get-all-rules

* OUTPUT 다음 숫자(2)는 우선 순위 (0, 1 등도 지정 가능하나 앞 순위에 설정이 추가될 수 있어 2로 둚)

 

4. 반영 및 확인

firewall-cmd --reload

firewall-cmd --list-all

 

[예시] dhcpv6-client, ssh 서비스, tcp 80, tcp 443 포트의 접속이 허용되어 있음

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 443/tcp

  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: