วิธีการเปิดพอร์ตในขั้นตอนการบู๊ตเพื่อปลดล็อก LUKS ผ่าน SSH


11

ฉันมีเซิร์ฟเวอร์ที่เข้ารหัสอย่างสมบูรณ์ที่ใช้ Debian 7 และได้ตั้งค่า dropbear และ busybox เพื่อปลดล็อกคอนเทนเนอร์ LUKS ผ่าน SSH (ตามที่อธิบายไว้ในบทช่วยสอนนี้และในคำตอบ U&L นี้ )

น่าเสียดายที่เมื่อใดก็ตามที่ฉันพยายามและ SSH ไปยังเซิร์ฟเวอร์ (ผ่าน LAN) เมื่อรีบูตฉันได้รับข้อผิดพลาด "การเชื่อมต่อถูกปฏิเสธ" ฉันได้ลองtelnetและnmapไปที่พอร์ตเริ่มต้น (22) และทั้งคู่บอกว่าพอร์ตถูกปิด

เซิร์ฟเวอร์มีufwกฎเพื่อยอมรับปริมาณการใช้งานทั้งหมดจาก LAN:

Anywhere         ALLOW       192.168.1.0/24

ฉันได้พยายามเปลี่ยนพอร์ตที่ฟัง dropbear ใน/etc/defaults/dropbearแต่sshและtelnetจะยังคงปฏิเสธการเชื่อมต่อที่1

ฉันจะมั่นใจได้อย่างไรว่าพอร์ตเปิดอยู่ในขั้นตอนนั้นในกระบวนการบูตเพื่อให้ฉันสามารถเชื่อมต่อเพื่อปลดล็อกคอนเทนเนอร์ LUKS ได้

การปิดใช้งานไฟร์วอลล์ไม่สร้างความแตกต่าง: nmapแสดงพอร์ตทั้งหมดที่ยังคงปิดอยู่

อัปเดต 2/14

ฉันเพิ่มลงbreak=premountในเคอร์เนลบรรทัดและมีการกระตุ้นรอบ ๆ ใน initramfs dropbearได้เริ่มขึ้นแล้ว แต่เครือข่ายไม่ได้อยู่ที่จุดนั้น หลังจากออกจากเครือข่ายขึ้นมาและบูตต่อไปจนกว่าจะมีข้อความแจ้งให้ปลดล็อคอุปกรณ์ LUKS

ณ จุดนี้เครือข่ายเป็นขึ้นและโฮสต์ได้รับมอบหมายที่อยู่ IP ที่ถูกต้อง แต่ 22 พอร์ตยังคงปิด

สาย IP ที่/etc/initramfs-tools/intiramfs.confฉันใช้อยู่คือ:

export IP=192.168.1.200::192.168.1.1:255.255.255.0::eth0:off

สอดคล้องกับคำแนะนำใน/usr/share/doc/cryptsetup/README.remote.gzฉันได้ลองเพียงแค่เพิ่มตัวเลือกอุปกรณ์ แต่ไม่เพียงพอที่จะนำเครือข่ายขึ้นมาและได้รับสัญญาเช่า DHCP

อัปเดต 11/10/14

คำตอบของ Karlคือสิ่งที่ต้องการ: การตั้งค่า/etc/initramfs-tools/conf.d/cryptrootเป็นกุญแจสำคัญ:

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a

คู่มือนี้ได้รับการพิสูจน์แล้วว่าทันสมัยและเกี่ยวข้องมากขึ้น (และประสบความสำเร็จ)


1
ว้าว! ฉันไม่รู้ว่าคุณสามารถปลดล็อค LUKS ที่ถูกล็อคจากระยะไกลได้อย่างสมบูรณ์ เห็นได้ชัดว่าฉันไม่สามารถตอบคำถามของคุณด้วยความมั่นใจ แต่ฉันเดาว่า sshd ยังไม่ได้เริ่ม ในเครื่องของฉัน sshd จะเริ่มในภายหลังในกระบวนการ
emory

1
คุณมีการเข้าถึงคอนโซลของเครื่องในขณะที่อยู่ในสภาพแวดล้อม busybox หรือไม่? คุณสามารถตรวจสอบว่า dropbear ทำงานจริง ๆ (ผ่านps) และฟังพอร์ตที่คุณคาดหวัง (ผ่านnetstat) หรือไม่?
larsks

larsks - ไม่เพราะที่คอนโซลข้อความแจ้งกำลังรอให้ป้อนข้อความรหัสผ่านและการเปลี่ยนเป็น TTY อื่นหมายถึงหน้าจอว่างเปล่า (ถ้าฉันเข้าใจคุณถูกต้อง)
jasonwryan

คุณสามารถ (ชั่วคราว) ลบการเข้ารหัส LUKS และตรวจสอบว่ามีการทำงานจริงหรือไม่?
emory

1
คุณได้ลองใช้break=Xพารามิเตอร์การบู๊ตตัวหนึ่งเพื่อรับinitramfsเชลล์ตัวแรกหรือไม่? เมื่อใดก็ตามที่ผมแก้ปัญหาระบบแฟ้ม woes break=premountเข้ารหัสผมใช้ คุณสามารถตรวจสอบสิ่งที่เป็นสถานการณ์แก้ไขและเริ่มต้นต่อไป
Alexios

