BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.
Mostrando postagens com marcador linux. Mostrar todas as postagens
Mostrando postagens com marcador linux. Mostrar todas as postagens

quinta-feira, 27 de dezembro de 2018

Instalando QEMU-KVM virt-manager Ubuntu/Debian/MX Linux

Buenas, Dica rápida!

Instalando kvm com virt-manager para subir máquinas virtuais.

Pacotes necessários

#apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager vlan dnsmasq ebtables qemu-utils  gir1.2-spice-client-gtk-3.0

Alguns pacotes específicos como vlan é para subir as placas de rede virtual segmentadas por vlan, virt-manager é para gerenciar as VMs, os demais pacotes são necessários para que o sistema funcione bem.

Abs
Read More

terça-feira, 3 de outubro de 2017

Migrando Centos 4 5 6 do XenServer 6 para Vmware

Bom Dia,

Após um período sem publicar novos conteúdos voltei, felizmente estamos com uma demanda ótima de trabalhos, o que torna a vida pessoal mais conturbada.

Vamos ver algumas dicas para migrar o centos do xenserver para o vmware.

- Iniciar a live do centos e fazer um chroot do disco do Centos que migramos, normalmente a live já indica o destino para o chroot.

chroot /mnt/sysimage

Feito isso, certifique-se que a VM está com acesso a internet

- Vamos remover os pacotes relacionados com o xen
 rpm -qa | grep kernel-xen | xargs rpm -e
 rpm -qa | grep xen | xargs rpm -e

- Verifique se existir algum repositório em /etc/yum.repos.d/ com nomes do xen e delete os arquivos também.

- Instalar um kernel sem puro
yum install kernel

- Caso não tenha nenhum kernel tente reinstalar o kernel
yum reinstall kernel

Após instalar o kernel é preciso fazer alguns ajustes no grub.conf para que ele inicie o linux corretamente

vim /boot/grub/grub.conf

A entrada do menu deverá ficar parecida desta, claro que a versão do kernel poderá mudar..

title CentOS (2.6.18-419.el5.centos.plus)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-419.el5.centos.plus ro root=/dev/sda1
        initrd /initrd-2.6.18-419.el5.centos.plus.img


Após alterar a entrada no grub, vamos regravar para garantirmos

grub-install --recheck /dev/sda


Altere agora o arquivo /etc/inittab procure  "co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
" e comente a linha, logo a baixo, deverá ter 6 linhas comentadas parecidas com as seguintes

#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

Descomente as linas 1: 2: 3: não tem necessidade de liberarmos 6 ttys...

Altere o arquivo  /etc/modprobe.conf para o conteudo a seguir

alias eth0 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix 

Feito isso, reiniciei a VM, provavelmente ela irá iniciar 100%...

Read More

segunda-feira, 10 de julho de 2017

Criando um Servidor PXE para Iniciar arquivos ISO para AcronisTrueImage recover/backup

Bom Dia,

Documentando processo para servidor de PXE com boot de arquivos em .ISO de sistemas operacionais na rede, ideal para equipamentos que não disponham de leitores e ou seja preciso disponibilizar um boot por ISO para o suporte.

1 - Habilitar login do root por ssh
Comente a seguinte linha no arquivo /etc/ssh/sshd_config

# PermitRootLogin without-password


2 - Definir um IP para a interface ligada aos computadores da rede
# vim /etc/network/interfaces

auto eth1
iface eth1 inet static
address  10.255.255.1
netmask 255.255.255.0



3 - Instalar o DHCP necessário para distribuir os IPs para as máquinas com os parâmetros para boot.

# apt-get install isc-dhcp-server

Após instalar o DHCP, vamos fazer uma cópia de segurança do arquivo de configuração
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bkp

Feito este backup, vamos alterar o dhcpd.conf para habilitar o boot pela rede.
# vim /etc/dhcp/dhcpd.conf

default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;

subnet 10.255.255.0 netmask 255.255.255.0 {
  range 10.255.255.100 10.255.255.200;
  option broadcast-address 10.255.255.255;
  filename "pxelinux.0";
  allow booting;
  allow bootp;
}

4.0 - Ajustar diretórios
O diretório deve ficar conforme estrutura abaixo.

# mkdir -p /repositorio_imagens/boot/
# mkdir -p /repositorio_imagens/boot/pxelinux.cfg/
# mkdir -p /repositorio_imagens/boot/isos
# ln -s /repositorio_imagens/boot/isos/ /repositorio_imagens/isos
# touch /repositorio_imagens/boot/pxelinux.cfg/default

4.1 - Vamos instalar o TFTPD, que é o protocolo responsável por transferir os arquivos pelo PXE.
# apt-get install tftpd-hpa

Substitua o conteúdo do arquivo "tftpd-hpa" pelo seguinte arquivo

# vim /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -s /repositorio_imagens/boot/"

Onde "repositorio_imagens/boot" é um ponto de montagem de um disco de alguns terabytes que estarão armazenados todas minhas ISOS e imagens necessárias

5 - Vamos instalar o pxelinux que irá disponibilizar os arquivos necessários para montar a tela de boot

# apt-get install pxelinux syslinux

Vamos copiar os arquivos necessários para iniciar o menu do boot

# cp -vax /usr/lib/PXELINUX/pxelinux.0 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/ldlinux.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/menu.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/vesamenu.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/libcom32.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/libutil.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/reboot.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/poweroff.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/memdisk /repositorio_imagens/boot/

6 - Agora vamos criar o arquivo responsável pelo menu e suas entradas para boot

