Recentemente, adquiri uma placa-mãe SuperMicro X8DTU-F, que possui um BMC integrado, que basicamente executa o sistema IPMI. Acontece que é um pequeno sistema Linux rodando em um processador ARM.
Infelizmente, ele está executando uma grande quantidade de softwares, muitos dos quais não preciso, e não tenho a capacidade de colocá-lo atrás de um firewall. No entanto, eu quero a funcionalidade IPMI. Alguém que usou um desses tem algumas sugestões específicas sobre como proteger a coisa? Ele inicializa a partir do que é essencialmente um sistema de arquivos ROM, e nem parece haver ganchos para desligar qualquer um dos vários servidores que ele roda.
Também estaria interessado em saber como verificar a lista de nomes e senhas que podem ser usados para acessar o sistema através de todos os vários serviços. O padrão é ADMIN
/ ADMIN
, mas nenhum dos arquivos em / conf ou / etc tem 'ADMIN' neles, o que me preocupa bastante. Existem /conf/shadow
e /conf/webshadow
arquivos, com identificações misteriosas de 'teste', o que também não me faz sentir particularmente confortável.
fonte
Respostas:
Usar
/conf/crontab
, como dlawson apontou, parece uma excelente ideia para mim. Isso me permite executar um script uma vez por minuto que garante que tudo, exceto http e ssh, seja desligado:Isso ainda me deixa com um servidor Web com controle de acesso baseado em senha (não vejo como validar certificados de cliente) e quem sabe quais vulnerabilidades remotas. Desligá-lo quando não o estou usando (que é na maioria das vezes) parece uma solução razoável; adicionar uma entrada de crontab para desligá-la a cada cinco ou dez minutos pegaria os casos em que alguém se esquece de desligá-la quando terminar.
O daemon ssh é uma versão do dropbear que parece ser bastante modificada. Ele lê nomes de usuário e senhas de texto sem formatação
/conf/PMConfig.dat
(que também são usados pelo servidor da Web), registra qualquer nome e senha válidos como usuário root e ignora o~/.ssh/authorized_keys
arquivo. Este último problema é irritante; obriga a permitir logins de senhas e abre a possibilidade de backdoors, dependendo de onde todos os nomes e senhas são obtidos.Esse é o dilema que você enfrenta: quanto você realmente confia nesse daemon ssh modificado instalado em um sistema que foi obviamente projetado por desenvolvedores ingênuos em segurança? Não muito, dado o número de fragmentos quebrados que já vi em seus scripts de shell. Existem convenções de nomenclatura incomuns (/etc/rc?.d/sshd é um link simbólico para /etc/init.d/ssh), grande quantidade de código que parece não ser usado e recursos apenas no script de inicialização ssh, como o
/conf/portcfg_ssh
arquivo e até orestart
comando estão totalmente quebrados. (Não tente usá-los; o sshd não será reiniciado e você será ferrado a menos que tenha um login existente. Reiniciámos o BMC e acabamos tendo que atualizá-lo.)A melhor opção que eu posso pensar, se alguém vai usar a coisa, é iniciar o ssh em uma porta alternativa usando um trabalho cron, portanto, pelo menos, é menos provável que apareça em um portscan.
O componente final são as portas de gerenciamento de rede IPMI; Não consigo ver como desativar isso.
fonte
Idealmente, sua rede de gerenciamento seria uma rede diferente da sua outra rede ou, pelo menos, uma vlan diferente com acesso roteado limitado.
Esses sistemas não estão realmente executando tantos serviços:
(e UDP / 623 para o próprio IPMI)
A maioria delas é necessária se você deseja fazer qualquer tipo de gerenciamento remoto. Se você não deseja fazer o gerenciamento remoto, considere não ativar o controlador IPMI ou comprar uma placa X9DTU (o -F indica "BMC interno")
Se você deseja fazer um gerenciamento remoto completo, não pode executar seus controladores IPMI em uma rede diferente e ainda deseja desativar algum acesso, sempre é possível obter o controlador IPMI para executar comandos iptables. Você pode criar um script de login ssh para executar os comandos ou solicitar à Supermicro o devkit para o BMC e criar uma nova imagem com um script personalizado do iptables.
ATUALIZAR
Dei outra olhada em nossos sistemas aqui e o sistema de arquivos / conf está montado em rw. Nenhum dos scripts init chamou nada diretamente em / conf (que eu pude ver), mas existe um arquivo crontab. Então, acho que você pode copiar um script iptables e editar / conf / crontab para chamá-lo em um intervalo adequado. Você deseja que ele seja executado o mais rápido possível no BMC init, mas não é necessário que ele seja executado a cada minuto. Ou talvez você não se importe.
fonte
Uma coisa a considerar ao proteger um IPMI Supermicro é o servidor ssh. As versões mais antigas do código IP8 X8SIL-F aceitavam conexões ssh, independentemente da senha fornecida. O software então verificava a senha e rejeitava ou aceitava a conexão, mas havia uma breve janela para criar a porta ssh para a frente. As pessoas estavam recebendo reclamações de spam / abuso por seus IPMI IPs por causa disso . Para a placa-mãe X8SIL-F, a versão do firmware 2.60 IPMI corrigiu o problema (pode ter sido corrigido anteriormente, a entrada do changelog do 2.54 parece ser a mesma).
Um segundo problema é um usuário anônimo com uma senha padrão. O usuário anônimo parece estar corrigido na versão de firmware 2.22.
fonte
Há um pequeno truque para ativar o HTTPS na interface da Web do IPMI.
Se o seu firmware IPMI suportar isso (meu firmware 2.04 para X8DTH-iF suporta), você poderá, inicialmente, habilitar o acesso HTTPS, indo em Configuração -> SSL, carregando dois arquivos PEM (certificado e chave privada) e, em segundo, manualmente reinicie o seu módulo IPMI.
Finalmente, você pode acessar a interface da Web da IPMI em https: // bmc-ip-or-hostname / . Não posso dizer que o HTTPS funcione mais lentamente que o HTTP.
fonte
Algum de vocês tentou proteger a coisa com o iptables? Parece que o iptables está instalado e eu quero criar um conjunto de regras que negue que tudo aceite alguns IPs confiáveis para torná-lo um pouco mais seguro ... Mas, como eu li acima, nenhum script está sendo lido em / config. O crontab é a única opção? E se você estragasse o iptables?
fonte
Como você visualizou o sistema de arquivos? Se eu telnetar para a porta 22, posso ver o dropbear em execução, mas se eu tentar fazer o SSH com vários nomes de usuário, não solicitará uma senha. Adicionei um novo usuário com privilégios de administrador, mas o SSH também não responderá por esse usuário. Estou usando uma placa-mãe Supermicro X7SPA-HF que possui um chip Winbond Hermon IPMI 2.0, revisão de firmware 01.29, tempo de construção 31/12/2009.
fonte