OS/Server > CentOS

CentOS 7 방화벽 (firewall)

기본 명령어 (서비스 상태)

서비스 상태확인, 서비스 기동과 정지, 자동기동관련 

상태확인

# firewall-cmd --state

서비스 기동

# systemctl start firewalld.service

서비스 정지

# systemctl stop firewalld.service

자동기동 상태확인

# systemctl is-enabled firewalld.service

자동기동 설정

# systemctl enable firewalld.service

자동기동 해제

# systemctl disable firewalld.service

 

존 (Zone)의 확인

※ 영구적인걸 확인하고 싶으면 --permanent 옵션을 붙이면 된다.

현재 할당된 존 확인

# firewall-cmd --get-active-zones

    public

          interfaces: enp0s3 enp0s8
 

※ public존이 enp0s3과 enp0s8 인터페이스에 할당되어 있다.

default로 할당된 존 확인

# firewall-cmd --get-default-zone

default존의 FW(firewall) 설정확인

# firewall-cmd --list-all
# firewall-cmd --list-all --permanent

지정한 존의 FW설정확인 (예: home)

# firewall-cmd --list-all --zone=home

모든 존의 FW설정 상태를 확인한다.

# firewall-cmd --list-all-zones

 

서비스의 확인

등록가능한 서비스의 종류 확인

# firewall-cmd --get-services

현재 추가된 서비스의 확인 (zone옵션이 없으면 디폴트)

# firewall-cmd --list-services    
# firewall-cmd --list-services --zone=home    
# firewall-cmd --list-services --zone=home --permanent    
 

 

서비스의 추가/삭제 및 적용

서비스 추가

# firewall-cmd --add-service=https    ( default 존에 추가 )
# firewall-cmd --add-service=https --zone=public   ( public 존에 추가 )
# firewall-cmd --add-service=https --zone=public --permanent  ( 영구적인 설정 )

# firewall-cmd --reload  ( 적용 )

서비스 삭제

# firewall-cmd --remove-service=https   ( default 존에서 삭제 )
# firewall-cmd --remove-service=https --zone=public  ( public 존에서 삭제 )
# firewall-cmd --remove-service=https --zone=public --permanent ( 영구적인 삭제 )

# firewall-cmd --reload (적용)    

 

포트(Port) 번호의 방화벽 설정

추가된 포트번호 확인

# firewall-cmd --list-ports
# firewall-cmd --list-ports --zone=public
# firewall-cmd --list-ports --zone=public --permanent

포트번호 추가

# firewall-cmd --add-port=8080/tcp --zone=public --permanent
# firewall-cmd --add-port=10000/udp --zone=public --permanent
# firewall-cmd --reload

포트번호 삭제

# firewall-cmd --remove-port=8080/tcp --zone=public --permanent
# firewall-cmd --remove-port=10000/udp --zone=public --permanent
# firewall-cmd --reload

 

IP 어드레스의 방화벽

추가된 IP Address 확인

# firewall-cmd --list-sources --zone=public --permanent

IP Address 추가

# firewall-cmd --add-source=192.168.0.0/24 --zone=public --permanent
# firewall-cmd --reload

IP Address 거부 ( drop 존에 등록한다. )

# firewall-cmd --add-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload

IP Address 존의 변경 ( -> drop 존으로 변경)

# firewall-cmd --change-source=192.169.11.0/24 --zone=drop --permanent

확인 : IP Address 가 어느 존에 할당되어 있나 확인

# firewall-cmd --get-zone-of-source=192.168.11.0/24

삭제 : IP Address 를 존에서 삭제

# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop --permanent

 

ZONE : 존의 변경

Active Zone 의 변경

※ ens180의 할당을 home으로 변경

# firewall-cmd --zone=home --change-interface=ens180 --permanent
# firewall-cmd --reload

default 존의 변경

# firewall-cmd --set-default-zone=home

 

서비스의 신규작성

※ 자세산 것은 firewall-cmd manual 참조 (man firewalld-cmd)

     [ --permanent ] 옵션은 필수

emunhi 서비스 작성 (emunhi.xml)

# firewall-cmd --permanent --new-service emunhi
# cat /etc/firewalld/services/emunhi.xml 로 확인해 보면 아래와 같이 생성된걸 볼수 있다.

<?xml version="1.0" encoding="utf-8"?>
<service>
</service>
 

- 기존의 xml 파일로 작성할 경우
# firewall-cmd --permanent --new-service-from-file=[기존file.xml] --name=emunhi.xml

emunhi 서비스에 설명문 추가

# firewall-cmd --permanent --service=emunhi --set-description=[설명문]
# firewall-cmd --permanent --service=emunhi --set-short=[짧은설명문]

emunhi 서비스에 FW 설정 추가

# firewall-cmd --permanent --service=emunhi --add-port=20000/tcp
# firewall-cmd --permanent --service=emunhi --add-source-port=60000-65000/udp
# firewall-cmd --permanent --service=emunhi --set-destination=ipv4:192.168.0.1/24
# firewall-cmd --reload

emunhi 서비스의 삭제

# firewall-cmd --permanent --delete-service=emunhi
# firewall-cmd --reload