Use o comando watch para monitorar processos em execução

O utilitário watch é usado no Linux para rodar outros programas periodicamente e exibir resultados atualizados.
O que ele faz é reexecutar programas, até que você o mande parar.
Para interromper o seu andamento, use as teclas ^C (Ctrl + c).
O watch aceita parâmetros e opções para determinar de quanto em quanto tempo ele deve rodar novamente um comando.
Segue alguns exemplos de uso.

Como monitorar o uso das unidades de armazenamento do seu sistema

Você pode observar o espaço livre de todos os drives (internos, externos ou remotos) conectados ou montados no seu sistema ao combinar o comando df com o watch.
Veja um exemplo:


watch df -h

Como padrão, o watch reexecuta seu comando a cada 2 segundos.
linux free watch
Você pode alterar este comportamento com a opção ‘-n’ ou ‘–interval’:


watch --interval 0.5 du -h

Na linha acima, ajustei o intervalo entre uma execução e outra para meio segundo.
Desta vez, usei o comando du, que mostra a ocupação (ou uso) de cada diretório montado no sistema.
linux disk usage
Note que o watch exibe, no canto superior esquerdo da tela, o intervalo de tempo entre cada execução do programa: Every 0,5s (ou seja, “a cada meio segundo”), na imagem acima.

O comando df (disk free) mostra o espaço livre em uma unidade montada.
O du (disk used ou disk usage) mostra o uso ou a ocupação dos diretórios atuais

Como monitorar o uso da memória no Linux

O comando free é usado para mostrar a quantidade de memória livre, em diversos locais (RAM, SWAP etc).
Você pode usar o watch para verificar como o uso dos programas no seu computador afetam a memória do sistema.
Experimente o seguinte:


watch free

Aqui também é possível estabelecer um intervalo de atualização.
A visualização pode ficar mais interessante, se você permitir ao watch destacar os dados que sofreram alterações:


watch --differences --interval 0.1 free

Note que o menor intervalo possível é 0.1 segundos.
linux free memory

Outros exemplos de uso do watch

É possível encontrar outros exemplos de uso no manual do comando (man watch).
Por exemplo, para monitorar os arquivos que sofrerem algum tipo de modificação ou edição, no diretório atual, use o comando da seguinte forma:


watch -d 'ls -l'

Este tipo de comando é mais usado no diretório de logs ou no sistema de arquivos proc.

Como fazer o Linux rodar um comando até ele dar certo

Às vezes pode ser necessário persistir na execução de um comando no Linux, até que ele retorne com sucesso.
Este código pode ser executado na linha de comando ou dentro de um script.
O comando ping é comumente usado dentro de um laço (ou loop) while, quando queremos ser avisados de que um certo nó na rede já se encontra online e conectado.
Há várias outras situações em que pode ser desejável manter o sistema operacional na tentativa de execução de um comando — até ele “dar certo”.
Veja um exemplo de uso com o ping:


while true; do ping -c 1 192.168.1.100 && break; done;

PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable

--- 192.168.1.100 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable

--- 192.168.1.100 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable

...

Se tiver interesse em ler mais sobre o uso de loops no Bash, leia Exemplos de laços na Bash shell.

Experimente o Debian com o kernel do FreeBSD.

O Debian é uma comunidade aberta a diversos projetos interessantes.
Há, pelo menos, 2 projetos que oferecem o sistema operacional combinado a um kernel alternativo.
Já falei sobre o Debian rodando com o kernel GNU/Hurd, antes.
Desta vez, vou mostrar como baixar uma versão que roda sobre o kernel do FreeBSD.
A melhor maneira de testá-la é rodar uma das imagens prontas para o QEMU/KVM.

O sistema não é pesado e dá para você se divertir e ter uma idéia do seu funcionamento.

Neste post, vou analisar uma destas 3 opções:

  1. debian_squeeze_kfreebsd-amd64_standard.qcow2
    — uma opção mais antiga, sem o ambiente gráfico (imagem c/204 Mb).
  2. debian_wheezy_kfreebsd-amd64_desktop.qcow2
    — uma opção mais atual (Debian 7), com o ambiente gráfico (imagem c/1,7 Gb).
  3. debian_wheezy_kfreebsd-amd64_standard.qcow2
    — Debian 7, sem o ambiente gráfico (imagem c/210 Mb).

As imagens estão comprimidas e se expandem até 25 GiB, na medida do necessário.
Os exemplos, que seguem, são baseados na 3a opção.
Se preferir outra, basta adaptá-los ao seu caso.
Use o comando wget para fazer o download ou baixe direto do site (links no final):


wget https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/debian_wheezy_kfreebsd-amd64_standard.qcow2

Feito o download, rode o sistema a partir do QEMU:


qemu-system-x86_64 -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Bem simples, não é?
Para poder usar melhor o sistema, use as seguintes informações:

  • A conta root usa a senha “root” (sem as aspas).
  • A conta user usa a senha “user”.

Para obter um melhor desempenho, ative o KVM:


