Arquivo anual 5 de junho de 2018

porplague70

Gerando Sua Chave Pública SSH.

Gerando Sua Chave Pública SSH

Vários servidores Git autenticam usando chaves públicas SSH. Para fornecer uma chave pública, cada usuário no seu sistema deve gerar uma se eles ainda não a possuem. Este processo é similar entre os vários sistemas operacionais. Primeiro, você deve checar para ter certeza que você ainda não possui uma chave. Por padrão, as chaves SSH de um usuário são armazenadas no diretório ~/.ssh. Você pode facilmente verificar se você tem uma chave indo para esse diretório e listando o seu conteúdo:

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

Você está procurando por um par de arquivos chamados algo e algo.pub, onde algo é normalmente id_dsa ou id_rsa. O arquivo .pub é a sua chave pública, e o outro arquivo é a sua chave privada. Se você não tem estes arquivos (ou não tem nem mesmo o diretório .ssh), você pode criá-los executando um programa chamado ssh-keygen, que é fornecido com o pacote SSH em sistemas Linux/Mac e vem com o pacote MSysGit no Windows:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a [email protected]

Primeiro ele confirma onde você quer salvar a chave (.ssh/id_rsa), e então pergunta duas vezes por uma senha, que você pode deixar em branco se você não quiser digitar uma senha quando usar a chave.

Agora, cada usuário que executar o comando acima precisa enviar a chave pública para você ou para o administrador do seu servidor Git (assumindo que você está usando um servidor SSH cuja configuração necessita de chaves públicas). Tudo o que eles precisam fazer é copiar o conteúdo do arquivo .pub e enviar para você via e-mail. As chaves públicas são parecidas com isso.

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== [email protected]

Para um tutorial mais detalhado sobre criação de chaves SSH em vários sistemas operacionais, veja o guia do GitHub sobre chaves SSH no endereço http://github.com/guides/providing-your-ssh-key.

porplague70

Enhanced e-mail SPAM protection in ISPConfig 3

The command below enables a stricter SPAM handling for postfix on ISPConfig 3 servers.

In Detail:

  • Reject sender hostnames with invalid syntax
  • Reject sender hostnames that are no fully qualified domains (e.g. reject “server1” but allow server1.domain.tld)
  • Reject sender domains that have no DNS records
  • Check sender IP addresses against realtime blacklists.

First make a backup of the postfix main.cf file in case that you want to reverse the changes later:

cp -pf /etc/postfix/main.cf /etc/postfix/main.cf.bak

Then execute this command to enable the additional spam protection functions (the command is one line!).

postconf -e ‘smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_rbl_client cbl.abuseat.org,reject_rbl_client dul.dnsbl.sorbs.net,reject_rbl_client ix.dnsbl.manitu.net, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination’

Then restart postfix:

/etc/init.d/postfix restart

porplague70

SUBSTITUIR STRING COM SED

Vc não fechou o comando … note que vc abre a instrução do SED com aspas simples, logo vc tem que fechar

sed 's/antigo/novo/g' arquivo

jogando pra um arquivo.

sed 's/antigo/novo/g' arquivo > arquivo.new
porplague70

Como adicionar uma linha ao crontab tab diretamente pela linha de comando

Sem utilizar a edição via crontab -e (comando abre o conteúdo do cron no seu editor para edição), é possível diretamente da linha de comando adicionar uma nova linha ao crontab. Abaixo um exemplo:

?
$ (crontab -l; echo "30 04 * * 4 /home/data/drall/backups/report.sh 2>&1") | crontab -

A manha é justamente executar 2 comandos em um subshell agrupados por “(” e “)”. O primeiro comando, crontab -l, obtem os comandos atualmente existente no crontab. O comando echo em seguida emite o novo comando. A junção dos dois é feita e estas saídas se tornam via pipe a entrada padrão para o comando crontab, que efetuará o salvamento de todo o novo conteúdo em seu registro.

Também é possível adicionar via comandos salvo em um arquivo:

$ cat /tmp/cron | crontab -
porplague70

Mandar e-mail via linha de comando no Linux.

Mandar e-mail via linha de comando no Linux

