
소프트웨어 끼리 통신하기 위한 네트워크를 구성, 설정 하거나, 특정 장비로 트래픽을 보낼때 단번에 되지 않으면 꼭 생각나는 것이 바로 방화벽 설정 유무이다. 내가 설정을 잘 해도 이 방화벽이 떡 하니 가로막고 있으면 일단 "기분이 팍 상해부렀어~" 가 된다.
오늘은 방화벽에 대한 개념과 종류들에 대해 좀 더 자세히 알아보고 실무에서 방화벽 때문에 내가 설정을 잘 했으니 당당하게 방화벽 상태를 체크하거나 해제해 달라고 할 수 있는 사람이 되어보자.
1. 방화벽이란 무엇인가?
방화벽(Firewall)은 네트워크를 지나는 데이터 패킷을 검사하고, 허용하거나 차단하는 보안 기술이다. 쉽게 말해, 네트워크 세계의 출입문이다. 출입문에는 누구는 들어올 수 있고, 누구는 못 들어온다라는 규칙이 있다. 즉 서버 컴퓨터와 네트워크 장비도 마찬가지로, 어떤 IP·포트·프로토콜만 들어올 수 있는지를 보안을 위해 정해 놓는다.
2. 방화벽의 큰 분류
방화벽은 위치와 기술에 따라 다음과 같이 구분할 수 있다.
2-1. OS 수준 방화벽
- 위치: 서버 내부
- 예시: Linux 의 iptables firewalld ufw, Windows Defender Firewall
- 특징: 특정 서버에 직접 접근하는 포트를 제어한다
- 비유: 집 현관문 — 내 방(서버) 안으로 들어올 수 있는 사람을 직접 제어하는 것 과 같다.
2-2. 네트워크 장비 기반 방화벽 (Appliance)
- 위치: 서버/네트워크 앞단, 외부와 내부를 가르는 경계
- 예시: Cisco ASA, Fortigate, Palo Alto, Check Point
- 특징: 대규모 네트워크 트래픽을 필터링, NAT·VPN·IPS/IDS 기능 포함.
- 비유: 아파트 단지 정문 경비실 — 단지 전체로 들어오는 사람을 걸러낸다.
2-3. 네트워크 장비의 소프트웨어 방화벽
- 위치: 라우터·스위치 같은 장비 내부
- 예시: Cisco IOS ACL, MikroTik RouterOS Firewall
- 특징: 전용 방화벽은 아니지만, 장비가 패킷을 라우팅하면서 트래픽을 필터링 한다.
- 비유: 아파트 각 동 출입문 — 단지 안에서도 각 건물마다 들어올 수 있는 사람을 제한한다.
2-4. 가상화/클라우드 방화벽
- 위치: 가상 네트워크/클라우드 환경
- 예시: AWS Security Group, Azure NSG, VMware NSX
- 특징: VM 단위, VPC 단위 접근 제어. 소프트웨어적으로 구현된다.
- 비유: 아파트 호실 도어락 — 같은 건물에 살아도, 각 세대마다 출입 비밀번호가 다른 것과 비슷하다.
2-5. 차세대 방화벽(NGFW, Next-Generation Firewall)
- 위치: 네트워크 경계, 또는 중간 구간
- 특징: 단순한 포트/IP 필터링을 넘어 애플리케이션 단위까지 제어. (예: HTTP 중 유해 사이트 차단)
- 예시: Palo Alto NGFW, Fortigate NGFW
- 비유: 경비원이 얼굴·이름·직업까지 확인하는 스마트 게이트 — 단순히 문을 열어주는 게 아니라, 사람이 무엇을 하려는지까지 판단해서 동작한다.
3. 방화벽에서 사용하는 주요 기술
방화벽은 단순히 "포트만 막는다" 수준이 아니다. 실제 네트워크를 구성할 때는 다양한 기술이 사용된다.
- 패킷 필터링 (Packet Filtering): IP/Port/Protocol 기반 차단 (1세대)
- 스테이트풀 인스펙션 (Stateful Inspection): 세션 상태를 추적하며 차단 (TCP 3-way handshake 인지)
- 프록시 기반 (Proxy Firewall): 방화벽이 대신 요청을 받아주고 검사 후 전달
- 애플리케이션 계층 필터링: HTTP, FTP 같은 프로토콜 내용을 보고 제어
- IPS/IDS 통합: 침입 탐지/차단 기능을 결합
- VPN 연동: 원격 접속 시 암호화된 통신만 허용
4. 실무에서 자주 접했던 방화벽 단계
모든 종류의 방화벽을 다 알 필요는 없다. 실무에서 네트워크 구성을 보았을 때 가장 자주 마주치는 건 아래 3단계다.
- OS 방화벽
- 주로 “서비스는 켜져 있는데 외부 접속이 안 된다”는 문제의 원인.
- 네트워크 경계 방화벽 (Appliance)
- 보안 정책에 따라 포트/IP가 차단되면, 서버 설정과 무관하게 통신이 불가.
- 클라우드/가상화 보안 그룹
- OS 방화벽은 열려 있는데 클라우드 SG(Security Group)에서 막혀 있는 경우가 많음.
5. 설정 문제인가 방화벽 문제인가 궁금할 때
만약 의도하고자 하는 통신이 안될 시(설정이 제대로 되었다는 가정하에), 아래의 명령어들을 통해 확인되는 상황들을 통해 구조적으로 어디에서 어떤 방화벽에 막혔는지 알아내는 것이 중요하다.
5-1. 기본 연결 확인
ping <ip>
ping -I eno1 <ip>
ping -t <ip>
제일 간단한 방법으로 대상 목적지 혹은 네트워크 장비의 생사 유무, 통신 가능 유무를 확인할 수 있는 ping 명령어 이다. ICMP 가 통하면 네트워크 경로는 살아있다는 것이 검증된다. (윈도우의 경우 ICMP 응답을 막아놓은 경우가 많음)
-I 옵션으로 특정 인터페이스를 선택하여 트래픽을 보낼 수 있고, -t 옵션으로 사용자가 종료하기 전까지 계속해서 ping 명령을 수행할 수 있다.
5-2. 서비스 리스닝 확인
ss -lntp | grep <port>
해당 포트가 프로세스에 의해 열려 있는지 확인하는 것이다. 즉 어떤 프로그램이 실행 중 이면서 다른 프로그램으로부터의 통신을 기다리고 있는지 상태를 확인하는 것이다. 검색되는 포트가 없다면 네트워크나 방화벽의 문제가 아니라 애플리케이션이 포트를 점유하지 못하고 있는 상태이므로, 섣불리 방화벽 타령을 했다가는 이건 뭐하는 새* 지? 라는 말을 듣게 된다.
-tulnp 옵션으로 TCP, UDP 포트 연결 여부를 모두 확인할 수 있다.
5-3. 포트 접근 가능 여부 확인
nc -vz <server_ip> <port> # TCP
nc -vzu <server_ip> <port> # UDP
만약 내가 실행시킨 프로세스가 실행 중이고 포트를 점유하고 있다면 ( 통신 준비 중) , 통신 하려는 장비에서 위의 명령어를 통해 준비 중인 장비에 접근이 가능한지 확인할 수 있다. 만약 결과가
- Connection refused
- timeout
이렇게 나오면 이제 상체에 힘을 주고, 네트워크 담당자나 방화벽 신청을 했던 사람을 불러낼 수 있다. "방화벽에서 막히는데 방화벽 해제 하셨나요?" 로 신사답게 먼저 확인해주면 된다.
Connection refused 는 서버에 도달했지만 OS 방화벽이 트래픽을 거부한 상태이고, timeout은 네트워크 중간에서 패킷이 차단된 것으로 볼 수 있다.
5-4. 패킷 캡쳐하기
tcpdump -i eth0 port <port>
만약 네트워크 담당자가 방화벽에 대해 잘 모르거나 자꼬 책임을 미루려고 한다면, 실제로 트래픽 흐름을 보여주면서 어디에서 내 트래픽이 막혀서 통신이 안되고 있는지 보여줄 수 있다. 위 명령어를 서버측에서 실행하면 클라이언트 요청이 서버로 들어오는지 확인할 수 있다. 패킷이 도착하지 않으면 중간 방화벽에서 차단, 패킷이 도착했는데 응답이 없으면 서버 OS 방화벽이 차단했을 가능성이 크다.
tcpdump 는 기본적으로 있지 않고 패키지 설치를 해야 한다.
5-5. 방화벽 로그 확인
- OS 방화벽: /var/log/firewalld, /var/log/messages 등에서 확인 가능
- 네트워크 방화벽: 보안팀/네트워크팀에 요청 (차단 로그 확인) -> 방화벽 장비의 GUI 에서 어떤 요청이 차단되었는지 보임.
- 클라우드 보안 그룹: 콘솔에서 Rule 직접 확인 가능하다.
6. 마무리
오늘은 네트워크 구성 내에서 장비간, 혹은 프로세스간 통신이 안될 때, 내가 설정을 잘못한건지 방화벽 때문에 통신을 못한건지 알아보는 내용들에 대해 정리하였다. 그리고 방화벽에 종류에 대해서도 다시 한 번 알아보았다.
내가 설정을 잘 하고서도 방화벽 설정을 놓쳐서 시간을 허무하게 보내는 경우도 있고, 방화벽 설정은 이상이 없는데 프로세스 설정을 잘못해서 애꿎은 사람한테 계속 방화벽 해제 요구를 하게 될 수도 있다.
따라서 위의 내용과 절차들을 잘 숙지해서 현재 통신이 어떠한 상황이며 서버측 클라이언트 측에서 어떤 조치를 해야 정상적으로 통신이 되는지 신속 정확 명확하게 알아낼 수 있도록 하자.
'CS 공부 > 기타' 카테고리의 다른 글
| [ETC] 긴 프로세스 명령어, systemd 서비스로 정의하여 사용하기 (0) | 2025.09.08 |
|---|---|
| [ETC] 트래픽 흐름에 대해서 알아보기 (0) | 2025.09.04 |
| [ETC] 다중 인터페이스 환경에서의 라우팅 테이블 설정 (0) | 2025.09.02 |
| [ETC] UDP 가 Session 을 유지하면 TCP 나 다름없을까? (0) | 2025.09.01 |
| [ETC] 카프카 properties 파일 세부 분석 (3) | 2025.08.28 |