Dica rápida – Verificar pastas que ocupam mais espaço

Bom essa dica é bem simples mas muito útil, vamos usar uma combinação de comandos para listar as 5 pastas que mais utilizam espaço no diretório corrente. O bom comando seria esse:

Saida:

Explicando:

O comando du faz a verificação do uso das pastas em si;
O comando sort faz a ordenação do maior pro menor;
E o comando head mostra os 5 primeiros, pode ser usado qualquer quantidade.

Se alguém tiver dúvidas quanto as opções usadas, basta digitar o nome do comando –help, que terá todas as informações.

Gerar lista de pacotes instalados no Debian, Ubuntu, etc

Para gerar uma lista dos pacotes instalados no sistema, poderemos usar o dpkg para isso. Pode ser muito útil na hora de criar sistemas com a mesma base

Gerando lista de pacotes

Instalando pacotes a partir da lista

Fonte

Limitando e atualizando limites de memória e CPU no docker

Bom hoje vamos seguir com nosso aprendizado em docker, já vimos sobre comandos básicos, iniciar servidor apache, exportar e importar containers e agora a dica é bem simples porém muito útil. Toda vez que subimos um container sem colocar limites nos recursos, o container pode usar todo o recurso da máquina fisica, isso nem sempre é bom, seja por onerar o host ou mesmo para testes da sua aplicação. Então vamos as dicas.

Antes da dica, vamos a outra dica :), com o comando docker stats podemos ver o consumo de nossos containers:

Agora vamos as nossas dicas de hoje.

Limitar memória do container

Limitar CPU do container

Atualizar limites de container em execução

Alterando limite de memória

Atualizar limite CPU

Sempre lembrando que para pegar o id do container basta executar docker ps.

Iniciando servidor web PHP e Mysql com Docker

De uma maneira muito rápida podemos iniciar um servidor web para testarmos aplicações, páginas, sistemas, etc. Para isso precisaremos de duas ferramentas:

  • Docker
  • Docker Compose

Vou levar em consideração de já tenha os mesmos instalados, pois cada sistema tem seu próprio gerenciador de pacotes e não vou especificar isso no momento.

Iniciando

DockerFile

Para iniciar criaremos um Dockerfile, para quem não está muito familiarizado pode ver um post com comandos básico do docker aqui. Usaremos uma imagem base do Docker Hub, a tutum/lamp.

Docker Compose

Agora na mesma pasta iremos criar o arquivo docker-compose.yml. Com o conteúdo abaixo:

Ps: Lembre de verificar se os caminhos dos arquivos estão corretos em seu sistema, pode variar de linux para linux.

Subindo a aplicação

Subiremos a aplicação com o seguinte comando:

Basta acessar seu localhost, ou ip de sua máquina que o servidor estará UP. A pasta onde foi criado os arquivos anteriores será a pasta raíz do servidor web. Ao iniciar será gerado uma saída parecido com a abaixo:

Fonte

Monitoramento via TCP no Nagios

Hoje vamos dar seguinte a configuração do Nagios que instalamos um tempo atrás.

Iniciaremos por um dos monitramentos mais simples que é o monitoramento via TCP, caso tennha alguns sites e queira monitorar caso algum deles caia, será muito útil.

Bom a estrutura do Nagios é bem simples mas não mostrarei hoje, para melhorar nos organizarmos vamos criar um arquivo de template próprio, dentro da pasta /usr/local/nagios/etc. Aqui no meu caso crei o arquivo templatesNagios.cfg. Já com o template do servico de monitoramento e templates para monitorar linux, windows e hosts de rede.

Feito isso precisamos adicionar nosso arquivo de configuração no arquivo /usr/local/nagios/etc/nagios.cfg

Agora dentro da pasta /usr/local/nagios/etc/ criaremos a pasta network, onde adicionaremos todos os nossos hosts para monitoramento via TCP. Criaremos em outro momento uma pasta linux e uma windows, ficando muito mais organizada nossas configurações. Também precisamos adicionar esse caminho no arquivo /usr/local/nagios/etc/nagios.cfg

Dentro da pasta network vamos criar nosso primeiro host para monitorar. Vou criar o arquivo sidneiweber.cfg com o conteúdo abaixo. As opções são auto explicativas, mas comentei para facilitar o entendimento.

Após essa configuração basta verificar se está tudo configurado sem erros com o comando:

