สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การตั้งค่า RPi เริ่มต้น
- ขั้นตอนที่ 2: การสร้างเครือข่าย
- ขั้นตอนที่ 3: ผู้ใช้รายอื่น
- ขั้นตอนที่ 4: ไฟล์ Syctl
- ขั้นตอนที่ 5: DHCP & DNS (ตอนที่ 1)
- ขั้นตอนที่ 6: DHCP & DNS (ตอนที่ 2)
- ขั้นตอนที่ 7: DHCP & DNS (ตอนที่ 3)
- ขั้นตอนที่ 8: ไฟร์วอลล์
- ขั้นตอนที่ 9: Syslog
- ขั้นตอนที่ 10: การตรวจจับการบุกรุกด้วย Snort
- ขั้นตอนที่ 11: สนุก
- ขั้นตอนที่ 12: บันทึกการเปลี่ยนแปลง
วีดีโอ: Raspberry Pi4 Firewall: 12 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ด้วย Raspbery Pi 4 (RPi4) ใหม่ที่เพิ่งเปิดตัว ฉันตัดสินใจสร้างไฟร์วอลล์สำหรับใช้งานที่บ้าน หลังจากท่องอินเทอร์เน็ตไปทั่ว ฉันพบบทความดีๆ เกี่ยวกับเรื่องนี้โดย Guillaume Kaddouch (https://networkfilter.blogspot.com/2012/08/building-your-piwall-gateway-firewall.html) บทความนี้น่าทึ่งมาก และคุณควรอ่านก่อนดำเนินการต่อ เนื่องจากจะทำให้กระบวนการที่อธิบายไว้ที่นี่ง่ายขึ้น สิ่งนั้นคือบทความนั้นเขียนขึ้นในปี 2555 และอิงตาม distro ของ ArchLinux ไม่มีอะไรเทียบกับ ArchLinux แต่ฉันต้องการสร้างสิ่งนี้โดยใช้ Raspbian build ทั่วไป RPi4 สามารถรองรับข้อกำหนดในการประมวลผลได้ ขอบคุณ Guillaume สำหรับแรงบันดาลใจ!! คำแนะนำนี้จะอ้างอิงกลับไปที่โพสต์ต้นฉบับของ Guillaume ("GK" สั้น ๆ) คุณอาจต้องการเปิดทั้งสองหน้าในเบราว์เซอร์ของคุณ
สิ่งสำคัญสองสามประการเกี่ยวกับไฟร์วอลล์ของฉัน:
- ฉันมีแจ็คอีเทอร์เน็ตในตัว (eth0) ที่ไปที่LAN
- เราเตอร์ ISP อยู่บนอะแดปเตอร์ TRENDnet (eth1)
- ฉันได้ปิดการใช้งานอแด็ปเตอร์ไร้สาย (wlan0)
- ไม่รับประกันว่าคุณจะได้รับ 100% ที่นั่น … หวังว่าอย่างน้อย 99%:) ดังนั้นโปรดให้ข้อเสนอแนะ / ความคิดเห็น
- นี่เป็นคำสั่งแรกของฉัน ขออภัยสำหรับสิ่งที่ไม่เป็นไปตามบรรทัดฐานที่สอนได้อย่างเหมาะสม
เอาล่ะมาสนุกกัน…
เสบียง
-
ราสเบอร์รี่ Pi 4
- ฉันใช้รุ่น 4GB อย่าลังเลที่จะลองใช้รุ่นอื่น
- เคส (ฉันชอบ FLIRC แต่นั่นก็แล้วแต่คุณ)
- อะแดปเตอร์ไฟฟ้า
- การ์ด MicroSD, 32GB หรือมากกว่า (ฉันใช้การ์ด 64GB)
- TRENDnet USB3.0 Gigabit Ethernet Dongle (รุ่น: TU3-ETG)
- สายเคเบิลเครือข่าย RJ45 คู่
- แป้นพิมพ์และเมาส์ USB
- สาย Micro-HDMI เป็น HDMI (ที่เสียบเข้ากับจอภาพ HDMI)
แป้นพิมพ์ วิดีโอ และเมาส์นั้นสามารถลบออกได้เมื่อคุณเปิดใช้งาน SSH และ VNC แล้ว
ขั้นตอนที่ 1: การตั้งค่า RPi เริ่มต้น
สิ่งแรกที่ต้องทำคือทำให้ RPi4 ของคุณทำงานเป็นระบบใหม่ ดาวน์โหลดและติดตั้ง Raspbian full distribution (Raspbian Buster พร้อมเดสก์ท็อปและซอฟต์แวร์ที่แนะนำ) คุณจะต้องรีบูตสองสามครั้งเพื่อให้สามารถขยายและใช้ประโยชน์จากการ์ด MicroSD แบบเต็มได้
เมื่อบูทเครื่อง คุณจะต้องตอบคำถามเกี่ยวกับพื้นที่ เครือข่าย คีย์บอร์ด และเมาส์ เชื่อมต่อกับเครือข่ายและอนุญาตให้อัปเดต
ให้ยืนยันด้วยว่าทุกอย่างอัปเดตอย่างถูกต้อง และรับยูทิลิตี้สองสามตัวที่อาจช่วยในการดีบักในภายหลัง:
$ sudo apt-get update
$ sudo apt-get dist-upgrade $ sudo apt-get ติดตั้ง htop $ sudo apt-get ติดตั้ง tcpdump
ฉันไม่ได้ติดตั้ง vim และไม่ทำขั้นตอนที่ 8 ของ GK (กำหนดค่า vim) ฉันเพิ่งใช้ตัวแก้ไข vi เพราะมันมีคุณสมบัติส่วนใหญ่อยู่แล้ว นอกจากนี้ยังช่วยประหยัดเวลาและความพยายามอีกด้วย
เมื่อเสร็จแล้วให้ตั้งค่า RPi4 เพื่อให้เราสามารถเสียบปลั๊กจอภาพได้ เป้าหมายของฉันคือการทำให้มันทำงานแบบไม่มีหัว แต่ถ้าฉันต้องเสียบจอมอนิเตอร์ มันจะเป็นที่รู้จัก
$ sudo vi /boot/config.txt
ในไฟล์นั้น:
uncomment (ลบด้านหน้า #-สัญลักษณ์): hdmi_force_hotplug=1
ไม่ใส่ความคิดเห็น: hdmi_drive=2
หรือเพิ่ม: enable_hdmi_sound
ขั้นตอนที่ 2: การสร้างเครือข่าย
หากคุณกำลังติดตามบนไซต์ของ GK นี่คือขั้นตอนที่ 3 แต่โปรดจำไว้ว่า ฉันไม่ได้ทำตามขั้นตอนแรกของเขามากมายในลำดับที่แน่นอน
เมื่อฉันเริ่มต้นสิ่งนี้ ฉันเชื่อมต่อ RPi โดยตรงกับเราเตอร์ ISP ของฉัน ("ถัดจากเครือข่ายที่มีอยู่ของฉัน") สิ่งนี้ทำให้ฉันสามารถเล่นกับการกำหนดค่าได้โดยไม่ส่งผลกระทบต่อเครือข่าย เชื่อมต่อ RJ45 ในตัว RPi4 กับเราเตอร์ของคุณ (หรือไร้สาย ถ้าคุณต้องการ) ด้วย Raspbian วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้ GUI จากเดสก์ท็อป ให้คลิกไอคอน Raspberry > Preferences > Raspberry Pi Configuration อย่าลืมเปิดใช้งาน SSH และ VNC สิ่งนี้จะติดตั้งไคลเอนต์เซิร์ฟเวอร์ Real-VNC ฉันพบว่าถ้าคุณพยายามเชื่อมต่อกับไคลเอนต์ Tight VNC มันจะพอดีและต้องมีการกำหนดค่าเพิ่มเติม ดังนั้น ณ จุดนี้ให้ติดตั้งไคลเอ็นต์ Real-VNC บนเดสก์ท็อป/แล็ปท็อปหลักของคุณ (ไม่ใช่ RPi4)
SSH จะไม่ทำงานนอกกรอบ (ขั้นตอนของ GK 7) เราจำเป็นต้องแก้ไขการกำหนดค่าบางอย่าง ขั้นแรก ให้แก้ไขไฟล์กำหนดค่า ssh นี่คือการเปลี่ยนแปลงที่ฉันทำ โปรดทราบว่าฉันไม่ได้ศึกษาผลกระทบของการเปลี่ยนแปลงทุกอย่างที่นี่ ฉันทำตามที่เว็บไซต์ของ GK แนะนำ การเปลี่ยนแปลงบางอย่างอาจไม่จำเป็น
$ sudo vi /etc/ssh/sshd_config
ในไฟล์นั้น ให้ uncomment บรรทัดต่อไปนี้:
HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_ecdsa_keySyslogFacility AUTHLogLevel INFOStrictModes ใช่PubkeyAuthentication ใช่HostBasedAuthentication no
ละเว้น Rhosts ใช่
PrintMotd noPrintLastLog ใช่ TCPKeepAlive ใช่
และเพิ่มบรรทัดต่อไปนี้:
โปรโตคอล 2 UsePrivilegeSeparation ใช่KeyRegenerationInterval 3600ServerKeyBits 768RSAAuthentcation yesRhostsRSAAuthentication no
และแก้ไขบรรทัดต่อไปนี้:
พอร์ต 15507LoginGraceTime 60PermitRootLogin no
มาคุยกันเรื่องการปรับเปลี่ยนก่อน…พอร์ต 15507 กัน ปกติ SSH ทำงานบนพอร์ต 22 GK ย้ายไปที่ 15507--ไม่รู้ว่าทำไม คุณสามารถแก้ไขได้หรือไม่… หากคุณเลือกที่จะแก้ไข คุณจะต้องเพิ่ม "-p 15507" ในคำสั่ง SSH ใดๆ ที่คุณพยายามจะเชื่อมต่อด้วย หากคุณตัดสินใจที่จะข้ามไป ให้จับตาดูสถานที่อื่นๆ ที่กล่าวถึง 15507 ในคำแนะนำเหล่านี้และไม่ต้องสนใจ โดยเฉพาะกฎของไฟร์วอลล์!
สุดท้ายสำหรับขั้นตอนนี้ ให้รับที่อยู่ IP ของ RPi4 เพื่อให้เรารู้ว่าต้องเชื่อมต่อกับอะไร:
$ ipconfig -a
ค้นหาการเชื่อมต่อเครือข่ายที่ใช้งานอยู่ (น่าจะอยู่ที่ eth0 หรือ wlan0) และจดที่อยู่ IP นั้นไว้ ตอนนี้คุณมีสิ่งที่คุณต้องการเพื่อเชื่อมต่อกับ RPi4 จากระยะไกลแล้ว มารีบูตก่อนที่เราจะไปต่อ:
$ sudo รีบูต
ขั้นตอนที่ 3: ผู้ใช้รายอื่น
เป็นการดีที่สุดที่จะไม่ใช้ชื่อผู้ใช้ RPi เริ่มต้น (pi) และคุณควรเปลี่ยนรหัสผ่านอย่างแน่นอน เพื่อความปลอดภัย ให้เพิ่มบัญชีผู้ใช้อื่นที่คุณสามารถใช้เพื่อเชื่อมต่อจากระยะไกลและดำเนินการต่อด้วย (ขั้นตอนของ GK 6) กลับไปที่ RPi ให้เพิ่มผู้ใช้ใหม่และตั้งค่าการอนุญาตสำหรับผู้ใช้เป็น SSH และออกคำสั่ง sudo:
$ sudo useradd -m -g users -G sudo, netdev -s /bin/bash [USERNAME]
$ sudo passwd [ชื่อผู้ใช้]
คุณสามารถออกจากระบบหรือรีบูตและใช้บัญชีที่สร้างขึ้นใหม่ได้ในอนาคต
ขั้นตอนที่ 4: ไฟล์ Syctl
ขั้นตอนต่อไปคือการแก้ไขไฟล์ /etc/sysctl.conf (ขั้นตอนที่ 9) ของ GK ไฟล์นี้ใช้เพื่อเปลี่ยนการตั้งค่าเคอร์เนลบางส่วน เราจะทำสิ่งที่ GK บอกให้ทำอย่างแน่นอน นี่คือชุดขั้นตอนแบบง่าย
$ sudo vi /etc/sysctl.conf
ในไฟล์นั้น ให้ uncomment บรรทัดต่อไปนี้:
net.ipv4.conf.default.rp_filter=1net.ipv4.conf.all.rp_filter=1net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.all.accept_source_route = 0net.ipv4.conf.all.log_martians = 1
และเพิ่มบรรทัดต่อไปนี้:
net.ipv4.icmp_echo_ignore_broadcasts = 1net.ipv4.icmp_ignore_bogus_error_responses = 1net.ipv4.conf.eth0.accept_redirects = 0vm.min_free_kbytes = 8192
เริ่มบริการใหม่ด้วยการตั้งค่าใหม่และรีบูต:
$ sudo sysctl -p
$ sudo รีบูต
ขั้นตอนที่ 5: DHCP & DNS (ตอนที่ 1)
สำหรับฉัน มีสองส่วนที่เจ็บปวดในกระบวนการนี้… การตั้งค่า DHCP & DNS และการตั้งค่ากฎไฟร์วอลล์ เอาล่ะ มาต่อกันที่ภาคแรกกันเลย หากคุณกำลังติดตามไซต์ของ GK เราอยู่ในขั้นตอนที่ 10
ในการทำเช่นนี้ คุณจะต้องใช้ข้อมูลบางส่วนจากเราเตอร์ ISP ของคุณ (หรือไฟร์วอลล์ปัจจุบัน):
- ที่อยู่ IP ภายในของเราเตอร์
- ที่อยู่ IP ที่คุณใช้สำหรับอินเทอร์เฟซของ RPi4 กับเราเตอร์ได้
- IPs สำหรับเนมเซิร์ฟเวอร์ (หรือสอง)
- ชื่ออินเทอร์เฟซสำหรับการเชื่อมต่อ LAN (เช่น eth0 หรือ eth1)
- ชื่ออินเทอร์เฟซสำหรับการเชื่อมต่อ ISP (เช่น อะไรก็ตามที่คุณไม่ได้ใช้สำหรับ LAN)
คุณอาจต้องแก้ไขการตั้งค่าของเราเตอร์เพื่อให้ RPi4 มีที่อยู่ IP แบบคงที่ (bullet 2 ด้านบน) อย่างน้อยนั่นคือสิ่งที่ฉันทำ
ขั้นแรก ให้แก้ไขไฟล์ dhcpcd.conf…
$ sudo vi /etc/dhcpcd.conf
ยกเลิกหมายเหตุบรรทัดเหล่านี้:
Persistryoption rapid_commitoption domain_name_servers, domain_name, domain_search, host_nameoption interface_mtu
สำหรับแต่ละอินเทอร์เฟซเครือข่าย คุณต้องตั้งค่ารายละเอียดเครือข่าย พวกเขาควรมีลักษณะดังนี้:
# คงที่สำหรับส่วนต่อประสานกับ ISP
interface eth1 static ip_address=192.168.1.static routers=192.168.1.254 static domain_name_servers=8.8.8.8 8.8.4.4 metric 100 # Static สำหรับอินเทอร์เฟซ LAN อินเตอร์เฟส eth0 static ip_address=10.210.212.static routers=10.210.212.1 คงที่ domain_name_servers=8.8.8.8 8.8.4.4 #interface wlan0 #static ip_address=10.210.212.#static routers=10.210.212.1 #static domain_name_servers=8.8.8.8 #Uncomment this section if you want to force an IP address on a device. ชื่อหลัง 'เจ้าภาพ' #ไม่มีความหมายต่อระบบ ป้อนที่อยู่ MAC ของอุปกรณ์รวมถึงที่อยู่ #IP ที่ต้องการ ตรวจสอบให้แน่ใจว่าอยู่นอกช่วง dhcp ทำซ้ำตามความจำเป็น #host [อะไรก็ได้] { # ฮาร์ดแวร์อีเธอร์เน็ต xx:xx:xx:xx:xx:xx; # ที่อยู่คงที่ 10.210.212.250; #}
อย่าลืมใช้ตัวเลขที่เหมาะกับคุณ IP ด้านบนมีไว้สำหรับเครือข่ายของฉัน ยกเว้นเนมเซิร์ฟเวอร์ที่เป็น Google โปรดสังเกตว่าฉันยังตั้งค่าเมตริกสำหรับ ISP เป็น 100 เพื่อบังคับให้เป็นค่าเริ่มต้นสำหรับการรับส่งข้อมูลเครือข่ายก่อน ฉันไม่ได้ทำอะไรกับอแด็ปเตอร์ไร้สาย (wlan0) โดยเฉพาะ ฉันตั้งใจจะปิดอินเทอร์เฟซนั้นโดยสมบูรณ์ ดังนั้นจึงสมเหตุสมผลสำหรับฉัน
นอกจากนี้ หากคุณต้องการบังคับที่อยู่ IP บนอุปกรณ์ (เช่น NAS) ให้ใช้ส่วนด้านล่าง ตั้งชื่อโฮสต์ที่มีความหมายกับคุณ แต่รู้ว่าไม่เคยมีใครใช้ชื่อนี้ อย่าลืมเครื่องหมายอัฒภาค
ขั้นตอนที่ 6: DHCP & DNS (ตอนที่ 2)
ขั้นตอนต่อไปคือการแก้ไขไฟล์ dnsmasq.conf…
$ sudo vi /etc/dnsmasq.conf
เราจำเป็นต้องยกเลิกความคิดเห็นสองสามบรรทัด และแก้ไขสองสามบรรทัด คุณจะต้องคัดลอกการตั้งค่าบางอย่างจากไฟล์ dhcpcd.conf อีกสองคำถามที่คุณต้องตอบสำหรับตัวคุณเองคือ:
LAN ภายใน (เช่น eth0) ต้องการ DHCP และ DNS หรือไม่ คุณต้องการช่วง DHCP ใดสำหรับ LAN ของคุณ และแต่ละสัญญาเช่าควรมีความยาวเท่าใด
เริ่มต้นด้วยการไม่ใส่ความคิดเห็นสองสามบรรทัด:
bogus-privno-dhcp-interface=wlan0bind-interfacesdhcp-name-match=set:wpad-ignore, wpaddhcp-ignore-names=tag:wpad-ignore
ตั้งชื่อเซิร์ฟเวอร์ของคุณ มองหาบรรทัดที่ขึ้นต้น 'server=' และทำให้เป็น 'server=8.8.8.8'
ตั้งค่าช่วง DHCP ของคุณ มีหลายวิธีในการทำเช่นนี้ ฉันเลือกที่จะจัดเตรียม IP ปลายทางสองรายการ มาสก์ และระยะเวลาการเช่า ช่วงของฉันคือ 10.210.212.20-10.210.212.240 โดยมี netmask 255.255.255.0 และเวลาเช่า 12 ชั่วโมง ฉันแนะนำให้คุณปล่อย IP บางส่วนไว้ที่ด้านบนและด้านล่างของช่วงของคุณ ในกรณีที่คุณจำเป็นต้องให้ IP แบบคงที่
ตั้งค่าอินเทอร์เฟซที่จะได้รับ DNS และ DHCP (LAN) โดยแก้ไขบรรทัด 'interface=' ให้เป็น 'interface=eth0) ขอให้สังเกตว่าฉันบอกเป็นพิเศษว่าอย่ากำหนดที่อยู่ IP DHCP ให้กับเครือข่ายไร้สายของฉัน อีกครั้ง ฉันตั้งใจจะปิดอินเทอร์เฟซนั้นโดยสมบูรณ์ ดังนั้นมันจึงสมเหตุสมผลสำหรับฉัน
ขั้นตอนที่ 7: DHCP & DNS (ตอนที่ 3)
การเบี่ยงเบนจากคำแนะนำของ GK สำหรับขั้นตอนสุดท้ายนี้…
เมื่อฉันไปรีสตาร์ท RPi ณ จุดนี้ กระบวนการ dnsmasq ไม่ทำงาน แหย่ไปรอบ ๆ และฉันพบว่าอินเทอร์เฟซเครือข่าย eth0 และ eth1 ของฉันไม่ได้เปิดใช้งานทั้งคู่ก่อนที่จะเริ่ม dnsmasq ดังนั้น dnsmasq จะล้มเหลวในการเริ่มต้น ฉันจะต้องเชื่อมต่อแป้นพิมพ์และเมาส์กับ RPi และรีสตาร์ท dnsmasq ด้วยตนเอง ไม่เหมาะกับการตั้งค่าแบบไม่มีหัว ฉันอ่านโพสต์จำนวนหนึ่งที่บอกว่าจะทำการเปลี่ยนแปลงการตั้งค่าต่างๆ (เช่น ปิดใช้งานอินเทอร์เฟซการผูก) และสิ่งอื่น ๆ ไม่มีอะไรทำงาน ในท้ายที่สุด ฉันตัดสินใจเพียงแค่เขียนเชลล์สคริปต์ที่จะทำงานทุกๆ 2 นาที และตรวจสอบสถานะของ dnsmasq ถ้ามันไม่ได้ทำงาน ให้เริ่มมัน ฉันคิดว่าสถานการณ์นี้ไม่ใช่เฉพาะตัวฉัน ดังนั้น นี่คือสิ่งที่คุณต้องทำ:
สร้างรหัสต่อไปนี้เป็นไฟล์ชื่อ 'dns_masq_keepalive.sh' บน RPi ของคุณ
#!/bin/bash
# ไฟล์: dns_masq_keepalive.sh # สิงหาคม 2019 # ใช้สิ่งนี้กับ crontab -e (*/2 * * * * /etc/dns_masq_keepalive.sh) เพื่อให้แน่ใจว่า dnsmasq ทำงาน บริการจะหยุดตัวเองหาก # อินเทอร์เฟซทั้งหมดที่กล่าวถึงใน dhcpcd.conf ไม่ได้ทำงานก่อนที่จะเริ่มต้น วิธีนี้ช่วยแก้ไขปัญหา # บรรทัดถัดไปจะส่งคืนงานที่ใช้งานอยู่ทั้งหมดที่มีคำว่า 'dnsmasq' อยู่ในนั้น ดังนั้นอย่ารวม 'dnsmasq' ไว้ในชื่อไฟล์ # นี้ มิฉะนั้นจะส่งคืนทุกครั้งและคุณจะไม่มีวันรีสตาร์ท dns_running=$(ps -e | grep dnsmasq) echo $dns_running if [-z "$dns_running"] แล้ว #echo No DNSMasq sudo /etc/init.d/dnsmasq restart #else #echo DNSMasq Running fi
ตัดและวางหากคุณต้องการ ไม่ว่าคุณจะทำอะไร อย่ารวม 'dnsmasq' ไว้ในชื่อ สคริปต์จะค้นหาคำว่า 'dnsmasq' และหากสคริปต์มีอยู่ในชื่อ สคริปต์จะถือว่าบริการกำลังทำงานอยู่ เปลี่ยนชื่อไฟล์ให้ลงท้ายด้วย '.sh' Instructables ไม่อนุญาตให้ฉันอัปโหลดไฟล์ '.sh' ซึ่งถือว่าดี คำแนะนำที่เหลือถือว่าไฟล์อยู่ที่: /etc/dns_masq_keepalive.sh
ประการที่สอง ตั้งค่าการอนุญาตในไฟล์เพื่อให้สามารถดำเนินการได้:
$ sudo chmod u+x /etc/dns_masq_keepalive.sh
ตอนนี้เราจะใช้ระบบ crontab เพื่อให้โปรแกรมทำงานทุกๆ 2 นาทีของทุกวัน เริ่ม crontab:
$ sudo crontab -e
ควรแจ้งให้คุณแก้ไขโดยใช้ vi หรืออย่างอื่น ใด ๆ จะทำงาน เมื่อแก้ไขได้แล้ว ให้เพิ่มสิ่งต่อไปนี้ต่อท้ายไฟล์:
*/2 * * * * sudo /etc/dns_masq_keepalive.sh
ไม่มีช่องว่างใน '*/2' แต่มีช่องว่างระหว่างเครื่องหมายดอกจัน บันทึกและเลิก ควรบอกคุณว่างานมีกำหนดหรืออะไรทำนองนั้น
ขั้นตอนที่ 8: ไฟร์วอลล์
กระบวนการที่เจ็บปวดต่อไปคือไฟร์วอลล์ (ขั้นตอนที่ 11 ของ GK) Raspbian ใช้ระบบ iptables ที่รู้จักกันดี บล็อกของ GK มีไฟล์สามไฟล์ที่จะช่วยให้คุณไปถึงที่นั่น… firewall.simple, firewall.advanced และ firewall.flows ทั้งหมดเกี่ยวกับ GK แต่ทำให้ง่ายสำหรับตัวคุณเองและเพียงแค่ใช้ firewall.simple ฉันใช้เวลามากในการพยายามหาระบบและกฎ iptables ฉันดีใจที่ได้ทำ แต่มันเจ็บปวด ดังนั้นฉันจึงให้ไฟล์แนบสองไฟล์แก่คุณเพื่อช่วยคุณ… firewall.simple และ firewall.clear คัดลอกไฟล์ทั้งสองนี้ไปยังโฟลเดอร์ /etc ของคุณและเปลี่ยนการอนุญาตเพื่อให้ปฏิบัติการได้:
$ sudo chmod u+x /etc/firewall.simple
$ sudo chmod u+x /etc/firewall.clear
ก่อนที่คุณจะตั้งค่ากฎไฟร์วอลล์ใดๆ ให้เสียบเดสก์ท็อป/แล็ปท็อปเข้ากับพอร์ต RPi eth0 ของคุณและยืนยันว่าได้รับที่อยู่ IP และเปิดใช้งาน DNS วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการลอง ping ไซต์ทั่วไปแล้วตามด้วยที่อยู่ IP ที่รู้จัก ping เราเตอร์ RPi และ ISP ของคุณด้วย หากคุณได้ผลลัพธ์ แสดงว่าทุกอย่างเรียบร้อยดี และปัญหาเครือข่ายใดๆ ที่คุณพบในตอนนี้อาจเป็นผลมาจากปัญหาไฟร์วอลล์
ไฟล์แรกที่ให้มาเริ่มต้นเป็นไฟล์ firewall.simple ของ GK (ขอบคุณอีกครั้ง GK!) ฉันได้ทำการเปลี่ยนแปลงหลายอย่างเพื่อให้มันใช้งานได้กับระบบนี้ ควรอนุญาต HTTP, HTTPS, DNS, DHCP, ping, SSH ภายใน, VNC ภายในและเพล็กซ์เป็นอย่างน้อย Plex อาจไม่มีพอร์ตที่เปิดอยู่ทั้งหมดสำหรับอุปกรณ์ทุกเครื่องที่เป็นไปได้ แต่มีโพสต์มากมายให้แก้ไข ที่ด้านบนของไฟล์คือค่าที่คุณจะต้องเปลี่ยนเป็นการกำหนดค่าเครือข่ายของคุณ
ไฟล์ที่สอง firewall.clear มีวัตถุประสงค์เพื่อใช้ในขณะที่คุณทดสอบกฎไฟร์วอลล์ของคุณ เมื่อคุณเรียกใช้ 'sudo /etc/firewall.clear' กฎไฟร์วอลล์ทั้งหมดจะถูกล้างและระบบควรเชื่อมต่อกับอินเทอร์เน็ตอย่างสมบูรณ์ ดังนั้น หากคุณไม่สามารถทำให้บริการเครือข่าย (เช่น dns) ทำงานโดยใช้กฎ firewall.simple ได้ แต่จะเริ่มทำงานหลังจากที่คุณเรียกใช้ firewall.clear แล้วคุณจะรู้ว่าคุณมีปัญหาเกี่ยวกับกฎ สิ่งนี้จะมีความสำคัญอย่างยิ่งเมื่อทดสอบกฎของคุณเท่านั้น
ดังนั้นเราจึงมีกฎไฟร์วอลล์อยู่ที่นั่น เราต้องทำให้พวกเขาเริ่มต้นเมื่อ RPi เริ่มทำงาน ในการทำเช่นนั้น เราจะแก้ไขไฟล์ /etc/rc.local:
$ sudo vi /etc/rc.local
เมื่อเข้าไปข้างในแล้วให้เพิ่มสิ่งต่อไปนี้ต่อท้ายไฟล์:
echo “กำลังโหลดกฎ iptables”/etc/firewall.simple >> /dev/null
หากคุณเลือกที่จะเพิ่มระบบตรวจจับการบุกรุก snort คุณจะต้องแก้ไขไฟล์นี้อีกครั้ง สำหรับตอนนี้เพียงแค่บันทึกและรีบูต
$ sudo รีบูต
ขั้นตอนที่ 9: Syslog
เหลืออีกสองก้าว…
นี้เป็นเรื่องง่าย หากคุณยังคงอยู่ที่นั่น และติดตามบล็อกของ GK ต่อไป นี่คือขั้นตอนที่ 12 คุณต้องทำสิ่งที่เขาพูดเกี่ยวกับไฟล์ syslog ให้ถูกต้อง นี่คือขั้นตอนโดยย่อ:
เก็บข้อมูล syslog ให้คุ้มค่า 2 เดือน…
$ sudo vi /etc/logrotate.conf
เราจำเป็นต้องบอกให้ใช้ 'หนึ่งสัปดาห์' เป็นหน่วยวัด แล้วเก็บไว้ 12 ตัว คุณต้องมีสองบรรทัดต่อไปนี้ในไฟล์นี้ ฉันเชื่อว่าคุณจะต้องเปลี่ยนบรรทัดที่มีอยู่
รายสัปดาห์หมุน 12
บันทึกมัน
ขั้นตอนที่ 10: การตรวจจับการบุกรุกด้วย Snort
สิ่งสุดท้ายที่ GK กำหนดค่าคือระบบ snort ฉันแนะนำสิ่งนี้เช่นกัน คุณสามารถทำตามกฎของเขา และฉันจะไม่คัดลอกกฎทั้งหมดที่นี่ โดยมีการแก้ไขเล็กน้อย คำแนะนำของเขามีไว้สำหรับ ArchLinux distro ต่อไปนี้คือการเปลี่ยนแปลงเล็กน้อยสำหรับการแจกจ่าย Raspbian ที่เราใช้ที่นี่ คำแนะนำที่เหลือทำงานได้ดี
ก่อนอื่นอย่าใช้ sudo pacman -S snort เพื่อดาวน์โหลดและติดตั้ง snort ทำดังต่อไปนี้:
$ sudo apt-get ติดตั้ง snort
ประการที่สอง คุณไม่สามารถตรวจสอบ snort ด้วย sudo snort -version ตรวจสอบการติดตั้งด้วย:
$ sudo snort -V
สุดท้าย เมื่อต้องการให้มันทำงานเมื่อเริ่มต้น อย่าแก้ไขไฟล์ rc.conf แก้ไขไฟล์ rc.local (อีกครั้ง)…
$ sudo vi /etc/rc.local
เพิ่มบรรทัดต่อไปนี้ต่อท้ายไฟล์:
echo "กำลังโหลด snort"
#/usr/sbin/snort -D -u snort -g snort -c /etc/snort/snort.conf -i eth0 -l /var/log/snort
ตอนนี้ รีบูต และทุกอย่างควรจะทำงานได้อย่างน่าอัศจรรย์
$ sudo รีบูต
ขั้นตอนที่ 11: สนุก
ที่ควรจะเป็น!
ก่อนอื่น ฉันไม่สามารถขอบคุณ Guillaume Kaddouch ได้มากพอ! เขาได้แรงบันดาลใจนี้
ประการที่สอง หากคุณยังไม่ได้ยกเลิกการเชื่อมต่อแป้นพิมพ์ วิดีโอ และเมาส์ คุณสามารถทำได้ ใช้ SSH และ VNC เพื่อกลับเข้ามาใหม่เมื่อจำเป็น
สุดท้ายนี้อาจไม่สมบูรณ์แบบ 100% โปรดโพสต์กลับด้วยการเปลี่ยนแปลง/ข้อเสนอแนะ/คำแนะนำ เป้าหมายของฉันคือเพื่อให้สิ่งนี้เป็นจุดเริ่มต้นของการสนทนาและผู้คนจำนวนมากเพลิดเพลิน!
ขอบคุณ!!
PS… รูปภาพคือ RPi4 ภายในเคสอะลูมิเนียม FLIRC พร้อมพัดลม Intel รุ่นเก่าที่ดัดแปลงเล็กน้อยและติดซิปไว้ด้านบน มีแผ่นแปะระบายความร้อนใต้พัดลมด้วยเผื่อคุณสงสัย ฉันพบสิ่งที่คล้ายกันบนอินเทอร์เน็ต (https://www.reddit.com/r/raspberry_pi/comments/9bdgrr/it_turns_out_putting_a_heatsink_on_the_flirc_case/) และตัดสินใจลองด้วยตัวเอง
ขั้นตอนที่ 12: บันทึกการเปลี่ยนแปลง
เมื่อมีการเปลี่ยนแปลงคำแนะนำนี้ ฉันจะจัดทำเอกสารไว้ที่นี่ในกรณีที่คุณมีปัญหา ให้ตรวจสอบที่นี่เพื่อดูว่าคุณคว้าคำแนะนำหรือไฟล์เก่าหรือไม่
25 กันยายน 2019:
- แก้ไขกฎ DHCP ใน firewall.simple
- แก้ไขช่วง DHCP ในคำแนะนำ (ไฟล์ถูกต้อง)
- เพิ่มการกำหนด IP คงที่ให้กับคำสั่ง DHCP
13 ตุลาคม 2019
- แก้ไขคำผิดหลายรายการ
- สร้าง pi ตัวที่สอง ดังนั้นฉันจะมี SDcard ทดสอบเพื่อสลับ ถ้าจำเป็น
แนะนำ:
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
ปกป้องเครือข่ายของคุณด้วย UTM Firewall ฟรี: 4 ขั้นตอน
ปกป้องเครือข่ายของคุณด้วย UTM Firewall ฟรี: คู่มือนี้จะครอบคลุมพื้นฐานในการติดตั้ง Sophos UTM และทำงานบนเครือข่ายในบ้านของคุณ นี่เป็นชุดซอฟต์แวร์ที่ฟรีและทรงพลังมาก ฉันกำลังพยายามหาตัวหารร่วมที่ต่ำที่สุด ดังนั้นฉันจะไม่เข้าสู่การรวม Active Directory ระยะไกล
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: 4 ขั้นตอน
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: ในคำแนะนำนี้ เราจะเชื่อมต่อเซ็นเซอร์ ADXL335 (accelerometer) บน Raspberry Pi 4 กับ Shunya O/S
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI - เริ่มต้นใช้งาน Raspberry Pi 3B - การตั้งค่า Raspberry Pi ของคุณ 3: 6 ขั้นตอน
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI | เริ่มต้นใช้งาน Raspberry Pi 3B | การตั้งค่า Raspberry Pi ของคุณ 3: อย่างที่พวกคุณบางคนรู้ว่าคอมพิวเตอร์ Raspberry Pi นั้นยอดเยี่ยมมากและคุณสามารถรับคอมพิวเตอร์ทั้งหมดได้บนบอร์ดเล็ก ๆ ตัวเดียว Raspberry Pi 3 Model B มี ARM Cortex A53 แบบ 64 บิตแบบ quad-core โอเวอร์คล็อกที่ 1.2 GHz ทำให้ Pi 3 ประมาณ 50
เพิ่มเซิร์ฟเวอร์ MC ไปที่ FireWall: 12 ขั้นตอน
เพิ่ม MC Server ไปที่ FireWall: 1. พิมพ์ "wf.msc" ลงในแถบค้นหาทางด้านซ้ายของ taskbar.Alt ไปที่แผงควบคุม เปิดไฟร์วอลล์ Windows (Defender) และเลือกการตั้งค่าขั้นสูงจากเมนูทางด้านซ้าย