Evitando encerramento acidental de sessões bash

A sequência de teclas “CTRL+D” encerra uma sessão bash. Às vezes digitamos estas teclas por acidente e encerramos uma sessão acidentalmente.

Para evitar que isto ocorra, definimos a variável de ambiente IGNOREEOF:

  export IGNOREEOF=1

Desta forma, para encerrar uma sessão bash, precisamos digitar a sequência “CTRL+D” duas vezes ou então digitar “exit“.

Esta variável de ambiente deve ser definida no arquivo .bashrc.

Fonte: Dicas-L

Diminuindo tentativas de invasão via SSH

Dentro do arquivo /etc/ssh/sshd_config altere as seguintes linhas:


LoginGraceTime 2m
MaxStartups 3:50:6

Explicando:

O primeiro parâmetro informa que a conexão será cortada caso fique inativa por 2 minutos.

O segundo quer dizer que depois de 3 tentativas não autenticadas, 50% das conexões do IP são recusadas e quando o número de de tentavivas chegar a 6 todas as tentativas de conexões do IP serão recusadas.

Fonte: Dicas-l

Servidor Proxy com squid

Instalação:

 apt-get install squid

Arquivo base de configuração (/etc/squid/squid.conf):

http_port 3128
visible_hostname KORZOS 

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT 

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports 

acl redelocal src 192.168.0.0/24 

http_access allow localhost
http_access allow redelocal
http_access deny all

# Define o caminho das páginas de erro do squid.
error_directory /usr/share/squid/errors/Portuguese

# Define o e-mail que vai aparecer na página de erro do Squid, assim o usuário terá mais informações para interagir com o responsável.
cache_mgr admin@seu_dominio.com.br

# Esta ACL é responsável por não armazenar conteúdo CGI em cache.
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
# Define a quantidade de memória RAM reservada para o uso do Squid.
cache_mem 64 MB 

# Esta linha é responsável por limitar o tamanho dos arquivos que serão armazenados no cache da memória RAM.
maximum_object_size_in_memory 64 KB 

# Aqui definimos o tamanho máximo e mínimo respectivamente dos arquivos que serão armazenados no cache do HD.
maximum_object_size 512 MB
minimum_object_size 0 KB 

# Com essas duas linhas podemos definir a porcentagem de atualização do cache, estamos dizendo que quando o cache chegar em 95% o Squid irá apagar os arquivos mais antigos até chegar a 90%.
cache_swap_low 90
cache_swap_high 95 

# Nessa linha conseguimos definir o tamanho e alguns parâmetros do cache feito em HD, a linha é composta por quatro valores, o 1º define o caminho do cache (/var/spool/squid), o 2º o tamanho que será alocado em MB para o cache (2Gb), o 3º a quantidade de diretórios criados para o cache (16) e o 4º é o numero de subdiretórios que serão criados. Se você possuir bastante espaço em disco e quiser armazenar os arquivos por mais tempo, aumente a opção do tamanha do cache.
cache_dir ufs /var/spool/squid 2048 16 256 

# Define onde serão armazenados os registros de log do Squid.
cache_access_log /var/log/squid/access.log 

refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

Reiniciar squid:

 /etc/init.d/squid restart

Entendendo configuração:
http_port 3128: Define em qual porta o Squid vai atuar, a porta default é a 3128, mas podemos definir qualquer outra porta.
visible_hostname SERVIDOR: Define o nome do servidor, lembre-se de substituir o “KORZOS” pelo nome do seu servidor.
acl all src 0.0.0.0/0.0.0.0: Esta linha cria uma ACL, uma política de acesso com nome “all” contendo qualquer IP.
acl localhost src 127.0.0.1/255.255.255.255: Aqui criamos uma ACL de nome “localhost” contendo localhost.
acl SSL_ports port 443 563: Cria a ACL contendo as portas que são utilizadas no protocolo HTTPS.
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535: Cria a ACL contendo as portas de diversos protocolos conhecidos na Internet.
acl manager proto cache_object: Cria a ACL manager do tipo proto.
acl purge method PURGE : Cria a ACL manager do tipo method.
acl CONNECT method CONNECT: Cria a ACL CONNECT também do tipo method.
http_access allow manager localhost: Libera a ACL manager e localhost.
http_access deny manager : Bloqueia a ACL manager.
http_access allow purge localhost: Libera a ACL purge e localhost
http_access deny purge: Bloqueia a ACL purge.
http_access deny !Safe_ports: Esta linha se torna bastante interessante pelo uso da “!”, pois ela bloqueia qualquer conexão que não contenha o conteúdo da ACL Safe_Ports.
http_access deny CONNECT !SSL_ports: Bloqueia qualquer conexão que não esteja no conteúdo da ACL SSL_ports.
acl redelocal src 192.168.0.0/24: Cria a ACL redelocal contendo a faixa de endereço da rede.
http_access allow localhost: Libera a ACL localhost.
http_access allow redelocal: Libera a ACL redelocal.
http_access deny all: Bloqueia a ACL all

Criando ACLs
Arquivos:
Neste arquivo, iremos adicionar palavras que serão bloqueadas, como: sexo, porno…

# pico /etc/squid/palavras_bloqueadas.txt

Neste arquivo, serão adicionados os sites que não terão acesso, como: 4shared.com, rapidshare.com, megavideo.com, filesonic.com, etc:

# pico /etc/squid/sites_bloqueados.txt

Aqui, iremos colocar as redes sociais, como: facebook.com, orkut.com, twiter.com, etc:

# pico /etc/squid/redes_sociais.txt

Neste arquivo, iremos colocar os IPs das máquinas dos gerentes (e “daquela” estagiária que entrou semana passada…:)):

# pico /etc/squid/ips_liberados.txt

Lista de sites adultos: redtub, xvideos

# pico /etc/squid/sites_porno.txt

Este arquivo limita os tipos de arquivos que serão baixados, tudo que contiver neste arquivo será bloqueado. Exemplos: .avi$, .mp3$, .wmv$:

# pico /etc/squid/formato_arquivo.txt

Adicionar ACLs:

acl rede_local src 192.168.0.0/24
acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt "
acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt "
acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt"
acl liberados src "/etc/squid/ips_liberados.txt "
acl porno url_regex -i "/etc/squid/sites_porno.txt "\e acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt"
acl horario_almoco time 12:00-13:00 

http_access allow liberados
http_access allow redes_sociais horario_almoco
http_access deny redes_sociais
http_access deny sites_bloqueados
http_access deny palavras_bloqueadas
http_access deny porno
http_access deny formato_arquivo
http_access allow redelocal

Criar arquivos de swap

 squid -z

E iniciar os serviços
Fonte

Instalar servidor Samba [Dica rápida]

Primeiramente instalaremos o pacote:

apt-get install samba

Depois alteramos a configuração do arquivo:

vi /etc/samba/smb.conf

E alteramos alguns parametros:

[global]
#nome do grupo de trabalho
workgroup = casa
#como a maquina irá aparecer na rede Windows
netbios name = servidor de arquivos
#autenticação
#modo de acesso ao servidor
security = user / share
#lembrado que user é quando se criará um usuário no sistema, e share sem usuário

#compartilhamentos
[arquivos]
#descrição do compartilhamento
comment = meus arquivos
#caminho da pasta no servidor
path = /arquivos # ou o diretório desejado
public = yes
browseable = yes #se está visível ou oculto na rede
writeable = yes #permite escrita
read only = no #somente leitura
valid users = VOCE

# define a mascara em que os arquivos serão criados
create mask = 0700 #(terão a permissão rwx somente para o root)

# define a mascara em que os diretórios serão criados
directory mask = 0700

Vamos criar o diretório compartilhado no servidor:

mkdir /arquivos

Adicionando um usuário para acessar o Samba:

smbpasswd -a VOCE

Reinicie o serviço:

service smbd restart

Pronto, servidor disponível. Fonte

Monitorar a performance do MySQL com Mytop

Desenvolvido por Jeremy D. Zawodny, o Mytop é uma ferramenta para monitorar o MySQL baseada em console (sem interface gráfica). É utilizada para verificar o desempenho geral e threads do MySQL.

