초보자를위한 iptables, 호기심, 관심 있음 (2 부)

언제 DesdeLinux 저는 고작 몇 달밖에 안 됐고 iptables에 대해 매우 이해하기 쉬운 튜토리얼을 썼습니다: 초보자를위한 iptables, 호기심, 관심 있음 (1 부) . 우리의 컴퓨터를 우리 집과 비교하는 것, 방화벽과 집의 문을 비교하는 것과 같은 은유를 사용하여 나는 많은 기술이나 복잡한 개념없이 재미있는 방식으로 설명했습니다. 방화벽이란 무엇입니까? iptables는 무엇입니까? 사용을 시작하고 구성하는 방법. 이것은 이전 iptables 튜토리얼의 두 번째 부분 인 계속입니다 🙂

며칠 전 Linksys AP (Access Point)를 사용하여 여자 친구의 집에 Wi-Fi를 설치했지만 지역은 기술 측면에서 가장 잘 알지 못합니다. 즉, 크래킹 위험이 많지 않습니다. , 항상 Wi-Fi와 컴퓨터 모두에서 우수한 보안을 유지하는 것이 좋습니다.

여기서는 Wifi의 보안에 대해서는 언급하지 않겠습니다. 포스트의 목적이 아니기 때문에 현재 제 노트북에서 사용하는 iptables 구성에 초점을 맞출 것입니다.

다음 명령은 터미널에서 실행되며 관리자 권한으로 실행해야합니다. 각 명령 앞에 sudo를 추가합니다. 루트로 직접 명령을 실행하여 동일한 작업을 수행하거나 sudo 사용을 피할 수 있습니다.

이전 게시물에서 필자는 방화벽에서 들어오는 모든 트래픽을 먼저 거부해야한다고 설명했습니다.

sudo iptables -P INPUT DROP

그런 다음 자신의 컴퓨터가 데이터를 입력 할 수 있도록 허용해야합니다.

sudo iptables -A INPUT -i lo -j ACCEPT

컴퓨터에서 시작된 요청 패킷을 수락합니다.

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

이 행을 더 잘 이해하려면 이전 기사의 전반부를 읽는 것이 좋습니다. 초보자를위한 iptables, 호기심, 관심 있음 (1 부)

지금까지 우리 컴퓨터는 문제없이 인터넷을 탐색 할 수 있지만 다른 환경 (LAN, 인터넷, Wi-Fi 등)의 누구도 어떤 방식 으로든 우리 컴퓨터에 액세스 할 수 없습니다. 우리는 필요에 따라 iptables 구성을 시작할 것입니다.

ulogd를 사용하여 iptables 로그를 다른 파일로 출력 :

기본적으로 iptables 로그는 커널 로그, 시스템 로그 또는 이와 유사한 것으로 이동합니다 ... 기본적으로 Arch에서는 어디로 가는지 기억조차 못합니다. ulogd iptables 로그는 다른 파일에 있습니다.

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

내 개인 서버에 대한 액세스 권한 부여 :

VirtualBox 또는 가상화와 유사한 것을 사용하지 않습니다. 개인 서버를 Qemu + KVM 위에서 지정한 iptables 규칙을 사용하면 내 랩톱에 연결할 수 있어야합니다. 따라서 가상 서버의 IP에 대한 권한을 부여해야 내 랩톱에 액세스 할 수 있습니다. :

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

우리는이 줄을 자세히 설명 할 것입니다. 이제부터는 많이 반복 될 것이기 때문에 각 매개 변수의 의미를 이해하는 것이 중요합니다.

-입력 : 인바운드 트래픽에 대한 규칙을 선언하겠습니다.

-i virbr0 : 트래픽을 허용 할 인터페이스가 etho (LAN) 또는 wlan0 (Wifi)이 아님을 선언합니다. 특히 내 virbr0 인터페이스, 즉 내 노트북이 통신하는 가상 네트워크 인터페이스 (내부)라고 말합니다. 내 가상 서버와 함께 (또는 그 반대로)

-p TCP : 프로토콜을 지정합니다. 가장 많이 사용되는 프로토콜은 UDP와 TCP입니다. 여기서는 이것을 넣지 않는 것으로 충분했지만 ... 수락 할 프로토콜 유형을 지정하는 것이 일반적입니다.

-s 192.168.122.88 : 패키지의 소스, 소스입니다. 즉, 규칙은 특히 IP 192.168.122.88에서 오는 패킷을 참조합니다.

-j 수락 : 이미 여기에서 위와 일치하는 패키지로 무엇을하고 싶은지 말하고,이 경우 수락합니다.

