anúncios

terça-feira, 5 de janeiro de 2021

Habilitando o comando sudo no Debian

O que sudo ?

O comando sudo do sistema Linux permite a usuários comuns obter privilégios de outro usuário, em geral o super usuário, para executar tarefas específicas dentro do sistema de maneira segura e controlável pelo administrador.

No Ubuntu o comando sudo já vem habilitado no usuário regular por padrão. No Debian não vem com o comando sudo instalado, no entanto é necessário logar diretamente como root primeiramente para executar tarefas administrativas no terminal, mas quando a máquina é compartilhada com alguns usuários que precisam executar comandos administrativos e você não quer fornecer o password de root, nesse caso entra o sudo, o qual pode configurar os comandos administrativos ao usuário regular.

Instalando o sudo

$ su -
# apt update
# apt install sudo


Habilitar o sudo ao usuário

# adduser seu-usuario -G sudo

Adicionar os usuários e comandos administrativos permitidos aos respectivos usuários.

# vim /etc/sudoers
seu-usuario ALL=(ALL:ALL) ALL
usuario2 ALL=(root) /bin/systemctl restart NetworkManager
usuario3 ALL=(ALL) /bin/systemctl restart apache2
ESC + :x (salvar e sair do editor Vim)

Feito!

segunda-feira, 4 de janeiro de 2021

Configurando Port Knocking no SSH

Mesmo ter alterado a porta default do SSH. Ainda é possível facilmente fazer a varredura de intervalos de portas para descobrir essa porta, mas com Port Knocking, você pode enganar os scanners de porta. Assim antes de conectar via SSH é necessário antes conectar a uma sequência de portas para poder desbloquear a porta especifica utilizada no SSH, que permite a conexão. Dessa forma é mais seguro e simples de implementar, com isso protege o seu servidor de tentativas de conexão SSH não autorizadas.

O objetivo deste howto é explicar a configuração do Port Knocking na distro Debian, mas pode ser feita no Ubuntu também.

Instalando os pacotes necessários

$ sudo apt update
$ sudo apt install openssh-server
$ sudo apt install knockd

Configurando a regra Iptables na porta SSH e Port Knocking

bloqueia-port-ssh.sh
#!/bin/bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP

$ chmod +x bloqueia-port-ssh.sh
# ./bloqueia-port-ssh

Configurar o Port Knocking

# vim /etc/knockd.conf
[openSSH]
sequence = 7001,8001,9001
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

Nesta seção, voce pode alterar a sequência de portas que precisam ser acionadas. Para esse exemplo, foi utilizado as portas 7001, 8001, 9001. Altere o seq_timeout = 5 para seq_timeout = 10, e para a seção cloneSSH, faça o mesmo para a linha seq_timout. Também há uma linha de sequência na seção closeSSH que você também precisa modificar.

Habilitar e inicializar o serviço knockd

# vim /etc/default/knockd

Altere de 0 na seção START_KNOCKD para 1

Iniciliza o serviço knockd

# service knockd start

Muito bem está instalado e configurado o Port Knocking. Agora para conectar no SSH, é necessário enviar pacotes nas portas definidas, nesse caso 7001,8001 e 9001.

$ telnet IPSERVIDOR 7001
$ telnet IPSERVIDOR 8001
$ telnet IPSERVIDOR 9001

Por fim, conecte no SSH

$ ssh usuario@ipservidor -p port

Para fechar o SSH, execute:

$ telnet IPSERVIDOR 9001
$ telnet IPSERVIDOR 8001
$ telnet IPSERVIDOR 7001

Feito!

domingo, 3 de janeiro de 2021

Conhecendo o FFmpeg

O que é FFmpeg?

FFmpeg é uma ferramenta de linha de comando gratuita e de código aberto para transcodificar arquivos multimídia. Incluindo o conjunto de bibliotecas compartilhadas de áudio e vídeo, como libavcodec, libavformat e libavutil. Com o FFmpeg, você pode converter formatos de vídeo e áudio, definir taxas de amostragem e redimencionar vídeos.

O presente tuturial explica como instalar o FFmpeg na distro Debian e serve também para os derivados do Debian, como o Ubuntu, e exemplos para converter arquivos de áudio e vídeo.

Instalando o FFmpeg no Debian e derivados

Primeiramente, atualizar a lista de repositório do sistema

$ sudo apt update

Próxima etapa é instalar via gerenciador de pacotes do Debian e derivados

$ sudo apt install ffmpeg

Verificar a versão do FFMpeg instalada

$ ffmpeg -version