Se não retornar nenhum erro, basta iniciar o serviço do nagios:

Caso o serviço já esteja rodando e precise reiniciar, eu faço da seguinte maneira:

Pronto, primeiro serviço monitorado, e isso pode ser feito com qualquer site ou serviço de ping, uma monitoração simples, mas não deixa de ser um monitoramento.

 

 

Script instalação automatizada Nagios no Debian

Script para instalação do Nagios e Nagios plugins no Debian baixando o código fonte. Script está funcional, porém pode vir a melhorar.

Retirado de https://github.com/sidneiweber/meu-canivete-suico/blob/master/nagios/instalar-nagios-debian.sh

 

Emmi Linux – Uma distribuição pequena e leve

Hoje vou falar um pouco sobre essa distribuição que conheci e acabei me envolvendo no projeto: Emmi Linux. Bom segue palavras do próprio autor do projeto, Jefferson Rocha:

Assim como Debian todas versões serão LTS, com suporte ativo por 5 anos.

Leve, um computador de 1 GB de ram vai rodar muito bem a Emmi, então aquele computador de 2007 vai ser ressucitado e vai ter um novo folego!
O tamanho da iso é muito importante para nós, com apenas 700 mb, o que para as distros de hoje é dificil achar uma iso com este tamanho.

Ambiente totalmente moderno e leve com XFCE.
Não vamos de maneira alguma empurrar pacotes pré instalados, a distribuição vem com a base e alguns utilitarios, o resto o usuário pode moldar como querer do seu jeito, esse é o foco da distro, ou seja sabe aquela porrada de programas muitas vezes que não usamos nem uma parte que vem junto com algumas distribuições? na Emmi não vem.
Boot e poweroff, incrivelmente rápido.

Assim como Debian não incentivamos os usuários a instalar pacotes fora do repositorio, ppa? muito menos.
Pacotes que não tem no Debian nos vamos testar, empacotar e disponibilizar em nosso repositorio. (não temos ainda um repositorio proprio, mas está nos planos já.)

Agora falando em facilidade para usuários novos e leigos, a distribuição tem tudo para ser até mais fácil que o Linux mint, o plano é esse.

Bom de resto é testando para você ver.

Basicamente é isso, nossa proposta é diferente, com tempo tudo se acerta.

Emmi Linux

Realmente o sistema está muito bonito e fluído, vale a pena testar. Em breve postarei um review sobre a distro com mais detalhes.

Link para site: Emmi Linux

 

Knock SSH – Adicionando uma camada extra de segurança no servidor

Hoje vamos falar do Knock, uma ferramenta muito interessante para quem precisar acessar seus servidores remotamente. Bom o que o Knock faz, ele adiciona essa camada a mais da seguinte forma, por exemplo se acessamos nosso servidor pela porta 22 do ssh ela deveria estar liberada. Porém com Knock ela pode estar bloqueada, você acertando uma sequência específica de portas ele irá liberar a porta 22, e somente se acertar a sequencia definida.

No servidor

Precisamos instalar somente um pacote em nosso servidor:

O arquivo de configuração fica no /etc/knockd.conf. Eis a configuração padrão que veio no Debian.

Eu alterei para a configuração ficar como no exemplo abaixo, sempre colocando a regra de ACCEPT na primeira linha, pois caso tenha sido bloqueada e seja adiciona no final do arquivo a regra não funcionará.

 

Após editaremos o arquivo /etc/default/knockd para especificar nossa placa de rede:

Feito a configuração reiniciaremos o serviço:

Caso não tenha a porta 22 fechada, vamos fecha-lá. Lembrando que isso deve estar no script firewall do seu servidor.

No cliente

No cliente instalaremos o mesmo utilitário, porém sem precisar fazer as configurações feitas anteriormente.

Agora vamos bater nas portas em sequência conforme configurado no nosso servidor (7000, 8000, 9000)

Com as batidas corretamente executadas, podemos verificar o log do nosso servidor e veremos que o foi passado por 3 estágios e após os mesmos estarem corretos, nosso porta 22 foi liberada pelo firewall

E assim podemos conectar normalmente sem bloqueio nenhum.

Fechando a porta

Depois de fazer tudo que era necessário podemos fechar a porta novamente, acertando a sequência de fechamento que também é incluida no nosso arquivo de configuração do servidor.

E a porta será fechada novamente conforme o log nos informa:

