Ổ cắm mở PING icmp: Không được phép hoạt động trong vserver


14

Tôi đang chạy một môi trường vserver với một số máy ảo. Một VM có vấn đề sau:

$ 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

Lưu ý rằng trên máy chủ cũng như trên tất cả các máy chủ VM khác ở đó, Ping hoạt động tốt.

Có ai có ý kiến ​​gì để giúp tôi không?


/bin/pingset-uid trên các máy khác? TCP / IP có được thiết lập chính xác trên VM này không? Những thứ khác có hoạt động như DNS, traceroute, HTTP không?
David Schwartz

2
Bạn đã thử cài đặt lại iputils-ping chưa?
Nave Bourenane

Một thông tin khác có thể hữu ích: Đây là một máy có năng suất cao chạy Apache với khoảng 5 đến 7 lượt truy cập mỗi giây - vì vậy không có ý tưởng nào về việc sửa đổi cấu hình mạng. Nó đã chuyển sang một phần cứng mới đêm qua và kể từ đó, Munin cho thấy Ping không hoạt động.
rexkogitans

Câu trả lời:


12

Phiên bản TL; DR: cài đặt lại iputils-ping

Tôi đã thấy trực tuyến nơi nó đã được đề xuất để sử dụng

chmod u+s $( which ping );

Tuy nhiên, điều này sẽ cho phép người dùng thay đổi tải trước và lũ lụt. Điều này có thể dẫn đến việc NGƯỜI DÙNG có thể từ chối dịch vụ hoặc máy cục bộ của bạn hoặc máy khác hoặc mạng của bạn.

Tôi đã thử những gì @ nabil-bourenane đề xuất , cài đặt lại iputils-pingđể giải quyết vấn đề cho tôi và không cài đặt bit SUID.

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

Nếu bit SUID được đặt, nó sẽ trông như

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

Nếu bạn đã root, nhị phân gốc SUID sẽ không thay đổi nhiều.
Falcon Momot

@FalconMomot, tôi đã thêm giải pháp.
rexkogitans

1

Giải pháp là thiết lập các Hệ thống Linux cho phép ổ cắm thô trên máy chủ.

Vì đây là một vấn đề cụ thể của máy chủ v, nên giải pháp là tạo một tệp đơn có tên /etc/vservers/VMNAME/bcapabilities:

NET_RAW

và khởi động lại VM.


1
"Và làm thế nào để bạn thực hiện điều này?" sẽ hữu ích như một câu trả lời đầy đủ.
ILMostro_7

Sau 4 năm, tôi đã thay đổi câu trả lời được chấp nhận cho tôi, bởi vì nó THỰC SỰ TRẢ LỜI CÂU HỎI. Đây là sự cố máy chủ v và không liên quan gì đến chế độ tệp của tệp thực thi ping.
rexkogitans

1

Xin lỗi tôi không thể bình luận. Vấn đề này đã ảnh hưởng đến tôi sau khi tôi trích xuất một kho lưu trữ của một hệ thống làm việc qua một cài đặt tối thiểu.

Tất cả các câu trả lời trên làm việc. Nhưng một đề xuất của @Nabil Bourenane và @Linx được ưa thích hơn cho bảo mật. Để trả lời bình luận của @ rexkogitans, ở đây tôi trích dẫn từ iputils-ping.postinst (/ var / lib / dpkg / information / ...)

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

về cơ bản là khi cấu hình iputils-ping, trước tiên hãy thử setcap sau đó nếu không sử dụng chmod u + s. Đó là lý do tại sao cài đặt lại iputils-ping hoạt động.


1
Vì vậy, điều này sẽ hoạt động: setcap cap_net_raw + ep / bin / ping
rlf

Đó không phải là nhận xét của tôi, mà là câu trả lời của tôi cho câu hỏi của riêng tôi. Vấn đề không thể được giải quyết từ bên trong container, vì vậy bất cứ điều gì hook hook cài đặt làm là vô nghĩa.
rexkogitans

Thật vậy, setcap cap_net_raw+p $(which ping)như root sửa nó. Có một lời giải thích kỹ lưỡng về bài đăng trên blog này: Khả năng của Linux và Ping
mivk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.