คำสั่งเพื่อเรียนรู้เกี่ยวกับระบบที่ไม่คุ้นเคย [ปิด]


19

คุณล็อกอินเข้าสู่ระบบ UNIX หรือ Linux ที่ไม่คุ้นเคย (ในฐานะรูท) คำสั่งใดที่คุณใช้เพื่อปรับทิศทางตัวเองและค้นหาว่าคุณใช้ระบบประเภทใด คุณจะทราบได้อย่างไรว่าฮาร์ดแวร์ชนิดใดที่ใช้งานอยู่ระบบปฏิบัติการชนิดใดที่กำลังทำงานอยู่และสถานการณ์ปัจจุบันที่เกี่ยวกับการอนุญาตและความปลอดภัย

คำสั่งแรกและคำสั่งที่สองที่คุณพิมพ์คืออะไร


3
ฉันจะใช้uname -aแล้วapropos whatever เป็นเพื่อนของคุณ
fd0

1
nmap -A -T4 localhostยังสามารถให้ข้อมูลที่เป็นประโยชน์แก่คุณได้ด้วย
seumasmac

@seumasmac netstat จะดีกว่าและมีประสิทธิภาพมากกว่าการแมปเครื่องโลคอล
André Borie

@ AndréBorie nmap และ netstat ให้ผลลัพธ์ที่แตกต่างกันมาก ดังนั้นจึงไม่มีเหตุผลที่จะเปรียบเทียบพวกเขาด้วยความเคารพต่อประสิทธิภาพ (ชนิดใดก็ได้)
moooeeeep

@ AndréBorieฉันเคยวางแผนไว้ว่าจะใส่ :) ตอนท้ายของเรื่องนั้น ฉันกำลังตรวจสอบความปลอดภัยบนเครื่องของฉันและในขณะที่ถือnmapค้อนของฉันlocalhostก็ดูเหมือนเล็บ แต่จากนั้นฉันก็รู้ว่ามันให้ข้อมูลที่น่าสนใจดังนั้นฉันจึงทิ้งมันไว้เป็นคำแนะนำกึ่ง ๆ
seumasmac

คำตอบ:


22

คำถามแบบใช้งานคู่! นักโบราณคดีซอฟต์แวร์หรือนักแฮ็กเกอร์สามารถใช้คำตอบสำหรับคำถามนี้ได้! ตอนนี้ฉันเป็นใคร

ฉันมักจะใช้เพื่อps -efเปรียบเทียบกับps -augxwwสิ่งที่ฉันเป็น กล่อง Linux และ System V มีแนวโน้มที่จะชอบ "-ef" และข้อผิดพลาดใน "-augxww" ในทางกลับกันสำหรับ BSD และเครื่อง SunOS แบบเก่า ผลลัพธ์ของpsสามารถแจ้งให้คุณทราบมากเช่นกัน

หากคุณสามารถเข้าสู่ระบบในฐานะรูทและเป็นเครื่องลีนุกซ์คุณควรทำlsusbและlspciนั่นจะทำให้คุณได้รับ 80% ของวิธีการรู้ว่าสถานการณ์ของฮาร์ดแวร์คืออะไร dmesg | moreสามารถช่วยให้คุณเข้าใจปัญหาในปัจจุบันเกี่ยวกับอะไรก็ได้

มันเริ่มจะค่อย ๆ หมดไป แต่การทำแบบifconfig -aนี้สามารถบอกคุณได้มากมายเกี่ยวกับอินเทอร์เฟซเครือข่ายและระบบเครือข่าย การเรียกใช้mii-toolและ / หรือethtoolอินเทอร์เฟซที่คุณเห็นในifconfigเอาต์พุตที่ดูเหมือนอีเทอร์เน็ต cabled สามารถให้ข้อมูลกับคุณได้เช่นกัน

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

การmountเรียกใช้สามารถบอกคุณเกี่ยวกับดิสก์และวิธีการติดตั้ง

เรียกใช้uptimeแล้วlast | moreสามารถบอกคุณบางอย่างเกี่ยวกับสถานะปัจจุบันของการบำรุงรักษา ช่วงเวลา 100+ วันอาจหมายถึง "ถึงเวลาเปลี่ยนน้ำมันและของเหลว" ซึ่งเป็นการเปรียบเทียบเชิงเปรียบเทียบ วิ่งwhoยังเป็น

ดู/etc/resolv.confและ/etc/hostsสามารถบอกคุณเกี่ยวกับการตั้งค่า DNS ของเครื่องนั้น อาจทำnslookup google.comหรือdig bing.comเพื่อดูว่า DNS ทำงานได้เป็นส่วนใหญ่หรือไม่

