สิ่งที่ควรทำเพื่อรักษาความปลอดภัย Raspberry Pi


82

การมีราสเบอร์รี่ Pi เชื่อมต่อกับอินเทอร์เน็ตเป็นหมื่น ๆ ในที่สุดก็จะดึงดูดความสนใจของบางคนที่ต้องการทำสิ่งที่ไม่น่ารังเกียจให้กับคอมพิวเตอร์ตัวเล็กโดยเฉพาะเมื่อหลายคนใช้ Pi เพื่อทำเซิร์ฟเวอร์เครือข่าย Linux เป็นระบบปฏิบัติการที่ปลอดภัยนอกเหนือจากการรักษาความปลอดภัยที่ชาญฉลาด แต่นอกเหนือจากการเปลี่ยนรหัสผ่านสิ่งที่ควรทำเพื่อ "ทำให้แข็ง" Raspberry Pi ถ้าฉันตั้งใจจะโฮสต์บริการอินเทอร์เน็ตที่กำลังเผชิญอยู่บนอุปกรณ์

เพียงเพื่อสนับสนุน "นับหมื่นของฉัน" คำคม, Eben อัพตันได้กล่าวว่า"ราสเบอร์รี่ Pi มียอดขายมากกว่า 200,000 ของโมดูลคอมพิวเตอร์พื้นฐานและขณะนี้การจัดส่งสินค้า 4,000 หน่วยต่อวัน" มันอาจจะปลอดภัยที่จะสมมติว่ามีคนนับหมื่นใน 200,000 คนที่เชื่อมต่อกับอินเทอร์เน็ต มีความปลอดภัยน้อยกว่าถ้าสมมติว่า Raspberry Pis ที่เชื่อมต่ออินเทอร์เน็ตนั้นนับหมื่นเป็นโฮสติ้งที่เปิดให้บริการเว็บสาธารณะ แต่ศักยภาพของความกระตือรือร้นของแฮ็กเกอร์ยังคงมีอยู่


3
โปรดจำไว้ว่าแม้ว่าอาจมีการเชื่อมต่อ "หมื่น" แต่มี (ปัจจุบัน) มี distros Linux 3 ตัวแยกกัน (ที่ฉันรู้) และฉันคิดว่ามีโครงการที่ไม่ใช่ลินุกซ์อยู่สองสามตัว สิ่งนี้มีผลต่อมุมมองของแฮ็กเกอร์ อย่างไรก็ตามหากความปลอดภัยเป็นสิ่งสำคัญให้ distro ของคุณอัปเดตและหากจำเป็นให้อุปกรณ์ของคุณอยู่หลังไฟร์วอลล์
RLH

จุดที่ดี RLH ฉันจะเพิ่มข้อมูลเพิ่มเติมให้กับคำถามที่สนับสนุนจำนวนของ Raspberry Pis ในป่าเพื่อให้แนวคิดที่ดีขึ้นเกี่ยวกับพื้นผิวการโจมตีของ Raspberry Pi ที่ Steve พูดถึงในคำตอบของเขา
Dan B

@DanB Attack surface ไม่ใช่ฟังก์ชั่นของจำนวนของ Pi แต่เป็นจำนวนของระบบและบริการที่มีให้สำหรับการโจมตี en.wikipedia.org/wiki/Attack_surface
Steve Robillard

@SteveRobillard ขออภัยถ้าฉันไม่ชัดเจนในความคิดเห็น แต่ในการแก้ไขฉันทำกับคำถามที่ฉันพยายามที่จะต้มลงในลักษณะเชิงคุณภาพของจำนวน Pis ที่เป็นเจ้าภาพบริการสาธารณะหันหน้าไปทางดังนั้นจึงจะนำเสนอบริการสำหรับการโจมตี .
Dan B

ฉันพบบทเรียนสั้น ๆ เกี่ยวกับวิธีรักษาราสเบอร์รี่ pi ของคุณเมื่อใช้ SSH ดูเหมือนว่าเรียบร้อย -> บทช่วยสอน
Dominik St.

คำตอบ:


54