qemu-system-x86_64 -enable-kvm -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Para suprimir o modo gráfico, coloque o display no modo curses:


qemu-system-x86_64 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Neste caso, pode ser necessário aumentar um pouco (ou maximizar) a janela do seu terminal, para conseguir ver toda a área de trabalho.
Como padrão, a imagem roda com 128 MiB de memória RAM.
Use a opção ‘-m’ do QEMU para ampliar este valor:


qemu-system-x86_64 -m 512 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2


Se você optou por uma das imagens com ambiente gráfico, acima, vai precisar usar uma quantidade maior de memória RAM, claro.
Neste caso, as imagens usam lightDM com o XFCE e 1GiB de memória RAM deve ser mais do que o suficiente.
Se quiser trocar este ambiente, pelo original do Debian (GDM e GNOME), dê os seguintes comandos, dentro da máquina virtual (como superusuário):


update-alternatives --auto x-session-manager

echo /usr/sbin/gdm3 > /etc/X11/default-display-manager

Vale a pena instalar e usar o Debian com o kernel FreeBSD?

Diferente do Hurd, o kernel do FreeBSD é um kernel maduro e bem testado.
Aqui é possível usar todo o ambiente gráfico e usufruir do universo dos repositórios de softwares do Debian.
No lado do servidor, a opção é uma alternativa para quem deseja ficar longe do systemd e/ou evitar as eventuais vulnerabilidades do kernel Linux.
Há, ainda, o glamour de estar mais próximo de executar um kernel semelhante ao usado pela Apple em seus dispositivos.
Do ponto de vista de quem vem do FreeBSD, esta opção “mantém um pé” lá e outro nos vastos repositórios de softwares Debian.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

De onde baixei a versão analisada neste texto: https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/.
Outras versões do Debian kfreebsd: http://jenkins.kfreebsd.eu/jenkins/view/cd/job/debian-cd_jessie-kfreebsd_kfreebsd-amd64/ws/build/.
Debian Mini .ISO (para instalar): http://cdn-fastly.deb.debian.org/debian/dists/jessie-kfreebsd-proposed-updates/main/installer-kfreebsd-amd64/current/images/netboot-10/.
Conheça o Debian GNU/Hurd: https://elias.praciano.com/2017/07/experimente-o-debian-com-o-kernel-gnuhurd-em-uma-maquina-virtual/.

Altere a porta de entrada do servidor SSH como medida de segurança

Mover para outro lugar a porta, a partir da qual o servidor SSH recebe conexões, é uma medida muito simples e eficiente para evitar ataques.
Qualquer cracker sabe que a porta padrão (default listening port) é a 22.

É a partir daí que um ataque de força bruta começa a contar.
Se o invasor não conseguir encontrar a porta de entrada, nos primeiros segundos da sua operação, ele pode desistir e passar para o próximo servidor da sua lista de vítimas.
Esta é uma das táticas de segurança por obscuridade. Em outras palavras, estamos apenas “mudando a porta de lugar” — não se trata de fortalecer a segurança, portanto.
Este método traz 2 problemas que convém levar em conta, antes de colocar em prática:

  1. se você esquecer onde colocou “a porta”, pode acabar trancado do lado de fora.
  2. certifique-se de usar uma porta que não esteja sendo usada por outro serviço ou daemon ou que já seja popularmente usado.

Se estes dois itens não forem problemáticos para você, prossiga com a configuração (que é muito simples).
Você pode obter uma lista de portas em uso (ou não) no sistema, dentro do arquivo ‘/etc/services’:


less /etc/services

Sugiro usar o nmap, se quiser obter uma relação mais completa, contudo.

Como editar o arquivo de configuração do servidor SSH

O procedimento trata de editar o arquivo de configuração do servidor SSH que costuma ficar em ‘/etc/ssh/’.
Use o seu editor favorito para abrir o arquivo ‘/etc/ssh/sshd_config’:


# comece com um backup:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo editor /etc/ssh/sshd_config

Localize a linha que define o ‘Port’ e mude o número para o que achar melhor.


Port 1234


Feito isto, grave o arquivo e saia.
Pode ser interessante anotar a nova porta usada em alguma folha de papel.
Para que as mudanças surtam efeito, reinicie o servidor SSH:


sudo service sshd restart

ou


sudo /etc/init.d/sshd restart

Seja cautelosa(o), agora.
Não desautentique da máquina, simplesmente, para testar.
Se houver problemas com os ajustes, você pode ficar trancado do lado de fora — como mencionei anteriormente.
O mais seguro é abrir um novo terminal para testar a conexão sob uma nova porta.
Se algo deu errado, copie de volta o arquivo de configuração, para verificar exatamente qual foi o problema.
Uma das possibilidades que podem atrapalhar que você consiga se autenticar via SSH, por outra porta, é a configuração do seu firewall.
Neste caso, cabe adequar a configuração do firewall aos ajustes que você fez ao sshd.
Depois disto, tente de novo.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Dicas e truques de configuração do SUDO para Linux e UNIX

