레드헷 공식 문서
firewall-cmd는 zone별로 구분하여 정책설정을 할 수 있음을 기억할 것
죵류
|
의미
|
Public
|
firewalld의 기본 영역
|
Drop
|
들어오는 패킷을 모두 버린다
|
Block
|
들어오는 패킷을 모두 거부하지만 응답 메시지를 전달한다
|
External
|
라우터를 사용하여 내부 연결에 사용된다
|
DMZ
|
내부 네트워크는 제한적으로 설정하고 외부 네트워크에 접근한다
|
Work
|
신뢰하는 네트워크만 허용한다
|
Trusted
|
모든 네트워크를 허용할 경우 사용한다
|
Internal
|
내부 네크워크에 선택한 연결만 허용한다
|
[root@linux-1 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: bond0 ens32 ens34 ens35
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[ 의미 ]
public
|
zone에 대한 종류를 나타낸다
|
active
|
run-time 활성화 여부를 나타낸다
|
target: default
|
해당 zone의 기본 보안 정책을 따른다는 의미
|
icmp-block-inversion: no
|
ICMP 를 허용하겠다, yes : 거부
|
interfaces : ...
|
zone에 적용이 되는 인터페이스
|
sources:...
|
ip주소를 의미
|
services:...
|
서비스를 의미
|
ports:...
|
포트를 의미
|
protocols:
|
프로토콜을 의미
|
masquerade: no
|
NAT 사용여부, no는 하지 않겠다
|
forward-ports:
|
포트 포워딩을 허용 여부
|
icmp-blocks:
|
블러킹할 ICMP 타입지정
|
rich rules:
|
세밀한 방화벽 정책
|
0. 기본 firewalld 명령어
firewalld 실행여부 확인하기
firewall-cmd --state
* 디펄트 존 확인하기
firewall-cmd --get-default-zone
* 활성화된 존과 연결된 인터페이스 확인하기
firewall-cmd --get-active-zones
* 디펄트 존의 환경설정 보기
firewall-cmd --list-all
* 사용가능한 존 목록 확인하기
firewall-cmd --get-zones
* home존의 환경설정 보기
firewall-cmd --zone=home --list-all
* 인터페이스의 존을 변경하기
firewall-cmd --zone=home --change-interface=eth0
or "/etc/sysconfig/network-scripts/"에 있는 ifcfg-eth0와 같은 파일에 ZONE=home과 같이 설정을 추가하면 해당 존으로 인터페이스가 잡힌다.
* 디펄트 존 변경하기
firewall-cmd --set-default-zone=home
사용자 존 생성하기
firewall-cmd --permanent --new-zone=publicweb
* 사용자 존 삭제하기
firewall-cmd --permanent --delete-zone=publicweb
* external존을 Masquerading 가능상태인지 확인하기
firewall-cmd --zone=external --query-masquerade
* external존을 Masquerading 가능상태로 만들기
firewall-cmd --zone=external --add-masquerade
* external존을 Masquerading 불가능상태로 만들기
firewall-cmd --zone=external --remove-masquerade
firewalld 사용하여 port forwarding 설정하기 with CentOS7
1. firewalld 설치
# yum install -y firewalld
2. 사용중인 서비스 port 오픈 미리 허용 설정
1)TCP 특정 포트 허용 (예 1~65535 전부 허용)
# firewall-cmd --permanent --zone=public --add-port=1-65535/tcp
2) UDP 특정 포트 허용(예 3000번)
# firewall-cmd --permanent --add-port=3000/udp
3. redirect 80 to 443 설정하기 (http to httpd)
1) 동일 서버내에서 redirect 하는 경우
# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=443
# firewall-cmd --runtime-to-permanent
2) A서버의 80포트를 B서버의 443포트로 redirect 하는 경우, Enable masquerade 추가
# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=443:toaddr=SERVER_B_IP_ADDRESS
# firewall-cmd --add-masquerade
4. 설정 확인하기
# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports: port=80:proto=tcp:toport=443:toaddr=
source-ports:
icmp-blocks:
rich rules:
#
firewall-cmd --zone=default --query-masquerade
5. 실행 명령
# systemctl enable firewalld // 기능 활성화
# systemctl disable firewalld // 기능 비활성화
# systemctl start firewalld // 시작
# systemctl stop firewalld // 중지
# systemctl restart firewalld // 재시작
===========================================================
번외) IP 허용 설정하기
“--add-rich-rule=” : 다음의 하위 옵션을 사용하여 추가할 rich rule을 지정합니다.
“rule family=” : IP 버전에 따라 ipv4 또는 ipv6 중에 선택하여 지정합니다.
“source address=” : 룰을 적용할 출발지 IP 를 입력합니다.
“accept/drop/reject” : 룰의 액션을 지정합니다. 허용 정책은 accept 를 입력합니다.
192.168.240.100 의 출발지 IP 허용 룰을 public zone에 영구 활성화하려면 아래와 같이 수행 후 firewall-cmd --reload 로 반영합니다.
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.240.100" accept"
여기에 포트와 프로토콜 옵션도 추가 가능
port port="22" protocol="tcp"
# firewall-cmd --reload
add-rich-rule 을 remove-rich-rule 로 바꾸어 수행하면 설정한 룰이 삭제됩니다.
# firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.240.100" accept"
아니면 간단하게는 이렇게 허용
firewall-cmd --permanent --zone=public --add-source=[허용할 IP]/32
'Linux' 카테고리의 다른 글
Rsync와 inotifywait를 사용한 백업 ver AWS (0) | 2023.03.15 |
---|---|
iptables portforwarding (DNAT) (0) | 2023.03.14 |
[트러블슈팅] WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) | 2023.03.10 |
ss (natstat) (0) | 2023.01.09 |
rdate - 타임서버와 시간 동기화 (0) | 2022.12.22 |