iptables (리눅스 방화벽)

Woo·2025년 1월 6일

보안 이론

목록 보기
5/6
post-thumbnail

개요

iptables

리눅스에서 네트워크 트래픽을 관리하는 강력한 도구로 방화벽 설정을 통해 패킷을 필터링하고 라우팅 규칙을 제어할 수 있다.

iptables의 체인은 외부에서 리눅스 시스템으로 유입되는 패킷과 리눅스 내부에서 외부로 전송되는 패킷에 대해서 접근 제어를 설정할 수 있다.

즉, 네트워크 보안을 강화하고, 서버나 클라이언트의 접근을 제어한다.

사용

iptables [-t table] command(체인) [match][target\jump]

[-t table]

  • I(--insert): 새로운 규칙을 Rule 맨 위 줄에 추가
  • A(--append): 새로운 규칙을 Rule 맨 아래 줄에 추가
  • N(--new-chain): 새로운 체인 생성
  • X(--delete-chain): 체인 제거
  • P(--policy): 체인 기본정책 변경
  • L(--list): 체인의 규칙 상태 보기
  • F(--flush): 체인 내의 모든 규칙 제거(방화벽 초기화)
  • Z(--zero): 체인 내의 모든 규칙의 패킷과 바이트의 카운트를 0으로 초기화
  • D(--delete): 규칙을 삭제
  • R(--replace): 새로운 규칙으로 대체
  • I(--insert): 체인의 가장 처음에 규칙을 추가
  • E(--rename-chain): 체인의 이름을 변경

command(체인)

INPUT : 리눅스로 들어오는 패킷(입력 패킷)을 처리하는 체인

OUTPUT : 외부로 나가는 패킷(출력 패킷)을 처리하는 체인

FORWARD : 자신(시스템)을 통과해 다른 네트워크로 전달되는 패킷을 처리
시스템이 라우터나 게이트웨이처럼 동작할 때, 들어오는 패킷을 다른 네트워크 인터페이스로 전달하는 트래픽을 필터링하는 체인

예시

iptables -A OUTPUT -o lo -j DROP

  • -A : 맨 아래 줄에 규칙을 추가한다
  • OUTPUT : 외부로 나가는 패킷에 관련된 체인
  • -o lo : loopback 주소에 관련된 내용
    (여기서 lo는 리눅스에서 네트워크 인터페이스 중 Loopback 주소로 자기 자신의 주소로 사용되는 127.0.0.1의 주소가 할당되어 있다.)
  • -j DROP : 트래픽 차단

즉, loopback 인터페이스에서 출력되는 것을 모두 거부하도록 되어 ping 명령어를 통해 패킷을 보내면 모두 차단된다.

ìptables -L
위의 명령어는 iptables에 현재 설정된 기본 정책을 확인할 수 있다.

iptables -P INPUT DROP
들어오는 모든 트래픽을 기본적으로 차단하는 규칙을 설정(-P이므로 체인의 기본 정책을 바꾸는 설정이다)

iptables -D INPUT -P tcp --dport 22 -j ACCEPT
SSH 포트가 22번 포트이므로 SSH에 대해 들어오는 TCP 연결을 모두 허용한다.

iptables -D INPUT -P tcp --dport 22 -j ACCEPT
SSH에 대해 들어오는 TCP 연결을 허용한 체인을 삭제한다.

iptables -A FORWARD -s 192.168.1.0/24 -j DROP
내부 네트워크 192.168.1.0/24에서 외부로 나가는 트래픽을 차단한다.

iptables -F
iptables 규칙 초기화 및 현재 규칙 모두 삭제

profile
다덤벼

0개의 댓글