คำตอบ:


3

ฉันได้รับปัญหาเดียวกันนี้เมื่อไม่กี่สัปดาห์ที่ผ่านมา (Debian Wheezy 7.6) และหลังจากการแก้ไขปัญหาบางวันฉันพบว่ามีไฟล์ config ที่หายไปซึ่งป้องกันสคริปต์ cryptroot บน init-top เพื่อให้ทำงานได้อย่างถูกต้องดังนั้นจึงไม่หยุด เพื่อถามรหัสผ่านผ่าน ssh ให้ฆ่า dropbear ที่ส่วนท้ายของลำดับ (init-bottom)

ไฟล์ config ถูกเรียกใช้cryptrootและควรอยู่ภายใต้/etc/initramfs-tools/conf.d/ ถ้าฉันไม่เข้าใจผิดว่าไฟล์ config ควรถูกสร้างขึ้นโดยอัตโนมัติในระหว่างการติดตั้ง (ฉันได้อ่านบทช่วยสอนเดียวที่พูดถึงไฟล์ปรับแต่งนั้น) แต่อย่างใดมันก็ไม่ได้ (ทดสอบในเซิร์ฟเวอร์จริง VM ระบบปฏิบัติการและเวอร์ชันเดียวกัน)

ฉันพยายามสองครั้งเพื่อกำหนดค่าอย่างถูกต้องเนื่องจากฉันไม่สามารถหาไวยากรณ์ที่ถูกต้องในเวลานั้น ไฟล์กำหนดค่า cryptroot ของฉันเป็นดังนี้:

target=crypt-root,source=/dev/vg0/root,lvm=root

เมื่อสร้างไฟล์กำหนดค่าแล้วให้อัปเดต initramfs แล้วลองอีกครั้ง:

update-initramfs -u

คุณเป็นตำนาน! ขอบคุณ: ฉันดิ้นรนกับสิ่งนี้มานานและหวังว่าจะได้รับการแก้ไข cryptrootไวยากรณ์ของฉันแตกต่างจากของคุณ แต่คำตอบของคุณเพียงพอที่จะชี้ให้ฉันในทิศทางที่ถูกต้อง ฉันเป็นหนี้บุญคุณคุณ
jasonwryan

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

3

หัวเรื่องมีความผิด ปัญหาไม่ใช่พอร์ตปิด แต่เป็นพอร์ตที่ไม่ได้ผูกไว้ SSHd ยังไม่ได้เริ่ม; นั่นคือเหตุผลที่คุณไม่สามารถเชื่อมต่อได้


@camh มีกฎอะไรบ้างไหม?
poige

ฉันจดจ่อกับประโยคแรกมากขึ้นซึ่งก็คือกองบรรณาธิการ คำตอบที่เหลือค่อนข้างจะเป็นคำตอบที่ดี แต่ฉันเดาว่ายังคงเป็นคำตอบ ฉันจะลบความคิดเห็นของฉัน
camh

@camh ฉันเห็น ...
poige

ฉันไม่ได้ใช้sshd: ตามคำถามที่ระบุไว้ฉันพยายามเชื่อมต่อกับอินสแตนซ์ดราการ์ที่ทำงานบนพอร์ต 22 โดยค่าเริ่มต้น
jasonwryan

@ jasonwryan มันไม่ได้มีบทบาทอะไรกับบริการ TCP ที่คุณพยายามจะใช้สิ่งที่สำคัญจริงๆก็คือมันยังไม่ได้เริ่ม
poige

3

dropbear (เซิร์ฟเวอร์ ssh) ควรจะเริ่มต้นเร็วมากในระหว่างขั้นตอนการบู๊ต - เร็วกว่าลำดับinit(rcN.d) และสคริปต์เริ่มต้นไฟร์วอลล์ แม้จะเร็วกว่า / ติดตั้งอยู่ (มันถูกเข้ารหัสด้วยใช่ไหม?) ดังนั้นจึงมาinitramfsก่อน / pre- / userland โหลดสำหรับเคอร์เนลโดยบูตโหลดเดอร์ ภาพที่ (อีกครั้ง) ที่สร้างขึ้นโดยupdate-initramfs -uจากเนื้อหาของ/etc/initramfs-tools/รวมทั้งการกำหนดค่า dropbear /etc/initramfs-tools/etc/dropbear/ใน หากต้องการเล่นด้วยการตั้งค่า dropbear ให้เล่นด้วย

ดังนั้นไม่กี่จุดที่จะตรวจสอบ:

  • dropbear ไม่เริ่มทำงาน: ยังไม่ได้เสียบเข้ากับชุดเริ่มต้นของ initramfs
  • ไฟร์วอลล์เริ่มต้นปฏิเสธทั้งหมด

ขอบคุณ yarek: ฉันคิดว่าคุณพูดถูก - ฉันได้อัปเดตคำถามของฉันด้วยข้อบกพร่อง debian (และการแก้ไขที่ไม่ทำงาน) ฉันได้ลองปิดไฟร์วอลล์แล้ว
jasonwryan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.