การรักษาความปลอดภัยคอมพิวเตอร์ไม่ใช่เรื่องง่ายหนังสือทั้งเล่มจะถูกเขียนในหัวข้อ ขนาดของ Pi ไม่ลดการคุกคามด้านความปลอดภัยหรือพื้นผิวการโจมตีที่แสดงต่อผู้โจมตีที่เป็นไปได้ ดังนั้นฉันจะอธิบายขั้นตอนที่เกี่ยวข้องและให้ลิงก์ไปยังคำแนะนำและแบบฝึกหัดโดยละเอียดเพิ่มเติม

เนื่องจากคุณไม่ได้พูดถึงสิ่งที่คุณกำลังใช้ distro ฉันจะถือว่า Raspbian Distro ที่แนะนำ

  1. เปลี่ยนรหัสผ่านเริ่มต้น Raspbian distro ได้รวมสิ่งนี้ไว้เป็นตัวเลือกในสคริปต์เริ่มต้นเริ่มต้น หากคุณไม่ได้ทำสิ่งนี้คุณสามารถใช้คำสั่งpasswdเพื่อเปลี่ยนได้ ตรวจสอบให้แน่ใจว่าได้เลือกรหัสผ่านที่คาดเดายาก
  2. ปิดบริการที่ไม่ได้ใช้ ผมเห็นว่าที่แนะนำ distro Raspbian รวมถึง Apache เว็บเซิร์ฟเวอร์และช่วยให้มันที่เริ่มต้น (คนที่สามารถยืนยันเรื่องนี้) คุณต้องการเว็บเซิร์ฟเวอร์ที่ใช้งานจริงหรือ หากไม่ปิดการใช้งาน หากคุณจำเป็นต้องเรียกใช้ Apache ให้แน่ใจว่าได้รักษาความปลอดภัยแล้วและทำเช่นเดียวกันสำหรับบริการอื่น ๆ (เช่น FTP, NGINX, MySQL เป็นต้น) การค้นหาด้วยกูเกิลควรทำให้เกิดทรัพยากรมากมาย
  3. ติดตั้งและกำหนดค่าiptables
  4. ทำให้ระบบของคุณทันสมัย คุณสามารถอัตโนมัตินี้โดยใช้cronหรือใช้cron-ฉลาด
  5. กำหนดค่าการบันทึกเพื่อตรวจสอบการเข้าสู่ระบบและการพยายามเข้าสู่ระบบล้มเหลว หากเป็นไปได้ให้ใช้ฮาร์ดไดรฟ์ภายนอกเพื่อโฮสต์ / พาร์ติชันของคุณซึ่งจะทำให้คุณมีพื้นที่มากขึ้นหลีกเลี่ยงไฟล์บันทึกจากการกรอกข้อมูลลงใน SD Card และยืดอายุการใช้งานการ์ด SD ของคุณ

บางสิ่งเพิ่มเติมที่คุณอาจต้องการพิจารณา:

  • ติดตั้งโปรแกรมป้องกันไวรัส
  • การติดตั้งและกำหนดค่าSELinux

คุณควรอ่านคำถามที่เกี่ยวข้องนี้ฉันจะป้องกันการบุกรุกและมัลแวร์ได้อย่างไรก่อนที่จะเชื่อมต่อกับอินเทอร์เน็ต (โดยเฉพาะที่อยู่ IP สาธารณะ) .

นี่เป็นเพียงขั้นตอนเปล่าขั้นต่ำสำหรับการรักษาความปลอดภัย Pi ของคุณ สำหรับข้อมูลเพิ่มเติมคุณอาจต้องการที่จะอ่านคู่มือการใช้งานการรักษาความปลอดภัย Debian


6
ตรวจสอบให้แน่ใจว่าได้สร้างคีย์ ssh ของคุณเอง ฉันคิดว่าภาพบางภาพมีกุญแจอยู่แล้ว
John La Rooy

2
Apache ไม่ได้ติดตั้งใน raspbian โดยค่าเริ่มต้น (ผู้ใช้ติดตั้งบางอย่างเช่น php5-mysql IIRC) สำหรับตัวกรองแพ็คเก็ตซึ่งค่อนข้างเป็นมิตรมากกว่า iptables เปล่าบางทีเราควรแนะนำ ufw และบางทีแม้แต่ GUI frontf gufw?
elmicha

