본문 바로가기
  • 그라데이션
운영체제/Linux

[Linux_개념] 서버 방화벽 (Server Firewall)

by 콩리토 2023. 3. 3.
반응형
이 글에서 사용된 명령어와 예시는 CentOS8을 기준으로 작성된 것입니다.

급하게 명령어가 필요하신 분들은 본문 하단에 명령어 관련 내용 위치해 있으니 참고해주세요.

 


 

방화벽 (Firewall)

 방화벽이란 그 단어에서 주는 느낌대로 네트워크 환경의 내부와 외부 경계에 위치하며, 외부의 네트워크의 침입으로부터 내부 네트워크를 보호하기 위해 사용된다. 미리 정의된 보안 룰에 따라 들어오고 나가는 네트워크 트래픽을 모니터링, 제어하는 네트워크 보안시스템이다.

 

<CentOS 버전별 방화벽 설정, 기능 정리>

  • iptables
    CentOS6 까지 사용되던 방화벽으로 설정과 기능이 iptables에 의해서 제공
    설정 변경시에 서비스 중지 및 설정 변경 (모든 룰이 삭제되서 다시 적용)

 

  • firewalld
    동적인 방화벽으로 언제든지 설정 변경, 실행 (방화벽 재로딩이 불필요하여 기존 네트워크 연결 중단 발생 x)
    방화벽 설정 관련 내용은 /etc/sysconfig/iptables에 저장 x, 파일이 존재하지도 않음
    대신,
    /usr/lib/firewalld 및 /etc/firewalld 디렉토리에 있는 다양한 파일에 저장
    가상화, 클라우드 환경에서의 필터링 정책 동적 추가 기능

    DBUS API(Application간의 통신을 지원하는)를 통한 정보 공유를 통해 정책이 충돌하던 문제 해결

 

CentOS8 버전부터는 firewalld를 사용하므로 이 글은 firewalld에 대한 내용을 서술하고자 한다.

 

[사전 정의된 영역]

: firewalld는 사전 정의된 영역이 존재하며, 그 영역을 지정도 가능하다. 기본적으로는 모든 영역의 시스템에서 나가는 모든 트래픽과 들어오는 일부 트래픽을 허용한다.

 

[사전 정의된 영역 설명]

Zone Name 설명
trusted 모든 네트워크 연결이 허용하고 네트워크의 모든 컴퓨터를 신뢰
home 네트워크의 다른 컴퓨터는 일반적으로 신뢰하고 선택한 수신 연결만 허용
internal 시스템이 게이트웨이 또는 라우터 역할을 하는 경우 내부 네트워크에서 사용. 네트워크의 다른 시스템은 일반적으로 신뢰하고 선택한 수신 연결만 허용
work 네트워크의 다른 컴퓨터는 일반적으로 신뢰하고 선택한 수신 연결만 허용
public 신뢰할 수 없는 공용 영역에서 사용. 네트워크의 다른 컴퓨터를 신뢰하지는 않지만 선택한 수신 연결을 허용
external 시스템이 게이트웨이 또는 라우터 역할을 할 때 NAT 위장 기능을 사용하도록 설정된 외부 네트워크에서 사용하고 선택한 수신 연결만 허용
dmz 네트워크의 나머지 부분에 대한 액세스가 제한된 비무장 지대에 위치한 컴퓨터에 사용하고 선택한 수신 연결만 허용
block 들어오는 모든 연결은 IPv4에 대해 immp-호스트 금지 메시지와 IPv6n에 대해 immp6-adm 금지 메시지로 거부되고 나가는 연결만 허용
drop 들어오는 모든 트래픽을 삭제하고 나가는 연결만 허용

 

[사전 정의된 서비스]

Zone Name 설명
ssh (22/tcp) 로컬 ssh 서버에 대한 22/tcp 트래픽
dhcpv6-client (546/udp) 로컬 DHCPv6 클라이언트 fe80::/64
ipp-client (641/udp) 로컬 IPP 인쇄
samba-client (137/udp, 138/udp) 로컬 Windows 파일 및 인쇄 공유 클라이언트
mdns (5353/udp) mDNS(Multi-cast DNS) 로컬 링크 이름 확인

 

 

firewall-cmd 명령어 예제

* firewall-cmd 명령으로 --permanent 옵션을 추가하면 영구적으로 추가

[firewalld 설치]

firewalld 설치

# yum install firewalld

 

firewalld 실행

# systemctl start firewalld

 

firewalld 부팅시 자동 실행

# systemctl enable firewalld

 

[zone 관련 명령어]

사전 정의된 firewall zone 정보 확인

# firewall-cmd --get-zones

 

기본 설정 zone 확인

# firewall-cmd --get-default-zone

 

기본 zone 변경

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

 

◈ 전체 zone 목록 상세 확인

# firewall-cmd --list-all-zones

 

◈ 네트워크 인터페이스에 적용된 zone list 확인

# firewall-cmd --get-active-zone

 

신규 zone 추가

# firewall-cmd --permanent --new-zone=test

 

 기존 zone 삭제

# firewall-cmd --permanent --delete-zone=test

 

◈ default zone 정보 확인 및 변경하는 경우

# firewall-cmd --get-default

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

 

[서비스 관리 명령어]

사전 등록된 서비스 목록 확인

# firewall-cmd --get-services

 

 특정 zone에 허용된 서비스 리스트 확인

# firewall-cmd --list-service --zone=public

 

 여러가지 서비스 등록/삭제하는 방법

# firewall-cmd --permanent --add-service=http --add-service=https    // <WEB 추가> 

# firewall-cmd --permanent --add-service=ftp     // <FTP 추가>

# firewall-cmd --permanet --add-service=mysqld     // <Mysql/MariaDB 추가>

# firewall-cmd --permanent --zone=public --remove-service=telnet     // <telnet 삭제>

(+)

# firewall-cmd --reload

 

[IP 관리 명령어]

◈ 허용 IP 리스트 확인

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

 

 허용 IP 추가 방법

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

# firewall-cmd --reload

 

허용 IP 삭제 방법

# firewall-cmd --permament --zone=public --remove-source=192.168.10.0/24

# firewall-cmd --reload

 

[Port 관리 명령어]

◈ 허용 port 리스트 확인

# firewall-cmd --list-port --zone=public

 

 포트 등록하는 방법

# firewall-cmd --permanent --add-port=1521/tcp     // port 추가

# firewall-cmd --reload # firewall-cmd --permanent --add-port=8888-9999/tcp     // port 다중 추가

# firewall-cmd --reload # firewall-cmd --permanent --remove-port=1521/tcp     // port 삭제

(+)

# firewall-cmd --reload

728x90

댓글