Todo mundo fica dizendo que e-mail é coisa do passado e que o futuro mesmo é utilizar as redes sociais e a Web 2.0 (lol) para se comunicar. Mas a verdade é que o e-mail ainda é muito útil e acredito que vai demorar bastante tempo para que isso mude. No pior dos casos, e-mail ainda continua sendo uma boa forma de registro e notificação.

E no caso da notificação, enviar e-mail via linha de comando do Linux é bastante útil. Terminou uma tarefa no crontab? Envia um e-mail com o resultado. Caiu um servidor? Envia um e-mail para alguém notificando. Ou então querer apenas testar um servidor de e-mail local? É só usar a imaginação.

Como todos sabemos, o Linux conta com o recurso de shell, que por sua vez permite criar poderosos programas que são chamados de shell scripts. Vejamos aqui esta pequena dica de como enviar e-mail via linha de comando.

O comando mail

O comando mail será usado aqui primeiramente. Ele está contido no pacote mailx, geralmente em todas as distribuições (Debian por exemplo, é o bsd-mailx, Red Hat/Fedora seria apenas mailx). Além disso, é necessário um servidor de e-mail local, o que é comum em todas as distribuições Linux por aí.

Mandando um e-mail com o comando mail, manualmente, via linha de comando:

mail -s "Assunto Teste" [email protected]

O parâmetro -s especifica o assunto da mensagem. Coloque entre aspas como no exemplo para que ele reconheça todo o assunto com espaços. O último argumento é o endereço para quem se vai enviar a mensagem.

Quando você der ENTER, não vai aparecer nada e nem vai voltar pro prompt. Digite então toda a sua mensagem e quando terminar, aperte CTRL+D. Vai aparecer um “Cc:“, que significa que se você quiser enviar cópia para alguém, basta colocar agora. Aperte ENTER e vói-lá! A mensagem foi para o destinatário (bem, pelo menos era pra ir!).

Agora vamos utilizar um modo mais rápido e não-interativo de se mandar o mesmo e-mail:

echo "Isto é um e-mail de teste" | mail -s "Assunto Teste 2" [email protected]

Agora ao invés de você ter que digitar, ele já joga a mensagem “Isto é um e-mail de teste” no corpo e manda o e-mail. Isso serve para você acoplar justamente em um shell script sem ter que precisar que alguém digite alguma coisa na hora.

Mas o echo ainda é limitado para mensagens grandes, então vamos ler de um arquivo:

mail -s "Assunto Teste 3" [email protected] < /var/log/syslog

Ele usou um redirecionador (mais sobre eles no artigo Shell: Entrada e Saída) para que o conteúdo do arquivo /var/log/syslog se tornasse o corpo da mensagem. Mais uma vez, você pode usar um shell-script para gerar o arquivo com o conteúdo que você quiser e depois mandar por e-mail.

Há outros parâmetros no comando mail também. Para ver todos, basta ler a boa e velha página de manual (man mail).

Outro exemplo:

echo 'Maravilha!' | mail -s "Assunto Teste 4" [email protected] \

Neste caso, mandei um e-mail para [email protected], com cópia para [email protected] e [email protected] (vários e-mails separados por vírgula) e uma cópia oculta para [email protected].

O comando mail faz parte do sistema padrão de e-mails locais que é utilizado há vários anos pelos sistemas Unix em geral. Por isso, o campo From, ou seja, o Remetente da mensagem vai ser o usuário que está executando o comando, mais o nome completo da máquina. Exemplo, se eu sou o usuário eitch, na máquina batima.devin.com.br, quer dizer que o Remetente será: [email protected].

Anexos com o mutt

Como nem tudo são flores, na hora de mandar arquivos anexos junto a mensagem, o comando mail não suporta essa funcionalidade. Neste caso, geralmente o pessoal utiliza o cliente de e-mail de linha de comando mutt.

icon nota Mandar e mail via linha de comando no Linux
NOTAO mutt é na verdade um cliente de e-mail para linha de comando completo. Pode ser que sua distribuição Linux não tenha esse programa instalado. Então se o comando mutt não for encontrado, instale o programa junto à sua distribuição (com o apt-get, yum, ou outros).

O comando é bem parecido com o do mail:

echo "Assunto Anexo" | mutt -s "Assunto Teste 5" -a arquivo.zip [email protected]

O parâmetro -a é quem cuida dos anexos. No caso de enviar vários anexos, é necessário também que o -a fique antes do destinatário, seguido por “–”, assim:

