Alguns aspectos do gerenciamento de servidor VDS no Linux

VDS (Virtual Dedicated Server) é um serviço no qual o usuário recebe um servidor virtual dedicado com o máximo de privilégios. Esta é uma emulação de um servidor físico real, tem acesso root, a capacidade de instalar sistemas operacionais arbitrários e qualquer software. Além disso, é muito mais barato do que alugar um servidor físico com capacidade comparável.



Você pode colocar o sistema operacional no servidor a partir de sua imagem ou usar a imagem pronta no painel de controle.







Vamos supor que instalamos o Debian 10 e o servidor web Nginx, que vem no repositório padrão ( apt install nginx). Vamos ver quais utilitários e comandos úteis o ajudarão a gerenciar seu servidor Linux. Vamos considerar o Nginx separadamente e o próprio servidor VDS como um todo.



Conteúdo





Em primeiro lugar, é aconselhável compreender o próprio servidor web. O Nginx inicia quando a instalação é concluída. Nós verificamos este fato:



systemctl status nginx


Emissão:



● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process


Ou apenas digite o endereço IP do servidor no navegador:



http://your_server_ip


Se ainda não copiamos os arquivos do nosso site para o servidor, a página de cabeçalho padrão do Nginx será exibida.







Comandos básicos para gerenciar o Nginx



Nota. Se o usuário não tiver privilégios de root, então para cada comando a ser executado, ele deve obter privilégios de root usando o comando sudo.



Parando o servidor da web:



sudo systemctl stop nginx


Se executado como root, o comando é:



systemctl stop nginx


Começar após parar:



systemctl start nginx


Pare e reinicie (reinicie):



systemctl restart nginx


Se você acabou de fazer algumas alterações na configuração, o Nginx pode reiniciar sem perder as conexões atuais. Isso é feito com o seguinte comando:



systemctl reload nginx


Por padrão, o Nginx é configurado para iniciar automaticamente quando o servidor for inicializado. Esse comportamento pode ser alterado com o seguinte comando:



systemctl disable nginx


Reative a inicialização automática do Nginx na inicialização do servidor:



systemctl enable nginx


Por padrão, o Nginx tem um conjunto de regras de bloqueio de servidor configuradas para um domínio. Presume-se que você hospede apenas um site em seu servidor. Por padrão, ele deve estar localizado no diretório /var/www/html.



Suponha que você queira criar vários conjuntos de blocos de servidor para vários sites no Nginx ou mover os arquivos do site atual para um diretório diferente /var/www/your_domain.



Isso é feito com os seguintes comandos.



Primeiro, criamos o diretório necessário no servidor.



mkdir -p /var/www/your_domain/html


Em seguida, atribuímos o proprietário deste diretório usando uma variável $USERque deve corresponder ao usuário atual:



chown -R $USER:$USER /var/www/your_domain/html


Colocamos a página principal no diretório especificado index.html.



Em seguida, você precisa criar um conjunto apropriado de regras para o Nginx. Em qualquer editor de texto, crie um arquivo /etc/nginx/sites-available/your_domaine copie a configuração do arquivo padrão lá, apenas com o endereço e domínio alterados:



server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}


Por fim, ativamos essa configuração escrevendo um link simbólico para o novo arquivo de configuração no diretório sites-enabledque o Nginx lê na inicialização:



ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


Após a reinicialização, o Nginx exibirá a página apropriada para solicitações your_domaine www.your_domain.



Gerenciamento de servidor



Quais são as perguntas dos usuários com mais frequência ao gerenciar um servidor Linux? Quais ferramentas você pode recomendar, mesmo para administradores inexperientes?



Instalando um supervisor



Supervisor é um sistema cliente / servidor por meio do qual o administrador controla os processos no servidor. A ferramenta cria processos como subprocessos em seu próprio nome.



Instalar supervisord no Debian ou Ubuntu é extremamente simples:



apt-get install supervisor


Depois disso, o daemon do supervisor já está em execução e será iniciado a cada inicialização do sistema.



Novos programas são passados ​​para o supervisor por meio de arquivos de configuração no diretório /etc/supervisor/conf.d. Por exemplo, para um script, o long.sharquivo de configuração pode ter a seguinte aparência:



[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log


Da mesma forma, o script será executado automaticamente a cada inicialização do sistema e reiniciado automaticamente se for encerrado. Este valor pode ser 'falso' (não reiniciado) ou 'inesperado' (reiniciado apenas se sair com um código de erro inesperado, por padrão, qualquer código diferente de 0 ou 2).



As duas últimas linhas são os endereços das revistas. Este é o modelo de configuração mínimo para um programa de supervisor.



Depois de criar um arquivo de configuração para um programa específico, executamos dois comandos para que o supervisor releia e aplique as novas configurações:



supervisorctl reread


supervisorctl update


Nesta fase, nosso programa ou script já deve estar em execução, o que pode ser verificado por logs.



O utilitário supervisorctlpossui um modo interativo no qual é executado sem argumentos:



$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>


Nesse modo, o supervisorctl exibe inicialmente o status e o tempo de execução de todos os programas sob a supervisão do supervisor e, em seguida, sua linha de comando. Lá você pode entrar help- e ver uma lista de comandos disponíveis:



supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version


Como você pode ver, você pode iniciar, parar e reiniciar programas a partir da linha de comando usando os comandos iniciar, parar e reiniciar.



Para sair do supervisor, use Ctrl-C ou o comando quit:



supervisor> quit


Análise de espaço livre em disco



O utilitário padrão para visualizar informações sobre partições montadas é df. Ele exibe uma lista de dispositivos conectados e informações sobre o espaço ocupado.



df  


A opção -h ativa a saída legível por humanos (ou seja, em megabytes ou gigabytes):



$ df -h
     % C 
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000


Informações sobre um diretório específico (por exemplo, / home):



df -h /home


Informações sobre partições com um determinado sistema de arquivos:



df -h -t ext4


Procure arquivos com o comando find



Pesquise por nome de arquivo:



find -name "query"


Pesquisa por nome que não diferencia maiúsculas de minúsculas:



find -iname "query"


Pesquisa "reversa" de arquivos que não correspondem ao padrão especificado:



find -not -name "query_to_avoid"


ou



find \! -name "query_to_avoid"


Pesquise por tipo de arquivo



find -type _ 


Alguns dos descritores comuns são:



  • f - arquivo normal

  • d - diretório

  • l - link simbólico

  • c - arquivos de dispositivos de E / S de caracteres

  • b - bloquear arquivos de dispositivo de I / O


Por exemplo, o comando a seguir listará todos os dispositivos de E / S de caracteres instalados no sistema:



find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .


Existe um filtro por tamanho e tempo de acesso / mudança. Por exemplo, aqui está um comando para localizar todos os arquivos com menos de 50 bytes:



find / -size -50c


Pesquise todos os arquivos com mais de 700 megabytes:



find / -size +700M


Para pesquisar por tempo de acesso, modificação ou alteração da meta informação do arquivo, os parâmetros '-atime', '-mtime' e '-ctime' são usados ​​com os símbolos mais e menos para indicar um intervalo maior e menor do que o especificado, respectivamente.



Pesquise por arquivos que foram modificados há menos de um dia:



find / -mtime -1


Arquivos com tempo de acesso há mais de três dias:



find / -atime +3


Arquivos que foram alterados no último minuto:



find / -mmin -1


Arquivos mais recentes que o arquivo especificado:



find / -newer myfile


Pesquisa por proprietário ('-usuário', '-grupo') e arquivos com permissões específicas ('-perm') está disponível. Em todos os arquivos encontrados, você pode executar imediatamente alguma ação ('-exec').



Teste de conexões TCP e UDP



O Linux vem com um grande número de utilitários úteis. Alguns administradores de sistema são capazes de realizar a maioria das tarefas usando apenas as ferramentas integradas, sem instalar software adicional. O verdadeiro canivete das ferramentas Linux embarcadas é o utilitário de rede netcat. Sintaxe geral:



netcat [options] host port


Este comando inicia uma conexão TCP com o host especificado na porta especificada. Se, em vez de TCP, você precisar testar uma conexão UDP, especifique a opção -u:



netcat -u host port


Faixa de portas:



netcat host startport-endport


Na maioria dos sistemas, você pode escrever netcate nc.



Varredura de porta



Um dos usos típicos do netcat é o escaneamento de portas, uma opção -zsignifica escanear em vez de estabelecer uma conexão. Nós o usamos junto com a opção -vde exibir informações mais detalhadas ao digitalizar portas de 1 a 1000:



netcat -z -v domain.com 1-1000


A saída será semelhante a esta:



nc: conexão com domain.com porta 1 (tcp) falhou: conexão recusada
nc: falha na conexão com a porta 2 do domínio.com (tcp): conexão recusada
nc: conectar a domain.com porta 3 (tcp) falhou: conexão recusada
nc: conectar a domain.com porta 4 (tcp) falhou: conexão recusada
nc: conectar a domain.com porta 5 (tcp) falhou: conexão recusada
nc: conectar a domain.com porta 6 (tcp) falhou: conexão recusada
nc: conectar a domain.com porta 7 (tcp) falhou: conexão recusada
... ... ...
A conexão com a porta 22 do domínio.com [tcp / ssh] foi bem-sucedida!
... ... ...


No entanto, existe um programa mais avançado e especializado para essa tarefa nmap. Instale-o:



apt-get update
apt-get install nmap


Este utilitário fornece informações mais detalhadas sobre as portas. O cadastro de portas conhecidas /usr/share/nmap/nmap-servicescontém mais de 20 mil linhas, incluindo campos adicionais, como a frequência média de abertura de uma determinada porta em servidores da Internet (terceira coluna):



... ... ...
tcpmux 1 / tcp 0,001995 # TCP Port Service Multiplexer [rfc-1078]
tcpmux 1 / udp 0,001236 # TCP Port Service Multiplexer
compressnet 2 / tcp 0,000013 # Utilitário de gerenciamento
compressnet 2 / udp 0,001845 # Utilitário de gerenciamento
compressnet 3 / tcp 0,001242 # Processo de compressão
compressnet 3 / udp 0,001532 # Processo de compressão
desconhecido 4 / tcp 0,000477
rje 5 / udp 0,000593 # Entrada de trabalho remoto
desconhecido 6 / tcp 0,000502
echo 7 / tcp 0,004855
echo 7 / udp 0,024679
echo 7 / sctp 0,000000
... ... ...


Não é recomendado executar varreduras de portas em um servidor externo, pois o administrador do sistema pode confundir tais ações com hostis. O Nmap é projetado para explorar seu próprio servidor e você pode experimentar em um servidor dedicado para fins de teste scanme.nmap.org.



Alguns comandos demoram muito para serem executados.



Verificando o sistema operacional no host:



nmap -O 


Analise o intervalo de host de xxx.xxx.xxx.xxx a yyy.yyy.yyy.yyy:



nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy


Verificando o alcance da rede em busca de serviços disponíveis:



nmap -sP _


Verificando uma porta específica:



nmap -p _ 


Verificando todas as portas TCP e UDP abertas:



nmap -n -PN -sT -sU -p- 


Estudo de versões de software em execução no host:



nmap -PN -p _ 


Existem muitos outros comandos, parâmetros e casos de uso para o nmap. A varredura das portas do seu servidor VDS permite que você identifique os vetores de ataque e vulnerabilidades potenciais, já que um invasor começará suas ações com a varredura.



Encaminhando mensagens e arquivos



Usando a chave, -lvocê pode escutar em uma porta específica no servidor:



netcat -l 5438


Em outra máquina, especificamos a conexão com a máquina nesta porta:



netcat domain.com 5438


Um canal de comunicação agora foi estabelecido entre os dois sistemas. Ele pode ser usado para enviar mensagens de texto.



Você pode até transferir um arquivo dessa maneira. Para fazer isso, envie o comando de escuta diretamente para o arquivo:



netcat -l 5438 > _


Em outro computador, em vez de uma mensagem de texto, enviamos o arquivo original para a entrada:



netcat domain.com 5438 < _


Da mesma forma, você pode transferir todos os tipos de coisas, por exemplo, o conteúdo de diretórios, compactados em tempo real para tarball:



tar -czf - * | netcat domain.com 4444


Da mesma forma, você pode criar uma imagem de disco em um lado ( dd), enviá-la para a porta especificada através da conexão TCP criada - e recebê-la no outro sistema.



Adicionar e remover usuários



Para adicionar, remover usuários e conceder-lhes privilégios, sudovocê deve primeiro se conectar ao servidor como root:



ssh root@ip__


Depois disso, adicione o usuário:



adduser newuser


Inicialmente, ele não tem privilégios. Mas se este for o usuário principal do sistema, então podemos atribuir a ele privilégios administrativos para que ele possa realizar as tarefas rotineiras de manutenção e manutenção do servidor.



Para atribuir privilégios administrativos, você precisa adicionar o usuário ao grupo sudo. Os usuários neste grupo têm permissão para executar o comando sudocom seus privilégios elevados a administrativos.



usermod -aG sudo user1


Em vez disso, user1indicamos o nome do usuário que foi adicionado anteriormente. Agora ele poderá executar qualquer comando por meio de sudo:



sudo 


Com esses direitos, este usuário pode excluir outros usuários:



sudo deluser --remove-home username


Essa opção --remove-hometambém remove o diretório pessoal do usuário.



O próprio Root tem o direito de executar o comando delusersem sudo.



Claro, esta não é uma lista completa de ferramentas úteis para gerenciar um servidor VDS. Mas essas perguntas costumam surgir para administradores de sistema novatos que configuram seu primeiro servidor, instalam um sistema operacional e começam a entender o mundo da administração Linux.









All Articles