Roda na maioria dos sistemas Linux/Unix (incluindo Mac OS X), que tenham o Perl, DBI e Term:: ReadKey instalados. E com o Term:: ANSIColor instalado, você ainda terá cores. Se você instalar o Time::HiRes, você terá consultas de status em tempo real/segundos.

Plataformas suportadas:

  • Linux
  • FreeBSD
  • Mac OS X
  • BSDI
  • Solaris
  • Windows

Vamos instalar o Mytop, abra o terminal (console) e siga as instruções.

Para sistemas que utilizam o apt-get, você pode instalar como este comando:

$ sudo apt-get install mytop

Em sistemas baseados no Red Hat, como Fedora, você pode executar o comando:

# yum -y install mytop

Se preferir, você pode fazer o download do arquivo em:

Execute estes comandos para descompactar e instalar o Mytop:

$ tar -zxvf mytop-<version>.tar.gz
$ cd mytop-<version>
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

Pronto, a ferramenta está instalada!

Executando o Mytop

A maneira mais simples de executar Mytop é executar o comando diretamente na linha de comando. No terminal digite:

mytop -u <usuário> -p <senha> -h <host>

Por exemplo:

# mytop -u tsarmento -p vol2011 -h 172.16.99.253

Alguns outros argumentos:

  • ” ? ” – Exibe ajuda;
  • ” d ” – Mostra as conexões a uma determinada base de dados – Nome da base de dado;
  • ” f ” – Mostra a consulta completa de uma dado ID de processo (deve ser um processo ativo);
  • ” F “- Desabilita todos os filtros (host, user, and db);
  • ” h ” – Mostra apenas as consultas de um determinado host, conectar a um computador remoto;
  • ” I ” – Mostra o status do InnoDB;
  • ” k ” – Mata um processo;
  • ” m ” – Muda o modo de exibição de top para qps (Queries Per Second Mode). Ele exibirá na tela a quantidade de querys por segundo;
  • ” o ” – Inverte a ordem padrão de ordenação;
  • ” p ” – Pausa a exibição;
  • ” q ” – Sair do mytop;
  • ” r ” – Reset os contadores de status do servidor via comando FLUSH STATUS;
  • ” s ” – Muda o tempo de atualização do refresh (em segundos);
  • ” u ” – Mostra os processos de um determinado usuário;
  • ” P ” – Especifica uma porta não-padrão do MySQL para conectar;

Se você não quer ter que lembrar suas opções, pode criar um arquivo ~/.mytop para armazenar os argumentos neste formato:

user=root
pass=
host=localhost
db=minhabasededados
delay=5
port=3306
socket=
batchmode=0
header=1
color=1
idle=1

Usando um arquivo de configuração irá ajudar a assegurar que a sua senha do banco de dados não fique visível aos usuários na linha de comando. Apenas certifique-se de que as permissões do arquivo ~/.mytop estão de tal forma que os outros usuários não tenham permissão de leitura (a menos que você queira, claro).

Você pode ter algum espaço em branco nas linhas do arquivo de configuração, depois do =. Para mais informações acesse:

Agradeço a todos pela atenção.

Viva o Linux, porque nós amamos a Liberdade!

Fonte

Ativando o suporte a SSL em servidores web

O SSL (Secure Socket Layer) é o protocolo usado para criar páginas seguras, encriptando toda a transmissão entre o cliente e o servidor. Os dois usos mais comuns são em páginas de comércio eletrônico, onde é necessário oferecer um ambiente seguro para concluir a transação e transmitir dados confidenciais e também na criação de ambientes administrativos, como os usados pela maioria dos gestores de conteúdo, que permitem que você gerencie o conteúdo do site.

Na grande maioria das distribuições, o pacote com o mod_ssl é instalado juntamente com o pacote principal do Apache, ou é pelo menos disponibilizado como um pacote separado, instalável através do gerenciador de pacotes.

No caso das distribuições derivadas do Debian, você precisa apenas ativar o módulo usando o comando “a2enmod”. Reinicie o serviço para que a alteração entre em vigor:

