[리눅스마스터 1급 - 2차] iptables

2024. 11. 12. 15:13·자격증 & 공부/리눅스마스터 1급
  • 리눅스의 패킷 필터링 도구로 방화벽 구성이나, NAT(Network Address Translation)에 사용
  • # iptables [-t 테이블] [액션] [체인] [매치] [-j 타겟]
  • 테이블(Table)
    • filter(패킷 필터링)
    • nat(IP주소 변환)
    • mangle(패킷데이터를 변경하는 특수규칙 적용)
    • raw(넷필터의 연결추적 하위시스템과 독립적으로 동작해야 하는 규칙 적용) => 명시하지 않으면 기본적으로 filter
  • 액션(Action)
    • [-A] : APPEND : 정책 추가
    • [-I] : INSERT : 정책 삽입
    • [-D] : DELETE : 정책 삭제
    • [-R] : REPLACE : 정책 교체
    • [-F] : FLUSH : 모든 정책 삭제
    • [-P] : POLICY : 기본 정책을 설정 : target 앞 –j 필요없음
    • [-L] : LIST : 정책 나열
    • [-n] : 숫자값으로 출력
    • [-v] : 패킷, 바이트 등을 추가
    • [-t] : 체인을 만들 테이블 지정
  • 체인(Chain)
    • INPUT : 호스트 컴퓨터의 로컬 프로세스를 향해 들어온 모든 패킷이 방문하는 chain
    • OUTPUT : 호스트 컴퓨터에서 자체적으로 생성된 패킷이 방문하는 chain
    • FORWARD : 타겟이 호스트가 아닌, 호스트 컴퓨터를 경유하는 패킷이 방문하는 chain
    • PREROUTING : 패킷을 INPUT rule로 보내기 전 ip와 port를 변경하는 역할
    • POSTROUTING : 패킷이 OUTPUT rule에서 나온 이후 ip와 port를 변경하는 역할
  • 매치(Match)
    • [-s] : 출발지 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기(--source, --src)
    • [-d] : 목적지 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기(--destination, --dst)
    • [-p] : 프로토콜과 매칭. TCP, UDP, ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음
    • [-i] : 입력 인터페이스와 매칭(--in-interface)
    • [-o] : 출력 인터페이스와 매칭(--out-interface)
    • [-j] : 매치되는 패킷을 어떻게 처리할지 지정 (--jump)
    • [--line-number(s)] : 번호 표기
  • 타겟(target)
    • 패킷이 규칙과 일치할 때 취하는 동작을 지정
    • ACCEPT : 패킷을 허용함
    • DROP : 패킷을 버림(패킷이 전송된 적이 없던 것처럼)
    • REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송함(icmp-port-unreachable)
    • LOG : 패킷을 syslog에 기록한다.
    • SNAT --to [주소] : 소스 IP를 [변환(NAT)|NAT]함
    • DNAT --to [주소] : 목적지 IP를 변환(NAT)함
    • RETURN : 호출 체인 내에서 패킷 처리를 계속함
- iptables 기반으로 하나의 공인 IP주소를 공유해서 다수의 컴퓨터를 사용하는 환경을 구축하려고함. 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 외부망과 연결된 첫 번째 이더넷 카드의 공인 IP주소는 200.100.50.10
    # iptables -t nat -A POSTROUTING -o eth0 -j SNAT —to 200.100.50.10
    
- 하나의 공인 IP주소를 이용해서 다수의 서버를 연결하여 구성한 상태이고, iptables를 이용해서 방화벽 규칙을 설정하는 과정임. 외부로부터 들어오는 웹 서비스 요청을 내부의 사설 IP주소가 192.168.0.4인 웹 서버로 전달함.
    # iptables -t nat -A PREROUTING -p tcp -d 203.247.50.100 --dport 80 -j DNAT --to 192.168.0.4:80
    