# vim /repositorio_imagens/boot/pxelinux.cfg/default

UI vesamenu.c32
TIMEOUT 3600
PROMPT 0
MENU RESOLUTION 1024 768
MENU TITLE    PXE BOOT MENU
# Format is: MENU COLOR <Item> <ANSI Seq.> <foreground> <background> <shadow type>
MENU COLOR screen      0  #80ffffff #00000000 std      # background colour not covered by the splash image
MENU COLOR border      0  #ffffffff #ee000000 std      # The wire-frame border
MENU COLOR title       0  #ffff3f7f #ee000000 std      # Menu title text
MENU COLOR sel         0  #ff00dfdf #ee000000 std      # Selected menu option
MENU COLOR hotsel      0  #ff7f7fff #ee000000 std      # The selected hotkey (set with ^ in MENU LABEL)
MENU COLOR unsel       0  #ffffffff #ee000000 std      # Unselected menu options
MENU COLOR hotkey      0  #ff7f7fff #ee000000 std      # Unselected hotkeys (set with ^ in MENU LABEL)
MENU COLOR tabmsg      0  #c07f7fff #00000000 std      # Tab text
MENU COLOR timeout_msg 0  #8000dfdf #00000000 std      # Timout text
MENU COLOR timeout     0  #c0ff3f7f #00000000 std      # Timout counter
MENU COLOR disabled    0  #807f7f7f #ee000000 std      # Disabled menu options, including SEPARATORs
MENU COLOR cmdmark     0  #c000ffff #ee000000 std      # Command line marker - The '> ' on the left when editing an option
MENU COLOR cmdline     0  #c0ffffff #ee000000 std      # Command line - The text being edited
# Options below haven't been tested, descriptions may be lacking.
MENU COLOR scrollbar   0  #40000000 #00000000 std      # Scroll bar
MENU COLOR pwdborder   0  #80ffffff #20ffffff std      # Password box wire-frame border
MENU COLOR pwdheader   0  #80ff8080 #20ffffff std      # Password box header
MENU COLOR pwdentry    0  #80ffffff #20ffffff std      # Password entry field
MENU COLOR help        0  #c0ffffff #00000000 std      # Help text, if set via 'TEXT HELP ... ENDTEXT'

# OPCOES DE ESCOLHA MENU

LABEL GParted
MENU LABEL GParted
LINUX ../memdisk
INITRD ../isos/gparted-live-0.28.1-1-i686.iso
APPEND iso raw

LABEL memtest
MENU LABEL memtest86
LINUX ../memdisk
INITRD ../isos/memtest86+-5.01.iso
APPEND iso raw

LABEL discoLocal
MENU LABEL Disco Local
MENU DEFAULT
localboot

LABEL reiniciar
MENU LABEL Reiniciar
COM32 ../reboot.c32

LABEL desligar
MENU LABEL Desligar
COM32 ../poweroff.c32



7 - Baixar a ISO do memtest86
# cd /repositorio_imagens/isos
#  wget http://www.memtest.org/download/5.01/memtest86+-5.01.iso.zip
# apt-get instal unzip
# unzip memtest86+-5.01.iso.zip
# rm -rf memtest86+-5.01.iso.zip


8 - Baixar a ISO do GParted
# cd /repositorio_imagens/isos
# wget http://downloads.sourceforge.net/gparted/gparted-live-0.28.1-1-i686.iso

9 - Transfira a ISO do Acronis TrueImage para o diretório /repositorio_imagens/isos e criei a entrada no arquivo /repositorio_imagens/boot/pxelinux.cfg/default

LABEL acronisTrueImage
MENU LABEL AcronisTrue Image 
LINUX ../memdisk
INITRD ../isos/acronisTrueImage.iso
APPEND iso raw

9 - Preparação para fazer os backups e restores das imagens dos sistemas operacionais usando o AcronisTrueImage

Vamos utilizar o samba para fazer o leitura e transferência de arquivos para o servidor, poderíamos utilizar o NFS, porém a performance do mesmo fica minima coisa melhor que samba, então decidimos utilizar o samba.

# apt-get install samba

# mkdir -p /repositorio_imagens/imagens
# chmod 777 -R /repositorio_imagens/imagens

Altera o arquivo "/etc/samba/smb.conf" para o seguinte conteúdo

