IPTables: อนุญาตการเข้าถึง SSH เท่านั้นไม่มีอะไรเข้าหรือออก


11

คุณจะทำอย่างไรกำหนดค่า IPTables เพื่อที่จะเพียงช่วยให้ SSH ในและช่วยให้ไม่มีการจราจรอื่น ๆ ในหรือออก ?

ข้อควรระวังด้านความปลอดภัยใด ๆ ที่ทุกคนสามารถแนะนำได้?

ฉันมีเซิร์ฟเวอร์ที่ฉันเชื่อว่าย้ายออกจาก GoDaddy ได้สำเร็จและฉันเชื่อว่าไม่ได้ใช้งานอีกต่อไป

แต่ฉันต้องการให้แน่ใจว่าเพียงเพราะ ... คุณไม่เคยรู้ :)

โปรดทราบว่านี่เป็นเซิร์ฟเวอร์เฉพาะเสมือนจาก GoDaddy ... นั่นหมายถึงไม่มีการสำรองข้อมูลและไม่รองรับเลย

คำตอบ:


13

คุณต้องตั้งค่านโยบายเริ่มต้นเป็น DROP บนเครือข่าย INPUT และ OUTPUT

ในการอนุญาตให้ใช้ SSH คุณต้องมีคำสั่งต่อไปนี้:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

คำสั่งสองคำสั่งสุดท้ายอนุญาตการรับส่งข้อมูลย้อนกลับเนื่องจากบางแอพพลิเคชั่นนี้จำเป็นต้องทำงานอย่างถูกต้อง คุณสามารถ จำกัด การเข้าถึง SSH จาก IP เฉพาะโดยใช้-s source_ipตัวเลือก

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


4
--state RELATEDในกฎสุดท้ายนั้นไม่จำเป็น --state ESTABLISHEDก็เพียงพอแล้ว คุณอาจต้องการอนุญาตการรับส่งข้อมูล DNS และอาจอนุญาตสิ่งใดก็ได้บนอินเทอร์เฟซแบบวนรอบมิฉะนั้นสิ่งต่าง ๆ อาจทำงานผิดปกติ
MadHatter

@MadHatter: ใช่คุณมีสิทธิโดยเฉพาะอย่างยิ่งเกี่ยวกับสิ่งที่ย้อนกลับ :)
เลด

ขอบคุณเป็นไปได้ไหมที่จะรับไฟล์ทั้งหมดจากคุณ คือสิ่งที่ฉันสามารถคัดลอกและวางตรงไปที่ / etc / sysconfig / iptables? ฉันไม่ได้มีประสบการณ์เพียงพอกับสิ่งนี้ที่จะเชื่อในสัญชาตญาณของฉันในการแก้ไขที่เหมาะสม
ดิสโก้

2
PS สร้างการเชื่อมต่อจะถูกบังคับให้ปิดหลังจากคำสั่งแรก
user956584

3
คุณควรเปลี่ยนลำดับของคำสั่งเหล่านี้จริงๆ บรรทัดนโยบายควรปรากฏเป็นบรรทัดสุดท้าย ใครก็ตามที่เพิ่งคัดลอกสิ่งนี้ลงในเซสชั่น ssh จะถูก HUPed และปิดตัวลงทันที
AndreasT

4

บางสิ่งเช่นนี้

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

1
ฉันคิดว่าคุณหมายถึง-i loไม่ได้-s lo; อีกครั้งESTABLISHEDมีความจำเป็นเฉพาะในกฎของรัฐและอาจมี--sport 22ในนั้นด้วย ทุกคนว่าทำไมจึงกระตือรือร้นที่จะช่วยให้RELATED?
MadHatter

@MadHatter: เกี่ยวกับRELATED: จริงๆแล้วมันมีประโยชน์สำหรับการจับคู่สิ่งที่ไม่ใช่ TCP เช่นการตอบ ping และการตอบ DNS อย่างน้อยนั่นคือสิ่งที่ฉันคิดเอาไว้เสมอ
Steven วันจันทร์ที่

2
ความเชื่อของฉันคือมันจะไม่ตรงกับของเหล่านั้น มันจะจับคู่กันตัวอย่างเช่นการตอบสนองต่อโฮสต์ที่ไม่ได้รับอนุญาตจาก ICMP แต่นั่นเป็นประโยชน์อย่างมากเมื่อได้รับ และหากไม่ผ่านการรับรองจะจับคู่การเข้าชมที่เกี่ยวข้องไม่ใช่แค่การเข้าชมที่เกี่ยวข้องกับบรรทัดก่อนหน้า
MadHatter

@ MadHatter: ฉันเดาว่าฉันจะต้องทำการทดสอบสองสามครั้งเพื่อดูว่าคุณพูดถูกหรือเปล่า ขอบคุณสำหรับการท้าทายสมมติฐานของฉัน
Steven วันจันทร์ที่

ใช่แล้วสถานะ ESTABLISHED นั้นเป็นสิ่งที่จำเป็นสำหรับการจับคู่การตอบกลับ UDP DNS และการตอบกลับของ ICMP
Steven Monday
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.