Ubuntu 16.04의 쉬운 IPTable 구성 및 예

소개

iptablesLinux 커널의 통합 방화벽을 구성하는 데 사용되는 강력한 도구입니다. 대부분의 Ubuntu 배포판에 사전 설치되어 있지만 사용자 정의 된 Ubuntu 버전을 사용하거나 컨테이너 내부에서 실행하는 경우 수동으로 ���치해야합니다.

sudo apt-get install iptables iptables-persistent

설치 후 현재 규칙을 저장할지 묻는 메시지가 표시되면 나중에 새 규칙을 제거하거나 작성하기 때문에 지금은 중요하지 않습니다.

서버 와 다른 컴퓨터 에서 netcat명령을 사용하여 열려 있거나 닫힌 포트를 테스트 할 수 있습니다.

nc -z -w5 -v SERVER_IP PORT
  • nc netcat 명령입니다.
  • -z 페이로드없이 패킷을 보내십시오.
  • -w5 응답을 기다리는 데 최대 5 초가 소요됩니다.
  • -v 상세 모드.
  • SERVER_IP서버 주소로 교체하십시오 .
  • 교체 PORT가 열려 있다면 (예를 들어, 테스트 할 포트 22).

서버에서이 netstat명령을 사용하여 현재 연결을 수신중인 포트를 확인할 수 있습니다 .

sudo netstat -tulpn

참고 : netstat작업하려는 포트를 찾는 것이 편리 하지만 현재 서버에 설치 한 응용 프로그램과 수신 대기중인 포트를 알고 있어야하지만 출력 에서 찾은 모든 포트를 허용 할 필요는 없습니다netstat .

통사론

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUT받는 사람 규칙을 추가 INPUT체인, 체인 규칙의 그룹입니다, 우리는이 가이드에 가장 많이 사용하는 사람이 될 것입니다 INPUT, OUTPUT하고 PREROUTING.
  • -p tcp설정 tcp이 규칙은, 당신은 또한 같은 다른 프로토콜을 사용할 수에 적용됩니다 프로토콜로 udp, icmp또는 all.
  • -m tcptcp모듈을 사용하십시오 . iptables는 모듈을 통해 추가 기능을 지원하며 일부 기능은 이미 사전 설치되어 있으며 모듈 iptables과 같은 다른 기능도 미리 설치되어 geoip있습니다.
  • --dport 22로 시작하는 명령 --은 이전에 사용한 모듈에 대한 추가 옵션을 나타냅니다.이 경우 tcp모듈에 포트에만 적용하도록 지시 22합니다.
  • -m geoipgeoip모듈을 사용하십시오 . 국가별로 패킷을 제한합니다 (5 단계에서 자세한 정보).
  • --src-cc PEgeoip들어오는 패킷을 페루에서 오는 패킷으로 제한 하도록 모듈에 지시하십시오. 더 많은 국가 코드를 보려면 ISO 3166 country codes인터넷에서 검색 하십시오.
  • -j ACCEPT-j인수는 말한다 iptables패킷이 이전 인수에 지정된 제약 조건에 일치하는 경우 수행 할 작업. 이 경우는 것 ACCEPT, 다른 옵션은 그 패킷있다 REJECT, DROP그리고 더. iptables jump targets인터넷에서 검색 하면 더 많은 옵션을 찾을 수 있습니다 .

1. 기본

모든 규칙을 나열하십시오.

sudo iptables -L

규칙을 편집하거나 삭제하는 데 유용한 현재 사용 된 규칙을 작성하는 데 사용 된 모든 명령을 나열하십시오.

sudo iptables -S

삭제하려면 특정 규칙에서 규칙을 선택 sudo iptables -S하고 교체 -A와 함께 -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

INPUT체인의 ���든 번호 규칙을 나열하십시오 .

sudo iptables -L INPUT --line-numbers

번호가 매겨진 규칙을 삭제하십시오.

sudo iptables -D INPUT 2

모든 규칙을 지우려면

sudo iptables -F

경고 : SSH로 연결하면 연결이 끊어 질 수 있습니다 .

OUTPUT체인의 규칙 만 지우십시오 .

sudo iptables -F OUTPUT

2. 초기 규칙 생성

허용 SSHeth0인터페이스

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 모든 인터페이스에서이 명령을 제거 할 수 있도록 특정 인터페이스에 규칙을 적용하십시오.

들어오는 패킷을 특정 IP (예 :)로 제한 10.0.3.1/32합니다.

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 연결을 허용 할 IP / 서브넷을 지정합니다.

기본 체인 규칙을 설정하십시오.