มันคุ้มค่าที่จะดูว่ามีข้อผิดพลาดอะไรบ้าง ("ไม่พบคำสั่ง") และคำสั่งต่าง ๆ ของคำสั่ง ("ps -ef" เทียบกับ "ps augxww") ทำงานเพื่อกำหนดตัวแปรของ Unix หรือ Linux หรือ BSD ที่คุณเพิ่งทำ

การมีหรือไม่มีคอมไพเลอร์ C และสถานที่ที่มันมีความสำคัญ ทำwhich ccหรือดีกว่าwhich -a ccเพื่อค้นหาพวกเขา


ฉันชอบnetstat -tulpanwผลผลิตมากกว่า แต่มันเป็นเรื่องของรสนิยมจริงๆ
Ned64

นอกจากนี้ยังมีlshwภายใต้ Linux
Shahbaz

mountยุ่งfindmntมากสะอาดแทน
edmz


9

http://bhami.com/rosetta.htmlอาจมีประโยชน์ในการตรวจสอบมิฉะนั้นฉันมักจะพูดถึงภายใต้/etc(บัญชี, สิ่งเริ่มต้น, คำแนะนำเกี่ยวกับรสชาติของระบบปฏิบัติการ ฯลฯ ) crontab -lและดูpsรายการสิ่งที่ต้องเรียนรู้

นอกจากนี้ยังมี "เป็นราก" เป็นที่น่ากลัวสุดที่ผมได้มีการแก้ไขระบบที่ผู้ดูแลระบบลินุกซ์ทำเช่นการตรวจสอบการตั้งค่าทั้งหมดชื่อโฮสต์ Solaris -fไป

นอกจากนี้ยังdfเป็นคำสั่งที่เป็นอันตรายซึ่งเป็นวิธีที่ดีในการหยุดยั้งการบล็อก I / O ดังนั้นอย่าใช้งานจนกว่าคุณจะตรวจสอบการเมานท์อย่างน้อยที่สุดหรือรู้ว่าคุณสามารถเปิดเซสชันอื่นได้

ใช้คำสั่งง่ายมาก ( uname, cd /etc; ls, cat, $PAGER) จนกว่าคุณจะคิดออกว่าโฮสต์และถ้าคุณไม่คุ้นเคยกับมันตรวจสอบ Rosetta หรือเสมออ่านหน้าคนก่อนที่จะได้คำสั่งบางส่วนหรือธงคำสั่งไม่สิ่งที่มันไม่เกี่ยวกับ ระบบที่นิยมมากขึ้น


ทำให้ฉันสงสัยว่า: มีวิธีที่แข็งแกร่งของ (ชั่วคราว) วางลงในสภาพแวดล้อมที่มีสิทธิ์ต่ำกว่า? หรือสิ่งนี้ไม่เป็นไปได้หรือไม่เป็นความคิดที่ดี?
Oliphaunt - คืนสถานะโมนิก้า

1
ทำไมจึงเป็นdfอันตราย มีระบบที่ทำสิ่งอื่นนอกเหนือจากแสดงการใช้ระบบไฟล์
terdon

1
@ การปิดกั้นเคอร์เนล I / O เช่นบนฮาร์ดไดรฟ์ NFS ที่หยุดทำงาน อย่างดีที่สุดคุณสามารถเปิดเซสชันหรือเทอร์มินัลใหม่ได้ (เสียเวลาระหว่างการหยุดทำงาน) หรือที่แย่ที่สุดนั่นคือคอนโซลเดียวของคุณไปยังระบบโซลาริสเก่าและคุณเอ่อ ... บางทีมันอาจจะบูตไม่ได้ ความอัปยศข้อมูล mount ไม่ได้มองไปที่แรกและที่สายเซิร์ฟเวอร์ปัญหา NFS ได้รับการยอมรับ ...
thrig

1
ถ้าdfแฮงค์คุณก็แค่ CTRL-Z มันและkill -9มัน ฉันพบปัญหาเช่นกันและนั่นก็ใช้ได้กับฉันเสมอ นอกจากนี้อุดมคติของคุณไม่ควรแขวน ฉันยังไม่คิดว่าหลายคนคิดว่าโปรแกรมแขวนเป็น "อันตราย" ซึ่งเป็นเหตุผลที่ฉันคิดว่า terdon สับสน
Bratchley

3
@Batchley โอ้ไม่เคยมีการเชื่อมต่อคอนโซลคุณไม่สามารถส่งตัวควบคุมได้ใช่ไหม อืมคู่มือ zmodem อยู่ที่ไหนหรือโอ้ geez เราจะส่งพวกเขาผ่านสิ่งที่เกี่ยวกับรถบั๊กกี้ไปยังสิ่งที่ buggy สิ่งอื่น ๆ ah geez ที่มีการเข้าถึงทางกายภาพได้อย่างไร
thrig

