O que você descreveu é uma vulnerabilidade do ZPanel se o arquivo foi colocado dentro de seu diretório e é acessível através do servidor web - eu vi isso acontecer um milhão de vezes em instalações Joomla / Wordpress.
Quanto à captura de tela fornecida - isso parece um shell PHP que poderá listar o sistema de arquivos porque o Apache pode acessar o sistema de arquivos. Quais arquivos / diretórios o script pode acessar / ler estão sujeitos às permissões definidas para esses arquivos.
Agora, responda suas perguntas:
- Eu sugeriria usar o CSF para proteger seu servidor, que oferece proteção contra ataques de porta e examina seu log SSH para verificar se há ataques de força bruta ativando e bloqueando o endereço IP do invasor.
Quanto a deixar portas abertas - pergunte-se o que o servidor fará e depois abra as portas necessárias:
- 21 para FTP
- 22 para SSH
- 25 para servidor SMTP
- 80 para HTTP
- 443 para HTTPS se você estiver usando este
- 110/995 para POP3 / POP3 via SSL - se você quiser usar um servidor de e-mail no seu VPS
- 143/993 para IMAP4 / IMAP4 via SSL - o mesmo que para conexão POP3
Você pode fechar a porta 3306-MySQL, se você precisar acessar o servidor MySQL de um local remoto, poderá sempre adicionar uma regra iptables que permita que apenas o endereço IP remoto acesse a porta 3306.
Além disso, você pode usar chaves SSH para login root e desativar login de senha para o usuário root (PermitRootLogin sem senha), portanto, somente usuários com a chave SSH adicionada em ~ / .ssh / authorized_keys podem acessar a conta root. Outra maneira é desativar completamente o acesso root e usar outra conta para que você possa entrar na conta root (su - root).
Mas sua segurança é tão strong quanto seu elo mais fraco - você pode ter tudo bloqueado, mas se o aplicativo da Web estiver vulnerável - eles encontrarão uma maneira de entrar nele.
Se você for o único usando o servidor, poderá ver com o ZPanel adicionar um Auth HTTP antes de acessar o painel ou se estiver atrás de um servidor HTTP definido por VPN que atende o Zpanel para permitir somente acesso ao endereço IP da VPN.
Editar:
Adicionar chattr +i /etc/php.ini
desabilitaria quaisquer modificações no arquivo php.ini, já que definiu um atributo imutável, e não você (root) ou qualquer outro seria capaz de modificar o arquivo.
Quanto à proteção do php.ini, você pode considerar modificar as seguintes opções, se este for um servidor de produção:
- display_errors - desativado
- expose_php - desativado
Além disso, você pode desativar o número de funções desnecessárias do PHP que tornariam os scripts de shell PHP inutilizáveis:
disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo
Se o seu script não estiver funcionando corretamente depois que essas funções estiverem desativadas, verifique qual função seria necessária, remova da lista e reinicie o servidor HTTP.