경고 : 진행하기 전에 원격 서버에서 작업하는 경우 올바른 SSH 규칙을 적용했는지 확인하십시오 .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP 들어오는 모든 패킷을 거부합니다 (즉, 아무도 Apache, SQL 등과 같은 실행중인 서버에 연결할 수 없음).
  • -P FORWARD DROP 전달 된 모든 패킷을 거부합니다 (예 : 시스템을 라우터로 사용하는 경우).
  • -P OUTPUT ACCEPT모든 발신 패킷을 허용합니다 (예 : HTTP요청 을 수행 할 때 ).

루프백 인터페이스의 모든 트래픽을 허용합니다 ( 권장 ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. 규칙을 영구적으로 유지

현재 iptables규칙을 저장하십시오 .

sudo netfilter-persistent save
sudo netfilter-persistent reload

컨테이너 내부에서 실행중인 경우 netfilter-persistent명령이 작동하지 않을 가능성이 높으므로 iptables-persistent패키지 를 재구성해야 합니다.

sudo dpkg-reconfigure iptables-persistent

4. 나가는 연결 허용

DNS 쿼리를 허용하십시오.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

state모듈을 사용 RELATED하여 ESTABLISHED나가고 나가는 패킷 을 허용 하십시오 .

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

원하는 포트를 허용하십시오. 이 경우 HTTP포트입니다.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

더 많은 포트를 사용할 수 있습니다.

  • FTP: 포트 21에서 tcp
  • HTTPS: 포트 443의 TCP
  • DHCP: 포트 67의 UDP
  • NTP: 포트 123의 udp

참고 : apt-get허용하려면 FTP및 을 허용해야 할 수도 있습니다HTTPS .

반환 된 트래픽은 RELATED이미 ESTABLISHED연결에 대해서만 허용하십시오 ( 때로는 양방향 통신이 필요하므로 권장 됨 ).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
다른 유용한 규칙

외부에서 핑 요청을 허용합니다.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

eth0포트 2200에서 트래픽을 전달합니다 10.0.3.21:22(컨테이너 내에서 실행중인 SSH 서버를 노출하려는 경우 유용함).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

SSH를 사용하여 서버에 성공적으로 로그인하면 지속적인 연결이 생성됩니다 (즉, 1 시간 이상 연결되어 있어도 새로운 연결이 없음). 실패하고 다시 로그인을 시도하면 새로운 연결이 생성됩니다. 시간당 새로운 연결을 제한하여 지속적인 SSH 로그인 시도를 차단합니다.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

포트의 모든 요청을 포트 443로 리디렉션하십시오 4430( 443없이 포트에 바인딩하려는 경우 유용 root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 네트워크 인터페이스.
  • -m geoip 국가 블록 모듈 (5 단계 참조).

경고 : 사용하지 마십시오 lo. OS는 루프백 인터페이스로 리디렉션 된 모든 패킷을 버립니다 .

5. 국가 전체를 허용 또는 차단

5.1 설치 xtables-addons

xtables-addons다양한 방법을 사용 하여 모듈을 설치할 수 있으며 가장 적합한 설치 방법을 자유롭게 사용하십시오.

  • 를 사용하여 설치하십시오 apt-get.

    sudo apt-get install xtables-addons-common
    
  • 를 사용하여 설치하십시오 module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • 소스에서 설치하십시오.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

"국가"데이터베이스를 구축하십시오.

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

시스템을 재부팅하십시오.

sudo reboot

xtables-addons성공적으로 설치되어, 처음으로 다시 부팅 한 후, 실행 depmod, 그렇지 않으면 국가 차단 (이것은 처음에만 필요)가 제대로 작동하지 않습니다.

sudo depmod 

데이터베이스를 매월 /etc/cron.monthly/geoip-updater업데이트 하는 스크립트를 작성하십시오 geoip.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

/etc/cron.monthly/geoip-updater실행 가능하게 만드십시오 .

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 규칙 예

_ 참고 : 규칙 iptables: No chain/target/match by that name을 적용 할 때 오류가 발생하면 올바르게 설치되지 않았을 수 있습니다. 다른 설치 방법을 시도하십시오.geoipxtables-addons

중국, 홍콩, 러시아 및 한국에서 들어오는 모든 패킷을 차단하십시오.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

80위 국가를 제외한 모든 곳 에서 포트 로 들어오는 패킷을 허용 합니다.

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

페루에서만 ens3포트 의 인터페이스에 들어오는 패킷을 허용하십시오 22(예 : US미국의 경우 패킷을 수락하려는 국가 코드를 자유롭게 선택하십시오 ).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

443페루에서만 포트에 들어오는 패킷을 허용하십시오 .

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.