Para exibir os encoders e decoders do FFmpeg

$ ffmpeg -encoders
$ ffmpeg -decoders

Convertendo arquivo de áudio e vídeo

Após instalar o FFmpeg, veremos alguns exemplos para converter arquivos de vídeo e áudio.

Ao converter arquivo de áudio e vídeo com FFmpeg, você não precisa especificar os formatos de entrada e saída. O formato do arquivo de entrada é detectado automaticamente e o formato de saída é calculado a partir da extensão do arquivo.

Converter um arquivo de vídeo .mp4 para .webm

$ ffmpeg -i input-file.mp4 output-file.webm

Converter um arquivo de áudio .mp3 para .ogg

$ ffmpeg -i input-file.mp3 output-file.ogg

Especificando codecs

Ao converter arquivos, você pode especificar os codecs que deseja usar com a opção -c. O codec pode ser o nome de qualquer decodificador ou codificador compatível ou uma cópia de valor especial que simplesmente copia o fluxo de entrada.

Convertendo um arquivo de áudio .mp4 para .webm usando o codec de vídeo libvpx e codec de áudio libvorbis

$ ffmpeg -i input-file.mp4 -c:v libvpx -c:a libvorbis output-file.webm

Convertendo um arquivo de áudio .mp3 para .ogg codificado com o codec libopus

$ ffmpeg -i input-file.mp4 -c:a libopus output-file.ogg

Convertendo URL RTSP Live stream para HLS

Se você quer exibir uma live RTSP para um browser, você pode fazê-lo transcodificando-o para HLS. Você pode usar o FFmpeg para fazer isso.

$ ffmpeg -fflags nobuffer \
-rtsp_transport tcp \
-i <sua URL RTSP> \
-vsync 0 \
-copyts \
-vcodec copy \
-movflags frag_keyframe+empty_moov \
-an \
-hls_flags delete_segments+append_list \
-f segment \
-segment_list_flags live \
-segment_time 0.5 \
-segment_list_size 1 \
-segment_format mpegts \ -segment_list <diretório-destino>/index.m3u8 \
-segment_list_type m3u8 \
-segment_list_entry_prefix <diretorio-destino>/ \
<diretorio-destino>/%3d.ts

Depois de executar este comando, você encontrará o arquivo index.m3u8 junto com vários .ts (arquivos de segmento) no diretório destino que especificou no comando. O index.m3u8 é o arquivo playlist e os arquivos .ts são os fragmentos. Você precisa servir esses arquivos usando um servidor HTTP (Apache, Nginx ou qualquer outro). Para exibir este vídeo em um navegador, você precisa incluir este arquivo index.m3u8 na tag de vídeo em sua página HTML, conforme o exemplo abaixo.

<video id="video-player" controls preload="none"> <source src="/diretorio-destino/index.m3u8" type="application/x-mpegURL"> </video>

Uma vez feito isso, acesse até a página HTML do seu navegador, você será capaz de ver a transmissão ao vivo no Windows, Linux e macOS, sem nenhum plugin.

No diretorio-destino é o DocumentRoot que corresponde o diretório do servidor HTTP, no caso do Apache e Nginx, o DocumentRoot default é /var/www/html. Caso tenha diversos vídeos a ser transmitidos ao vivo para os usuários (clientes) acessarem no navegador, uma sugestão é criar dois diretórios a partir do DocumentRoot default, o primeiro sendo lives e o segundo sendo o titulo da live correspondente.

Ex: /var/www/html/lives/titulolive. Esse seria o diretório destino que poderia especificar no comando para converter RTSP para HLS. Assim no navegador, os usuários (clientes) podem acessar: https://dominio.com/lives/titulolive

Conclusão

Você instalou com sucesso o FFmpeg no Debian ou Ubuntu. Agora você pode acessar a página de documentação oficial do FFmpeg e aprender como usar o FFmpeg para converter seus arquivo de vídeo e áudio.

Como bônus aprendeu como converter URL RTSP para HLS usando FFmpeg e exibir na página web.

Feito!

quarta-feira, 16 de dezembro de 2020

Conhecendo o xrandr

O que é xrandr?

O xrandr é uma ferramenta de linha de comando para configuração de resoluções do monitor com base da placa de vídeo que tiver instalado no computador com Linux (Debian/Ubuntu).

Uso do xrandr

Para listar as resoluções permitidas que a placa de vídeo suporta

$ xrandr

Para poder utilizar uma resolução que não está listada no resultado do comando anterior. Antes precisa informar ao xrandr que é necessário calcular as coordenadas da tela e passar mais informações para criar o novo modo.