1
มันเหมาะสมที่จะติดตั้ง iptables แม้ว่าคุณจะอยู่หลังเราเตอร์หรือไม่?
keiki

2
@ otakun85 ใช่มันเรียกว่าการป้องกันในเชิงลึก ด้วยการพึ่งพาเราเตอร์ของคุณอย่างสมบูรณ์หากมีใครบางคนผ่านเราเตอร์ของคุณที่มี iptables และการใช้งานทำให้การหาประโยชน์เพิ่มเติมทำได้ยากขึ้น
Steve Robillard

2
การปิดใช้งานบริการที่ไม่ได้ใช้ยังช่วยในเวลาเริ่มต้นและบันทึกจำนวนหน่วยความจำและ CPU (ขนาดเล็ก)
TomG

11

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

ความต้องการของผู้ใช้ / พาสเริ่มต้นเปลี่ยนไป อย่างน้อยที่สุดให้เปลี่ยนรหัสผ่าน เพื่อความปลอดภัยที่ดีขึ้นอีกครั้งให้เปลี่ยนชื่อผู้ใช้ด้วย (เพิ่มผู้ใช้ใหม่จากนั้นปิดใช้งาน PI ตรวจสอบว่า ROOT นั้นถูกปิดการใช้งานจากการเข้าสู่ระบบ SSH ด้วยเช่นกัน แต่ฉันคิดว่ามันเป็นค่าเริ่มต้นอยู่แล้ว)

การสแกน RPi คืนค่าพอร์ตที่เปิดเพียงหนึ่งพอร์ตซึ่งเป็นการเชื่อมต่อ SSH เท่านั้นและต้องเปิดก่อนที่จะแสดง (แม้ว่าคนส่วนใหญ่จะใช้แทนจอมอนิเตอร์แป้นพิมพ์และเมาส์ฉันคาดว่าโดยเฉพาะอย่างยิ่งใน เซิร์ฟเวอร์ {web})

คุณสามารถเปลี่ยนหมายเลขพอร์ต SSH ได้ แต่นั่นไม่ได้ทำอะไรมากมายเพราะสามารถสแกนพอร์ตได้ง่ายพอ ให้เปิดใช้งานการรับรองความถูกต้องของ SSH-Key แทน

ตอนนี้คุณไม่มีทางที่ทุกคนจะสามารถเข้าถึงเครื่องของคุณได้โดยไม่ต้องใช้คีย์ SSH ชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง

ถัดไปตั้งค่าเว็บเซิร์ฟเวอร์ของคุณ อาปาเช่นั้นสวยมาก ซึ่งจะนั่งและตรวจสอบพอร์ต 80 เป็นค่าเริ่มต้นและตอบกลับการเชื่อมต่อจากเบราว์เซอร์โดยอัตโนมัติซึ่งให้บริการหน้าเว็บของคุณ

หากคุณมีไฟร์วอลล์หรือเราเตอร์คุณสามารถเปลี่ยนพอร์ต RPi และให้เราเตอร์นำทราฟฟิกจากพอร์ตหนึ่งไปยังอีกพอร์ตหนึ่ง ตัวอย่างเช่นทราฟฟิกพอร์ต 80 ในเราเตอร์จะถูกเปลี่ยนเส้นทางไปยังพอร์ต 75 บน RPi และ SSH บน 22 ถูกเปลี่ยนเส้นทางไปยังพอร์ต 72 ซึ่งจะเป็นการเพิ่มการป้องกันอีกชั้น แต่จะซับซ้อนกว่าเล็กน้อย

อัปเดตและอัพเดททุกอย่างอยู่เสมอ

สิ่งนี้จะไม่ปกป้องคุณจากการโจมตีที่ใช้ประโยชน์จากจาวา, แฟลช, เซิร์ฟเวอร์ SQL และอื่น ๆ ที่คุณอาจเพิ่มในภายหลัง

