정보보안/리눅스

IPTables 개념 및 명령어 (사용예시)

록스타★ 2024. 7. 17. 14:06
반응형

IPTables

- 리눅스 커널의 netfilter 모듈을 활용하여 네트워크 패킷 필터링, 네트워크 주소 변환(NAT), 패킷 포워딩 수행하는 도구

- 네 개의 테이블과 여러 체인을 사용하여 네트워크 트래픽 제어

 

주요 테이블

1. FILTER : 기본 테이블로, 패킷 필터링을 수행

    > INPUT : 로컬 시스템으로 들어오는 패킷

   > FORWARD : 다른 인터페이스로 전달되는 패킷

    > OUTPUT : 로컬 시스템에서 나가는 패킷

2. NAT : 네트워크 주소 변환을 담당

    > PREROUTING : 패킷이 라우팅되기 전에 처리

    > POSTROUTING : 패킷이 라우팅된 후에 처리

    > OUTPUT : 로컬 시스템에서 생성된 패킷

3. MANGLE : 패킷의 헤더를 수정

    > PREROUTING : 라우팅 전에 패킷 헤더 수정

    > POSTROUTING : 라우팅 후에 패킷 헤더 수정

    > INPUT : 로컬 시스템으로 들어오는 패킷 헤더 수정

    > OUTPUT : 로컬 시스템에서 나가는 패킷 헤더 수정

    > FORWARD : 다른 인터페이스로 전달되는 패킷 헤더 수정

4. raw :conntrack (연결 추적) 결정을 하기 전에 패킷을 처리

    > PREROUTING : 라우팅 전에 패킷 처리

    > OUTPUT : 로컬 시스템에 나가는 패킷 처리

 

 

IPTables 명령어 형식

iptables [-t 테이블] 명령어 [체인] [매개변수]

 

> -t : 테이블을 지정 (기본값은 filter)

>  명령어 : 실행할 작업을 지정 (ex : -A는 체인에 규칙 추가)

>  체인 : 적용할 체인 지정 (ex : INPUT, OUTPUT, FORWARD)

>  매개변수 : 규칙을 정의 (ex : -p tcp --dport 80 -j ACCEPT)

 

 

주요 명령어

> -A : 체인에 규칙을 추가

> -D : 체인에서 규칙을 삭제

> -P : 체인의 기본 정책을 설정

> -L : 체인의 규칙 목록을 출력

> -F : 체인의 모든 규칙 삭제 

 

 

 

사용 예시

1. 기본 정책 설정

- 모든 들어오는 트래픽 차단, 전달되는 트래픽 차단, 나가는 트래픽 허용

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

 

같은 네트워크인 경우 ACCEPT 없이 통신 가능

 

 

2. 특정 IP 차단

- 192.168.1.100 주소로부터 들어오는 모든 트래픽 허용

- GUI 환경과 CLI 환경 동일 작동

iptables -A INPUT -s 192.168.1.100 -j DROP

 

그림(1) iptables 등록 정책 없을 때
그림(2) IP 10.0.2.123 > 통신
그림(3) 10.0.2.111 통신

 

DROP

그림(4) iptables DROP 설정
그림(5) 10.0.2.123 패킷 통신 불가
그림(6) 10.0.2.111 패킷 통신 불가




3. 특정 포트 차단

- TCP 포트 22 (SSH)로 들어오는 트래픽 허용

- GUI 환경과 CLI 환경 동일 작동

iptables -A INPUT -p tcp --dport 22 -j DROP

 

그림(7) ssh를 통하여 10.0.2.100 접속

 

 

그림(8) ssh를 통하여 10.0.2.100 접속

 

그림(9) w 명령어로 접속중인 사용자 정보 확인

 

DROP

그림(10) ssh(22)번 차단 정책 설정

 

그림(11) 10.0.2.123에서 10.0.2.100 접속불가
그림(12) 10.0.2.111에서 10.0.2.100 접속불가

 

4. 상태 기반 규칙

- 기존 연결 또는 관련 연결의 패킷 허용 

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

 

 

 

5. NAT 설정

- eth0 인터페이스를 통해 나가는 패킷에 대한 소스 NAT를 설정

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

 

 

마스커레이드(Masquerade)

-  내부 네트워크의 사설 IP 주소를 외부 네트워크의 공인 IP 주소로 변환하여 외부 네트워크와의 통신을 가능하게 하는 기술

- 특히 동적 IP 주소를 사용하는 경우 유용합니다.

 

6. 특정 프로토콜 차단

- ICMP 패킷을 차단

iptables -A INPUT -p icmp -j DROP

 

 

 

7. 로깅 설정

- TCP 포트 80으로 들어오는 트래픽을 로깅

iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP Access:"

 

 

 

IPTables 규칙 확인 및 저장

- 현재 규칙 확인

  > -v : 상세 출력

  > -n : 숫자로 출력

iptables -L -v -n

 

규칙 저장 (배포판에 따라 상이)

Debian/Ubuntu
sh -c "iptables-save > /etc/iptables/rules.v4"

Red Hat/CentOS
sh -c "iptables-save > /etc/sysconfig/iptables"

 

 

 

결론

운영체제로 방화벽을 설정하는 것과 똑같다고 볼 수 있다. 네트워크기초, 정보보호기초 어떤 카테고리에 넣을지 고민하다 정보보호기초 카테고리에 넣었는데 그만큼 속하는 부분이 있다. 정보보안기사를 준비하시는 분이라면 실기에서 출제가 많이되고 필수적으로 알아야하기 때문에 숙지 해두시고 지문을 주거나 명령어를 줬을 때에 따라 작성하는 방법도 알아두셔야한다. 

반응형