# a2enmod ssl
# /etc/init.d/apache2 force-reload

No caso do CentOS, é necessário instalar o pacote “mod_ssl” usando o yum. O script de pós-instalação se encarrega de adicionar o script de carregamento na pasta “/etc/httpd/conf.d” automaticamente, concluindo a instalação. Não se esqueça de reiniciar o serviço para que a alteração entre em vigor:

# yum install mod_ssl
# service httpd restart

Com o módulo carregado, fica faltando apenas o componente mais importante, que é o certificado SSL propriamente dito.

Se você quer ativar o SSL para testes ou para uso interno (para acessar alguma ferramenta administrativa instalada no servidor, ou para uso em uma página disponibilizada apenas para um grupo de amigos, por exemplo), você pode simplesmente gerar seu próprio certificado, o que é rápido, grátis e indolor. Se, por outro lado, você está ativando o SSL para uso em um site de comércio eletrônico, é necessário obter um certificado reconhecido através da Verisign ou outra entidade certificadora.

Os certificados caseiros são chamados de certificados self-signed (auto-assinados), já que você mesmo faz o papel de entidade certificadora, gerando e assinando o certificado. O algoritmo de encriptação usado é o mesmo, de forma que um certificado self-signed corretamente gerado oferece a mesma segurança que um certificado reconhecido. O grande problema é que os navegadores nos clientes não serão capazes de verificar a autenticidade do certificado, de forma que os visitantes receberão um aviso de “certificado não reconhecido” ao acessarem a página:

O propósito de entidades certificadoras, como a Verisign, é confirmar a titularidade dos certificados, confirmando que o certificado recebido ao acessar determinado site pertence realmente à entidade que o está fornecendo. É isso que garante que você está mesmo acessando o home banking do banco em que tem conta e não o site de um script kiddie qualquer. Certificados assinados por entidades certificadoras são automaticamente aceitos pelos navegadores (já que sua identidade já foi confirmada pela entidade certificadora), o que evita a exibição da mensagem.

Vamos então começar com a configuração de um certificado self-signed, e em seguida entender o que muda ao utilizar um certificado reconhecido.

Fonte:

Esconder versão dos serviços de rede

Escondendo a versão dos serviços que estão rodando em seu servidor para aumentar a segurança Pessoal.

Importante para a segurança de um servidor é esconder a versão de seus serviços para que o invasor não fique procurando uma falha de segurança para aquela versão específica do daemon.

Então vamos ocultar alguns serviços mais utilizados:

Proftpd
=======
Basta adicionar a seguinte linha no proftpd.conf:

ServerIdent on “”

A linha acima informa a versão do serviço como sendo “”, isso quer dizer que será em branco.

Para validar é necessário reiniciar o Proftpd.

SSH
===
Já esse é necessário baixar o fonte do site oficial http://www.openssh.com/ e compilar : D

Após descompactar, terá um arquivo chamado version.h. Altere o conteúdo da seguinte linha:

#define SSH_VERSION “”

Depois é só compilar normalmente com ./configure, make e make install.

Obs.: O ssh escuta por padrão na porta 22. É altamente recomendável alterar essa porta para qualquer outra porta.

Apache
======
O Apache, assim como o Proftpd, basta apenas acrescentar uma opção em seu conf conforme a linha baixo:

ServerTokens Prod
=================

Necessário reiniciar o serviço também.

Para testar se as versões dos daemons estão ocultadas, use o nmap para verificar conforme o exemplo:

# nmap localhost -sV

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2008-03-05 09:46 BRT
Interesting ports on localhost (127.0.0.1):
(The 1658 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
21/tcp open ftp?
8080/tcp open http Apache httpd
Nmap run completed — 1 IP address (1 host up) scanned in 100.332 seconds

Porque o ssh não apareceu quando utilizados o nmap para varrer as portas da máquina?

Porque foi alterada para uma porta que não está na lista que o nmap utiliza que está em /usr/share/nmap/nmap-services.

Alguns outros programas identificam o tipo de serviço em qualquer porta que seja, mas não saberá a versão do serviço. Um outro programa que pode ser usado é o Nessus para esse tipo de verificação.