นอกจากนี้คุณยังสามารถเพิ่มไฟร์วอลล์ซึ่งจะทำให้ทุกคนที่เข้าสู่ระบบของคุณช้าลงจากการใช้พอร์ตอื่นหากพวกเขาติดตั้งบริการใหม่ เราเตอร์ของคุณควรจัดการกับสิ่งนั้น แต่ถ้ามันมีการเชื่อมต่อโดยตรงจากนั้นตั้งค่าและสำหรับใช้เวลานานเท่าไหร่คุณก็อาจจะใช้มันอยู่ดี - มันจะไม่เพิ่มทรัพยากรของระบบมากนัก

อีกสิ่งหนึ่งที่คุณอาจต้องการเพิ่มคือ fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ) ซึ่งเพิ่มกฎไฟร์วอลล์เพื่อบล็อกการพยายามลงชื่อเข้าใช้หลายครั้งเพื่อป้องกันการโจมตีด้วยพจนานุกรม แม้ว่าสิ่งเหล่านี้จะไม่สามารถใช้งานได้ในระบบของคุณหากคุณทำตามข้างต้นหากคุณจำเป็นต้องทิ้งรหัสผ่านไว้เพียง SSH รับรองความถูกต้อง (คุณลงชื่อเข้าใช้จากระยะไกลจากเครื่องอื่น ๆ มากมาย) มันจะป้องกันการโจมตีด้วยพจนานุกรม จากการทำงาน หลังจากจำนวนครั้งที่คุณระบุมันจะบล็อกอีกครั้งหนึ่งจากที่อยู่ IP นั้นอีกครั้ง (โปรดระวังว่าจะไม่เห็นเราเตอร์ / ที่อยู่ IP ในพื้นที่และห้ามแบนเร็วเกินไปหรือนานเกินไป!)

แก้ไขเพื่อเพิ่ม: เมื่อคุณตั้งค่าทุกอย่างเรียบร้อยแล้วให้ใช้เครื่องมือเช่น dd หรือ Win32DiskImager เพื่อสำรองข้อมูล SD การ์ดของคุณอย่างชาญฉลาด ด้วยวิธีนี้หากมีสิ่งใดผิดพลาดคุณสามารถกู้คืนไปยังการ์ดใบเดิมหรือเขียนลงในการ์ดใหม่และดำเนินการต่อโดยไม่คำนึงถึง (แต่หากถูกแฮ็กคุณต้องคิดออกว่าจะพบหลุมใดและปิดหลุมก่อน)


1
คุณช่วยอธิบายได้ว่าการเปลี่ยนพอร์ต RPi บนเราเตอร์จะเพิ่มการป้องกันอีกชั้นหนึ่งได้อย่างไร
อังเดร

4

Linode มีคู่มือที่ดีในการรักษาความปลอดภัยเซิร์ฟเวอร์ลินุกซ์: http://library.linode.com/securing-your-server กฎเดียวกันสามารถนำไปใช้กับราสเบอร์รี่ปี่


-1

เช่นเดียวกับการทำให้ระบบปฏิบัติการแข็งตัวคุณสามารถพิจารณาใช้บริการตรวจสอบความปลอดภัยบนคลาวด์เพื่อติดตามกิจกรรมไปยัง / จาก / บนอุปกรณ์ของคุณและรับการแจ้งเตือนหากตรวจพบสิ่งที่ไม่ดี มีเครื่องมือ SIEM บนคลาวด์ไม่กี่ตัวที่มีอยู่ในปัจจุบันและบางส่วน (เช่นซีเมนต์) ทำงานกับโมเดลฟรีแมนดังนั้นผู้ใช้ตามบ้านจึงไม่ต้องจ่ายเงิน ในการใช้ servcie ดังกล่าวคุณจะต้องทำความคุ้นเคยกับสิ่งต่าง ๆ เช่น rsyslog / syslog ซึ่งเป็นส่วนมาตรฐานของลีนุกซ์ทุกระบบปฏิบัติการ


1
เครื่องมือบนคลาวด์เพิ่มพื้นผิวการโจมตีการตรวจสอบความปลอดภัยในพื้นที่ (logwarn / check) เป็นเครื่องมือที่ดี แต่คำตอบนี้ไม่สมบูรณ์และมีความคิดเห็นมากกว่า
user1133275
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.