Chronosbox

Servidores

Migrando bases de dados LATIN1 para UTF-8 com o PostgreSQL

by Felipe 'chronos' Prenholato on 03:59, under Databases, Debian/Ubuntu, Dicas, Gentoo, Linux, PostgreSQL, Servidores

Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII.

O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e configurado o Postgresql, e não me deixava criar uma base de dados UTF-8, gerando o seguinte erro:

debian:~# su postgres -c 'createdb teste3  -E UTF-8'
createdb: database creation failed: ERROR:  encoding UTF8 does not match server's locale en_US
DETAIL:  The server's LC_CTYPE setting requires encoding LATIN1.

(continue reading…)

Leave a Comment :, , , , , , , , , , , , more...

Compilando fácil com Debian/Ubuntu

by Handrus Nogueira on 18:28, under Debian/Ubuntu, Linux, Servidores

Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco.
No Debian/Ubuntu a descoberta do apt-build me ajudou a contornar o problema com a mesma classe e quase a mesma eficiência que o portage.

Vamos ao passo-a-passo:

Para instalar o apt-build:
sudo apt-get install apt-build auto-apt

Configure para sua máquina:
dpkg-reconfigure apt-build
Escolha sua arquitetura de processador e o nível de otimização, o indicado é o médio.
As opções ficam salvas no arquivo /etc/apt/apt-build.conf ; Vamos apenas ajustar o número de processadores na ultima linha do arquivo altere-o para
make_options = " -j4"
onde o número é igual ao número de “cores” + 1. Portanto um quadcore seria “-j5″.

Para evitar que os pacotes compilados sejam atualizados pelos pacotes oficiais vamos editar o arquivo /etc/apt/preferences adicionando:
Package: *
Pin: release o=apt-build
Pin-Priority: 990

Não se esqueça de adicionar os repositórios de código fonte (deb-src) e pronto!
Agora ao invés do tradicional apt-get install utilize apt-build install

Exemplo: sudo apt-build install xchat emesene

Tutorial rápido sobre apt-build:

apt-build install –reinstall para reinstalar
apt-build upgrade Upgrade nos softwares instalados
apt-build world Recompila todo o sistema
apt-build remove programa Remove o programa
apt-build clean-build Remove pacotes compilados
apt-build clean-sources Remove os códigos fonte baixados.

2 Comments more...

Atualize o hosts.deny para bloquear tentativas de brute force

by Felipe 'chronos' Prenholato on 14:14, under Linux, Servidores

Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh :)

O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny

Código:

#!/bin/bash</code>
 
cp /etc/hosts.deny /var/tmp/hosts.deny
 
# Jun  8 00:39:43 mintaka sshd[23332]: User root from 222.77.183.51 not allowed because not listed in AllowUsers
egrep "$(date +%b) ($(date +%d)|$(date +%e)).*User .* from [a-z0-9\.]* not allowed because not listed in AllowUsers" /var/log/messages | sed -e 's/.* from \([a-z0-9\.]*\) .*/\1/' | sort | uniq | sed -e 's/^/ALL:/' &gt; /etc/hosts.deny ;
#Jun  8 11:54:33 mintaka sshd[31221]: Invalid user bob from 62.204.145.224
egrep "$(date +%b) ($(date +%d)|$(date +%e)).*Invalid user .* from [a-z0-9\.]*$" /var/log/messages | sed -e 's/.*Invalid user .* from//' | sort | uniq | sed -e 's/^/ALL:/' &gt;&gt; /etc/hosts.deny ;
 
diff -u /etc/hosts.deny /var/tmp/hosts.deny &amp;&gt;/dev/null || (echo "** hosts.deny updated **" ; cat /etc/hosts.deny)

Script funcionando:

Sep 2 16:55:02 mintaka -- MARK --
Sep 2 13:58:10 mintaka sshd[20790]: Did not receive identification string from 189.2.118.72
Sep 2 13:58:34 mintaka sshd[20795]: Invalid user suporte from 189.2.118.72
# Tentativa de brute force
Sep 2 13:58:41 mintaka sshd[20798]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:43 mintaka sshd[20800]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:46 mintaka sshd[20802]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:49 mintaka sshd[20804]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:51 mintaka sshd[20806]: Invalid user suporte from 189.2.118.72
Sep 2 13:59:24 mintaka sshd[20817]: Did not receive identification string from 189.2.118.72
# Script roda
** hosts.deny updated **
ALL:74.221.239.100
ALL: 189.2.118.72
ALL: 200.27.79.101
ALL: 74.221.239.100
# E os hosts agora estão bloqueados
Sep 2 14:00:09 mintaka sshd[20826]: Invalid user teste2008 from 189.2.118.72
Sep 2 14:00:10 mintaka sshd[20864]: refused connect from 189.2.118.72 (189.2.118.72)

Eu rodo em minha máquina a cada 2 minutos :)

5 Comments :, , , , , more...

pingping – Verificando conexão com servidores.

by Felipe 'chronos' Prenholato on 12:28, under Dicas, Linux, Planet GentooBR, Servidores

Ai em baixo meu script pingping. Ele vai alertar os emails quando algum servidor parar. Leia ele :) .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/bin/sh
# This script send ICMP requests for each server on SERVIDORES list and sends
# emails for emails in LISTA_EMAILS list why one of servers doesn't reply
# You only receive alerts if in last time that script request server we have a success reply
# or if we not tested server yet.
#
# Author: Felipe Rafael Prenholato - chronos@gentoobr.org
# IRC: nick chronos at irc.freenode.net
# Date: 21 de Junho de 2006.
#
# This script is under GPLv2. Read it at http://www.gnu.org/licenses/gpl-2.0.txt.
# Any changes please send me a mail :).
#
 
# IP or name of servers to test
SERVIDORES="elise prime odissey"
 
# emailo to send alerts
LISTA_EMAILS="chronos@gentoobr.org philipe_rp@yahoo.com.br"
 
# date format to send in email
data=$(date +"%T de %d/%m/%Y")
 
# this function sends ping
ping_server() {
 
local pingreturn
local serversts
local TMPFILE
local server
 
server=$1
TMPFILE="/tmp/ping_$server.tmp"
 
# Debug
#echo "Server: $server"
#echo "Temp file: $TMPFILE"
 
# ping and get return
ping -c3 $server &amp;>/dev/null;
pingreturn=$?;
 
# 0 means ok
if [ "$pingreturn" == "0" ]
then
echo "1" > $TMPFILE
fi
 
# 1 means problems
if [ "$pingreturn" == "1" ]
then
 
if ! [ -e $TMPFILE ]
then
echo "1" > $TMPFILE
fi
 
serversts=$(cat $TMPFILE)
 
# send mail if have problems
if [ "$serversts" == "1" ]
then
 
echo "0" > $TMPFILE
msg="Servidor $server fora do ar em $data. Contatar responsavéis."
ass="Servidor $server fora do ar."
LC_ALL="en_US.ISO-8859-1" echo "$msg" | mail -s "$ass" $LISTA_EMAILS
fi
 
fi
 
}
 
# roda ping_server para cada servidor.
for e in $(echo $SERVIDORES);
do
ping_server $e;
done

Ele precisa ser instalado em um servidor que possa pingar os demais e enviar emails. Versões antigas do postfix não vão funcionar, tem q suportar a opção -a no comando mail, seu uso é:

./script

Coloque ele para rodar no cron e fique numa boa :)

1 Comment :, , , , , more...

StatPress

Visits today: 44 Visits since 6 de abril de 2009: 7673 Visitors now: %visitoronline%