E era isso, acredito que seja uma camada bem interessante para nossos servidores e o mais importante, não colocando portas padrões na configuração, será muito mais dificil acertar a sequência para poder liberar o ssh.

Fonte

Um forte abraço

Instalando servidor DHCP

Definição:

Resumidamente, o DHCP opera da seguinte forma:

  • Um cliente envia um pacote UDP em broadcast (destinado a todas as máquinas) com uma requisição DHCP (para a porta 67);
  • Os servidores DHCP que capturarem este pacote irão responder (se o cliente se enquadrar numa série de critérios — ver abaixo) para a porta 68 do Host solicitante com um pacote com configurações onde constará, pelo menos, um endereço IP, uma máscara de rede e outros dados opcionais, como o gateway, servidores de DNS, etc…

Fonte: Wikipedia

Esse seria o desenho dos envios de pacotes de um cliente para um servidor DHCP.

http://www.comutadores.com.br

Instalação:

Iremos fazer a instalação do nosso servidor no Debian. Para tal operação iremos instalar o pacote isc-dhcp-server, que substituiu o pacote dhcp-server3.

Configurando:

Primeiramente editaremos o arquivo: /etc/default/isc-dhcp-server e colocaremos a placa de rede interna na configuração:

A configuração básica para o funcionamento é tão simples quanto a instalação. Editaremos o arquivo /etc/dhcp/dhcpd.conf. Acrescentaremos as opções básicas para o funcionamento.

Explicando:

Subnet: Iniciaremos uma sub-rede para ceder IP’s.
Range: A faixa de IP’s que será distribuida.
Option Routers: Configura a rota padrão.
Option domain-name-servers: Configura os servidores DNS.Option broadcast-address: Indica o fim da sub-rede.

Alguns outros parâmetros básicos que já vem no arquivo por padrão:

Option domain-name: domínio.

Default-lease-time: Tempo que o servidor verifica se o IP ainda está em uso.

Max-lease-time: Tempo máximo de um IP.

Agora é só salvar o arquivo que editamos e reiniciar o serviço:

Pronto teremos um servidor DHCP dando IP para a nossa rede. Ainda temos algumas opções criar duas redes distintas dentro do mesmo servidor, atrelar IP’s ao Mac Address, negar máquinas que não estejam cadastradas no servidor DHCP, enfim, inúmeros recursos que estudaremos mais adiante.

Obrigado e até a próxima.

Introdução Firewall Iptables – Começando

Firewall Iptables

Conceito de Firewall:

O firewall é usado basicamente como um meio de proteção. Dividindo a rede que se pretende deixar segura da rede não segura.
Geralmente um firewall é instalado na borta da rede, sendo a entrada e saida dos pacotes da mesma, fazendo a leitura de cada pacote e fazendo o controle do que pode passar para rede interna, ou dando o  redirecinamento correto, servindo de filtro.

O iptables é a ferramenta de firewall a nivel de pacotes do linux desde o kernel 2.4 substituindo o ipchains.
Ele se baseia nas regras e parametros passados para fazer a filtragem dos pacotes, ou seja, compara as regras com os pacotes.

Para termos uma segurança maior, incluindo um controle de navegação na rede interna, uma dupla muito usada e que combina muito bem, é a dupla Iptables + Squid. Squid é um proxy de navegação, mas essa solução falaremos em outra oportunidade

Tabelas:

Tabelas são os locais usados para armazenar as chains e conjunto de regras com uma determinada característica em comum. As tabelas podem ser referenciadas com a opção -t tabela e existem basicamente 4 tabelas disponíveis no iptables:
Tabela FILTER: possui cadeias INPUT, OUTPUT, FORWARD
Tabela NAT: possui cadeias PREROUTING, OUTPUT, POSTROUTING
Tabela MANGLE: cadeias PREROUTING, OUTPUT, POSTROUTING, INPUT, FORWARD
Tabela RAW: cadeias PREROUTING, OUTPUT

O que são chains?

As Chains são locais onde as regras do firewall definidas pelo usuário são armazenadas para operação do firewall.

INPUT: aplica regra aos pacotes que chegam ao servidor

OUTPUT: aplica regras aos pacotes de rede originados e que partem do servidor

FORWARD: aplica regras aos pacotes de rede roteados atraves do servidor (para outro servidor ou outra interface do mesmo servidor)

PREROUTING: altera pacotes de rede na hora que chegam e antes do roteamento

