iptables 사용하기

sprinkler dev·2021년 8월 2일
0

iptables?

리눅스 커널 방화벽이 제공하는 테이블과 이를 저장하는 체인, 규칙들을 구성할 수 있게 하는 응용 프로그램

테이블

  • filter, nat, mangle, raw 네가지가 있으며, default는 filter임

체인

  • PREROUTING : 패킷이 라우팅되기 이전에 거쳐가는 체인
  • INPUT : 로컬에서 로컬으로 향하는 모든 패킷이 거쳐가는 체인
  • FORWARD : 라우팅이후 로컬이 아닌 모든 패킷이 거쳐가는 체인
  • OUTPUT : 외부로 나가는 패킷이 거쳐가는 체인
  • POSTROUTING : 시스템에서 외부로 보내지기 직전에 거쳐가는 체인

액션

  • A(APPEND) : 정책 추가
  • I(INSERT) : 정책 삽입
  • D(DELETE) : 정책 삭제
  • R(REPLACE) : 정책 교체
  • F(FLUSH) : 모든 정책 삭제
  • P(POLICY) : 기본 정책 설정
  • L(LIST) : 정책 나열

매치

  • s : 출발지 (도메인, IP주소, 넷마스크 값을 이용하여 표기)
  • d : 목적지
  • p : 프로토콜 (tcp, udp, icmp... 대소문자 구분하지 않음)
  • i : 입력 인터페이스
  • o : 출력 인터페이스
  • sport : 출발지 포트
  • dport : 목적지 포트
  • j : 매치된 패킷을 처리할 규칙 지정

타겟

  • ACCEPT : 패킷을 허용
  • DROP : 패킷을 버림
  • REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송 (icmp-port-unreachable)
  • LOG : 패킷을 syslog에 기록한다.
  • SNAT --to (주소) : 소스 IP를 변환 (NAT)
  • DNAT --to (주소) : 목적지 IP를 변환 (NAT)
  • RETURN : 호출 체인 내에서 패킷 처리를 계속함
  • REDIRECT --to (주소) / --to-port (포트번호) : 리디렉션

80 포트로 들어오는 연결을 8080포트로 리디렉션

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
profile
2년차 백엔드 개발자

0개의 댓글