$ cvt 1920 1080 60

Aqui foi informado que pretende as informações para a resulão de 1280 horizontal, 800 vertical a 60hz.

1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Para habilitar automaticamente

$ xrandr --auto

Para adicionar uma resolução com base do cvt

Após adicionar a resolução não listada no cvt, pode-se adicionar esse modo de resolução ao xrandr. A parte que interessa para o xrandr é a que vem após o "Modeline".

$ xrandr --newmode "1280x800_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Não deve retornar nenhuma mensagem no terminal, caso esteja correto. Se retornar, reveja os procedimentos anteriores.

Para adicionar uma resolução

$ xrandr --addmode LVDS-1 1920x1080_60.00

Para alterar uma resolução

$ xrand --mode 1280x768

$ xrandr --output LVDS-1 --mode 1920x1080_60.00

Feito!

sexta-feira, 11 de dezembro de 2020

Conhecendo o Inxi

O que é Inxi?

Inxi é uma ferramenta que mostra informações de hardware,incluindo fornecedor, configuração de drivers, etc do computador com sistema operacional Linux.

Instalação do Inxi

Debian/Ubuntu

$ sudo apt install inxi

Algumas opções do inxi

  • -A: informações sobre áudio.
  • -b: informações básicas sobre o sistema.
  • -d: exibe lista dos drives ópticos (leitor e gravador de CD, DVD por exemplo).
  • -D: exibe informações sobre detalhes do HD, como modelo e capacidade.
  • -F: informações mais detalhadas sobre o sistema.
  • -G: informações sobre vídeo.
  • -n: informações sobre as interfaces de rede.
  • -p: informações sobre as partições do HD.

Com o inxi instalado, utilize uma das opções mencionadas.

$ inxi -F

Feito!

Transformando o CentOS em Oracle Linux

Em 8 de dezembro de 2020, foi anunciado o cronograma para o patrocínio do CentOS Linux e do CentOS Stream pela Red Hat:

  • Não haverá CentOS Linux 9.
  • As atualizações para a distribuição CentOS Linux 8 continuam até 31 de dezembro de 2021.
  • As atualizações para a distribuição CentOS Linux 7 continuam como antes até 30 de junho de 2024.
  • As atualizações para a distribuição CentOS Linux 6 terminaram em 30 de novembro de 2020.
  • O CentOS Stream 9 será lançado no segundo trimestre de 2021 como parte do processo de desenvolvimento do RHEL 9.
  • As atualizações para a distribuição do CentOS Stream 8 continuam durante toda a fase de suporte RHEL.

Uma opção seria transformar o CentOS que tem no servidor em Oracle Linux, para isso, execute como root os procedimentos abaixo:

# curl -O https://linux.oracle.com/switch/centos2ol.sh

# sh centos2ol.sh

# yum distro-sync

Pronto, o CentOS, agora é Oracle Linux.

Referências:

https://www.redhat.com/en/blog/faq-centos-stream-updates

https://www.zdnet.com/google-amp/article/red-hat-resets-centos-linux-and-users-are-angry/

Feito!

sábado, 5 de dezembro de 2020

Configurando o ambiente PHP 8 do jeito certo no Windows

PHP 8 do jeito certo no Windows 10

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.

Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 8.0.0.

Extrair, renomear para php-8.0.0 e copiar para C:\

Acessar C:\php-8.0.0 e renomear o arquivo php-development.ini para php.ini

session.save_path = "c:\Windows\Temp"
file_uploads = On
upload_max_filesize = 10M
max_file_uploads = 10M

Extensões

diretório das extensões

extension_dir="ext"

Habilitar as extensões. Por padrão vem comentadas, basta retirar o (ponto-e-vírgula ;) na frente.

extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_pgsql
extension=sockets

Habilitar os erros

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_erros = On

Habilitar o JIT

opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255

Adicionar no PATH do SO

Botão direito em "Meu Computador", Propriedades, Configurações avançadas do sistema, Variáveis de Ambiente, PATH, Novo e coloca o caminho "C:\php-8.0.0". Clique em OK. Feche todas as janelas restantes clicando em OK.

Abre o PowerShell e digite: php --version

PHP 8.0.0 (cli) (built: Nov 25 2020 22:02:58) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

Crie um diretório www no lugar desejado e crie um arquivo info.php

<?php
phpinfo();

No diretório www, execute: php -S 127.0.0.0:8000

No browser, acesse http://localhost:8000

Feito!