การกำหนดค่า IPTables อย่างง่ายและตัวอย่างบน Ubuntu 16.04

บทนำ

iptablesเป็นเครื่องมือที่มีประสิทธิภาพที่ใช้ในการกำหนดค่าไฟร์วอลล์รวมของเคอร์เนล Linux มันติดตั้งมาล่วงหน้าบน Ubuntu ส่วนใหญ่อย่างไรก็ตามถ้าคุณใช้รุ่น Ubuntu ที่กำหนดเองหรือใช้งานภายในคอนเทนเนอร์คุณมักจะต้องติดตั้งด้วยตนเอง

sudo apt-get install iptables iptables-persistent

หลังจากการติดตั้งหากคุณถูกถามว่าจะบันทึกกฎปัจจุบันของคุณหรือไม่มันไม่สำคัญในขณะนี้เพราะคุณกำลังจะลบหรือสร้างกฎใหม่ในภายหลัง

เคล็ดลับ

คุณสามารถใช้netcatคำสั่ง (ในที่แตกต่างกันคอมพิวเตอร์กว่าเซิร์ฟเวอร์ของคุณ) ในการทดสอบซึ่งของพอร์ตของคุณจะเปิดหรือปิด

nc -z -w5 -v SERVER_IP PORT
  • nc คือคำสั่ง netcat
  • -z เพียงแค่ส่งแพ็คเก็ตที่ไม่มีน้ำหนักบรรทุก
  • -w5 รอนานถึง 5 วินาทีสำหรับการตอบกลับ
  • -v โหมด verbose
  • แทนที่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, และOUTPUTPREROUTING
  • -p tcpชุดtcpเป็นโปรโตคอลกฎนี้จะมีผลกับคุณยังสามารถใช้โปรโตคอลอื่น ๆ เช่นudp, หรือicmpall
  • -m tcpใช้tcpโมดูล iptablesรองรับคุณสมบัติเพิ่มเติมผ่านโมดูลซึ่งบางส่วนได้ติดตั้งไว้แล้วiptablesและอื่น ๆ เช่นgeoipโมดูล
  • --dport 22คำสั่งที่เริ่มต้นด้วย--ระบุตัวเลือกเพิ่มเติมสำหรับโมดูลที่ใช้ก่อนหน้านี้ในกรณีนี้เราจะบอกให้tcpโมดูลใช้กับพอร์ต22เท่านั้น
  • -m geoipใช้geoipโมดูล มันจะ จำกัด แพ็คเก็ตในแต่ละประเทศ (ข้อมูลเพิ่มเติมในขั้นตอนที่ 5)
  • --src-cc PEบอกให้geoipโมดูล จำกัด จำนวนแพ็คเก็ตที่เข้ามาให้กับคนที่มาจากเปรู สำหรับรหัสประเทศเพิ่มเติมค้นหา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. สร้างกฎเริ่มต้น

อนุญาตให้ใช้SSHบนeth0ส่วนต่อประสาน

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: tcp ที่พอร์ต 21
  • HTTPS: tcp ที่พอร์ต 443
  • DHCP: udp ที่พอร์ต 67
  • NTP: udp ที่พอร์ต 123

หมายเหตุ: หากคุณต้องการให้apt-getมันอาจจะเป็นสิ่งจำเป็นที่จะช่วยให้FTPHTTPSและ

อนุญาตการรับส่งข้อมูลที่ส่งคืนสำหรับการเชื่อมต่อRELATEDแล้วเท่านั้นESTABLISHED( แนะนำเนื่องจากบางครั้งจำเป็นต้องใช้การสื่อสารแบบสองทิศทาง)

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
กฎที่มีประโยชน์อื่น ๆ

อนุญาตคำขอ ping จากภายนอก

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ระบบปฏิบัติการจะยกเลิกแพ็กเก็ตทั้งหมดเปลี่ยนเส้นทางไปยังอินเตอร์เฟซที่ย้อนกลับ

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 ตัวอย่างกฎ

_Note: หากคุณได้รับiptables: No chain/target/match by that nameข้อผิดพลาดเมื่อพยายามใช้geoipกฎอาจเป็นไปได้ว่าxtables-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

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ 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 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน