พอร์ตการเคาะบน macOS Sierra


3

ไม่มีใครรู้วิธีการทำให้Port Knockingทำงานบน macOS Sierra ฉันไม่พบข้อมูลที่เป็นประโยชน์หลังจากการค้นหา

มันได้ผลแล้วขอบคุณสำหรับความช่วยเหลือทั้งหมด @klanomath @jksoegaard ขอให้คุณทั้งหมดที่ดีที่สุด

นี่คือการกำหนดค่า:

  1. การกำหนดค่า: /usr/local/etc/ssh-access.txt ว่างเปล่าในตอนแรก

  2. การกำหนดค่า: /etc/pf.conf

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    table <ssh-access> persist file "/usr/local/etc/ssh-access.txt"
    pass in quick proto tcp from <ssh-access> to port 22
    
  3. การกำหนดค่า: /usr/local/etc/knockd.conf

    [options]
            logfile = /var/log/knockd.log
    [openSSH]
            sequence    = 7000,8000,9000
            seq_timeout = 5
            command     = echo %IP% > /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    [commitFW]
            sequence    = 9000,8000,7000
            seq_timeout = 5
            command     = pfctl -t ssh-access -T replace -f /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    [closeSSH]
            sequence    = 5000,4000,6000
            seq_timeout = 5
            command     = echo '' > /usr/local/etc/ssh-access.txt
            tcpflags    = syn
    
  4. เอาต์พุตเมื่อเรียกใช้ knockd:

    config: new section: 'options'
    config: log file: /var/log/knockd.log
    config: new section: 'openSSH'
    config: openSSH: sequence: 7000:tcp,8000:tcp,9000:tcp
    config: openSSH: seq_timeout: 5
    config: openSSH: start_command: echo %IP% > /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    config: new section: 'commitFW'
    config: commitFW: sequence: 9000:tcp,8000:tcp,7000:tcp
    config: commitFW: seq_timeout: 5
    config: commitFW: start_command: pfctl -t ssh-access -T replace -f /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    config: new section: 'closeSSH'
    config: closeSSH: sequence: 5000:tcp,4000:tcp,6000:tcp
    config: closeSSH: seq_timeout: 5
    config: closeSSH: start_command: echo '' > /usr/local/etc/ssh-access.txt
    config: tcp flag: SYN
    ethernet interface detected
    Local IP: 192.168.8.101
    Adding pcap expression for door 'openSSH': (dst host 192.168.8.101 and (((tcp dst port 7000 or 8000 or 9000) and tcp[tcpflags] & tcp-syn != 0)))
    Adding pcap expression for door 'commitFW': (dst host 192.168.8.101 and (((tcp dst port 9000 or 8000 or 7000) and tcp[tcpflags] & tcp-syn != 0)))
    Adding pcap expression for door 'closeSSH': (dst host 192.168.8.101 and (((tcp dst port 5000 or 4000 or 6000) and tcp[tcpflags] & tcp-syn != 0)))
    
  5. เคาะจากไคลเอนต์ Mac

    192:~ vincent-st$ knock -v 192.168.8.101 7000,8000,9000
    hitting tcp 192.168.8.101:7000
    192:~ vincent-st$ knock -v 192.168.8.101 9000,8000,7000
    hitting tcp 192.168.8.101:9000
    192:~ vincent-st$ ssh vincent-st@192.168.8.101
    ssh: connect to host  port 22: connection refused
    