POSTROUTING: altera pacotes de rede após o roteamento. Usado para SNAT

Politicas, ações (targets):

ACCEPT: pacote permitido
DROP: descartar pacote
QUEUE: enviar o pacote ao userspace (codigo fora do kernel)
RETURN: descontinuar o processamento do pacote e aplicar a regra padrao a ele
REJECT: Descarta o pacote e envia feedback ao remetente
DNAT: Reescreve endereço de destino (NAT)
SNAT: Reescreve endereço de origem (NAT)
LOG: coloca no log informações sobre o pacte

Estrutura do comando:

Comando principal:

iptables subcomando chain parametro1 valor1 parametron valorn ação

Subcomandos:

-A cadeia – anexa a regra ao final da cadeia
-L [cadeia] lista as regras da cadeia, ou todas caso a cadeia nao seja especificada
-F [cadeia] apaga todas as regras na cadeia
-N cadeia – Lista todas as regras na cadeia
-P cadeia politica – configura a regra padrão da cadeia
-D cadeia linha – apaga uma regra em um posição na cadeia
-X [cadeia] excluiu uma cadeia vazia
-I cadeia linha – insere uma regra em uma posição na cadeia
-Z zera os contadores para todas as cadeias

Parametros, alguns:

-t tabela (filter é a padrao)
-j ação
-p protocolo (especifica o protocolo, icmp, tcp, udp, all)
-s IP (IP de origem do pacote)
-d IP (IP de destino do pacte)
-i interface (nome da interface de rede de entrada do pacote)
-o interface (nome da interface de rede de saida do pacote)
–sport portas (Portas de origem)
–dport portas (Portas de destino)
–syn (identifica nova requisição de conexao)
–icmp-type (tipo de mensagem icmp)

Checagem de estado dos pacotes (state match):

-m state –state OPCAO
NEW cria uma nova conexao
ESTABLISHED pacote que pertence a uma conexao existente
RELATED pacote relacionado mas que nao faz parte de uma conexao existente
INVALID pacote nao pode ser identificado (ex. falta memoria, erro ICMP de conexao nao conhecida)

Extensões:

Extensao TCP
–tcp-flags (ALL, SYN, ACK, FIN, etc)
–source-port ou –sport
–destination-port ou –dport

Extensao UDP
Mesmas opções do TCP

Extensao ICMP
–icmp-type

Outras extensoes
-m limit quando usado em LOG serve para limitar o numero de pacotes escritos durante um certo ponto
–limit valor

Arquivos de logs criados pelo iptables:

Todo tráfego que for registrado pelo iptables é registrado por padrão no arquivo /var/log/kern.log.

Exemplos:

Exibir todas as regras:

Verificar regras (padrão filter –line-numbers (Exibe linhas))

Verificar regras tabela nat

Criando uma regra, DROP em tudo que vai pra porta 123

Inserindo uma regra, -I por padrao insere a regra no final
# indicando a linha ja a regra para a posição referente

Substituindo uma regra, parametro -R
# Substitui a regra 1 (no caso do nosso exemplo)

Deletar regra, parametro -D
# remove linha 1

# apagar usando sintaxe, usar mesmo sintaxe com parametro -D

Bloquear porta específica
Sainte:

Entrante:

Ou múltiplas portas:

Manter registros de Log’s de pacotes bloqueados:

Os log’s são salvos em /var/log/messages.

Compartilhar internet, parametro ip_forward precisa ser 1, geralemte altera-se no arquivo “/proc/sys/net/ipv4/ip_forward”. Lembrando que a mudança não é permanente, a cada reinicialização deve-se alterar o parâmetro novamente ou quando criar um sript de firewall incluir o comando para alterar o arquivo com o cat.

Ip Masquarade

Encaminhamento de portas (Ip forwarding)
Tentando acessar pela interface wan

Reject
Descarta pacote e envia um retorno a quem enviou o pacote.

entre outras opções do –reject-with

Criar chain

Limpar regras

remover  Chain criada pelo usuario, parametro -X
zerar contador, parametro -Z

Alterar regra padrão, o ideal INPUT ser drop por padrão

Liberar servidor web
Liberar host especifico
Liberar ping (resposta liberada se output esta ACCEPT tbm)
Liberar respostas de ping para outras maquinas
Proteção contra Syn-flood:
Port scanner suspeito:
Ping da morte:
Salvando e restaurando as regras: