ACL & NAT

    ACL (Access Control List) 이란?

     

     

    사용 예시

    1. 특정 사용자의 접근을 제안하고자 하는 경우2. 특정 서비스의 이용을 제한하고자 하는 경우3. 라우팅 경로의 조정이 필요한 경우
    2. 특정 서비스의 이용을 제한하고자 하는 경우
    3. 라우팅 경로의 조정이 필요한 경우

     

    종류


    기본 ACL(출발지만 확인)
    확장 ACL(출발지, 목적지주소, 프로토콜(TCP,UDP,ICMP), 포트 번호 등 다양한 옵션을 확인



    ACL 이 활성화 될 경우 기본적으로 허용 또는 정책 외에는 전부 거부 로 할 수 있다.
    정책의 상단부터 비교를 하며 내려오고, 내용에 부합하는 내용 발견 시, 해당 정책에 의해 처리된다.

     

    정책

    인바운드 : 유입되는 패킷을 필터링
    아웃바운드 : 패킷이 빠져나갈 때 필터링
    이때, 포트에 정책 적용 시, 인바운드와 아웃바운드의 방향은 장치의 관점에서 따짐

     

    옵션

    INPUT : 목적지가 해당 시스템 자체인 패킷을 처리
    FORWARD : 해당 시스템을 경유하는 패킷을 처리
    OUTPUT : 해당 시스템에서 나가는 패킷을 처리

    -t : 테이블 지정                 /         -t filter 필터 테이블
    -A : 추가                           /           -A FORWARD
    -D : 제거                           / -D FORWARD 1 or -D Forward ~~~~~
    -s : 시작주소                     / -s 172.16.4.1
    -d : 목적지주소                 / -d 192.168.56.1
    -j : 점프                             / -j DROP or ACCEPT
    -L : 리스트보기                 / -L
    -n : 포트 등 숫자로보기    / -n --line-numbers //라인수 출력
    -v : 자세한 정보 보기 
    -i : 인바운드                      / -i enpos0
    -o : 아웃바운드                 / -o enp0s9
    -p : 프로토콜                     / -p tcp --dport 80 --sport 40000 //dport 도착지포트 sport출발포트
    -F : 초기화
    -P : 기본정책 설정            / -P FORWARD DROP

     

    명령어 예시

    sudo iptables -t filter -A FORWARD -s 172.16.10.0/28 -d 172.16.30.0/24 -p icmp -j DROP
    # 172.165.10.0/28 네트워크 출신의 패킷의 ICMP 프로토콜은 172.016.30.0/24에 도착할 때, 드랍

    이처럼 옵션 - 값 으로 커스텀을 한다

    리눅스를 재부팅 시에 iptable이 사라지기 때문에 


    1. 재부팅을 해야한다.
    2. 원래 정책을 그대로 사용해야 한다

    라는 상황일 경우,

    sudo iptables-save > example_myrule
    # 현재 작업 디렉토리에 example_myrule 이라는 이름으로 정책 저장
    
    sudo iptables-restore < example_myrule
    # 저장한 정책을 적용

    다음과 같이 사용하여 재사용이 가능하다.

     


     

     

    NAT (Network Address Translation) 란?

     

    설명

    IP의 부족현상을 완화시키기 위해 내부 네트워크에서 사설 IP를 사용하는 경우가 많은데,
    이런 경우 외부와 통신하기 위해 주소를 변환해야 한다. 이를 변환 해주는 장치가 NAT다.
    IP헤더에 있는 주소를 다른 주소로 바꾸는 기술이다. 변경정보를 저장했다가 패킷이 돌아오면,
    다시 원래 패킷으로 변경해서 사용한다.
    Dynamic NAT, Static NAT, NAT-PAT 등이 있다

     

    종류

    SNAT : 출발지의 주소를 바꾸는 NAT
    DNAT : 목적지의 주소를 바꾸는 NAT

    Static NAT : 하나의 사설 IP와 하나의 공인IP를 1대1로 Mapping하는 방식이다.
    서버가 동작중인 사설 네트워크인 경우, 외부 사용자들이 접속할 수 있도록
    고정적인 주소 Mapping이 필요하기 때문에 Static방식을 사용

    Dynamic NAT : 여러 개의 사설 IP와 여러 개 혹은 하나의 공인 IP주소를 필요하에 따라 동적 으로
    Mapping하는 방식이다. 대부분 공인 IP주소가 사설 IP주소보다 적을 경우에 사용한다.
    하나의 공인IP를 여러 개의 사설 IP가 동시에 사용 불가능하지만, Port번호를 사용하는 PAT의 경우
    사용이 가능하다.

    NAT-PAT : 테이블에 port라는 새로운 정보를 추가하여 각 패킷마다 차이점을 주어 같은 공인 IP를 동시에 사용 가능함

    Static과 Dynamic의 차이 : 스태틱은 테이블에 맵핑되어있는 정보가 고정되어있음, 다이나믹은 통신 시 생성되었다가 시간이 지나면 자동으로 테이블 정보가 소멸함

     

    옵션

    PREROUTING : DNAT설정하는곳(목적지 주소 변경 시)
    POSTROUTING : SNAT설정하는곳(출발지 주소 변경 시)


    -o : 나가는 인터페이스  // -o enp0s8
    -s : 출발지 주소             // -s 172.16.10.10
    -d : 목적지 주소             // -d 176.152.23.10
    -j : 변환                          // -j SNAT --to-source [pub_ip]
                                          // -j DNAT --to-destination [destination_ip]
                                          // -j MASQUERADE

     

    명령어 예시

    sudo iptables -t nat -A POSTROUTING -s 172.16.10.10/24 -j SNAT --to-source 100.2.3.3
    # 172.16.10.0/24 주소가 100.2.3.3(r3의 주소)주소를 받아서 나가도록 한다.
    
    sudo iptables -t nat -A PREROUTING -d 100.1.2.10 -j DNAT --to-destination 172.16.10.10
    # 목적지가 100.1.2.10 으로 들어오는 패킷의 목적지를 172.16.10.10 으로 바꾼다

     

    모니터링

    tcpdump 를 통해 DNAT 와 SNAT 변환과정을 볼 수 있다.
    ex) sudo tcpdump -i enp0s10 -n ip
    -i : 인터페이스 지정
    -n : 숫자로 표시
    ip : ip보기

     

    NAT 또한 재부팅 시 초기화 되기 때문에 재사용이 필요할 경우 똑같이 restore한다.

    'Network' 카테고리의 다른 글

    BGP  (1) 2024.02.10
    VPN  (0) 2024.02.10
    Linux DNS 서버 구축  (0) 2023.12.31

    댓글