PING icmp open socket: Operação não permitida no vserver

11

Estou executando um ambiente vserver com várias máquinas virtuais. Uma única VM apresenta o seguinte problema:

$ 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

Observe que na máquina host, bem como em todos os outros hosts da VM, o Ping funciona bem.

Alguém tem alguma ideia para me ajudar, por favor?

    
por rexkogitans 03.06.2015 / 11:37

3 respostas

10

Versão TL; DR: reinstale iputils-ping

Eu vi on-line onde foi sugerido usar

chmod u+s $( which ping );

No entanto, isso permitirá que o usuário altere o pré-carregamento e o flood. O que poderia resultar em um usuário sendo capaz de Negação de Serviço, seja sua máquina local ou outra máquina ou sua rede.

Eu tentei que @ nabil-bourenane sugerido , reinstalando iputils-ping que resolveu o problema para mim e não tem o conjunto de bits SUID.

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

Se o bit SUID estiver definido, será parecido com

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

A solução é definir os recursos do sistema Linux para permitir o soquete bruto na máquina host.

Como esse é um problema muito específico do v-server, a solução é criar um arquivo com uma única linha chamado /etc/vservers/VMNAME/bcapabilities :

NET_RAW

e reinicie a VM.

    
por 31.08.2015 / 10:25
1

Desculpe, não posso comentar. Esse problema me atingiu depois de extrair um arquivo de um sistema em funcionamento em uma instalação mínima.

Todas as respostas acima funcionam. Mas o proposto por @Nabil Bourenane e @Linx é preferido por segurança. Para responder ao comentário do @ rexkogitans, aqui cito de 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

que basicamente diz que ao configurar o iputils-ping, primeiro tente o setcap e se isso falhar use chmod u + s. É por isso que reinstalar o iputils-ping funciona.

    
por 05.06.2018 / 23:35