리눅스 서버 방화벽 설정 - iptables (1)

JIWON·2025년 6월 5일

Linux

목록 보기
15/20
post-thumbnail

🐬 Linux 의 방화벽

  • 리눅스에서는 호스트 방화벽 기능을 위해 iptables 을 사용하기도 한다

    • CentOS7 이상은 iptables 대신에 firewalld 를 사용하도록 되어있고 Ubuntu 에서는 UFW(Ubuntu FireWall)을 사용해서 방화벽 서비스를 제공한다
  • 예전 사용자들은 iptables 에 익숙하다

    • UFW는 iptables의 FrontEnd 역할을 수행하기 때문에 iptables에 대한 기본적인 이해가 필요하다
  • iptables가 방화벽의 역할처럼 패킷을 차단, 허용하는 등의 필터링 기능을 직접 수행하는 것은 아니며 리눅스 커널에 내장된 netfilter라는 리눅스 커널 모듈을 통해 필터링이 이루어짐

  • iptables는 netfilter를 이용할 수 있도록 해주는 사용자 공간 응용 프로그램

  • iptables나 firewalld 나 UFW는 모두 netfilter의 frontend 역할

    계층구성 요소설명
    커널 공간🔸 netfilter리눅스 커널에 내장된 패킷 필터링 프레임워크
    → 실제로 패킷을 걸러내고, 변경하고, 차단함
    유저 공간🔹 iptables, nftables
    🔹 firewalld, ufw
    커널의 netfilter에게 명령을 전달하는 도구들
    → 명령어 또는 API를 통해 커널에 룰을 설정함


1️⃣ iptables

iptables리눅스에서 방화벽 규칙을 설정하는 명령어 도구로, 커널에 있는 netfilter 프레임워크와 연결되어 동작합니다.

  • 서버에서 허용하거나 차단할 IP나 서비스 포트에 대한 정책을 수립

  • 수립된 정책은 정책 그룹으로 관리

  • iptables는 패킷이 통과하는 경로에 따라 규칙(룰)을 설정 한다.

  • 정책 그룹은 서버 기준의 트래픽 구간 별로 만드는데 트래픽구간은 서버로 유입되는 구간(INPUT), 서버에서 나가는 구간(OUTPUT), 서버를 통과하는 구간(FORWARD)


💠 table 종류

  • iptables는 용도에 따라 여러 개의 테이블을 사용합니다:

    테이블용도
    filter기본 테이블, 패킷 허용/차단에 사용
    natNAT 수행 (포트 포워딩 등)
    mangle패킷 헤더 수정 등 고급 설정
    rawconntrack에 앞서 처리할 룰 설정 가능
    security

💠 iptables의 동작 구조 (5개 체인)

  • iptables는 트래픽이 흐르는 방향에 따라 체인(Chain) 개념을 사용합니다.

  • 테이블에는 방향성과 관련된 그룹이 있다고 하는데 이 그룹이 체인이다.

  • 필터 테이블에는 서버로 들어오는 트래픽, 나가는 트래픽, 통과하는 트래픽에 따라 INPUT 체인, OUTPUT 체인, FORWARD 체인 이 있다

    체인 이름설명
    PREROUTING패킷이 도착하자마자 처리 (라우팅 전에 필터링)
    INPUT로컬 시스템이 수신하는 패킷 필터링
    FORWARD라우터처럼 중계하는 패킷을 필터링
    OUTPUT로컬에서 생성된 패킷 필터링
    POSTROUTING패킷이 나가기 직전에 처리 (SNAT 등)

💠 iptables 룰 구조

iptables -A <CHAIN> -m <match> --조건들 -j <target>
  • MATCH : 제어하려는 패킷의 상태 또는 정보 값의 정의
  • TARGET : MATCH에 일치하는 패킷을 허용할지 차단할지에 대한 패킷 처리 방식

🍒 네트워크 설정

1️⃣ ip 확인

  • hostname -I : 리눅스만 설치되면 사용가능

  • ifconfig : net-tools가 설치되어 있어야 하는데 인터페이스 별로 할당된 정보를 출력

2️⃣ 자신의 네트워크 인터페이스 확인

  • 기본적으로 virtual box에 Ubuntu를 설치하면 enp0s3 이라는 네트워크 인터페이스가 생성됨
  • ip a

3️⃣ 인터페이스별 아이피 설정

  • sudo nano /etc/netplan/00-installer-config.yaml 파일 수정
    실제로는 파일 이름은 상관없고 확장자만 yaml 이면 가능하다
network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 10.0.2.101/24  #ip 설정
      gateway4: 10.0.2.1
      nameservers:
        addresses: [8.8.8.8]
  • sudo netplan apply : 설정 적용

4️⃣ 인터페이스 아이피 설정 확인

  • ip a

5️⃣ 호스트 이름 확인 및 변경

  • 가상 머신으로 복제를 하면 이름이 전부 동일해서 구분이 어려움
  • 호스트 이름 확인 : hostname
  • 호스트 이름 변경 : hostnamectl set-hostname 이름
  • 설정 적용 : reboot

6️⃣ 이름 설정

  • sudo vi /etc/hosts
127.0.1.1 slave2  # 각 이름 설정 ㅡmaster, slave1, slave2

10.0.2.101 master
10.0.2.102 slave1
10.0.2.103 slave2

0개의 댓글