Nos sistemas operacionais baseados no Linux ou no UNIX (MacOS, FreeBSD etc) há tarefas administrativas, que só podem ser executadas com privilégios de superusuário (root).
O comando sudo nasceu da necessidade do sysadmin delegar algumas destas tarefas a outros usuários do sistema — sem precisar expôr a própria senha.
captura de tela comando sudo
Usuários pertencentes ao grupo “sudo”, podem assumir privilégios superiores com o uso da própria senha — sem ter conhecimento da senha do root, portanto.
Quem usa o computador sozinho, pode fazer tudo como usuário comum. Eventualmente, pode “se investir de poderes especiais”, com o uso do sudo — e voltar à segurança de um usuário comum, logo em seguida.
Uma, dentre muitas tarefas comuns a todo usuário, por exemplo, é atualizar o sistema. O comando permite fazer isso, sem exigir que se autentique como root.
Na configuração padrão do sudo, usuários com acesso ao comando podem realizar as seguintes tarefas (entre outras):

  • Acessar dispositivos restritos do hardware.
  • Formatar e alterar sistemas de arquivos.
  • Instalar novos aplicativos e configurar áreas sensíveis do sistema.

Como configurar o comportamento do sudo no meu sistema

O arquivo de configuração do sudo é o /etc/sudoers. Contudo, as boas práticas de segurança, recomendam sempre usar o programa visudo para alterar este arquivo:


sudo visudo


Dentro do arquivo de configuração, há uma sessão com várias linhas. Cada uma delas começa com uma entrada Defaults.
Você pode alterar o comportamento do sudo:

  • editando uma destas linhas — removendo ou editando algum parâmetro ou, ainda, acrescentando um novo.
    Para acrescentar, vá até o final da linha e acrescente uma vírgula seguida do novo parâmetro desejado;
  • adicionando uma nova linha Defaults, seguida da tabulação e dos parâmetros de configuração que você deseja acrescentar.

Por ser muito usado no Linux, já escrevi alguns artigos sobre o sudo (veja a lista no final deste texto). Não esqueça também de dar uma olhada nas tags visudo e sudo, para obter mais informações sobre o uso da ferramenta.
sudo sudoers environment variables
Algumas pessoas, por questão de organização, preferem ter uma linha Defaults exclusiva para cada parâmetro de configuração.
Acompanhe as dicas, para entender melhor.

Edite corretamente o /etc/sudoers

Trata-se de uma dica de segurança.
O UNIX e o Linux são sistemas operacionais projetados para atender uma grande quantidade de demandas e usuários simultâneos.
O visudo bloqueia o acesso de outros usuários ao /etc/sudoers, enquanto você o estiver editando.
Portanto, use sempre o visudo para ajustar o sudo no seu sistema. Não edite o /etc/sudoers diretamente.
Além disso, o visudo faz uma análise do sudoers, logo depois da edição.
Se houver erros, ele avisa e permite que você volte para alterar e corrigir o arquivo.

Organize os Defaults

Como já disse, você pode adicionar vários parâmetros e valores por linha ou abrigar um único parâmetro por linha.
A escolha é sua.
A configuração, abaixo


Defaults        env_reset,timestamp_timeout=5,pwfeedback

tem o mesmo efeito desta


Defaults        env_reset
Defaults        timestamp_timeout=5
Defaults        pwfeedback

Eu gosto do segundo método de organizar os ajustes, pois ele permite adicionar um comentário (com ‘#’) ao final de cada linha.
A forma mais comum de usar a palavra-chave é assim: Defaults. Mas em sistemas mais complexos, com um grande número de usuários, em que o sysadmin deseja delegar especificamente e com abrangência, há outras formas de uso. Veja:

  • Defaults parameter, parameter_list — # os parâmetros desta configuração afetam todos os usuários autenticados no host.
  • Defaults@Host_List parameter, parameter_list # afeta todos os usuários logados no especificado em @Host_List.
  • Defaults:User_List parameter, parameter_list #afeta todos os usuários especificados na lista :User_List.
  • Defaults!Cmnd_List parameter, parameter_list #afeta os comandos especificados na lista !Cmnd_List.
  • Defaults>Runas_List parameter, parameter_list #afeta comandos listados, desde que executados por um usuário específico.

Como criar um arquivo de log do sudo

Como comportamento padrão, o sudo envia o log ou relatório sobre o que ocorreu durante o seu uso para o syslog(3).
Opcionalmente, você pode criar um arquivo para receber este relatório.
Adicione a seguinte linha:


Defaults        logfile="/var/log/sudo.log"

Se quiser que o seu arquivo de log contenha informações sobre o host e o ano relacionados às ações relatadas, use assim:


Defaults        log_host,log_year,logfile="/var/log/sudo.log"

Para poder ver o conteúdo do seu novo arquivo de log, use o sudo e o cat:


sudo cat /var/log/sudo.log

Jun 12 15:32:09 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/ls
Jun 12 15:32:43 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/usr/sbin/visudo
Jun 12 15:34:46 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log

Leia mais dicas e truques para usar com o sudo:

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html.
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/.