firewall-cmd 명령어 정리

SunChan Kwon·2024년 6월 1일
0

Linux

목록 보기
11/20

zone

# 사전에 정의된 zone 확인
[root@server2 ~]# firewall-cmd --get-zones
block dmz drop external home internal nm-shared public trusted work

# 활성화된 zone 확인
[root@server2 ~]# firewall-cmd --get-active-zones 
public
  interfaces: eth1 eth0

# 기본 영역 확인(기본 값 :public)
firewall-cmd --get-default-zone

# 기본 영역 설정
firewall-cmd --set-default-zone=<zonename>

# zone에 interface 추가
firewall-cmd --add-interface=<interface> --zone=<zonename>
# 변경
firewall-cmd --change-interface=<interface> --zone=<zonename>

service

# 사전에 정의된 서비스 확인
firewall-cmd --get-services 

# 서비스 추가
firewall-cmd --add-service=<servicename> --zone=<zonename>
# 제거 
firewall-cmd --remove-service=<servicename> --zone=<zonename>

ssh 접속 차단(service 설정)

# server2의 ssh 서비스를 삭제하여 ssh접근 차단
firewall-cmd --remove-service=ssh

# 원상복귀
firewall-cmd --add-service=ssh

port rule

사전에 정의된 서비스 뿐만 아닐라 포트나 프로토콜을 직접 지정하여 규칙을 생성할 수 있다.

# port rule add
firewall-cmd --add-port=<port>/<protocol> --zone=<zonename>

# port rule remove
firewall-cmd --remove-port=<port>/<protocol> --zone=<zonename>

protocol rule

프로토콜 규칙에서의 프로토콜은 포트규칙의 TCP/UDP와 달리 통신 규약 프로토콜 자체를 의미(/etc/protocols에서 확인가능)

# protocol rule add
firewall-cmd --add-protocol=<protocol> --zome=<zonename>

# protocol rule remove
firewall-cmd --remove-protocol=<protocol> --zome=<zonename>

port forwarding

외부 네트워크에서 접속할 때 시스템에서 연결을 중계하여 같은 시스템의 다른 포트로 연결하는 것

# port forwarding add
firewall-cmd --add-forward-port=<port-Forwarding-rule> [--zone] [--permanent]

# port forwarding remove
firewall-cmd --remove-forward-port=<port-Forwarding-rule> [--zone] [--permanent]

# 80/tcp 접속을 192.168.10.10:22로 중계
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=22:toaddr=192.168.10.10

Rich Rule

firewalld에서 세부적인 규칙을 설정할 때 사용 특정 이벤트 발생 시 해당 이벤트에 대한 로그(syslog), audit 기록을 생성할 수도 있다.

# rich rule add
firewall-cmd --add-rich-rule='rule RULE'

# rich rule remove
firewall-cmd --remove-rich-rule='rule RULE'

# rich rule check
firewall-cmd --list-rich-rule

rich rule usage

rich rule은 자동완성 기능이 제공되지 않아 문법을 숙지해야한다.

옵션설명사용
familyIP 패킷의 패밀리 지정(ipv4 또는 ipv6)family="ipv4"
source출발지 주소 지정source address="192.168.1.1"
destination목적지 주소 지정destination address="10.0.0.1"
service서비스 이름 또는 포트 번호 지정service name="http"
port포트 번호 지정port port="80" protocol="tcp"
protocol프로토콜 지정 (tcp, udp, icmp)protocol="tcp"
action규칙의 행동을 지정(accept, reject, drop)action="accept"
log패킷 로깅log prefix="Firewall", level='PRIORITY'
auditaudit log 기록audit
forward-port포트 포워딩forward-port port="80:proto=tcp:toport=8080"

특정 ip만 허용

# server2에서 192.168.10.30을 제외한 모든 접속 차단
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source not address="192.168.10.30" reject"


redirection

ip가 192.168.10.20로 설정된 server2로 ssh 접속하면 192.168.10.10 ip를 가진 server1로 redirection 되도록 port forwarding

server2

# 80번 포트를 통해 server2로 접속 요청 시에 192.168.10.10:22로 redirection 되도록 port forwarding
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=22:toaddr=192.168.10.10

# rich rule 방식
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" forward-port port="80" protocol="tcp" to-port="22" to-addr="192.168.10.10"'


# masquerade를 활성화
firewall-cmd --add-masquerade

server2로 ssh접근

server3 에서 192.168.10.20:80으로 ssh 접근하여 192.168.10.10 ip를 가진 server1로 redirection 되는 것을 확인

0개의 댓글