echo "Assunto Anexo" | mutt -s "Assunto Teste 6" \
-a /home/eitch/imagem.jpg /var/log/syslog /home/eitch/arquivo.zip -- [email protected]

Via um servidor SMTP

Não são todos os sistemas que tem um servidor de e-mail local. Por exemplo, algumas máquinas de hostings não possuem um sendmail, postfix ou qmail instalados e prontos para usar. Em outros casos, organizações preferem ficar sem o servidor de e-mail de cada máquina e concentrar tudo em uma única file de e-mail, um único servidor de e-mail na rede. Este caso do servidor de e-mail único é bem comum.

SMTP – Simple Mail Transfer Protocol é o protocolo para envio de e-mails e um servidor SMTP é justamente o que recebe os e-mails e repassa para outros servidores necessários. Não vou me aprofundar muito no assunto SMTP, mas vamos aprender um pouco como usá-lo diretamente.

icon nota Mandar e mail via linha de comando no Linux
NOTAPara fazer essa parte, você precisa ter um servidor STMP já funcionando. Neste tutorial, usaremos como exemplo o smtp.devin.com.br, que é fictício. Substitua este servidor pelo seu.

Pra enviar o e-mail, vamos primeiro conversar diretamente com o servidor SMTP através do comando nc. O nc é o comando netcat e serve para abrir conexões TCP puras e transferir dados para ela (como se fosse um telnet não-interativo). Se o comando nc não existir na sua máquina, instale-o dos repositórios, já que vem em praticamente todas as distribuições Linux.

Exemplo de script shell para mandar e-mail via nc:

#!/bin/bash
#
cat <<EOF | /usr/bin/nc smtp.devin.com.br 25
HELO $(hostname)
MAIL FROM: <[email protected]>
DATA
From: Hugo Cisneiros (Eitch) <[email protected]>
To: Nome do Destino <[email protected]>
Date: $(date '+%a, %d %b %Y %H:%M:%S %z')
Subject: Assunto da mensagem
Content-Type: text/plain; charset=UTF-8
                                                                                                                                                                                              
Fala Destinatário!
Estou mandando este e-mail via shell script, usando o nc diretamente pelo SMTP.
Legal né?
Abraços!
.
QUIT
EOF

O que fizemos no exemplo é conversar usando o protocolo SMTP.

  • Na linha 3 usamos o comando cat para capturar tudo o que digitarmos, até haver uma linha EOF (End Of File). Pense nisso como se fosse um comando echoextendido. Depois repassamos todo esse texto via pipe para o comando nc smtp.devin.com.br 25, que conecta ao servidor SMTP na porta 25. Para aprender mais sobre o pipe veja o Shell: Entrada e Saída;
  • A linha 4 identifica quem é você. O comando hostname identifica-o com o nome da sua máquina;
  • As linhas 5-6 contém de quem é o e-mail (MAIL FROM) e qual o destino (RCPT TO);
  • A linha 7, com o comando DATA, especifica que tudo que tiver a partir da próxima linha serão os dados do e-mail. Estes dados terminam quando houver uma linha apenas com o caracter ponto (.), que vai significar que o e-email acabou e pode ser mandado;
  • As linhas 8-12 contém o cabeçalho do e-mail. Cada cabeçalho é uma linha. No exemplo temos o nome da pessoa que enviou, do destinatário, a data atual (gerada automaticamente pelo comando date), o assunto (Subject) da mensagem e a codificação da mensagem (para a acentuação do português) não sair estranha. Os cabeçalhos acabam quando uma linha em branco é recebida;
  • As linhas 14-20 são o corpo da mensagem. Engloba tudo depois da linha em branco que finaliza o cabeçalho, até o caracter ponto que termina o e-mail.
  • A linha 21, já falada, termina o e-mail. Ao receber o ponto, o servidor SMTP já coloca a mensagem na fila para o envio. A partir daí você pode enviar outro e-mail (começando com o MAIL FROM), ou sair, como na próxima linha com o comando QUIT.
  • Na última linha, o EOF avisa ao cat que acabou o texto e o manda para o comando nc, como diz a linha 3.

