Iptables 방화벽의 작업 원리

Iptables 방화벽의 작업 원리

2022-06-01 last update

6 minutes reading Security Conceptual Firewall

소개


좋은 방화벽을 세우는 것은 어떠한 현대 운영체제를 보호하는 필수적인 절차이다.대부분의 Linux 버전에는 서로 다른 방화벽 도구가 첨부되어 있는데, 우리는 이 도구들을 사용하여 방화벽을 설정할 수 있다.이 안내서에서 우리는 iptables 방화벽을 소개할 것이다.
기본적으로 Iptables는 대부분의 Linux 버전에 포함된 표준 방화벽입니다. (nftables이라고 불리는 현대 변체가 그것을 대체하기 시작합니다.)이것은 사실상 리눅스 네트워크 창고를 조작할 수 있는 커널급 넷필터 연결의 전단이다.네트워크 인터페이스를 통과하는 모든 데이터 패키지를 하나의 규칙과 일치시켜 무엇을 할지 결정합니다.
이 안내서에서 우리는 iptables가 어떻게 작동하는지 토론할 것이다.이 시리즈의 다음 문장에서, 우리는 당신에게 how to configure a basic set of rules to protect your Ubuntu 14.04 server을 보여 드리겠습니다.

Iptables의 작동 원리