즉, 요약하면 IP 192.168.122.88에서 오는 패킷을 수락하지만 해당 IP에서 오는 패킷을 입력하려는 경우를 대비하여! virbr0이 아닌 인터페이스에서 입력합니다. 즉, IP 192.168.122.88에서 패킷을 입력하려고하지만 Wifi 네트워크의 컴퓨터에서 입력 한 경우 패킷이 거부됩니다. 왜? 예를 명확하게 지정했기 때문에 192.168.122.88 예의 패킷을 허용하지만 패킷이 다른 인터페이스 (LAN, RAS, 네트워크 인터페이스)에서 오는 경우 virbr0 인터페이스 (내부, 가상 네트워크 인터페이스)에서도 입력해야합니다. Wi-Fi 등)은 허용되지 않습니다. 보시다시피 인터페이스를 지정하면 더 제한 할 수 있으므로 컴퓨터에 들어오는 (또는 들어오지 않는) 항목을 더 잘 제어 할 수 있습니다.

홈 Wi-Fi의 모든 IP에서 핑 허용 :

Wi-Fi에 연결된 다른 컴퓨터에서 내 노트북에 ping을 시도하면 허용하고 싶습니다. 이유? 아이디어는 또한 다음 몇 주 안에 집 옆집의 PC를 네트워크에 연결하여 정보 공유가 덜 복잡하고 유동적 일 것입니다. 데스크톱을 Wi-Fi에 연결하는 테스트를 시작하면 연결을 확인하기 위해 랩톱을 핑해야합니다. 랩톱이 나에게 다시 핑을 보내지 않으면 AP에 오류가 있거나 Wi-Fi에 액세스하는 동안 오류가 있다고 생각할 수 있으므로 핑을 허용하고 싶습니다.

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-입력 : 이전과 동일, 들어오는 트래픽 참조

- 나는 wlo1 : 이전과 비슷합니다. 이전 경우에는 가상 인터페이스를 지정했습니다.이 경우에는 내 wifi의 다른 인터페이스를 지정합니다. wlo1

-p ICMP : Icmp 프로토콜, icmp = ping. 즉, SSH 또는 이와 유사한 것을 허용하지 않고 ping (icmp) 만 허용합니다.

-s 192.168.1.0/24 : 패킷의 소스, 즉 패킷이 IP 192.168.1에서 오는 경우.? 받아 들여질 것이다

-d 192.168.1.51 : 대상 IP, 즉 내 IP입니다.

-j 수락 : 위와 일치하는 패키지로 무엇을해야하는지 표시하고 수락합니다.

즉, 실행 방식으로 설명하기 위해 192.168.1 .__과 같은 IP에서 오는 한 목적지가 특히 내 IP 인 나에게 ping (icmp 프로토콜)을 허용하지만 올 수 없습니다. 모든 네트워크 인터페이스에서 내 Wi-Fi 네트워크 인터페이스 (wlo1)에서 특별히 입력해야합니다.

하나의 IP에 대해서만 SSH 허용 :

때로는 연결해야합니다. 노트북을 제어하기 위해 내 스마트 폰에서 SSH, 그렇기 때문에 Wi-Fi의 IP에서 랩톱에 대한 SSH 액세스를 허용해야합니다.

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

이 줄에서 다르거 나 강조해야 할 유일한 것은 다음과 같습니다. –Dport 22 (내가 사용하는 SSH 포트)

즉, Wi-Fi의 모든 IP에서 오는 한 포트 22를 통해 랩톱에 연결하려는 시도를 수락합니다. 또한 내 IP를 특정 대상으로 설정해야하며 wlo1 인터페이스를 통과해야합니다. Wi-Fi (LAN 등이 아님)

웹 사이트를 볼 수 있도록 허용 :

제 경우는 아니지만, 호스팅 된 웹 사이트가 있고 누구에게나 액세스를 거부하고 싶지 않은 사람이 있다면, 즉 모든 사람이 해당 웹 사이트에 액세스 할 수 있다는 것은 생각보다 훨씬 간단합니다.

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

즉, 여기서는 포트 80을 통해 들어오는 모든 트래픽 (tcp)을 허용합니다. 보시다시피 허용 할 IP 범위를 지정하지 않음으로써 액세스를 허용하는 IP 또는 네트워크를 지정하지 않았습니다. iptables는 내가 원하는 것으로 가정합니다. 모든 기존 IP 범위, 즉 전 세계에 대한 액세스를 허용하려면 🙂

기타 조합 :

