Skip to content

firewall

Been Kyung-yoon edited this page Feb 3, 2023 · 8 revisions

방화벽 설정 안내

주의) CentOS 설치시 기본 방화벽일 경우의 설정 안내입니다. 간혹 서버호스팅 업체에서 별도 방화벽 프로그램을 설치해둔 경우 아래 내용과 상이하거나, 실행시 문제가 될 수 있습니다.

CentOS 7, Rocky Linux 8 + firewalld

방화벽 실행 여부

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-06-14 18:27:18 KST; 45min ago
     Docs: man:firewalld(1)
 Main PID: 5948 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─5948 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Jun 14 18:27:18 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 14 18:27:18 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

Loaded: ... firewalld.service; disabled 이면 부팅시 시작되지 않으니, 활성화해주세요. systemctl enable firewalld

Active: inactive (dead)이면 시작되지 않았으니, 시작해주세요. systemctl start firewalld

방화벽 룰셋 확인

  • 설치 직후 SSH 22 포트만 열린 상태
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno16777736
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 기존 iptables 명령으로도 룰셋 확인 가능
# iptables -L -n|grep ACCEPT
Chain INPUT (policy ACCEPT)
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
Chain FORWARD (policy ACCEPT)
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
Chain OUTPUT (policy ACCEPT)
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW

firewalld 는 iptables 기반 방화벽 관리툴입니다. 설정 파일 - /etc/firewalld/zones/public.xml

방화벽 룰셋 변경

  • 웹서비스 등 포트는 모든 출발지에서 허용
# HTTP
firewall-cmd --permanent --zone=public --add-port=80/tcp

# HTTPS
firewall-cmd --permanent --zone=public --add-port=443/tcp

# DNS Server (자체 네임서버를 운영중인 경우만, 캐싱 서버를 외부로만 나가므로 허용 불필요)
#firewall-cmd --permanent --zone=public --add-port=53/tcp
#firewall-cmd --permanent --zone=public --add-port=53/udp

# 허용된 포트 삭제 (--remove-port)
#firewall-cmd --permanent --zone=public --remove-port=53/tcp
  • 디비서버가 웹서버와 분리된 경우, 웹서버 출발지에서 디비 포트 허용
# Web(192.168.0.100) -> DB(3306 port)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address=192.168.0.100 port protocol=tcp port=3306 accept"

# 허용된 출발지와 포트 삭제
#firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address=192.168.0.100 port protocol=tcp port=3306 accept"
  • 관리자나 내부 출발지에서 모든 포트 허용
# C class 전체
firewall-cmd --permanent --zone=trusted --add-source=192.168.0.0/24

# 1개 IP
firewall-cmd --permanent --zone=trusted --add-source=192.168.0.200/32

# 허용된 IP 삭제
#firewall-cmd --permanent --zone=trusted --remove-source=192.168.0.200/32

2022-05-27, 모든 포트를 허용하는 신뢰할 수 있는 IP 는 'public' 대신 'trusted' 존에 추가해야 합니다. 만약 이미 public 존에 추가된 경우는 삭제후 trusted 존에 추가해주어야 합니다.

  • 서비스명으로 포트 허용
# smaba 서비스 허용
firewall-cmd --permanent --zone=public --add-service=samba

# smaba 서비스 삭제
#firewall-cmd --permanent --zone=public --remove-service=samba
  • 변경된 방화벽 룰셋 적용, 룰셋 확인
firewall-cmd --reload && firewall-cmd --list-all  

--reload 옵션은 기존 연결을 유지하면서 적용. --complete-reload 옵션은 기존 연결 끊고 재시작


CentOS 6 + iptables

https://www.php79.com/59


참고