-
Notifications
You must be signed in to change notification settings - Fork 32
firewall
Been Kyung-yoon edited this page Feb 3, 2023
·
8 revisions
주의) CentOS 설치시 기본 방화벽일 경우의 설정 안내입니다. 간혹 서버호스팅 업체에서 별도 방화벽 프로그램을 설치해둔 경우 아래 내용과 상이하거나, 실행시 문제가 될 수 있습니다.
# 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 7 기본 설치후, 웹서비스(80, 443)포트 열기 https://github.com/php79/stack/issues/51