예를 들어, 홈 LAN에서 IP에 대한 핑을 수락하는 것과 같은 많은 다른 규칙이 있습니다 (기본적으로 위와 동일한 행, IP 범위 변경). 위에서 설명한 것과 더 비슷합니다. . 내 랩톱에서 나는 연결 제한, DDoS 방지와 같은 정말 복잡한 것을 사용하지 않습니다. 서버에 남겨 둡니다. 랩톱에는 필요하지 않습니다.

어쨌든 지금까지 기사.

보시다시피 iptables로 작업하는 것은 그다지 복잡하지 않습니다. 일단 규칙을 작성하는 스크립트를 작성하면 아주 간단하게 수정하고 방화벽에 규칙을 추가하거나 제거 할 수 있습니다.

나는 당신이 질문을 할 수 있음에도 불구하고 주제에 대한 전문가라고 생각하지 않습니다. 그들은 여기에 언급합니다. 나는 가능한 한 당신을 돕기 위해 노력할 것입니다.

안부


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   Risketo

    아주 훌륭하고 잘 설명되어 있습니다.
    나는 이런 유형의 게시물을 좋아합니다.

    1.    KZKG ^ 가아라

      댓글 주셔서 감사합니다 🙂

      이 포스트는 제가 오랫동안 빚을 졌는데 결국 갚을 수있어서 쾌적하고 즐거워요 ^^

      안부

      1.    픽 소콘

        질문이 쿠바에 있습니까?
        … 며칠 전에 Linksys AP (액세스 포인트)를 사용하여 여자 친구 집에 Wi-Fi를 설치했습니다.

        1.    KZKG ^ 가아라

          예, 물론 저는 쿠바에서 태어나 살고 있습니다. 왜 질문입니까?

        2.    샘 부르고스

          @FIXOCONN : 친구 안녕하세요. 질문의 주제를 벗어난 것을 용서하십시오. 그러나 사용자 에이전트에서 데스크톱 환경으로 표시되도록 Cinnamon을 어떻게 정의합니까? 저는 Cinnamon과 함께 Mint 13을 사용하지만이 사이트에 댓글을 달 때마다 사용자 에이전트에 Cinnamon 로고가 표시되지 않습니다.

          너무 많은 문제가 아니라면 사용자 에이전트 세부 정보를 알려주시겠습니까? 나는 그것을 직접 두는 데이터를 알고 싶다 =)

          나는 당신이 그것을 검토하고 나에게 정보를 줄 수 있도록 페이지를 남겨둔다. 감사합니다. 관리자 여러분,이 정보를 가지고 제 부분에서 "트롤링"(당신이 그렇게 부를 수 있다면)을 용서하십시오-> http://user-agent-string.info/

          1.    KZKG ^ 가아라

            UserAgent의 모든 부분에 "Cinnamon"(따옴표 제외)을 추가하면 로고가 향후 댓글에 표시됩니다 🙂

  2.   브루노 카시오

    게시물이 아주 좋아요! 아주 분명 해요 😀

    1.    KZKG ^ 가아라

      읽어 주셔서 감사하고 귀하의 의견에 감사드립니다 🙂

  3.   좋아

    감사합니다. 정말 많은 도움이됩니다.

  4.   오스카 그라나다

    안녕하세요, 우선 블로그를 축하 해주셔서 감사합니다.
    언급하는 것이 좋을 수있는 것은 ULOG로 로깅하는 옵션이 ulogd2가있는 운영 체제에서 작동하지 않는다는 것입니다.이 경우 규칙은 다음과 같아야합니다.
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ 가아라

      우선, 블로그에 대한 의견에 감사드립니다 🙂

      Arch에서 나는 ulogd v2.0.2-2를 설치했고 내가 넣은 줄은 문제없이 작동합니다 (/etc/ulogd.conf에 loglevel = 1을 넣어야했지만 문제없이 다른 파일로 로그를 가져갑니다.

      ulogd v2 이상을 사용하면 내가 남긴 줄이 잘못 작동합니까?

      의견을 보내 주셔서 감사합니다.

  5.   시툭스

    나는 항상 두 번째 부분을 기다리고 있었고 첫 번째 부분을 읽었을 때를 기억합니다 (방화벽에서의 시작이었습니다). 감사합니다 @ KZKG ^ Gaara, 안부 🙂

    1.    KZKG ^ 가아라

      읽어 주셔서 감사합니다 😀
      그리고 헤헤 네, 말했죠 ...이 게시물은 제가 오래전에 빚진 빚이었습니다 ^^ _ ^

  6.   Jose Luis Gonzalez 자리 표시 자 이미지

    문안 인사. 게시물이 아주 좋아요. squid에서 dansguardian으로 트래픽을 리디렉션하도록 iptables 규칙을 구성하려고하는데 여전히 목표를 달성하지 못합니다. 이와 관련하여 도움을 주시면 감사하겠습니다.

    1.    KZKG ^ 가아라

      그것을위한 iptables? Squid의 ACL로 직접 수행되지 않습니까?

  7.   이름이없는

    "나는 .. 같은 다른 많은 규칙이 있습니다."
    이것이 내가 편집증이라고 부르는 것입니다.
    조금만 더하면 모뎀 / 라우터의 각 열린 포트에 Rotwailer 팩을 넣습니다 🙂

    1.    KZKG ^ 가아라

      HAHAHAHAHAHAHAHAHA 로트 웨 일러들과 웃음으로 죽어 가고있어 hahahaha

  8.   이반

    안녕하십니까, 내 사용자 지정 네임 서버의 브라우저에 주소를 입력 할 때 (예를 들어 ns80.mydomain.com을 입력 할 때) 포트 1에 대한 액세스 만 거부하는 방식으로 IPTables를 구성하는 데 도움이 필요합니다. 및 ns2.mydomain.com (내 이름 서버) IPtables는 포트 80에 대한 액세스를 거부하여 브라우저가 페이지를로드하려고 시도하지만 잠시 후 만료되고로드되지 않으면 다음과 같은 명령으로 이미 시도한 것입니다.

    iptables -A 입력 -d ns1.midomini.com -p tcp -dport 80 -j DROP
    iptables -A 입력 -d ns2.midomini.com -p tcp -dport 80 -j DROP

    그러나 그것이하는 유일한 일은 내 모든 도메인에서 포트 80에 대한 입력을 거부하는 것입니다 (가상 호스트와 동일한 IP를 공유하기 때문에), 내 이름 서버의 URL과 내 이름 서버가 가리키는 IP에만 있기를 원합니다. 즉, IP 테이블은 다음에서 포트 80에 대한 액세스를 거부합니다.

    ns1.midomini.com (A를 가리키는)-> 102.887.23.33
    ns2.midomini.com (A를 가리키는)-> 102.887.23.34

    및 네임 서버가 가리키는 IP

    102.887.23.33
    102.887.23.34

    이 시스템이있는 회사의 예는 다음과 같습니다. Dreamhost
    네임 서버 : ns1.dreamhost.com 및 ns2.dreamhost.com 및 이들이 가리키는 IP는 브라우저의 주소 표시 줄에 입력 할 때 응답하지 않습니다.

    관심을 가져 주셔서 미리 감사드립니다. 이걸 도와 주셨으면 좋겠습니다. 정말 필요하고 시급합니다!

    좋은 날 !!

    1.    KZKG ^ 가아라

      안녕 이반,

      이메일로 연락주세요 (kzkggaara[at]desdelinux[dot]net) 좀 더 차분하게 얘기하고 더 잘 설명하기 위해 내일은 꼭 답변해드릴게요 (오늘은 지나갑니다)

      당신이 원하는 것은 간단합니다. 당신이 말한 줄이 왜 당신에게 적합하지 않은지 모르겠습니다.하지만 당신은 여기에서 너무 긴 로그와 다른 것들을 확인해야합니다.

      인사와 나는 당신의 이메일을 기다립니다

  9.   Nysonv

    이론적으로 iptables를 사용하면 aircrack과 같은 프로그램의 연결 해제 요청을 방지 할 수 있습니다. 내가 맞아 ??? 글쎄, 나는 테스트를 할 것이지만 당신이 나를 매우 행복하게 해줄 것이라고 말하면 XDDD

    1.    KZKG ^ 가아라

      이론적으로 저는 그렇게 생각합니다. 지금은 어떻게 할 수 있는지 모르겠습니다. 저는 한 번도 해본 적이 없습니다.하지만 이론적으로는 그렇게 할 수 있다고 반복합니다.

  10.   알렉스

    iptables 규칙을 적용한 후에는 로컬 네트워크에서 공유 된 Windows 폴더에 액세스 할 수 없습니다. 수정하려면 어떤 규칙을 적용해야합니까?
    그라시아.

    1.    KZKG ^ 가아라

      어떤 iptables 규칙을 적용 했습니까?
      이것은 "초보자를위한 iptables"의 두 번째 부분입니다. 첫 번째는 읽었습니까? 이전 게시물에 있던 규칙을 적용했는지 여부를 묻습니다.

      1.    알렉스

        예, 두 부분을 모두 읽었습니다. 스크립트의 경우 systemd로 규칙을 시작하는 방법에 대해 게시 한 다른 게시물을 기반으로합니다.

        #! / bin / bash
        #-UTF 8-

        # Iptables 바이너리
        iptables =»/ usr / bin / iptables»

        던졌다 ""

        ## 깨끗한 테이블 ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo»-iptables로 FLUS 제작»&& echo»»

        ## ULOGD로 로그 설정 ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j ULOG

        ## 기본 DROP 정책 정의 ##
        $ iptables -P 입력 드롭
        $ iptables -P 앞으로 드롭
        #echo»-기본적으로 정의 된 DROP 정책»&& echo»»

        ## 모든 것을 localhost에 허용 ##
        $ iptables -A INPUT -i lo -j ACCEPT
        $ iptables -A OUTPUT -o lo -j ACCEPT
        #echo»-localhost에 모두 허용»&& echo»»

        ## 내가 시작한 연결 패킷 입력 허용 ##
        $ iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
        #echo»-내가 시작한 허용 된 연결 패킷»&& echo»»

        던졌다 " ##############################"
        echo»## IPTABLES 구성 확인! ##»
        던졌다 " ##############################"

        나는 삼바의 경우 스크립트에 다음 규칙이 있어야한다고 인터넷에서 읽었습니다.

        $ iptables -A INPUT -p tcp –dport 139 -j ACCEPT
        $ iptables -A INPUT -p tcp –dport 445 -j ACCEPT
        $ iptables -A INPUT -p udp –sport 137 -j ACCEPT
        $ iptables -A 입력 -p udp –dport 137 -j 수락
        $ iptables -A 입력 -p udp –dport 138 -j 수락

        그러나 그들과 함께조차도 Windows 작업 그룹을 볼 수 없습니다. : S

      2.    알렉스

        문제 해결됨. 작업 그룹을 수정하고 호스트는 samba 구성 파일의 매개 변수를 허용합니다.

  11.   Otkmanz

    훌륭한 기사, 대단한 !!!!
    나는 그것을 읽었고 당신이 그것을 설명하는 방식과 iptables의 정말 유용한 사용을 좋아합니다. 나는 그것을 더 깊이 사용하는 방법을 정말로 배우고 싶습니다.
    인사와 훌륭한 기사, Iptables에 대해 더 많이 게시하기를 바랍니다! ^^

  12.   LEO

    소중한;

    iptables가있는 프록시가 있고 내 네트워크 중 하나가 ping을 할 수 없습니다. http://www.google.cl 이런 이유로 나는 포트를 차단하고 포트를 여는 수천 가지 방법을 시도했지만 아무 일도 일어나지 않습니다. Ping을 할 수 없으면 Outlook을 연결할 수 없습니다.

  13.   Borja

    게시물을 축하합니다! 아주 좋아요. 하지만 질문이 있습니다. 때때로 네트워크에서 사용자에게 할당 된 IP 주소가 변경 될 수 있지만 (우리가 MAC 주소에 IP를 할당 할 수있는 것이 사실이라면) Iptables에서 MAC 주소로 SSH를 통해 서버에 액세스 할 수있는 가능성이 있습니까?

    잘 설명했으면 좋겠어요.

    감사합니다!

  14.   페르난도 마틴 간

    안녕하세요, 내가 Linux 서버를 구성하고이 명령을 입력 한 후 모든 것을 차단하고 액세스 권한을 잃었 음을 알고 있습니다. 거의 모든 것을 복구 할 수 있지만 두 가지가 누락되었습니다. * ip, 2를 통해 cname«server»를 통해 웹 브라우저에서 더 이상 액세스 할 수 없습니다. 반면에 \\ 서버를 배치하기 전에 네트워크의 Windows 탐색기에서 공유 리소스를 볼 수 없습니다. 모든 공유 자원을 보았습니다. 도와 주실 수 있으면 좋겠어요 어리석은 건 알지만 해결할 수 없어요 감사합니다

  15.   당신의

    나는 축 어적으로 인용한다.
    '
    Icmp 프로토콜, icmp = ping. 즉, SSH 또는 이와 유사한 것을 허용하지 않고 ping (icmp) 만 허용합니다.
    '

    ICMP와 PING은 동일하지 않습니다. 핑은 ICMP 프로토콜의 일부이지만 모든 것이 아닙니다. ICMP (Internet Control Message Protocol) 프로토콜은 더 많이 사용되며 일부는 특정 위험이 있습니다. 그리고 모든 ICMP 트래픽을 수락하고 있습니다. 핑으로 만 제한해야합니다.

    안녕 하쇼!

  16.   오즈크르

    인턴십을해야하는데 iptables에 대해 잘 모르겠습니다. 제발 도와 주 시겠어요…
    감사!!!!!!!