Até que é fácil né? Basta agora ir substituindo os campos de e-mail e testando. Esse método com o comando nc é o ideal para utilizar junto com shell-scripts em servidores. Ele só não serve muito bem para mandar anexos, pois transformar os anexos para mandar via nc não é algo trivial de se fazer.

porplague70

Instalação do Zabbix 3.0.x/3.2.x/3.4 no Debian 8 Jessie

O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.

Distribuição utilizada: Debian 8 (Jessie) / Instalação Limpa (Tutorial de instalação aqui)

Vamos a instalação do pacote que irá atualizar nosso repositório com as fontes do Zabbix assim vai ficar fácil atualizar posteriormente.
Versão 3.4.X

# wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+jessie_all.deb
# dpkg -i zabbix-release_3.4-1+jessie_all.deb

Versão 3.2.X

# wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie_all.deb
# dpkg -i zabbix-release_3.2-1+jessie_all.deb

Versão 3.0.X

# wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb
# dpkg -i zabbix-release_3.0-1+jessie_all.deb

Atualize o repositório:

# apt update

Instalando os pacotes do Zabbix Server com banco de dados MySQL e interface web Apache.

# apt install zabbix-server-mysql zabbix-frontend-php

screenshot_20160910_191607

Serão instalados diversos pacotes entre eles o apache e mysql-server.

screenshot_20160910_191808

Será solicitado a senha do usuário root do MySQL, após repita.

screenshot_20160910_191819

Vamos intalar nosso agente também.

# apt install zabbix-agent

Vamos criar uma base de dados chamada zabbix e um usuário também chamado de zabbix no MySQL.

# mysql -uroot -p
1
2
3
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'SENHA';
quit;

Importe o esquema de tabelas e dados padrões.

# cd /usr/share/doc/zabbix-server-mysql
# zcat create.sql.gz | mysql -u root zabbix -p

Digite a senha de seu usuário zabbix criada no passo anterior para importar as tabelas.

Agora vamos editar o arquivo zabbix_server.conf para informar os dados para conexão com o MySQL.

# vim /etc/zabbix/zabbix_server.conf
1
2
3
4
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=SENHA

Iniciando o Zabbix Server e o Agente.

# /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agent start

Editando a configuração do PHP para a interface web do Zabbix

A configuração do Apache para a interface web do Zabbix está localizada em /etc/apache2/conf-enabled/zabbix.conf. Algumas das configurações do PHP já estão definidas, para alterar edite:

# vim /etc/apache2/conf-enabled/zabbix.conf
1
2
3
4
5
6
7
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone America/Sao_Paulo

É necessário que se remova o comentário na linha do parâmetro “date.timezone” e que se defina o timezone apropriado (America/Sao_Paulo para a maioria dos estados brasileiros). Após a alteração do arquivo de configuração será necessário o reinicio do processo do servidor web (Apache).

# /etc/init.d/apache2 restart

A interface web do Zabbix estará disponível em http://SEU-IP/zabbix através do seu navegador.
O usuário e senha padrões são: Admin/zabbix

screenshot_20160910_193954

[Next step]

screenshot_20160910_194002

Tudo deve estar ok [Next step]

screenshot_20160910_194011

Informe sua senha de conexão ao MySQL. [Next step]

screenshot_20160910_194018

[Next step]

screenshot_20160910_194024

[Next step]

screenshot_20160910_194028

[Finish]

screenshot_20160910_194043

Usuário: Admin Senha: zabbix

screenshot_20160910_194105

Zabbix instalado! ?

porplague70

Senha do WebGUI e Console do PFSense foram perdidas, o que fazer.

Bom, vamos ao que interessa….

1– Reinicie o PFSense
2– Ao iniciar, selecione a opção “Single User Mode” no menu de boot. (dependendo da versão pode ser a opção 2 ou 4)
3– Fique atento após selecionar essa opção, pois no decorrer do processo de inicialização irá aparecer “Start /bin/sh”, então pressione “Enter”
4– Remonte as unidades de forma que seja possível sobrescrever os dados
/sbin/mount/ -o rw / (após pressione enter)
5– Em seguida digite o comando de reset de password
/etc/rc.initial.password
Após pressionar enter, siga os passos solicitados pelo Wizard.
6– Ao concluir reinicie
/sbin/reboot

Agora seu PFSense estará acessível com o usuário “admin” e a senha “pfsense”.