[global]
   workgroup = SUPORTE
   server string = Servidor de Backup e Restore
   netbios name = repositorio
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   map to guest = bad user
   usershare allow guests = yes
   security = user
   guest account = nobody
   oplocks = false
   level2 oplocks = false
   fake oplocks = no
   locking = no
   posix locking = false
   strict locking = false
   kernel oplocks = no
   socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=20480 SO_RCVBUF=20480
   os level = 2
   domain logons = no
   preferred master = no
   domain master = no
   veto files = /autorun.inf/*.pif/*.com/*.mp3/*.wav/*.pif/*.mpg/*.mpeg

[REPOSITORIO]
   path = /repositorio_imagens/imagens
   browseable = yes
   public = yes
   read only = no
   writable= yes
   create mask = 0777
   directory mask = 0777
   csc policy = disable




Read More

quinta-feira, 17 de novembro de 2016

Lenovo Error 1962 - Xenserver

Buenas,

Erro 1962 ao dar boot pós instalação do XenServer.

- Boot Legacy
- Boot Secure disable
- Virtualization Enable

Para resolver é preciso iniciar o boot pelo CD, e não pressionar enter, digite menu.c32 , ele vai redirecionar para uma tela, onde tem várias opções, selecione a primeira opção "install", e pressione "tab" vamos editar as opções de instalação, antes dos caracteres "---" adicione o seguinte comando "disable-gpt" .

Imagens de exemplo.
- BOOT PELO CD, MENU.C32






- OPÇÃO PARA ADICIONAR ANTES DO "---"
Read More

quinta-feira, 12 de maio de 2016

Engenharia reversa Shell Script compilado com SHC

Bom Dia,

Ando afastado do blog por alguns motivos particulares, e de estudos, desculpem-me, logo voltarei a postar mais material bacana.

Vamos lá, hoje tinha um script compilado, coisa antiga, sem o source, e precisava saber o que realmente ele fazia, foi então que precisei fazer um 'dump' para pegar o que ele executava.

Algumas pesquisas, algumas leituras, alguns testes, até chegar a este processo.

- Vamos na verdade iniciar o script porém logo em seguida vamos matar o mesmo, para pegar o que ficou na memória, e fazer esse 'DUMP'

- Vamos aumentar o tamanho do 'core' do linux para 1Mb
# ulimit -c 1000000

- Agora vem o pulo do gato, vamos executar o script, com um sleep de alguns microssegundos, e logo em seguida vamos matar ele mesmo $! , repare que nosso script tem o '.sh.x', isso não é regra, o script pode estar somente com '.sh', como sem nenhum ponto.

# ./script.sh.x & ( sleep 0.02 && kill -SIGSEGV $! )

Ao rodar o 'script' o sistema vai retornar um errro "[1]+  Segmentation fault      (core dumped) ./script.sh.x", vai ser criado um arquivo chamado "core.alguma_coisa" , dentro dele vai ter o conteúdo do script, porém vai estar bem poluído, para tal, vamos limpar o mesmo.

# cat core.alguma_coisa| strings

Agora você vai ter a saida em texto puro do script.

Lembrando, somente, utilize esse procedimento quando você é autor do binário, caso contrário estará violando as leis.

Forte Abraço Marcos Carraro.



Read More

quinta-feira, 16 de julho de 2015

Automatizando a instalação do Debian Jessie 8.1 com preseed

Buenas,

Mudando um pouco, já que o Centos ainda não esta dando suporte a ARM, esta consumindo muito recurso quando preciso poupar os mesmos (Tem projeto nascendo) então como na vida muitas vezes temos pequenos desvios...

Neste caso vamos ver como automatizar a instalação do Debian Jessie, porém o usuário somente particiona o disco, o restante é feito automaticamente.

Para isso, vamos baixar a ISO original ~650mb
# cd ~
# wget http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-CD-1.iso

Montar a ISO para poder copiar os arquivos
# mount -o loop debian-8.1.0-amd64-CD-1.iso /mnt
# mkdir ~/iso
# rsync -a -H --exclude=TRANS.TBL /mnt/ ./iso

Alterando o isolinux.cfg para iniciar a instalação automaticamente e carregar o arquivo preseed.cfg
# vim iso/isolinux/isolinux.cfg
O conteúdo do arquivo é este

default install
prompt 1
timeout 240
display message.txt
F1 message.txt

label install
    menu label ^Instalacao Servidor
    linux /install.amd/vmlinuz
    initrd /install.amd/initrd.gz
    append cdrom-detect/try-usb=true preseed/file=/cdrom/preseed.cfg locale=en_US keyboard-configuration/xkb-keymap=br-abnt2 languagechooser/language-name=English  countrychooser/shortlist=US DEBCONF_DEBUG=5 video=vesa:ywrap,mtrr vga=788 --- quiet

No arquivo message.txt no diretório iso/isolinux/message.txt é o texto que sera mostrado quando o CD iniciar seu boot..


Criando o arquivo preseed.cfg com o seguinte conteudo, esta dividido em grupos de configuração, praticamente ele é auto descritivo.

### USO GERAL
debconf debconf/priority string critical
unknown debconf/priority string critical
d-i debconf/priority string critical

### TECLADO E IDIOMA
d-i console-keymaps-at/keymap select br-abnt2
d-i debconf/language string en_US
d-i languagechooser/locale string en_US

d-i debian-installer/keymap select br-abnt2
d-i debian-installer/language string en
d-i debian-installer/locale string en_US

## OPERACOES COM O CD
d-i cdrom-checker/start boolean false
d-i cdrom-detect/load_media boolean false

### REDE
#d-i netcfg/link_wait_timeout string 1
#d-i netcfg/dhcp_timeout string 1
d-i netcfg/use_dhcp false
d-i netcfg/disable_dhcp boolean true
d-i netcfg/dhcp_failed note
d-i netcfg/choose_interface select eth0
d-i netcfg/hostname string servidor1
d-i netcfg/get_ipaddress string 10.10.10.1
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 10.10.10.1
d-i netcfg/get_nameservers string 10.10.10.1
d-i netcfg/confirm_static boolean true

### CONTA DO USUARIO
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
### Senha Padrao `printf "abc123!" | mkpasswd -s -m md5`
d-i passwd/root-password-crypted password $1$Gy43AnD3$TkVbQupeEhkrDN4llbPvr0

### USUARIO COMUN (CONTA DESABILITADE SOMENTE USAR ROOT)
d-i passwd/user-fullname boolean false
d-i passwd/username boolean false
d-i passwd/user-password boolean false
d-i passwd/user-password-again boolean false


### HORA
d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string pool.ntp.br


### PARTICIONAMENTO MANUAL SUPRIME CONFIRMACAO
d-i partman-auto/init_automatically_partition select Manual
d-i partman/confirm boolean true 
d-i partman/confirm_nooverwrite boolean true 

## DESABILITA O MIROR DOWNLOAD DE PACOTES DURANTE A INSTALACAO
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

### CONFIGURACOES DO ATP-GET
d-i apt-setup/use_mirror boolean false


### PACOTES EXTRAS QUE SERAM INSTALADOS
tasksel tasksel/first multiselect standard, ssh-server
d-i pkgsel/include string vim

### NAO ENVIA INFORMACOES REFERENTE A PACOTES UTILIZADOS
popularity-contest popularity-contest/participate boolean false

### INSTALA O GRUB
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string default

### TERMINA A INSTALACAO E REINICIA
d-i finish-install/reboot_in_progress note

## REMOVE O GATEWAY E O DNS PADRAO DA INSTALACAO
d-i preseed/late_command string  sed -i '/gateway/d' /target/etc/network/interfaces ; sed -i '/dns-nameservers/d' /target/etc/network/interfaces ; echo > /target/etc/resolv.conf


Após fazer todas alterações, salve este conteúdo dentro do arquivo iso/preseed.cfg .

Agora atualize o MD5 dos arquivos
# cd ~/iso
# md5sum `find -follow -type f` > md5sum.txt
# cd ..

Agora vamos criar a iso do nosso novo sistema
# genisoimage -o LinuxNovo.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./iso

Feito, você criou uma ISO de instalação automática, ou quase automática...

Obs:. Na ultima linha d-i preseed/late_command eu posso rodar comandos de pós instalação, também pode ser criado um script para fazer estes ajustes, também pode fazer um chroot /target e rodar comandos na nova instalação, 
Obs2:. /target é a pasta onde esta montada a nova instalação, então tudo que for alterado dentro desta estrutura afeta diretamente a nova instalação

Fonte: https://www.debian.org/releases/stable/i386/apb.html
Fonte2: https://www.debian.org/releases/jessie/example-preseed.txt

Forte abraço a todos,
Marcos Carraro

Read More

quarta-feira, 8 de julho de 2015

Procurando conteúdo dentro de arquivo + mostrar nome do arquivo

Buenas,

Imagine a seguinte situação, você tem um projeto em /var/www/htmll/projeto1/ onde você precisa encontrar a palavra "conteudo_especial" porém você precisa saber em qual arquivo esta este conteudo.

Para isso o nosso querido linux é muito bom.

Vamos lá.

grep -H -r -i "conteudo_especial" .

Simples assim o -i é para olhar letras maisculas e minusculas, o -r é recursivo entra em cada pasta e procura, o -H vai mostrar o nome do arquivo que encontrou a palavra.

Forte abraço,
Marcos Carraro.
Read More

quarta-feira, 25 de fevereiro de 2015

Resolver problema Download .zip com PHP Corrompendo + Limitando Velocidade de Download de Arquivo com PHP

Bom Dia,


Hoje finalizei um sistema e por incrível que parece por algum motivo estranho ele corrompia os downloads em zip, fazendo algumas buscas comentaram do mod deflat do apache, onde ele faz a compressão dos arquivos para melhorar a performance do site e ocupar menos banda (Para testes:  http://www.whatsmyip.org/http-compression-test/  ) .

Ok, então no meu .htaccess inseri a seguinte linha.

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>

Onde segundo ele deveria apenas compactar estes "mimes types", porém ele acabou compactando o .zip achei estranho, porém acabou resolvendo o problema, ainda fiquei "encucado" com o porque que ele compactou sendo que não declarei ele.

Download do zip resolvido é hora de ir para o php, onde vamos limitar a velocidade do download do usuário.

            // header para forçar download
            header('Content-Description', 'File Transfer');
            header('Pragma: public');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Cache-Control: private', false);
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="arquivo.zip"'); // Nome do arquivo
            header('Content-Transfer-Encoding: binary');
            header('Content-Length: ' . filesize('./upload/arquivo.zip'));
            header('Connection: close');
            // Metodo com limitacao de banda para 150k
            flush();
            $arqAberto = fopen("./upload/arquivo.zip", 'rb');
            while (!feof($arqAberto)) {
                echo fread($arqAberto, round(150 * 1024));
                flush();
                sleep(1);
            }
            fclose($arqAberto);


Forte abraço
Marcos Carraro.


Read More

segunda-feira, 23 de fevereiro de 2015

Testando "throughput" de rede

Boa Noite,

Pessoal, hoje vamos ver como fazer um teste de carga na rede / servidor.

Partindo do princípio que você esteja usando Centos/Fedora instale no servidor e no cliente o pacote "iperf"

No servidor vamos colocar ele em modo de "escuta"

# Ip Servidor: 192.168.1.1
# iperf -s

Cliente
# iperf -c 192.168.1.1

Agora vamos aumentar o tamanho do buffer para 10mb, para fazer isso utilize o parâmetro "-w 10M" de 10M pode ser até 10G

Exemplos

# Ip Servidor: 192.168.1.1
# iperf -s -w 10M

Cliente
# iperf -c 192.168.1.1 -w 10M

Agora faça a leitura deste arquivo para otimizar alguns parâmetros do kernel para melhorar a rede
https://www.frozentux.net/documents/ipsysctl-tutorial/

Tem um link no digitalocean que não consigo encontrar que também tratava dos parâmetros de kernel era mais direto ao ponto.

Mais informações
https://iperf.fr/

Obs:. O ideal é antes de botar para funcionar os novos parâmetros é de salvar o valor default do mesmo, pois as vezes existe a melhora como pode piorar.

Bons Testes
Read More

quarta-feira, 7 de janeiro de 2015

Criando uma ISO Customizada do Centos 6.6 + Incluir pacote na ISO

Buenas, feliz ano novo que 2015 seja ótimo.

Hoje vamos ver como criar uma instalação personalizada do centos utilizando o Kickstart não vou explicar linha por linha do arquivo pois no site do Fedora existe um documento completo referente a ele.

1- Preparação do diretório, vamos trabalhar na home do usuário root, para isso.
# su root
# cd ~
# mkdir build

2 - Faça o download da ISO no site do centos
# cd ~
# wget http://centos.ufms.br/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso

3 - Monte a ISO e extraia o seu conteudo para  a pasta build
# mount -o loop CentOS-6.6-x86_64-minimal.iso /mnt
# cd /mnt
# tar -cf - . | (cd ~/build/ ; tar -xvpf - )
# umout /mnt

4 - Crie o arquivo Kickstart Obs:. Segue um kickstart bem simples
# vim ~/build/ks.cfg
=======================================================================

#
# Marcos Carraro - Kickstart
#
# SO: Centos 6.6 x64
# Desc: Centos minimal, ainda mais leve com pequenas alteracoes, criacao da estrutura dos arquivos em LVM\
#  ip default: 15.0.0.1/24 | senha root default: abc123! | No minimo 10gb de disco e 1gb de memoria
#
#

install
cdrom
lang pt_BR.UTF-8
keyboard br-abnt2
network --onboot yes --device eth0 --bootproto static --ip 15.0.0.1 --netmask 255.255.255.0 --noipv6 --hostname atomicserver
rootpw  --iscrypted $6$Dr2vTVfUFzXVwn.t$n2hGfw0pa/cv7W.e/z21glUPkMHZAlsVAfB/NFxWBCjQZlQPWQwQjs1L6kuzghRqYzjL5AghYuXSv/EoceYjO0
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc America/Sao_Paulo


#
# Disco e particionamento
#
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto quiet"
#clearpart --all --initlabel --drives=sda
clearpart --all --initlabel

part /boot --fstype=ext4 --asprimary --size=256
part pv.202002 --grow --size=200

volgroup vg_disco --pesize=4096 pv.202002
logvol swap --name=lv_swap --vgname=vg_disco --size=1024
logvol / --fstype=ext4 --name=lv_tudo --vgname=vg_disco --size=1024
logvol /var  --fstype=ext4 --name=lv_var --vgname=vg_disco --size=1024

#
# Repositorio para instalar os pacotes
#
repo --name="CentOS"  --baseurl=file:///mnt/source --cost=100

#
# Desabilita alguns servicos
#
services --disabled=auditd,ip6tables,iptables,mdmonitor

#
# pacotes que serao instalados
#
%packages --nobase --excludedocs

#
# Instalar pacotes...
#
@core
perl
tcpdump
bc
vconfig
vim-common
vim-enhanced
traceroute
bind-utils

#
# Remover pacotes...
#
-selinux*
-libselinux*
-dhclient*
-mdadm*

%end

#
# Reinicia o servidor apos a instalacao
#
reboot

=======================================================================

5 - Instale o plugin do yum para baixar os pacotes
# yum install yum-plugin-downloadonly

6 - Baixe os pacotes que deseja incluir no nosso caso  o vim, traceroute, bind-utils, vconfig, bc
# yum install --downloadonly --downloaddir=~/build/Packages/ $(repoquery --requires tcpdump vim-common vim-enhanced bc vconfig traceroute bind-utils perl perl-libs)
# yum install --downloadonly --downloaddir=~/build/Packages/ tcpdump vim-common vim-enhanced bc vconfig traceroute bind-utils perl perl-libs

7 - Atualize o repositório da ISO.
# cd ~/build/
# createrepo -v --update -g `find repodata -iname *minimal*.xml` .

8 - Criar as entradas no menu de boot
# vim isolinux/isolinux.cfg
Adicione as seguintes linhas logo acima do "label linux"
Obs:. Lembre de remover o "menu default" da entrada do "lavel linux"

label AtomicServer
  menu label ^Instalacao do Centos Customizado
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg nomodeset

9 - Crie a iso
# cd ~/build
# mkisofs -joliet-long -z -T -o ../Centos-6.6-x64_Customizado.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -m TRANS.TBL .

10 - Instale ele.

Forte abraço
Marcos Carraro


Read More

quarta-feira, 5 de novembro de 2014

Redirecionando saida do netstat + data e hora + log

Buenas,


watch -n 1 'netstat -patun | grep -i post | tee -a listando_conexoes.log; date | tee -a  listando_conexoes.log'


Onde:

watch -n 1 'COMANDO' -> repete o comando a cada 1 segundo.

netstat -patun | grep -i post | tee -a listando_conexoes.log; -> redireciona a saida do netsta para o arquivo listando_conexoes.log

date | tee -a  listando_conexoes.log -> Joga no fim da linha a data e hora



ABraços
Read More

quinta-feira, 23 de outubro de 2014

Sincronizar Senhas do AD (Active Directory) com qualquer outro serviço

Buenas,

Turma, sei que muitos já se perguntaram se é possível sincronizar as senhas dos usuários do AD com outros sistemas e até estes tempos a resposta sempre era NÃO.

Porém esse não vem de pessoas que não estava bem informadas, pois existe duas maneiras de sincronizar as senhas do AD com outros serviços.

Utilizando o ssod desenvolvido pela microsoft (com algumas alterações é possível utilizar ele com outras bases, porém é muito complexo, pois utiliza-se socket, 3DES, sha1, base64...), ou fazendo um "hook" que a microsoft chama de "Passoword Filter" na qual desenvolvi o "esqueleto", na verdade grandes empresas utilizam esta maneira para sincronizar as senhas tais como, Google, SAP, Red Hat, entre outras...

No meu github https://github.com/marcoscarraro/SyncPass tem o projeto.

Esta escrito em C que depois transforma-se em uma dll, lá também tem mais informações de como ativar ela, e alguns erros do compilador.

Porém esta DLL não esta fazendo nenhum insert em banco, nada, apenas jogando para um arquivo de texto, pois a ideia é montar o esqueleto, e o restante vem com as necessidades, com a base pronta adaptar para outros é barbada.

Links:
SSOD,
http://www.microsoft.com/en-us/download/details.aspx?id=2792
http://support.microsoft.com/kb/324542/pt-br

Password Filter,
http://msdn.microsoft.com/en-us/library/windows/desktop/ms721882(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/bb259958.aspx

SyncPass - Desenvolvido por Marcos Carraro (EU :P)
https://github.com/marcoscarraro/SyncPass


Forte Abraço
Marcos Carraro.
Read More

quinta-feira, 18 de setembro de 2014

Criando um repositório de RPM - 1

Buenas,

Começa aqui uma documentação para equalizar a estrutura linux.

A ideia é, montar um repositório de pacotes central, e recriar ISO do Centos pré configurado.

Porque, assim você pode homologar os pacotes antes que seus servidores baixem eles, ou deseja disponibilizar algum pacote recompilado...

Para isso é necessário que a máquina que vai conter todos RPM precisa ter os seguintes pacotes.
# yum install yum-plugin-downloadonly httpd createrepo

Primeiro vamos criar a estrutura básica para disponibilizar os pacotes.

# mkdir -p /var/www/html/repo/6/x86_64/pacotes 

Onde 6 é a versão do Centos, e onde x86_64 é a arquitetura dos pacoes no nosso caso é x64.

Criado a estrutura vamos baixar os pacotes que vamos disponibilizar no repositório.

# yum install --downloadonly --downloaddir=/var/www/html/repo/6/x86_64/base/ httpd httpd-tools php php-cli php-common php-mysql php-pdo php-gd 

Porém muitas vezes temos instalações super leves, minimalistas, então é necessário também disponibilizar além dos pacotes as dependências dos mesmos.

# yum install --downloadonly --downloaddir=/var/www/html/repo/6/x86_64/base/ $(repoquery --requires httpd httpd-tools php php-cli php-common php-mysql php-pdo php-gd  )

Ok, efetuado todos downloads, vamos criar o índice para que seja mais fácil do yum verificar se o pacote que ele precisa tem no nosso repositório.

# createrepo /var/www/html/repo/6/x86_64/pacotes

Pronto, agora já temos o repositório ativado, vamos criar o arquivo para o servidor utilizar o nosso repo.

[pacotes]
name= pacotes homologados
baseurl=http://repo.casa.local/repo/$releasever/$basearch/pacotes
gpgcheck=0


Pronto, o repositório esta criado, próximo post sera criando a ISO personalizada. e o outro post sera criando um pacote rpm.

Abraços
Marcos Carraro
Read More

quarta-feira, 17 de setembro de 2014

Xenserver configurando repositório USB/INTERNO de ISO

Buenas,

Quem nunca teve que subir uma VM no xen e estava sem o CD somente a ISO e sem nenhum compartilhamento na rede???

Pois bem, foi o que deu, precisei subir uma VM onde eu tinha a ISO na pendrive foi que me ocorreu de procurar a informação de como configurar.

Primeiro crie um diretorio para fazer a montagem ou o armazenamento das ISO.

# mkdir /mnt/usb

# mount -t auto /dev/sdc1 /mnt/usb

// Agora sim vem o pulo do gato

# xe sr-create name-label=ISOs type=iso device-config:location=/mnt/usb device-config:legacy_mode=true content-type=iso

Se você deseja despejar as ISOs no servidor, é so pular a parte de montar o dispositivo externo.

Abraços
Marcos Carararo
Read More

sexta-feira, 5 de setembro de 2014

Postgresql - Cacuum+ Reindex = Todo Banco

Buenas,

Talvez para os deconhecidos, ou não, segue um script para fazer uma pequena manutenção no banco Postgresql

#!/bin/bash

# Vaccum organiza os registros
# -a  Todos os Banco de Dados.
# -f  Full
# -z  Analyze
# -v  Exibe mensagens de debug
/usr/bin/vacuumdb -a -z -f -U postgres


# REINDEX
# -a Todos os bancos
# -s Reindexa os catálogos do sistema do banco de dados.
/usr/bin/reindexdb -a -U postgres


Lembrando que no pg_hba.conf deve estar setado para não pedir senha para as conexões locais, caso contrário terá que informar no script a senha utilizando o parâmetro -W.
local   all             all                                     trust

Forte abraços
Marcos Carraro
Read More

segunda-feira, 25 de agosto de 2014

Postgresql 9.2 Log ---> AVISO: pgstat wait timeout + Alguns dicas de performance do pg

Buenas,

Tenho um BI aqui na empresa o qual sempre dá alguns problemas insanos com o pg, porém hoje fiquei na cola dos caras, até pegar o momento exato que ocorre os problemas.

No pg ele lança a seguinte informação nos logs "AVISO:  pgstat wait timeout", como se ele não estivesse dando conta do recado.

Acompanhando IO estava tranquilo "iostat -x 1" porém ele continuava a reclamar.

Pesquisando aqui ali em questão de 15 minutos já tinha encontrado várias pedras para tentar resolver o problema.

Dentre elas a principal de todas "stats_temp_directory" onde o pq salva algumas estatísticas, onde o ideal seria carregar isso na memoria, e não em disco.

Então para jogar estas estatísticas na ram basta seguir estes passos.

# Diretório
mkdir /var/lib/pgsql_stats_tmp

# Permissão para a pasta geral
chmod 777 /var/lib/pgsql_stats_tmp

# Permissão "sticky-bit", onde todos podem ler, escrever e executar, porém so podem fazer isso com seus arquivos.
chmod +t /var/lib/pgsql_stats_tmp

# No fstab vamos montar o diretório e indicar o quanto de memoria ram ele vai ocupar, nesta caso 2G já esta ótimo.
tmpfs /var/lib/pgsql_stats_tmp tmpfs size=2G,uid=postgres,gid=postgres 0 0
# Agora é so reiniciar o serviço e correr para o abraço
/etc/init.d/postgresql-9.2 restart
# FSTAB dos diretórios
/dev/xvda1 / ext4 defaults,noatime,nodiratime,data=writeback,commit=100,nobh 1 1
/dev/xvda3 /db_sadig xfs defaults,noatime,nodiratime,allocsize=512m,barrier=0,inode64,logbufs=8 1 2

# Limites /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

# Sysctl.conf
vm.swappiness = 0 # não usa o swap
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 262144 4194304
net.ipv4.tcp_wmem = 4096 262144 4194304
vm.dirty_background_ratio = 50
vm.dirty_ratio = 80
fs.file-max = 6815744
fs.aio-max-nr = 104857600
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.core.netdev_max_backlog = 65536
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.conf.all.arp_notify = 1
# Aqui é feito calculos
# http://www.postgresql.org/docs/9.0/static/kernel-resources.html
# http://helkmut.blogspot.com.br/2011/07/postgresql-tunando-seu-shmmax-e-shmall.html
# http://michael.otacoo.com/postgresql-2/take-care-of-kernel-memory-limitation-for-postgresql-shared-buffers/
# http://serverfault.com/questions/341680/postgresql-performance-adjusting-shmmax-and-shmall
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

# postgresql.conf
#
# ATENCAÇÃO
# Não sou DBA, então pode ter parâmetros fora do normal, que na visão de um DBA estão errados,
# ou deveriam, ter outros valores. Então se você é DBA ou percebeu algum erro comunique-me.
#
#
listen_addresses = '*' # what IP address(es) to listen on;
max_connections = 300 # (change requires restart)
shared_buffers = 2048MB # min 128kB
# (change requires restart)
temp_buffers = 512MB # min 800kB
max_prepared_transactions = 300 # zero disables the feature
# (change requires restart)
work_mem = 256MB # min 64kB
maintenance_work_mem = 512MB # min 1MB
synchronous_commit = on # synchronization level;
# off, local, remote_write, or on
checkpoint_segments = 32 # in logfile segments, min 1, 16MB each
checkpoint_timeout = 1h # range 30s-1h
checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0
random_page_cost = 6.0 # same scale as above
effective_cache_size = 2048MB
log_destination = 'stderr' # Valid values are combinations of
logging_collector = on # Enable capturing of stderr and csvlog
log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA
log_filename = 'postgresql-%a.log' # log file name pattern,
# can include strftime() escapes
log_truncate_on_rotation = on # If on, an existing log file with the
# in all cases.
log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
log_rotation_size = 0 # Automatic rotation of logfiles will
# happen after that much log output.
#log_lock_waits = off # log lock waits >= deadlock_timeout
log_statement = 'all' # none, ddl, mod, all
#log_temp_files = -1 # log temporary files equal or larger
# than the specified size in kilobytes;
# -1 disables, 0 logs all temp files
log_timezone = 'Brazil/East'
log_checkpoints = on
stats_temp_directory = '/var/lib/pgsql_stats_tmp'
datestyle = 'iso, dmy'
#intervalstyle = 'postgres'
timezone = 'Brazil/East'
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'pt_BR.ISO88591' # locale for system error message
# strings
lc_monetary = 'pt_BR.ISO88591' # locale for monetary formatting
lc_numeric = 'pt_BR.ISO88591' # locale for number formatting
lc_time = 'pt_BR.ISO88591'
default_text_search_config = 'pg_catalog.english'
default_with_oids = off
escape_string_warning = on
standard_conforming_strings = on
Read More

terça-feira, 22 de julho de 2014

Mysql - Tabela para armazenar imagens e grandes textos

Bueno, se você esta montando algum sistema de notícias, que o mesmo vai ter imagens, e muito texto, e não deseja hospedar as imagens, então suba todo no banco. 

Para o editor estou utilizando o http://hackerwins.github.io/summernote/ junto do http://getbootstrap.com/

Então lembre-se que a coluna que vai armazenar o conteúdo, deve ter estes tipos, avalie o tamanho que podera ter e utilize a de acordo.

TINYBLOB, TINYTEXT                                 (255 Bytes) 
    BLOB, TEXT                                                    (64 Kilobytes) 
       MEDIUMBLOB, MEDIUMTEXT                 (16 Megabytes) 
  LONGBLOB, LONGTEXT                              (4 Gigabytes)

Forte quebra costelas,
Marcos Carraro.
Read More

quarta-feira, 18 de junho de 2014

Segmentando a rede Visitantes da rede principal

Segmentando a rede visitantes da rede principal.
Equipamentos.
Switch HP
Access Point Ubiquiti UNIFI ULR

Vlan
Vlan da visitantes 220
Configurações na Switch
No switch vamos configurar a porta onde este conectado o AP para usar a porta como tagged (trunk) com as vlans:  1 (Vlan default da rede), 220 (Vlan para a rede visitantes).
Também não podemos esquecer de configurar a porta onde esta conectado o servidor de DHCP e o Roteador para que eles possam enxergar esta rede, distribuir os IPs e fazer os roteamentos.

1 – Criando a VLAN
2 – Configurando a porta onde esta conectado o AP, selecione a VLAN desejada e coloque como “tagged” em outras palavras é “trunk”, as portas que participam da vlan 220 ficaram em verde, caso alguma porta fosse dedicada a esta VLAN ficaria em AZUL.
Feito esta alterações, clique em “apply” e depois no menu da esquerda Device->Configuration
Na aba “Save” clique no botão “Save Currente Settings”, pronto estamos com a switch configurada.
Vamos ao próximo passo configurar a interface com a VLAN no firewall.
Configurando Interface no Servidor
O arquivo de configuração deve ser cirado em  /etc/sysconfig/network-scripts/ (Familia RedHatLike), o nome fica
ifcfg-(Placa de rede com o cabo conectado na switch).(ID da vlan)
Exemplo: ifcfg-eth1.220
# cat /etc/sysconfig/network-scripts/ifcfg-eth1.220
VLAN=yes
DEVICE=eth1.220
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.10.1
NETMASK=255.255.255.0


Configurando DHCPD
 Primeiro, deve-se indicar quais interfaces estarão distribuindo os IPS, para isso altere o arquivo /etc/sysconfig/dhcpd.
# cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth1 eth1.220

Arquivo dhcpd.conf
# cat /etc/dhcpd.conf
ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;
authoritative;
log-facility local7;

# REDE ADM
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      192.168.1.253;
        option netbios-name-servers     192.168.1.253;
        option ntp-servers              192.168.1.253;
        option domain-name              "rede.interna";

        range 192.168.1.10 192.168.1.240;
        option broadcast-address 192.168.1.255;

ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;
authoritative;
log-facility local7;

#--------------------------------------------------------
# ips fixados
  host coletor1 {
hardware ethernet 00:23:68:E4:7F:78;
fixed-address 192.168.1.150;
   }
}
# REDE VISITANTES
subnet 192.168.10.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.10.1;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      192.168.10.1;
        option domain-name              "rede.interna";

        range 192.168.10.10 192.168.10.90;
        option broadcast-address 192.168.10.255;
}

Configurando APs
Para isso tem que estar rodando o próprio programa da Ubiquiti. Então acesso o seu IP no navegador na porta 8443.
Vá em Wireless networks, supondo que você já tenha uma rede criada vamos configurar a VLAN.

Feito isso clique em “apply” e esta finalizado.




Forte Abraço
Marcos Carraro















Read More

sexta-feira, 4 de abril de 2014

Linux Erro Disco - DRDY ERR UNC e ou {DRDY err}

Buenas,

Situação, um servidor com 6 discos de 1,5tb, do nada da um crash (Os discos estão em RAID para ter mais desempenho).

Ao ligar, imagina o retorno....
  {DRDY err} do sata1....

Um simples fsck não tava resolvendo meu problema, até que veio os velhos tempos do slackware, o dino deixou algumas coisas legais...

Então, nada melhor que rodar o e2fsck

# e2fsck -f -c -v -y /dev/md0

No meu caso o /dev/md0 é o raid, mas pode usar o seu disco /dev/sda1....

Após 19Horas, o servidor voltou a vida a todo vapor.

Boa Sorte se não precisarem ocupar o comando, se tiverem que utilizar tomara que de retorno.

Forte quebra costelas,
Marcos Carraro.
Read More

quinta-feira, 3 de abril de 2014

NMAP vs CONFICKER

É velho, mas ainda existe, e por causa dele, fiquei numa blacklist.

Solução.

#sudo nmap -sC --script=smb-check-vulns --script-args=safe=1 -p445  -d -PN -n -T4  --min-hostgroup 256 --min-parallelism 64  -oA conficker_scan 192.168.1.0-254 > conficker

Na máquina atualizar o XP para o SP3, aplicar os FIX, e também http://brazil.kaspersky.com/recursos/combater-conficker 

O legal do NMAP é que o retorno dele é fácil detectar alguma máquina infectada.

Nmap scan report for 192.168.1.110
Host is up, received arp-response (0.0097s latency).
Scanned at 2014-04-03 16:32:49 BRT for 2s
PORT    STATE SERVICE      REASON
445/tcp open  microsoft-ds syn-ack
MAC Address: 00:1D:1A:03:6E:F8 (OvisLink S.A.)

Host script results:
| smb-check-vulns:
|   MS08-067: CHECK DISABLED (remove 'safe=1' argument to run)
|   Conficker: Likely INFECTED (by Conficker.C or lower)
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   MS06-025: CHECK DISABLED (remove 'safe=1' argument to run)
|_  MS07-029: CHECK DISABLED (remove 'safe=1' argument to run)
Final times for host: srtt: 9730 rttvar: 15146  to: 100000


Marcos Carraro
Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro