ทุกครั้งที่ฉันได้รับคำขอแปลก ๆ เพื่อให้การสนับสนุนระยะไกลการแก้ไขปัญหาและ / หรือการปรับแต่งประสิทธิภาพในระบบ Linux
บริษัท ขนาดใหญ่มักมีขั้นตอนที่กำหนดไว้แล้วอย่างดีในการให้การเข้าถึงระยะไกลแก่ผู้ขาย / ซัพพลายเออร์และฉันต้องปฏิบัติตามนั้น (ให้ดีขึ้นหรือแย่ลง.)
ในทางกลับกัน บริษัท ขนาดเล็กและบุคคลทั่วไปหันมาหาฉันเพื่อสอนพวกเขาด้วยสิ่งที่พวกเขาต้องทำเพื่อจัดตั้งฉันขึ้นมา โดยทั่วไปแล้วเซิร์ฟเวอร์ของพวกเขาจะเชื่อมต่อโดยตรงกับอินเทอร์เน็ตและมาตรการรักษาความปลอดภัยที่มีอยู่ประกอบด้วยค่าเริ่มต้นสำหรับการแจกจ่าย Linux ของพวกเขา
เกือบทุกครั้งที่ฉันจะต้องเข้าถึงระดับรูทและใครก็ตามที่จะตั้งค่าการเข้าถึงสำหรับฉันไม่ใช่ผู้เชี่ยวชาญระบบ ฉันไม่ต้องการรหัสผ่านรูทของพวกเขาและฉันก็ค่อนข้างแน่ใจว่าการกระทำของฉันจะไม่เป็นอันตราย แต่ฉันควรให้คำแนะนำง่ายๆอะไรกับ:
- ตั้งค่าบัญชีและแลกเปลี่ยนข้อมูลรับรองอย่างปลอดภัย
- ตั้งค่าการเข้าถึงรูท (sudo)
- จำกัด การเข้าถึงบัญชีของฉัน
- ให้หลักฐานการตรวจสอบ
(และใช่ฉันรู้และเตือนลูกค้าเหล่านั้นเสมอว่าเมื่อฉันมีการเข้าถึงของผู้ดูแลระบบการซ่อนการกระทำที่เป็นอันตรายใด ๆ เป็นเรื่องเล็กน้อย แต่สมมติว่าฉันไม่มีอะไรจะซ่อนและมีส่วนร่วมในการสร้างหลักฐานการตรวจสอบ)
สิ่งที่สามารถปรับปรุงได้ในขั้นตอนด้านล่าง
ชุดคำสั่งปัจจุบันของฉัน:
ตั้งค่าบัญชีและแลกเปลี่ยนข้อมูลรับรองอย่างปลอดภัย
ฉันให้แฮชรหัสผ่านและขอให้บัญชีของฉันได้รับการตั้งค่าด้วยรหัสผ่านที่เข้ารหัสดังนั้นเราไม่จำเป็นต้องส่งรหัสผ่านแบบข้อความที่ชัดเจนฉันเป็นคนเดียวที่รู้รหัสผ่านและเราไม่ได้เริ่มด้วย รหัสผ่านที่คาดเดาได้ยาก
sudo useradd -p '$1$********' hbruijn
ฉันให้คีย์สาธารณะ SSH (คู่คีย์เฉพาะต่อลูกค้า) และขอให้พวกเขาตั้งค่าบัญชีของฉันด้วยคีย์นั้น:
sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ตั้งค่าการเข้าถึงรูท (sudo)
ฉันขอให้ลูกค้าตั้งค่า sudo ให้ฉันด้วยsudo sudoedit
หรือโดยใช้โปรแกรมแก้ไขที่ชื่นชอบและผนวกไปที่/etc/sudoers
:
hbruijn ALL=(ALL) ALL
จำกัด การเข้าถึงบัญชีของฉัน
โดยทั่วไปแล้วลูกค้ายังอนุญาตให้ลงชื่อเข้าใช้ด้วยรหัสผ่านและฉันขอให้พวกเขาเพิ่มสองบรรทัดต่อไปนี้/etc/ssh/sshd_config
เพื่อ จำกัด บัญชีของฉันไว้ที่คีย์ SSH เท่านั้น:
Match user hbruijn
PasswordAuthentication no
ฉันจะกำหนดเส้นทางการเข้าถึง SSH ทั้งหมดของฉันผ่านโฮสต์ป้อมปราการเดียวเพื่อให้ที่อยู่ IP แบบคงที่เดียว (เช่น 192.168.1.2) และ / หรือระบุช่วงที่อยู่ IP ที่ ISP ของฉันใช้ (เช่น 10.80 0.0 / 14) ไคลเอ็นต์อาจต้องเพิ่มรายการเหล่านั้นในรายการที่อนุญาตของไฟร์วอลล์หากการเข้าถึง SSH ถูก จำกัด (มักจะไม่ถูกกรองมากกว่า ssh)
คุณเห็นที่อยู่ IP เหล่านั้นเป็นfrom=
ข้อ จำกัด ใน~.ssh/authorized_keys
ไฟล์ที่ จำกัด โฮสต์ที่คีย์ของฉันสามารถใช้เพื่อเข้าถึงระบบของพวกเขา
ให้หลักฐานการตรวจสอบ
จนถึงขณะนี้ยังไม่มีลูกค้าถามฉันเพื่อสิ่งนั้นและฉันยังไม่ได้ทำอะไรที่เฉพาะเจาะจงนอกเหนือจากที่กล่าวมาเพื่อปกปิดตูดของฉัน:
ฉันพยายามที่จะใช้อย่างต่อเนื่องsudo
กับคำสั่งของแต่ละบุคคลและพยายามที่จะป้องกันไม่ให้ใช้หรือsudo -i
sudo su -
ฉันพยายามไม่ใช้sudo vim /path/to/file
แต่ใช้sudoedit
แทน
โดยค่าเริ่มต้นการกระทำที่มีสิทธิ์ทั้งหมดจะถูกบันทึกไว้ใน syslog (และ/var/log/secure
):
Sep 26 11:00:03 hostname sudo: hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml
Sep 26 11:00:34 hostname sudo: hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages
ฉันส่วนใหญ่ยอมแพ้ในการปรับแต่งสภาพแวดล้อมการทำงานของฉันสิ่งเดียวที่ฉันทำคือการตั้งค่าต่อไปนี้ในการ~/.bash_profile
เพิ่มประวัติทุบตีของฉันและรวมถึงการประทับเวลา:
export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S '
shopt -s histappend
screen
ดังนั้นในกรณีที่รุนแรงลูกค้าของคุณสามารถดูการถ่ายทอดสดในสิ่งที่คุณกำลังทำอยู่