5

dmidecodeและlspciมักจะทำให้คุณมีความคิดที่ดีว่าฮาร์ดแวร์ทำงานบนระบบอะไร หากนี่เป็นเซิร์ฟเวอร์ที่มักใช้งานอยู่netstat -tlpnจะมอบจุดประสงค์ของเซิร์ฟเวอร์ให้ df -hPเป็นคำสั่งที่ดีสำหรับการตรวจสอบหน่วยความจำปัจจุบันบนระบบ lsb_release -aควรแจ้งให้คุณทราบว่าคุณอยู่ที่ distro:

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago

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

สำหรับการตรวจสอบความปลอดภัยของผู้ขายที่เป็นกลาง: บ่อยครั้งที่ไฟร์วอลล์จะมีข้อมูลการกำหนดค่าที่ไม่ซ้ำกันดังนั้นการรัน a iptables -nvLจึงมีประโยชน์ คุณควรตรวจสอบไฟล์การกำหนดค่า pam ของ distro เพื่อดูว่าคุณใช้ผู้ใช้ในพื้นที่หรือไม่หรือคุณได้รับการกำหนดค่าให้ใช้ ldap / kerberos / winbind / sssd / อะไรก็ตาม

netstat -tlpnนอกจากนี้คุณยังสามารถตรวจสอบการกำหนดค่าของบริการที่เกิดขึ้นในของคุณ ตัวอย่างเช่นหากคุณเห็น apache คุณสามารถดู/etc/http/conf/httpd.conf(บน RHEL /etc/apache2บน Ubuntu) และลองดูว่าเว็บไซต์ใดกำลังทำงานอยู่ หรือคุณอาจทำapachectl -Sเพื่อรับรายการโฮสต์เสมือนทั้งหมดที่กำหนดค่า มันเป็นประเภทของแฟน ๆ ออกมาจากที่นั่นดังนั้นสิ่งที่ฉันทำได้จริงๆคือเสนอ apache เป็นตัวอย่างและเพียงแค่พูดเพื่อยืนยันการกำหนดค่าของ daemon หากเป็นอย่างอื่น

ใน RHEL ฉันจะตรวจสอบrpm -qa --last | headเพื่อดูว่าครั้งล่าสุดที่พวกเขาทำการอัปเดตระบบ ฉันจะตรวจสอบเพื่อดูว่า SELinux เปิดใช้งานผ่านgetenforce


0

ความคิดอื่น ๆ ไม่กี่:

  • การมีหรือไม่มี/procระบบไฟล์อาจบ่งบอกว่าคุณใช้ Mac , FreeBSDหรือ Linux
  • การจัดการแพ็คเกจแตกต่างจาก Linux distro ไปยัง distro คนที่ใช้เดเบียนมีแนวโน้มที่จะฉลาดเช่น Deepin, Ubuntu, Mint; Red Hat Fedora และมี yum ถึงบางจุด แต่ตอนนี้มี Fedora DNF ; Arch ใช้ pacman ดังนั้นเราสามารถทำสิ่งนี้:ls /usr/bin | grep 'apt\|yum\|pacman'
  • netstat -tulpanการปรากฏตัวของการให้บริการบางอย่างในบางพอร์ตเมื่อดู อาจจะsshd, เว็บเซิร์ฟเวอร์, ftp;

โปรดทราบว่าการมีอยู่ของแฟ้มที่ปฏิบัติการได้นั้นไม่ได้มีความหมายอะไรเลย ตัวอย่างเช่น Debian มีyumแพ็กเกจ สถานะของเซิร์ฟเวอร์ ssh จะบ่งชี้ระบบได้อย่างไร? AFAIK คุณสามารถค้นหาsshdทุกสิ่งได้
terdon

@terdon True ฉันเพิ่งจะเข้าใกล้สิ่งนี้จากมุมมองของระบบดูแลระบบใหม่ที่คุณได้รับการบอกว่า "เรามีกล่อง Linux บางส่วนแล้วไปทำอะไรกับมัน" ณ จุดนี้คุณอาจถามดี: มันมีการเข้าถึงระยะไกล? การเข้าถึงระยะไกลนั้นแข็งหรือไม่ มีการจัดการแพ็คเกจที่ฉันคุ้นเคยหรือฉันต้องเรียนรู้ผู้จัดการแพ็คเกจใหม่หรือไม่ เป้าหมายไม่ได้กำหนดว่าคุณจะได้รับระบบปฏิบัติการแบบใด Bruce Ediger ได้กล่าวถึงเรื่องนี้แล้ว แต่ฉันก็มุ่งเน้นไปที่การตรวจสอบระบบด้วยตัวเองมากขึ้น
Sergiy Kolodyazhnyy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.