- 하나의 공인 I주소를 이용해서 다수의 서버를 연결하여 구성한 상태이고, iptables를 이용해서 방화벽 규칙을 설정하는 과정임.
    - 가. 현재 설정되어 있는 iptables의 규칙을 firewall.sh 파일로 저장함
        # iptables-save > firewall.sh
        
    - 나. 현재 설정되어 있는 iptables의 규칙을 전부 제거함
        # iptables -F 또는 --flush
        
    - 다. firewall.sh 파일에 저장되어 있는 iptables의 규칙을 불러와서 반영함
        iptables-restore < firewall/sh
        
    - 라. 적용된 iptables의 규칙을 확인함
        # iptables -L 또는 —list -S 또는 --list-rules
        
- 외부로 들어오는 패킷을 모두 거부하고, IP주소가 168.12.22번인 호스트로부터 들어오는 패킷에 대해서만 허가하는 정책을 설정함
    # iptables –P INPUT DROP
    # iptables –A INPUT –s 192.168.12.22 –j ACCEPT
    
- 하나의 공인 IP주소를 이용해서 다수의 서버를 연결하여 구성한 상태이고, iptables를 이용해서 방화벽 규칙을 설정하는 과정임.
    - 가. /usr/local/apache/error 디렉터리를 /error 디렉터리로 경로를 단축하는 설정을 함
        Alias /error/ “/usr/local/apache/error/”
        
    - 나. 하나의 IP주소를 가지고 있는 시스템에서 2개의 도메인 설정이 가능하도록 지정함. IP주소는 192.168.5.13이고, 포트 번호는 웹 서버 포트인 80번을 사용
        NameVirtualHost 192.168.5.13:80
        
- iptables를 이용해서 NAT을 설정하는 과정\
    - 가. 첫 번째 이더넷카드(eth0)를 통해 외부로 나가는 패킷에 203.247.5.13번 IP주소를 부여함
        # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.5.13
        
    - 나. 203.247.12.22의 80번 포트로 들어오는 패킷을 192.168.5.13의 80번 포트로 연결함
        # iptables -t nat -A PREROUTING -p tcp -d 203.247.12.22 --dport 80 -j DNAT —to 192.168.5.13:80
        
- iptables를 이용해서 방화벽을 설정하는 과정
    - 가. 기본 테이블인 filter의 INPUT 사슬에 설정한 두 번째 정책이 IP주소 오류로 인해 수정하려고 함
        # iptables (-t filter) -R INPUT 2
        
    - 나. 기본 테이블인 filter의 INPUT 사슬에 설정한 다섯 번째 정책을 삭제함
        # iptables (-t filter) -D INPUT 5
        
    - 다. 기본 테이블인 filter의 INPUT 사슬에 설정한 두 번째 정책 이후와 연관된 로그를 기록하도록 설정함
        # iptables (-t filter) -I INPUT 2
저작자표시 비영리 변경금지 (새창열림)

'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글

[리눅스마스터 1급 - 2차] firewalld  (0) 2024.11.12
[리눅스마스터 1급 - 2차] 가상화 기술  (0) 2024.11.12
[리눅스마스터 1급 - 2차] NTP 관리  (0) 2024.11.12
[리눅스마스터 1급 - 2차] DHCP 관리  (0) 2024.11.12
[리눅스마스터 1급 - 2차] NIS 관리  (1) 2024.11.12
'자격증 & 공부/리눅스마스터 1급' 카테고리의 다른 글
  • [리눅스마스터 1급 - 2차] firewalld
  • [리눅스마스터 1급 - 2차] 가상화 기술
  • [리눅스마스터 1급 - 2차] NTP 관리
  • [리눅스마스터 1급 - 2차] DHCP 관리
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    baekjoon
    postgresql
    스프링 부트 쇼핑몰 프로젝트 with JPA
    플러터
    springboot
    백준
    Spring Security
    데이터베이스
    Oracle
    programmers
    시큐리티
    스프링
    Linux
    DB
    리눅스
    python
    CS
    CS지식
    스프링부트
    데이터
    Java
    프로그래머스
    자바
    Flutter
    리눅스마스터 1급
    spring
    pcce 기출문제
    JPA
    backjoon
    리눅스마스터
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[리눅스마스터 1급 - 2차] iptables
상단으로

티스토리툴바