PING icmp open socket: การทำงานไม่ได้รับอนุญาตใน vserver


14

ฉันใช้สภาพแวดล้อม vserver กับเครื่องเสมือนหลายเครื่อง VM เดียวมีปัญหาต่อไปนี้:

$ ping 8.8.8.8
ping: icmp open socket: Operation not permitted

$ ls -l $(which ping)
-rwsr-xr-x 1 root root 30736 2007-01-31 00:10 /bin/ping

$ whoami
root

$ mount
/dev/hdv1 on / type ufs (defaults)
none on /proc type proc (0)
none on /tmp type tmpfs (size=16m,mode=1777)
none on /dev/pts type devpts (gid=5,mode=620)

$ uname -a
Linux v-web1 2.6.27.55-vs2.3.0.36.9 #1 SMP Tue Apr 28 11:35:00 CEST 2015 i686 GNU/Linux

โปรดทราบว่าในเครื่องโฮสต์รวมถึงโฮสต์ VM อื่น ๆ ทั้งหมดนั้น Ping ทำงานได้ดี

มีใครมีความคิดที่จะช่วยฉันหน่อยได้ไหม


เป็นที่/bin/pingตั้ง uid บนเครื่องอื่น ๆ ? ตั้งค่า TCP / IP บน VM นี้อย่างถูกต้องหรือไม่ สิ่งอื่น ๆ ทำงานเช่น DNS, traceroute, HTTP หรือไม่
David Schwartz

2
คุณลองติดตั้ง iputils-ping ใหม่หรือไม่
Nabil Bourenane

ข้อมูลอื่นอาจมีประโยชน์: นี่เป็นเครื่องที่มีประสิทธิภาพสูงที่ใช้ Apache กับการเข้าถึง 5 ถึง 7 ต่อวินาทีดังนั้นจึงไม่มีความคิดเกี่ยวกับการปรับเปลี่ยนการกำหนดค่าเครือข่าย เมื่อคืนได้ย้ายไปที่ฮาร์ดแวร์ใหม่และตั้งแต่นั้นมามินก็แสดงให้เห็นว่าปิงไม่ทำงาน
rexkogitans

คำตอบ:


12

TL; DR เวอร์ชั่น: ติดตั้งใหม่ iputils-ping

ฉันเคยเห็นทางออนไลน์ซึ่งมันได้รับการแนะนำให้ใช้

chmod u+s $( which ping );

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

ฉันลองใช้สิ่งที่ @ nabil-bourenane แนะนำให้ติดตั้งใหม่iputils-pingซึ่งแก้ไขปัญหาให้ฉันแล้วและไม่มีชุดบิต SUID

username@server:~$ ls -l $( which ping );
-rwxr-xr-x 1 root root 44104 Nov  8  2014 /bin/ping

หากตั้งค่าบิต SUID จะมีลักษณะเช่นนี้

username@server:~$ ls -l $( which ping );
-rwsr-xr-x 1 root root 44104 Nov  8  2014 /bin/ping

หากคุณรูตแล้วรูทไบนารีของ SUID จะไม่เปลี่ยนแปลงมากนัก
Falcon Momot

@ FalconMomot ฉันต่อท้ายโซลูชัน
rexkogitans

การติดตั้ง iputils อีกครั้ง (เวอร์ชั่นเดียวกันก่อน / หลัง) ใช้งานได้กับฉันใน centos7 ก่อนหน้า getcap / bin / ping ไม่พบความสามารถที่ตั้งไว้ หลังจากติดตั้งแล้วgetcap /bin/pingส่งคืน: /bin/ping = cap_net_admin,cap_net_raw+p. ตอนนี้คำถามคือ: ทำไมมันสูญเสียความสามารถ rpm --verify iputilsแสดงให้เห็นว่า ping, arping และ clockdiff ทั้งหมดแสดงให้เห็นว่าการตั้งค่าหมวกเปลี่ยนไป (ก่อนการติดตั้งใหม่)
Juan

ในกรณีของฉันมันอาจสูญเสียความสามารถของไฟล์หลังจากเรียกคืนจากอิมเมจดัมพ์ ดูเพิ่มเติมunix.com/unix-for-advanced-and-expert-users/... ในกรณีนั้นพวกเขาใช้น้ำมันดิน ในกรณีของฉันฉันหวังว่าการถ่ายโอนข้อมูล / คืนค่าจะรักษาแอตทริบิวต์ของไฟล์เหล่านั้นไว้ (attrs, ความสามารถ, acls, ฯลฯ ) ฉันประหลาดใจที่มันไม่ได้ดังนั้นฉันจะต้องดูว่าฉันสามารถทำซ้ำได้ (และจากนั้นอาจบันทึกข้อผิดพลาด)
ฮวน

1

ทางออกคือการตั้งค่าความสามารถของระบบลินุกซ์เพื่อให้ซ็อกเก็ตดิบบนเครื่องโฮสต์

เนื่องจากนี่เป็นปัญหาเฉพาะของเซิร์ฟเวอร์ v วิธีแก้ปัญหาคือการสร้างไฟล์แบบมีเส้นเดียวชื่อ/etc/vservers/VMNAME/bcapabilities:

NET_RAW

และรีบูต VM


1
"แล้วคุณจะทำสิ่งนี้ให้สำเร็จได้อย่างไร" จะเป็นประโยชน์เป็นคำตอบที่สมบูรณ์
ILMostro_7

หลังจาก 4 ปีฉันเปลี่ยนคำตอบที่ยอมรับให้ฉันเพราะมันตอบคำถามได้อย่างแท้จริง นี่เป็นปัญหา v-server และไม่มีส่วนเกี่ยวข้องกับโหมดไฟล์ของ ping executable
rexkogitans

1

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

คำตอบข้างต้นทั้งหมดทำงาน แต่คนที่เสนอโดย @Nabil Bourenane และ @Linx นั้นต้องการความปลอดภัยมากกว่า เพื่อตอบความคิดเห็นของ @ rexkogitans ที่นี่ฉันพูดจาก iputils-ping.postinst (/ var / lib / dpkg / info / ... )

if command -v setcap > /dev/null; then
    if setcap cap_net_raw+ep /bin/ping; then
        chmod u-s /bin/ping
    else
        echo "Setcap failed on /bin/ping, falling back to setuid" >&2
        chmod u+s /bin/ping
    fi
else
    echo "Setcap is not installed, falling back to setuid" >&2
    chmod u+s /bin/ping
fi

ซึ่งโดยทั่วไปบอกว่าเมื่อตั้งค่า iputils-ping ก่อนอื่นให้ลอง setcap จากนั้นหากใช้ chmod u + s ไม่สำเร็จ นั่นเป็นสาเหตุที่การติดตั้ง iputils-ping ใหม่อีกครั้ง


1
ดังนั้นจะใช้งานได้: setcap cap_net_raw + ep / bin / ping
rlf

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

แท้จริงแล้วsetcap cap_net_raw+p $(which ping)เมื่อรูทแก้ไขมัน มีคำอธิบายอย่างละเอียดในบล็อกโพสต์นี้: ขีดความสามารถของ Linux และ Ping
mivk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.