หลังจากใช้คำสั่งการเคาะที่เหมาะสม ssh ทำงาน:

  1. เคาะจากไคลเอนต์ Mac

    192:~ vincent-st$ knock -v 192.168.8.101 7000 8000 9000
    hitting tcp 192.168.8.101:7000
    hitting tcp 192.168.8.101:8000
    hitting tcp 192.168.8.101:9000
    
    192:~ vincent-st$ knock -v 192.168.8.101 9000 8000 7000
    hitting tcp 192.168.8.101:9000
    hitting tcp 192.168.8.101:8000
    hitting tcp 192.168.8.101:7000
    
    192:~ vincent-st$ ssh vincent-st@192.168.8.101
    The authenticity of host '192.168.8.101 (192.168.8.101)' can't be established.
    
    RSA key fingerprint is SHA256:6AlMpQmxODOueRS+faoODOueRS+ODOueRS+fa.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.8.101' (RSA) to the list of known hosts.
    
    Password:
    
    Last login: Tue Jul 11 01:14:56 2017 `
    

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

คำตอบ:


9

หากคุณต้องการให้พอร์ตเคาะทำงานเป็นไคลเอนต์ (เช่นคุณต้องการเข้าถึงบริการระยะไกลที่ได้รับการป้องกันโดยการเคาะพอร์ต) - จากนั้นติดตั้งโปรแกรมน็อคจากHomebrewดังนี้:

brew install knock

คุณจะต้องมีการติดตั้ง Homebrew ล่วงหน้า

จากนั้นคุณสามารถใช้โปรแกรมจาก Terminal.app เช่นนี้:

knock myserver 1234 5678 9012

ที่ตัวเลขเป็นพอร์ตที่จะเคาะ

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

หลังจากการติดตั้งคุณจะต้องสร้างการกำหนดค่า knockd.conf ที่ปรับแต่งตามความต้องการของคุณ (เช่นประเภทของบริการที่คุณต้องการปกป้องพอร์ตที่ใช้ ฯลฯ ) - และในที่สุดก็เริ่มใช้ knockd โดยใช้ launchd

คุณสามารถหาตัวอย่างของวิธีการได้ที่นี่:

ตัวอย่างการตั้งค่า knockd


ขอบคุณสำหรับอินพุตทั้งหมดครับ ฉันลองทำสิ่งนี้ก่อนที่จะขอความช่วยเหลือ ฉันมี homebrew ติดตั้งอยู่แล้วและเรียกใช้ brew install knock เพื่อติดตั้งน็อคบนเซิร์ฟเวอร์ของฉัน จากนั้นฉันสร้างไฟล์เปล่า: /usr/local/etc/ssh-access.txt และแก้ไขไฟล์ /usr/local/etc/knockd.conf ตามลิงค์ที่แนะนำแล้วรันคำสั่ง: / usr / local / sbin / knockd -dDv -i en0 -c /usr/local/etc/knockd.conf ฉันยังสามารถ ssh เข้าสู่เซิร์ฟเวอร์โดยไม่ต้องเคาะพอร์ต
Vincent

นี่เป็นเพราะคุณข้าม pf ข้ามในลิงค์ในโพสต์ของฉัน คุณต้องเพิ่มใน pf.conf (การกำหนดค่าไฟร์วอลล์) ที่อนุญาตให้เข้าถึงพอร์ต 22 (ssh) อนุญาตเฉพาะผู้ที่ระบุไว้ในไฟล์ ssh-access.txt นี่คือไฟล์ที่มีการปรับปรุงโดย knockd
jksoegaard

ใช่นั่นคือส่วนที่ทำให้ฉันสับสน ฉันไม่รู้ว่าจะเพิ่ม pf.conf ซึ่งเข้าถึงพอร์ต 22 ไปยังไฟล์ ssh-access.txt ได้อย่างไร ฉันพยายามเพิ่มเซิร์ฟเวอร์ IP และพอร์ตไปยัง /usr/local/etc/ssh-access.txt แต่ฉันไม่แน่ใจว่าถูกต้องหรือไม่ หลังจากทั้งหมดนี้เสร็จสิ้น ฉันพยายามเคาะจากไคลเอนต์ Mac นี่คือสิ่งที่ดูเหมือน (ภาพแสดงในคำถาม)
Vincent

เพียงทำตามคำแนะนำในลิงค์ที่ฉันให้ไว้ มันแสดงให้เห็นถึงสิ่งที่จะเขียนในไฟล์ pf.conf คุณไม่ควรเพิ่มอะไรลงใน ssh-access.txt ด้วยตนเอง - เพียงแค่ลบไฟล์นั้นและสร้างใหม่ให้ว่างเปล่าตามคำแนะนำ
jksoegaard

@jksoegaard แพ็คเกจล่าสุดยังต้องการ/usr/local/sbinในกรณีของฉันมันไม่ได้ถูกสร้างขึ้นดังนั้นฉันจึงได้สร้างและให้สิทธิ์ คุณช่วยขยายคำตอบได้ไหมนี่อาจเป็นประโยชน์กับคนอื่น ๆ
Rafael Aguilar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.