$grep -n 'texto' arquivo -r

grep é um aplicativo para linha de comando de sistemas Unix/Linux que faz buscas no conteúdo dos arquivos

-Wikipedia

Exemplos

Busca simples:

$ grep ‘joao’ arquivo.txt

Recursiva

$ grep ‘texto’ /etc/* -r

Mostrando as linhas:

$ grep -n ‘joao’ arquivo.txt

fontes:

http://www.vivaolinux.com.br/artigo/Usando-grep-e-egrep?pagina=2

http://ndvo.blog.br/pt-br/gnulinux/como-procurar-por-uma-string-em-v%C3%A1rios-arquivos/

Instalando servidor de e-mail postfix, imap, dovecot

Tutorial básico para criar um servidor de e-mails com postfix, imap, pop, mysql, devecot e cliente de e-mails web roundcube.

opção rápida: http://www.iredmail.org

Estou utilizando o GNU/Linux Debian amd64

instalar o postfix:

# apt-get install postfix

Continuar lendo Instalando servidor de e-mail postfix, imap, dovecot

iptables

Uma configuração de iptables

Você pode aprender tudo sobre Iptables aqui: http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

Compartilha a rede externa com a interna e liberar as principais portas do servidor:

#!/bin/bash
#################### Inicio Firewall #################################

modprobe ip_nat
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe iptable_mangle
modprobe ipt_state
modprobe ipt_limit
modprobe ipt_multiport
modprobe ipt_mac
modprobe ipt_string
## Limpando as Regras existentes #######
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F
iptables -X
iptables -Z

## Definindo politica padrão (Nega entrada e permite saida)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

## Estabelece relação de confiança entre maquinas da rede local eth0(rede local)
iptables -A INPUT -i eth1 -s 10.1.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i eth1 -m state –state NEW -j ACCEPT
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

############################ Compartilhamento Internet #########################
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

### SSH
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
### HTTP
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
### HTTPS
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
### SMPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT
### IMAP
iptables -A INPUT -p tcp –dport 143 -j ACCEPT
### IMAPS
iptables -A INPUT -p tcp –dport 993 -j ACCEPT
### POP
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
### POPS
iptables -A INPUT -p tcp –dport 465 -j ACCEPT
### ???
iptables -A INPUT -p tcp –dport 587 -j ACCEPT
### POPS
iptables -A INPUT -p tcp –dport 995 -j ACCEPT
### ICMP e ping
iptables -A INPUT -p icmp  -j ACCEPT

######################################## Fim ###################################

 

Para salvar no Debian:

# iptables-save > /etc/default/iptables

# iptables-restore < /etc/default/iptables

 

Fontes:

http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

http://deangerber.com/blog/2011/09/10/basic-iptables-firewall-configuration/

http://www.rackspace.com/knowledge_center/article/mail-server-opening-ports-in-the-linux-firewall

Instalando grub no Debian GNU/Linux com raid 1

Precisei instalar o Debian em um sistema com raid 1 e descobri que simplesmente o grub dava falha.

Depois de muito googlear, descobri que é necessário instalar o Debian, optar por não instalar o iniciador de boot. Reiniciar o instalador e entrar no modo rescuse, depois escolher o mapeamento correto para instalar o grub no /

procedimentos podem ser encontrados aqui:

https://wiki.debian.org/DebianInstaller/SataRaid

Use the following method only if you want to have a dual-boot system with Debian and the other operating system on the same Serial ATA RAID:

  1. Set up your fake RAID in the BIOS (see owners manual).
  2. Boot from a Debian installation media.
  3. Move the cursor to the Install boot menu entry (do not hit Enter yet):
    1. Press Tab to edit the kernel boot line.
    2. Add dmraid=true to the end of the line.
    3. Press Enter.
  4. Install Debian as usual, until you get to the disk partitioner. You will see your fake RAID as one disk with a confusing long name. Use it as if it were a single disk and configure your partitions any way you want, including LVM and friends.
  5. Complete the installation. The installation of GRUB may fail, but that is OK; GRUB needs to be reinstalled either way. If GRUB installation fails, select “continue without bootloader” to complete the Debian installation.
  6. Reboot as instructed by Debian Installer.
  7. Boot using the Debian installation media again.
  8. In the boot menu, go to Advanced Options, and move the cursor to “Rescue system” (do not hit Enter yet):
    1. Press Tab to edit the kernel boot line.
    2. Add “dmraid=true” without quotes to the end of the line.
    3. Press Enter.
  9. You will be presented with screens similar to the installation screens. Go through with them until you are asked to choose a root filesystem to mount and use.
  10. Choose the first /dev/dm-? (? is a number). You will get a command prompt.
  11. (Optional) Type bash into the prompt, for easier command line editing and command history.
  12. Modify /etc/default/grub (e.g. nano /etc/default/grub) and uncomment GRUB_DISABLE_LINUX_UUID=true (699437). Save the file and exit the editor.
  13. Type update-grub and press enter. This is very important, because otherwise the GRUB boot menu later wont be able to display your freshly installed kernel!
  14. Type grub-install /dev/mapper/ and press tab and tab again, you will get the names of the fake raid partitions.
    1. Complete grub-install /dev/mapper/ with the name of your whole fake disk.

      For example grub-install /dev/mapper/isw-jggdha7s-SYS (Note that there is no number at the end of the name). You may have something like /dev/mapper/isw-jggdha7s-SYS and /dev/mapper/isw-jggdha7s-SYS1, or /dev/mapper/isw-jggdha7s-Volume and /dev/mapper/isw-jggdha7s-Volume1. Choose the one without the partition number and press enter.

    2. Everything should install now without an error.
  15. Type exit (twice if you did step 11). Now you should be back in the rescue system menu. Choose the Reboot system option. Now boot off your fake RAID and see GRUB starting your new Debian installation.

 

Por fim precisei editar na hora do boot o local correto de boot, vc consegue isso com digitando “e” no menu de boot.

Depois de bootar entrei em /boot/grub/grub.cfg, e alterei ali o local de boot tbm para o mapeamento do Raid correto.

Ainda é necessário fazer o sistema sempre apontar para o mapeamento certo do raid, mas isso eu não fiz ainda 😀

Configurar IP fixo e IP via DHCP no Debian via terminal

# nano /etc/network/interfaces
ou
# vim /etc/network/interfaces

Agora vamos configurar. Lembrando que eth0 é o dispositivo correspondente à minha placa:

auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1

Broadcast não é necessário, pois ele é configurado automaticamente.

Obs.: Está é a minha configuração, provavelmente você terá que adaptar para a sua rede.

Se você utiliza uma placa de rede para acesso externo, como eth0, basta modificar “eth0” para “eth1”.

Agora vamos reiniciar a conexão de rede:

# /etc/init.d/networking restart

Pronto, configuração feita e é só aproveitar.

 

Fontes:

http://www.vivaolinux.com.br/topico/Iniciantes-no-Linux/Debian.Colocar-Ip-automatico

http://www.vivaolinux.com.br/dica/Configurando-placa-de-rede-para-IP-fixo-no-Debian

http://www.vivaolinux.com.br/topico/Debian/IP-FIXO

Clonezilla clonar HD ou partições

Clonezilla é um live cd/usb que possibilita a clonagem e recuperação de HDs inteiros e partições.

O interessante é que possibilita a restauração via HD externo ou rede via SSH, o que torna o serviço muito mais rápido quando temos varias máquinas para clonar.

Site oficial: http://clonezilla.org/

Instruções para bootar via USB: http://clonezilla.org/liveusb.php#linux-method-b

Mais:

http://www.hardware.com.br/artigos/clonezilla/

Criando partição maior que 2 TB no Linux

Descobri somente na pratica que o MBR está limitado para partições de até 2 TB, mas para maiores temos uma solução o GPT!

Para mais informações olhe as fontes!

Aqui vai como fazer:

Vendo dados do Disco

# fdisk -l /dev/sdb

Saida:

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

Criar um partição de 3 TB

# parted /dev/sdb

Saída:

GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Criando um novo rotulo do tipo GPT:

(parted) mklabel gpt

saída:

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)

Setar para TB a unidade de medida:

(parted) unit TB

Criando a partição com 3TB:

(parted) mkpart primary 0.00TB 3.00TB

Imprimindo o resultado:

(parted) print

Sample outputs:

Model: ATA ST33000651AS (scsi)
Disk /dev/sdb: 3.00TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  3.00TB  3.00TB  ext4         primary

Saindo e salvando as mudanças:

(parted) quit

Agora utilize o mkfs.ext4 para formatar a partição criada!

# mkfs.ext4 /dev/sdb1

 

Pronto! Linux é foda né?

Fontes:

http://www.ibm.com/developerworks/br/linux/library/l-gpt/

http://www.cyberciti.biz/tips/fdisk-unable-to-create-partition-greater-2tb.html

http://www.vivaolinux.com.br/artigo/Exemplos-praticos-de-comandos-com-Parted?pagina=1

Criando senha aleatórias e seguras no linux

A utilização de senhas seguras é uma obrigação a todo profissional de TI. Suas senhas devem ter um bom comprimento e alternar entre letras, números e caracteres especiais, diminuindo drasticamente a possibilidade de descoberta das senhas por outras pessoas ou mecanismos automáticos. Para facilitar a nossa vida existem dois utilitários no linux que geram senhas aleatórias sem que precisemos queimar neurônios para criá-las sozinhos: mkpasswd e makepasswd

O comando mkpasswd já vem no linux e utiliza a função crypt para gerar senhas. Já o makepasswd é mais completo: utiliza o /dev/random para gerar as senhas, pode gerar várias senhas de uma só vez e criptografá-las com o algoritmo md5.

Gerando senhas com o mkpasswd:

Apenas digite no terminal o comando:

Código:
$ mkpasswd


saída:

Código:
senha: digite-a-senha-aqui
/o76/Dpgmv/5rX2

 

Instalando o makepasswd(eu recomendo esse)

Em distribuições Debian-like, digite o seguinte comando no terminal:

Código:
$ sudo apt-get install makepasswd

 

Gerando senhas com o makepasswd:

Digite no terminal:

Código:
$ makepasswd


Saída:

Código:
1mnU8L1LVF


Para alterar o comprimento da senha gerada, utilize a opção –char

Código:
$ makepasswd –char 12


saída:

Código:
9HaifQW4q923


para gerar várias senhas de uma só vez utilize –count

Código:
$ makepasswd –count 5


Saída:

Código:
LzSoH0
K2QXW5L
AisGn0vn
ETVj0W74
NpBp1TeA


Para gerar uma senha criptografada, utilize –crypt-md5 (Ele exibirá a senha em texto plano e criptografada)

Código:
$ makepasswd –crypt-md5


Saída:

Código:
YM2WYIry  $1$mn8MFbyM$Suk986UgD/kOuNBJsBzoD/


Um pequeno script para alterar senhas de usuários com o makepasswd:

Código:
#!/bin/bash
#changepass
#Script para alterar a senha de um usuario
#escrito por Luiz Guanabara www.guanabara.eti.br
#if [ $UID != 0 ]
then
echo -e “ntVoce precisa ser root para executar este script!n”
exit
fi

echo “Informe o nome do usuario”
read name
echo “Informe o comprimento da senha”
read lenght

pass=$(makepasswd –char $lenght)

echo “$name:$pass” | chpasswd

echo “A senha do usuario $name foi alterada para $pass ”

 

———————

Pwgen: utilitário para criar senhas seguras no Linux

por Helbert Rocha no dia 13/ago/2010 em Aplicativos

Pwgen é um gerador de senhas projetado de modo que as senhas sejam facilmente memorizadas pelas pessoas. As senhas que podem ser lembradas pelas pessoas nunca foram tão seguras quanto aquelas geradas aleatoriamente. Em particular, as senhas geradas por este aplicativo sem a opção “-s” não devem ser usadas onde elas podem ser atacadas pela força bruta.

Instalação

Ubuntu

No Ubuntu, para instalar o Pwgen, basta executar o comando abaixo no terminal.

$ sudo apt-get install pwgen

Fedora

No Fedora, para instalar o Pwgen, basta executar o comando abaixo no terminal.

$ su -c 'yum install pwgen'

Uso

Para utilizar o Pwgen, temos algumas opções. Vide abaixo quais são elas.

  • -0, para não incluir números nas senhas geradas.
  • -A, para não incluir letras maiúsculas.
  • -B, para excluir caracteres que possam causar confusões, como 1 e l, por exemplo.
  • -y, para inserir ao menos um caractere especial (*$=!?% …).
  • -n, para inserir ao menos um número na senha gerada.
  • -s, para gerar uma senha aleatória e difícil de ser memorizada.

Exemplo

$ pwgen -0AByns 5 3
OYQS9 5z4O1 gRjR9

Portanto, vemos que foram geradas 3 senhas de 5 caracteres de acordo com as opções pedidas. Para mais informações sobre o Pwgen, clique aqui.

Fontes:

http://networkteam.forumbrasil.net/t30-linux-gerando-senhas-seguras-e-aleatorias

http://meupinguim.com/pwgen-utilitario-criar-senhas-seguras-linux/

Cron agendando tarefas

O cron é um serviço disponível no Linux e outros sistemas UNIX (HP-UX, AIX, Solaris, Linux, etc). Com ele é possível agendarmos rotinas ou tarefas, de modo que o sistema execute-as periodicamente.

Como usar o cron

O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi, emacs ou nano. Também é possível digitar o comando crontab -e para editar o arquivo exclusivo de seu usuário. Neste caso, a edição é feita como se você estivesse usando o vi.

O crontab tem o seguinte formato:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

O preenchimento de cada campo é feito da seguinte maneira:

– Minutos: informe números de 0 a 59;

– Horas: informe números de 0 a 23;

– Dias do mês: informe números de 0 a 31;

– Mês: informe números de 1 a 12;

– Dias da semana: informe números de 0 a 7;

– Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);

– Comando: a tarefa que deve ser executada.

Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês, 1 a 12 quer dizer de “janeiro a dezembro”. No caso de dias da semana, 0 a 6 quer dizer de “domingo a sábado”. Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de “domingo”.

No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias.

Você também pode informar intervalos no preenchimento, separando os números de início e fim através de – (hífen). Por exemplo, se no campo horas for informando 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula.

Vamos a um exemplo:

#tarefa infowester
30 22 3,14 * * echo “Não entre em pânico” > /home/alecrim/infowester.txt

Neste exemplo, a frase “Não entre em pânico” é inserida no arquivo infowester.txt, dentro do diretório /home/alecrim/, às 22 horas e 30 minutos, nos dias 3 e 14, em todos os meses e em todos os dias da semana. Repare na linha “#tarefa infowester”. Trata-se de um comentário. Digite # e tudo o que for digitado na linha não será considerado pelo cron. É um recurso útil para inserir descrições quando se tem várias tarefas a serem executadas.

Alguns exemplos:

Todo dia de hora em hora (hora cheia)
00 * * * * /bin/script
De cinco em cinco minutos todos os dias (note a divisão por 5 do intervalo 00-59)
00-59/5 * * * * /bin/script
Nas seguintes horas: 10, 12, 16, 18, 22 aos 15 minutos da hora
15 10,12,16,18,22 * * * /bin/script
Nos primeiros cinco dias do mês às 19:25
25 19 01-05 * * /bin/script
De segunda a sexta ao meio-dia e a meia-noite
00 00,12 * * 1-5 /bin/script
Script rodar Segunda,Quarta,Sexta às 2 horas
0 2 * * mon,wed,fri /bin/script
Script para rodar Terça,Quinta às 3 horas
0 3 * * tue,thu /bin/script
Script para ser executado minuto a minuto
*/1 * * * * /bin/script

Comandos do crontab

Para acessar o crontab, basta digitar esse nome em um terminal seguido de um parâmetro. Eis a lista de parâmetros disponíveis:

crontab -e: conforme já informado, serve para editar o arquivo atual do crontab e criar um, caso não exista;

crontab -l: este comando mostra o conteúdo atual do crontab;

crontab -r: remove o arquivo atual do crontab.

Fontes:

http://blogdonerd.com.br/2010/09/realizando-backup-de-arquivos-em-servidores-linux/

http://www.infowester.com/linuxcron.php

http://www.hardware.com.br/dicas/agendando-tarefas-rotinas-cron.html

http://pt.wikipedia.org/wiki/Crontab