iptables를 제어하고 방화벽 정책을 구축하는 데 필요한 실제 명령을 토론하기 전에 먼저 몇 가지 용어를 복습하고 iptables가 어떻게 작동하는지 토론합시다.
iptables 방화벽은 네트워크 데이터와 규칙을 비교하여 실행합니다.이러한 규칙은 데이터 패키지가 반드시 갖추어야 하는 규칙과 일치하는 특징과 데이터 패키지와 일치하기 위한 조작을 정의한다.
특정 규칙과 일치하는 패킷을 결정할 수 있는 여러 가지 옵션이 있습니다.패킷 프로토콜 유형, 소스 또는 대상 주소 또는 포트, 사용 중인 인터페이스, 이전 패킷과의 관계 등을 일치시킬 수 있습니다.
정의된 패턴이 일치할 때 발생하는 동작을 목표라고 합니다.목표는 데이터 패키지의 최종 정책 결정, 예를 들어 받아들이거나 버리는 것이다.또한 패킷을 서로 다른 체인으로 이동하여 처리하거나 상황을 간단하게 기록할 수 있다.선택이 많아요.
이러한 규칙은 체인이라고 하는 그룹으로 구성됩니다.체인은 데이터 패키지를 순서대로 검사하는 규칙이다.패키지가 규칙 중 하나와 일치하면 연관된 작업이 수행되며 체인의 나머지 규칙에 따라 검사되지 않습니다.
사용자는 필요에 따라 체인을 생성할 수 있습니다.기본적으로 세 개의 체인이 정의되어 있습니다.그들은 다음과 같습니다.
  • 입력: 이 체인은 서버로 전송되는 모든 데이터 패키지를 처리합니다.
  • 출력: 이 체인은 서버가 만든 데이터 규칙을 포함합니다.
  • 전송: 이 체인은 다른 서버로 보내는 데이터를 처리하는 데 사용되며, 이 서버는 서버에서 만든 것이 아닙니다.이 체인은 기본적으로 서버를 설정하여 요청 루트를 다른 기계로 보내는 방법이다.
  • 각 체인에는 0 개 이상의 규칙이 포함될 수 있으며 기본 정책이 있습니다.이 정책은 데이터 패키지가 체인의 모든 규칙을 통해 버려지고 어떤 규칙과도 일치하지 않을 때 어떤 상황이 발생할지 결정합니다.규칙이 일치하지 않으면 패키지를 버리거나 받아들일 수 있습니다.
    규칙을 통해 불러올 수 있는 모듈을 통해 iptables는 연결을 추적할 수 있습니다.이는 패킷과 이전 패킷의 관계에 따라 패킷이 발생하는 상황을 정의하는 규칙을 만들 수 있음을 의미합니다.우리는 이 기능을'상태 추적','연결 추적'또는'상태 머신'이라고 부른다.
    이 안내서에서 우리는 주로 입력 체인의 설정을 소개할 것이다. 왜냐하면 이것은 규칙을 포함하고 있기 때문에 서버를 가리키는 필요하지 않은 데이터를 거부할 수 있기 때문이다.

    IPv4 및 IPv6


    Linux 커널에 포함된 netfilter 방화벽은 IPv4와 IPv6 통신을 완전히 분리합니다.마찬가지로 방화벽 규칙 집합을 포함하는 시계를 조작하는 도구도 다르다.서버에서 IPv6를 사용하도록 설정한 경우 서버가 직면하는 트래픽을 해결하기 위해 이 두 테이블을 구성해야 합니다.
    일반적인 iptables 명령은 IPv4 트래픽을 제어하는 규칙이 포함된 테이블을 조작하는 데 사용됩니다.IPv6 트래픽의 경우 ip6tables이라는 명령어를 사용합니다.이것은 iptables을 사용하여 설정한 어떠한 규칙도 프로토콜 버전 6의 데이터 패키지를 사용하는 데 영향을 주지 않는다는 것을 의미하기 때문에 내부화되어야 하는 중요한 점이다.
    이 두 명령 사이의 문법은 같기 때문에 테이블마다 규칙 집합을 만드는 것은 그리 어렵지 않다.변경할 때 이 두 표를 수정하는 것만 기억하면 된다.iptables 명령은 IPv4 데이터에 대한 규칙을 제정하고 ip6tables 명령은 IPv6 데이터에 대한 규칙을 제정한다.
    서버의 적절한 IPv6 주소를 사용하여 ip6tables 규칙을 작성해야 합니다.

    명심해야 할 일


    현재 우리는 iptables가 인터페이스를 통과하는 데이터 패키지를 어떻게 유도하는지 알고 있다. (데이터 패키지를 적당한 체인으로 정하고 모든 규칙에 따라 데이터 패키지를 검사한다. 그 중 하나의 규칙이 일치할 때까지 일치하는 항목을 찾지 못하면 체인의 기본 정책을 발표한다.) 우리는 규칙을 제정할 때 주의해야 할 함정을 볼 수 있다.
    우선, 만약 우리가 기본적인 삭제 정책을 실현한다면, 우리는 현재 연결이 활성 상태로 유지되는 규칙을 확보해야 한다.SSH를 통해 서버에 접속하는 경우 특히 중요합니다.예기치 않게 현재 연결을 끊는 규칙이나 정책을 실행하면, 항상 외부 접근을 제공하는 웹 컨트롤러를 사용하여 Digital Ocean VPS에 로그인할 수 있습니다.
    또 하나 기억해야 할 것은 체인마다 규칙의 순서가 중요하다는 것이다.더 구체적인 규칙을 일치시키려면 패키지가 더 일반적인 규칙을 만날 수 없습니다.
    따라서 체인 맨 윗부분 부근의 규칙은 밑부분의 규칙보다 높은 등급의 특정성을 가져야 한다.당신은 먼저 특정한 사례를 일치시킨 다음에 더욱 일반적인 규칙을 제공하여 더욱 광범위한 모델을 일치시켜야 합니다.패키지가 전체 체인을 통과하면 (어떤 규칙과도 일치하지 않음) 가장 일반적인 규칙, 즉 기본 정책에 도달합니다.
    따라서 체인의 기본 정책은 체인에 포함될 규칙 유형을 강하게 규정한다.기본 정책이 ACCEPT인 체인에는 패킷을 명시적으로 폐기하는 규칙이 포함됩니다.기본 DROP 체인에는 특별히 받아들여야 할 패킷의 예외가 포함됩니다.

    결론


    이 때, iptables가 어떻게 작동하는지 이해하는 가장 간단한 방법은 그것을 사용하여 당신의 방화벽을 실현하는 것입니다.
    다음 안내서에서 how to create a basic iptables firewall on Ubuntu 14.04을 보여 드리겠습니다.이것은 서버를 잠그지만, 허용하고자 하는 소수의 서비스를 제외합니다.
    저스틴 엘린우드