2026-07-06

Enable DNS over TLS on containerized smokeping from Linuxserver.io

So you are running Smokeping in a container provided by Linuxserver.io. And you want its DNS probe to do DNS over TLS.

SOLUTION

Expose a new directory to the Smokeping container and mount it at /root inside the container:

-v /path/to/dir:/root

Inside this directory create a single file named .digrc with +tls as the contents:

echo '+tls' > /path/to/dir/.digrc

From now on, the /usr/bin/dig binary inside the Smokeping container will always implicitly pass the +tls flag every time it runs.

Quadlet file for systemd and podman

[Unit]
Description=smokeping

[Container]
Image=lscr.io/linuxserver/smokeping:latest
ContainerName=smokeping
HostName=%H
Environment=TZ=Etc/UTC
Volume=%h/containers/smokeping/config:/config
Volume=%h/containers/smokeping/data:/data
## My directory of choice for the .digrc file
## is ~/containers/smokeping/roothome
Volume=%h/containers/smokeping/roothome:/root
PublishPort=3380:80/tcp
AddCapability=NET_RAW
AutoUpdate=registry
Pull=newer

[Service]
Restart=always

[Install]
WantedBy=default.target

2023-01-20

Get a kerberos ticket from Gnome Online Accounts via dbus

Four years after my last post here, I still struggle somewhat regularly with getting stuff done over dbus. I know, I could have employed some of my free time during these years to actually learn dbus but alas... Here is my latest finding.

$ dbus-send --session \
--dest=org.gnome.OnlineAccounts \
--type=method_call \
--print-reply \
/org/gnome/OnlineAccounts/Accounts/account_<something> \
org.gnome.OnlineAccounts.Ticketing.GetTicket \

And how do you find this little account_<something> item you need to know? I'm glad you asked.

$ gdbus introspect -e -r \
-o /org/gnome/OnlineAccounts/Accounts \
-d org.gnome.OnlineAccounts |less

(...)
node /org/gnome/OnlineAccounts/Accounts {
node /org/gnome/OnlineAccounts/Accounts/account_1647435362_1 { <=== here it is!
(...)
readonly s ProviderType = 'kerberos'; <=== this is a kerberos-type online account

That's all for today. See you in another decade.

2018-02-09

Update dnsmasq's DNS servers using dbus

10.0.0.1 is my upstream server.

10.11.11.11 and 10.12.12.12 are the DNS servers for my VPN under domain example.com

10.21.21.21.21 and 10.22.22.22 are the DNS servers for my other VPN under domain example.net

Command (spacing within the code is optional)

sudo gdbus call -y \
    -d org.freedesktop.NetworkManager.dnsmasq \
    -o  /uk/org/thekelleys/dnsmasq \
    -m uk.org.thekelleys.dnsmasq.SetServersEx \
    "[ 
       ['10.11.11.11', 'example.com'],
       ['10.12.12.12', 'example.com'],
       ['10.21.21.21', 'example.net'],
       ['10.22.22.22', 'example.net'],
       ['10.0.0.1']
    ]"

2017-02-18

Segurança da LAN doméstica com IPv6

Sua LAN está protegida, mas não é o NAT que faz isso.

Estou usando IPv6 em casa e no home office há alguns meses, e você provavelmente também pode usar já.

É curioso como a gente se sente seguro atrás do NAT do modem. Eu certamente me sentia mais tranquilo usando IPv4 com NAT feito pelo modem, sabendo que o NAT impedia que minhas máquinas dentro da LAN recebessem uma requisição de conexão vinda da Internet. Afinal, na Internet ninguém sabe o que há por trás do IP público que está no meu modem.

De onde vem o medo pelo fim do NAT que o IPv6 traz?

O medo vem do fato de que qualquer máquina na Internet (v6) pode mandar pacotes diretamente para o meu computador atrás do modem, pois ele é globalmente acessível no endereço xxxx:yyyy:zzzz:aaaa:bbbb:cccc:dddd:eeee. Isto é, todo host IPv6 é globalmente endereçável.

Mas lembre-se: globalmente endereçável ≠ globalmente acessível.

A sensação de segurança decorrente do NAT é falsa: [IPv6 Security Myth #3 – No IPv6 NAT Means Less Security]

Resumo do link acima: ao usar IPv4, quem dá segurança à sua LAN é o firewall SPI (stateful packet inspection) do modem, não o NAT.

Como seu modem oferece segurança à sua LAN

Veja a figura abaixo.

Quando seu computador na sua LAN doméstica se comunica com um host na Internet, ele manda o pacote ao modem, esse pacote é registrado pelo modem (quem mandou o pacote, de qual porta veio, pra qual porta vai, e pra qual IP (v4 ou v6) o pacote vai), e o modem encaminha o pacote ao IP (v4 ou v6) de destino.

O pacote de resposta vem da Internet e chega ao modem, que por sua vez verifica se o IP e a porta de origem do pacote de resposta casam com aquele pacote que saiu há pouco. Caso não casem, o modem bloqueia o pacote. Aí está a sua segurança. Este é o stateful packet inspection que o modem faz.

Veja como fica o firewall IPv6 do modem com Stateful Packet Inspection. Note que simplesmente retiramos a etapa de tradução do endereço de destino no retorno do pacote. Mas a segurança continua lá.

Exemplo da tela de configuração do meu modem Technicolor TD5336:

modem settings image
O modem já vem configurado para boquear todo e qualquer acesso à LAN vindo da WAN (isto é, da Internet).

Veja que prático, o modem já vem com a regra configurada: todo pacote pode sair da LAN para a Internet (WAN, no linguajar do modem), mas nenhum novo pacote pode vir da Internet para a LAN. Resolvido! \o/

Mais ou menos. Já ouviu falar da importância dos pacotes ICMP para o IPv6?

Modem fechado demais

No IPv6, os pacotes ICMP (chamados de ICMPv6) têm um papel central, mais do que no IPv4. Como no IPv6 a comunicação se dá diretamente entre seu laptop e o host na Internet, sem um NAT para intermediar, é o seu laptop que precisa receber os pacotes ICMP em caso de problemas nessa comunicação.

Veja aqui uma bela lista de todos os tipos de pacotes ICMPv6.

O mais importante e que normalmente vem desativado nos modems é o Packet too big, que os roteadores utilizam para informar que um pacote é maior que o MTU. [Mais detalhes]
Além, claro, dos tipos Echo request e Echo reply (ping e pong, respectivamente).

Um site que testa o sucesso dos pacotes ICMPv6 na sua conexão é este:

Abra seu modem

O primeiro passo nos meus dois modems após ativação da conexão IPv6 foi pedir ao firewall para permitir a entrada de todos os tipos de pacotes ICMPv6. Aqui está como ficou o filtro de IP no modem Technicolor TD5336:

A regra acima é bem simples: permitir todo pacote ICMPv6 vindo da WAN para a LAN.

É neste mesmo item de configuração que você pode abrir a comunicação com suas máquinas na LAN. Por exemplo, eu adicionei mais uma regra para permitir a comunicação com a porta TCP/22:

Note que basta não definir os IPs de origem e destino para que a porta TCP/22 seja permitida para toda a LAN.

Ainda não acredito que meu NFS/SMB/rsync/HTTP/DNS/FTP não está vazando para a Internet

Eu entendo. É difícil acreditar mesmo. Também custei a acreditar. Mas há uma forma fácil de testar: Eu uso o serviço de shell remoto devio.us há vários anos e ele foi minha principal ferramenta para testar a conectividade entre minha pacata LAN e a tempestuosa Internet.

Exemplo de teste:

  1. Abrir no modem uma determinada porta. Por exemplo, a porta TCP/9000
  2. Se não houver algum serviço escutando nessa porta, ponha o netcat para escutar: nc -l 9000
  3. ssh usuário@devio.us
  4. usuário@devio.us $ nc -vz meu:ip:v6:do:laptop 9000
  5. O resultado que indica sucesso é nc for Connection to meu:ip:v6:do:laptop 9000 port [tcp/*] succeeded!
  6. Agora experimente abrir no laptop mas não no modem alguma outra porta, por exemplo, a TCP/9001:
    nc -l 9001
  7. Entre no shell remoto e tente se conectar a essa porta:
    usuário@devio.us nc -vz meu:ip:v6:do:laptop 9001
  8. O resultado que indica sucesso agora é Connection timed out, pois o modem não está permitindo essa conexão.

E com isso nós provamos que o modem está protegendo sua LAN, mesmo quando você usa IPV6 e o seu laptop tem uma porta aberta. Se você não abrir a porta no firewall do modem, ninguém no mundo conseguirá se conectar a essa porta no seu laptop.

Próximos posts

Sabia que é possível conectar duas redes IPv4 através da Internet usando uma VPN IPv6? Os próximos posts vão mostrar como fazer isso usando OpenVPN. É assim que eu conecto minha rede de casa à do meu home office remoto.

E também:

  • Desempenho do IPv6 versus IPv4
  • Uma solução para associar de maneira estável o IPv6 dos hosts da sua LAN a um hostname (isso é complicado porque o provedor muda o prefixo IPv6 de tempos em tempos
  • Insira aqui uma sugestão de tema: _______________ :-)

Um abraço e até a próxima!

2016-12-25

Natal IPv6: acenda as luzes desta árvore só com IPv6

E aí, já tá acessando a Internet com IPv6?

Siga minha dica e conecte-se via IPv6!

Se sim, você já pode acender as luzes de um arvorezinha localizada na Bélgica.

Trivia: a Bélgica é líder mundial na adoção do IPv6. [Saiba por quê]

Funciona assim: você pinga somente via IPv6 um endereço que inclui o código RGB da cor que você deseja, aí uma das lâmpadas da árvore acende com a cor escolhida.

Alguns exemplos de cores:

$ # Para acender VERMELHO: $ ping6 2001:6a8:28c0:2017::FF:00:00 $ $ # Para acender VERDE: $ ping6 2001:6a8:28c0:2017::00:FF:00 $ $ # Para acender AZUL: $ ping6 2001:6a8:28c0:2017::00:00:FF $ $ # Para acender AMARELO: $ ping6 2001:6a8:28c0:2017::FF:FF:00 $ $ # Para acender na de código RGB 41-DF-A0: $ ping6 2001:6a8:28c0:2017::41:DF:A0

O site original está aqui.

2016-12-18

IPv6 + IPv4 (dual stack) com Live TIM

Estou escrevendo este longo post a partir do meu laptop, em casa, conectado ao Gmail e ao Blogger via IPv6 sem passar por túneis.

Em outra aba do navegador, estou conectado ao reddit via IPv4 também sem precisar de túneis.


Esta é a conectividade IPv4 + IPv6 em dual stack que eu vinha buscando há alguns anos. Finalmente consegui, e descrevo aqui o que foi necessário, além de relatar o que funciona e não funciona conforme esperado.


Como consegui IPv4 e IPv6 em dual stack com a Live TIM

Dual stack (pilha dupla) é como se chama a conectividade simultânea às redes IPv4 e IPv6, entregue pelo provedor direto ao modem, sem emprego de técnicas de transição como túneis, CGNAT ou outras artimanhas.

(NOTA: Não recebi nem recebo nada da TIM para falar bem do serviço Live TIM.)

Sou um feliz usuário do acesso à Internet pela Live TIM há uns 2-3 anos em meus dois endereços na cidade do Rio de Janeiro: minha casa e meu escritório-doméstico-fora-da-minha-casa, carinhosamente apelidado de mamma's home office. ou M.H.O.


Meu acesso no M.H.O. (mamma's home office) tem velocidade de download de 70 Mbps e upload de 30 Mbps.

Em casa, o download é de 35 Mbps e o upload é de 20 Mbps.

Solicitação à Live TIM, uma novela com final feliz

Pedi à TIM para ativar conectividade IPv6 em casa. Porém, como não funcionou de primeira, foram feitos inúmeros contatos telefônicos, uma verdadeira novela, até eu conseguir a tão desejada conectividade IPv4 + IPv6 em dual stack.

A novela começou dia 6/setembro/2016, quando liguei pela primeira vez para o suporte técnico da Live TIM no 10341 e pedi para ativarem a conectividade IPv6 na minha conexão sem perder a conectividade IPv4. Para minha surpresa, disseram que “sim”. Eles me ligariam em até 5 dias úteis para configurar comigo o meu modem.

Ligaram.

Configuramos juntos o modem.

Não funcionou. :-(

Ferramentas e comandos que ajudam a inspecionar o funcionamento do IPv6:

  • ping6 ipv6.google.com (é o bom e velho ping, mas só utiliza IPv6.)
  • ip -6 address list (lista seus endereços IPv6.)
  • ip -6 route list (lista as rotas IPv6, inclusive a rota padrão.)
  • curl -6 uol.com.br (visitar a página principal do UOL via IPv6. Deve retornar um longo código HTML.)

Me pediram alguns dias para rever as configurações e também me pediram para visitar alguns sites de diagnóstico e enviar a eles os screenshots.

Sites de diagnóstico:

  • http://test-ipv6.com/
  • http://ipv6.google.com
  • http://ipv6-test.com/ (especial atenção a este aqui e ao que ele diz sobre ICMP! É você, cliente, quem tem que configurar seu modem para deixar passar ICMPv6.)

A cada nova ligação do suporte da TIM identificávamos mais uma dificuldade com a conexão, até que esgotamos todas e a TIM veio trocar meu modem por um Technicolor TD5336, que finalmente funcionou sem necessidade de alterar nenhuma configuração.

Modems que estou usando com sucesso com IPv6, ambos fornecidos pela TIM após 1 ou mais trocas:

  • Technicolor TD5336
  • Sagemcom F@st 5310

Modems que não funcionaram com IPv6:

  • Sagemcom F@st 4310 (não recebia um IPv6, ou não retransmitia pacotes IPv6 à LAN)
  • Technicolor TG589vn v3 (não recebia um IPv6)
  • Zyxel VMG8924-B10A (recebia um IPv6 e retransmitia para a rede interna, mas perdia a maioria dos pacotes ICMPv6 vindos da WAN)
Nota: o suporte técnico da Live TIM sempre foi excelente em todas as várias interações que tive com eles. Me telefonaram inúmeras vezes, sempre absolutamente cordiais e educados, além de dedicados a resolver meu problema. Muitos desses telefonemas foram às 20:00, 21:00. De verdade, ótimo serviço de suporte.

Habemus IPv6. Como a Live TIM entrega um IPv6

Com o novo modem, tudo funcionava conforme esperaddo: recebi um IPv4 (como de costume) e agora também um IPv6 sob o prefixo 2804:214:3:57cc::/64. Absolutamente lindo.

Imediatamente pedi a ativação da conectividade IPv6 na outra conexão, isto é, no M.H.O.

Em ambos, assim é a configuração:

Rede externa:

IPv6 na interface WAN recebido via SLAAC (Stateless Address Autoconfiguration). O modem recebe do provedor apenas as rotas via RA (Router Advertisement). ULA desativado.

Rede interna:

Com base nas rotas recebidas do provedor, o modem entrega à minha LAN os endereços IPv6 via DHCPv6. [Mais detalhes de DHCPv6 versus SLAAC]

SLAAC

Basicamente, um "servidor" SLAAC envia aos clientes a informação de prefixo IPv6 e também o gateway padrão. Nada mais. Nada de DNS, por exemplo. Se você quer que seu modem envie aos clientes o endereço dos servidores DNS, só o DHCPv6 te salvará: ative no seu modem o DHCPv6 interno e defina com ele os endereços dos servidores DNS que você quiser passar aos clientes.

DNS em IPv6 e em IPv4

Qualquer servidor DNS pode te retornar qual é o IPv6 da Wikipédia. E também o IPv4. Não importa se o seu servidor DNS está escutando na rede IPv4 ou IPv6, ele certamente consegue retornar o IPv4 (registro A) e também o IPv6 (registro AAAA) de www.wikipedia.org ou de qualquer URL.

Por exemplo, experimente:

$ host -t A www.wikipedia.org 8.8.8.8 www.wikipedia.org has address 208.80.154.224 $ $ # Agora o registro AAAA $ host -t AAAA www.wikipedia.org 8.8.8.8 www.wikipedia.org has IPv6 address 2620:0:861:ed1a::1

O servidor DNS público do Google, que responde no IPv4 8.8.8.8, sabe me dizer que o endereço IPv4 (registro Address) de www.wikipedia.org é 208.80.154.224, e também sabe me dizer que o IPv6 da mesma URL www.wikipedia.org é 2620:0:861:ed1a::1.

Ou seja, você não precisa fornecer servidores DNS na rede IPv6 para usar IPv6.

Como está minha LAN agora

Com essas configurações, o modem entrega aos computadores da minha LAN um IPv4 privado (rede 192.168.x.y) e também um IPv6 público. Cada computador também gera de forma autônoma um segundo endereço IPv6, este privado (local-only ou somente local, no prefixo fe80::/64.

O espaço de endereços IPv6 possui alguns prefixos já pensados desde o início para uso exclusivamente em redes privadas, isto é, incapazes de alcançar a Internet e portanto dedicados unicamente à comunicação dentro de uma rede privada como a da minha casa. O prefixo fe80::/64 é esse prefixo. [Mais]

Dado interessante: meu modem recebe na interface externa um IPv6 público fora do meu prefixo. Se meu prefixo dado pelo provedor é 2345:abcd:1234:5678::/64, o modem pode perfeitamente ter o IPv6 público 9876:5432:1111:2222:3333:4444:5555:6666.

Isso é possível porque meu modem não precisa ter um IPv6 público dentro do meu prefixo. Ele simplesmente encaminha à rede do provedor os pacotes que saem da minha LAN rumo à Internet.

No entanto, meu modem tem, sim, um IPv6 privado que só funciona na minha rede interna,fe80::2a0:12f:fc31:e2e8. Veja a rota que meu sistema atual mostra:

$ ip -6 r 2804:214:3:57cc::254 dev wlp3s0 proto kernel ⤾ ⤷ metric 256 expires 85483sec pref medium 2804:214:3:57cc::/64 dev wlp3s0 proto ra ⤾ ⤷ metric 600 pref medium fe80::fe52:8ddd:feb4:303b dev wlp3s0 proto static ⤾ ⤷ metric 600 pref medium fe80::/64 dev wlp3s0 proto kernel metric 256 ⤾ ⤷ pref medium default via fe80::fe52:8ddd:feb4:303b dev wlp3s0 ⤾ ⤷ proto static metric 600 pref medium

Veja que interessante: meu gateway padrão na rede IPv6 usa o prefixo somente local fe80::/64 (última linha do comando acima).

Os pacotes IPv6 que saem do meu sistema rumo à Internet têm como IPv6 de origem o meu endereço IPv6 público, mas são enviados ao meu modem por seu IPv6 somente local. Tudo bem, isso definitivamente não é um problema.

O que funciona nos meus acessos via IPv6

  • O acesso à Internet em IPv6 funciona maravilhosamente.
  • Todos os apps do Google (Drive, Docs, Sheets...), toda a Wikipédia, o site do UOL, o site da Red Hat. Estou acessando todos via IPv6.
    Dica: extensão para Google Chrome que indica se você está acessando um site via IPv4 ou IPv6: if IPv6.
  • Consigo descobrir o endereço público do meu laptop a partir do próprio laptop, sem precisar de comandos como curl [-4|-6] ifconfig.co para ir até a Internet descobrir meu IP público. Basta usar o tradicional comando ip:
    $ ip -6 addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ⤾ ⤷ state UP qlen 1000 inet6 2804:214:3:57cc:822c:4196:32b6:ea38/64 scope ⤾ ⤷ global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::6212:3c69:21:f11a/64 scope link valid_lft forever preferred_lft forever $ $ # Confirmando com o curl $ $ curl -6 ifconfig.co 2804:214:3:57cc:822c:4196:32b6:ea38

O que não funciona


Meu IPv6 não é fixo! :-(

Em poucas palavras, o prefixo IPv6 que a TIM me entrega não é fixo.

Em mais palavras, meu prefixo inicial 2804:214:3:57cc/64 gerou para meu laptop o endereço 2804:214:3:57cc:9431:43ad:fa3:38ea, que eu rapidamente adicionei ao DNS do meu domínio particular, todo orgulhoso.

Eu realmente acreditei, por alguns momentos, que não precisaria mais de um DNS dinâmico como o dyndns para conseguir acessar meu servidor doméstico de qualquer lugar do mundo.


Depois do primeiro reboot do modem, a surpresa: o IPv6 do meu servidor doméstico tinha mudado! Sob inspeção mais meticulosa, descobri que o prefixo fornecido à minha conexão pela Live TIM havia mudado. :-(

Resultado: voltei a precisar de um DNS dinâmico. Desde então estou usando o ultra-simples dynv6.com com o script bem simples que ele próprio oferece. Meu servidor doméstico roda o script de atualização a cada 60 minutos e a vida segue. Um pouco triste, mas segue.

Dentro da minha LAN, uma possível saída é fazer referência ao IP somente local das máquinas em vez de usar o IP público. Isto é, meu DNS interno vai dizer que tralala.redeinterna aponta para fe80::63a7:32:ff82:23fc em vez de apontar para 2804:214:3:57cc:63a7:32:ff82:23fc. O endereço somente local das máquinas internas não muda. No entanto, isso significa que eu continuo tendo que usar um endereço diferente para me conectar a tralala.redeinterna se eu estiver dentro de casa ou fora de casa.


Não tenho IPv6 reverso

Veja estes comandos:

$ host -t AAAA www.uol.com.br homeuol.uol.com.br has IPv6 address 2804:49c:3103:401:ffff:ffff:ffff:1 $ $ # Agora a resolução reversa $ host 2804:49c:3103:401:ffff:ffff:ffff:1 Host 1.0.0.0.f.f.f.f.f.f.f.f.f.f.f.f.1.0.4.0.3.0.1.3.c.9.4.0.4.0.8.2.ip6.arpa not found: 3(NXDOMAIN)

Ainda não encontrei o motivo para a resolução reversa de IPv6 não ser levada a sério.

Segurança: a vida sem NAT

Esse aqui fica para o próximo post.


Até breve!

2013-08-12

Have SSH prompt your users twice for their password

The SSH service is a vital part of IT management operations. However, keeping intruders out while allowing password authentication can be a pretty hard challenge. In this scenario, passwords are usually the weakest link: since security and convenience run in opposite directions, misinformed users will always look for some way to improve convenience at the cost of "a little" security. That's where they choose weak passwords that can be easily guessed by brute force.

Brute-force guessing passwords is a simple challenge that's mostly time-bound. The attacker typically tries every one from a list of common passwords until they are allowed into the target system. Failed passwords don't allow the attacker to tell whether they got only two or ten characters wrong. The easier to guess the password, the earlier it appears in the attacker's list. And the quicker the attacker can try another password, the quicker they reach the correct one.

Stalling the attacker with a short interval before they are allowed to enter a new password seems like a good plan, but the password guessing attack can be easily parallelized. A much better alternative is to ask your users to enter their password twice: the unknowing attacker will never try the same password twice in a row — why would they? — so even a password of "123" could keep them out, while attackers who know about this strategy will at least be stalled.

This post explains how to implement this strategy on Red Hat Enterprise Linux 6.x systems. For that, all you need to do is edit the /etc/ssh/sshd_config and /etc/pam.d/sshd files.

sshd_config

OpenSSH is a flexible daemon. It can perform password authentication with or without talking to PAM (Pluggable Authentication Modules). By default, Red Hat Enterprise Linux 6.x will enable sshd's use of PAM (UsePAM yes on /etc/ssh/sshd_config) for password authentication, which is part of what you'll need. It will also enable password authentication (PasswordAuthentication yes on the same file) and disable challenge-response authentication (ChallengeResponseAuthentication no, same file), which is the opposite of what's needed to ask the user to enter the password twice. So, first of all you will need to change these settings:

#/etc/ssh/sshd_config
...
PasswordAuthentication no
...
ChallengeResponseAuthentication yes
...

(Documentation on sshd_config(5))

PAM configuration

The file controlling PAM's behavior when authenticating SSH users on Red Hat Enterprise Linux 6.x is /etc/pam.d/sshd and it looks like this by default:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
...

This means that when sshd asks PAM to authenticate a user, PAM will first consult the pam_sepermit.so module, which checks the /etc/security/sepermit.conf file for users who should be allowed or denied authentication access by SELinux (pam_sepermit(8)). Then, PAM will open the /etc/pam.d/password-auth and read all lines starting with auth in order to know what to check next.

The /etc/pam.d/password-auth file looks like this:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required     pam_env.so
auth        sufficient   pam_unix.so nullok try_first_pass
auth        requisite    pam_succeed_if.so uid >= 500 quiet
auth        required     pam_deny.so
...

These auth lines mean that PAM will use the pam_env.so module to set and unset environment variables defined in /etc/security/pam_env.conf (pam_env(8)). After that, the pam_unix.so module will perform the traditional password checks, i.e. /etc/shadow when using local files (pam_unix(8)), and PAM will consider this sufficient to authenticate the user.

If you duplicate the pam_unix.so line and change PAM's view of this check to required instead of sufficient, you will effectively ask PAM to check the traditional authentication sources twice.

Note, however, that the comments in /etc/pam.d/password-auth state that this file is auto-generated and that "changes will be destroyed the next time authconfig is run". Additionally, this file is used by many other programs and daemons when authenticating users and changing it would alter the behavior of authentication for all those other programs and daemons.

The only safe path is to copy the auth lines from this file to sshd's specific file, i.e. /etc/pam.d/sshd, and comment out the line that called /etc/pam.d/password-auth. This is what you get:

# /etc/pam.d/sshd
#%PAM-1.0
auth       required     pam_sepermit.so
# auth       include      password-auth
# The following lines have come from the password-auth file
auth       required     pam_env.so
auth       sufficient   pam_unix.so nullok try_first_pass
auth       requisite    pam_succeed_if.so uid >= 500 quiet
auth       required     pam_deny.so
# End of lines coming from password-auth

account    required     pam_nologin.so
...

Now you can duplicate the pam_unix.so line and ask PAM to require this check to pass before it is tested a second time:

# /etc/pam.d/sshd
#%PAM-1.0
auth       required      pam_sepermit.so
# auth       include       password-auth
# The following lines have come from the password-auth file
auth       required      pam_env.so
auth       required      pam_unix.so nullok try_first_pass
auth       sufficient    pam_unix.so nullok try_first_pass
auth       requisite     pam_succeed_if.so uid >= 500 quiet
auth       required      pam_deny.so
# End of lines coming from password-auth

account    required      pam_nologin.so
...

You are almost there. If you try to ssh to this machine right now, you'll only be prompted for the password once. That's because the try_first_pass argument to the pam_unix.so module tells the sufficient line to try the password that has just been given, which defeats the purpose of the duplicate password prompt.

So, remove the try_first_pass argument from the second line to make it actually ask for the password a second time:

# /etc/pam.d/sshd
#%PAM-1.0
auth       required      pam_sepermit.so
# auth       include       password-auth
# The following lines have come from the password-auth file
auth       required      pam_env.so
auth       required      pam_unix.so nullok try_first_pass
auth       sufficient    pam_unix.so nullok
auth       requisite     pam_succeed_if.so uid >= 500 quiet
auth       required      pam_deny.so
# End of lines coming from password-auth

account    required      pam_nologin.so
...

That's it. Try to ssh to the target system and check if everything goes as planned. Feel free to use ssh -v (repeated v's for more verbosity) if something goes wrong.

Further stalling the attacker

As the attacker may come prepared to try every single password twice, you can at least stall them by running /usr/bin/sleep 2 between password prompts. PAM allows you to do this with the pam_exec.so module (pam_exec(8)). Your /etc/pam.d/sshd file should then look like this:

# /etc/pam.d/sshd
#%PAM-1.0
auth       required      pam_sepermit.so
# auth       include       password-auth
# The following lines have come from the password-auth file
auth       required      pam_env.so
auth       required      pam_unix.so nullok try_first_pass
auth       optional      pam_exec.so quiet /usr/bin/sleep 2
auth       sufficient    pam_unix.so nullok
auth       requisite     pam_succeed_if.so uid >= 500 quiet
auth       required      pam_deny.so
# End of lines coming from password-auth

account    required      pam_nologin.so
...

Now your system is ready to offer the convenience of password authentication with reduced a risk of giving in to brute-force attacks.

2013-01-13

Suporte técnico da GVT: ruim na primeira impressão

Nota importante: Este post é de 2013. Desde a publicação deste post, a GVT já foi comprada e muita coisa provavelmente mudou, como a qualidade do serviço de acesso à Internet e também do suporte técnico.

Meu modem da GVT tem suporte a IPv6. No entanto, ele não recebe um endereço IPv6 da operadora. E eu queria acessar a rede IPv6.

Aqui está a interessante transcrição (só da minha memória) da minha conversa agora há pouco com o suporte técnico da GVT.

- Boa noite, Fulana falando.
- Boa noite. Por favor, eu gostaria de saber se é possível ativar o IPv6 no meu acesso banda larga e se eu preciso pagar alguma coisa por isso.
- Senhor, isso o senhor precisa verificar com o seu consultor, não com a GVT.
- Por quê?
- Quem dá acesso a IPv6 é o Windows. Se o senhor tiver o Windows Vista, aí é IPv6. Se for o Windows 7, aí tem que ver.
- Desculpe, mas a senhora está enganada. Eu trabalho com isso e sei do que estou falando (É tão satisfatório poder dizer isso, né?). Eu gostaria de acessar a Internet por IPv6 e, para isso, a GVT precisa me fornecer conectividade IPv6.
- Senhor, a GVT não oferece suporte a IPv6. (surpreendente como de repente ela sabia do que se tratava, né? Aposto que não sabia.)
- Mas o suporte a IPv6 não era obrigatório a partir de janeiro de 2012? (tá bom, inventei um pouco nesse aspecto de obrigatoriedade, mas o objetivo era forçar um pouco a barra)
- Não tenho esta informação. Nada nos foi passado em treinamentos.
- Bom, está bem então. Obrigado.

E assim terminou.
Puxa vida, assinei a GVT com tanto gosto, justamente em virtude dos ótimos relatos que sempre ouvi sobre o respeito que a empresa tem pelos clientes. Não achei esse suporte satisfatório.

2011-10-31

A nação que eliminou a corrupção

Diz a lenda que havia no mundo uma nação muito exaltada por sua musicalidade, sua criatividade, suas belezas naturais e pela hospitalidade de seu povo. Essa mesma nação era também conhecida por sua intensa violência crônica e, sobretudo, pela corrupção de sua classe política.

Curiosamente, a lenda também conta que foi a violência que acabou com a corrupção. Certo dia, um dos cidadãos violentos dessa nação, profissional do ramo da execução por encomenda, descobriu uma nova forma de erradicar a corrupção: eliminando os políticos corruptos e seus respectivos corruptores. Contudo, havia dois entraves no caminho: o serviço desse profissional era caro, pois tratava-se de um dos melhores do ramo, e o número de corruptos e corruptores era assombroso.

Felizmente para o povo, o mesmo cidadão tão violento era igualmente inteligente. Maquinou um plano chamado por muitos de "surpreendentemente simples, economicamente viável e psicologicamente adequado" para eliminar os maiores inimigos do progresso de sua nação: criou um "Fundo de Erradicação da Corrupção". Nesse fundo, cidadãos de todo o território nacional podiam depositar a quantia que desejassem a fim de alcançar os altos valores cobrados pelo profissional violento e inteligente para executar seu serviço correcional.

Como a corrupção era um fenômeno absolutamente descarado e nada se fazia para escondê-la, foi bastante fácil compilar a lista dos principais corruptos e corruptores.

O sistema de doações voluntárias também resolvia o problema psicológico da execução de seres humanos: os doadores do FEC, como foi abreviado o fundo, evitavam sujar as mãos e também a consciência, pois eram agentes apenas indiretos das execuções.

O primeiro saque do fundo deu cabo do personagem ativo há mais tempo na cena da política corrupta. Belo cartão de visita do atirador-empreendedor. Aprovada e aplaudida pela população, a execução rendeu tantas doações ao FEC que em pouco tempo havia recursos suficientes para finalizar outros dois líderes da lista CC (corruptos & corruptores). Com a ausência dessas três figuras tão importantes no cenário político nacional, os três poderes decretaram recesso e paralisaram suas ações. Porém, o novo quarto poder ("executor", como ficou conhecido) logo indicou que não era isso que a população esperava de seus supostos representantes: o próximo da lista sofreu um estranho acidente de avião.

Ninguém sabia ainda quem era o cidadão-atirador-empreendedor, mas já se falava em elegê-lo ao cargo máximo. Ainda anônimo, ele respondeu que não tinha aspirações políticas: "Quero apenas fazer meu trabalho e ganhar um dinheiro honesto. Talvez abrir um restaurante ou uma fundação com a renda desses serviços.". Grande profissional.

Quanto à política e os políticos, o poder executor conseguiu levar a nação para o caminho da democracia. Movidos pelo medo, integrantes dos três poderes tradicionais passaram a trabalhar em prol da nação. Com a redução que "benevolentemente" fizeram em seus próprios gastos, conseguiram melhorar rapidamente a qualidade da saúde e da educação, dos transportes e da previdência, do planejamento e até do turismo.

O cidadão-atirador-empreendedor permanece incógnito; dizem que se aposentou e abriu um restaurante ou criou uma fundação. O fato é que, vez por outra, quando os políticos ameaçam fazer corpo mole, ele -- ou um de seus inúmeros admiradores -- faz questão de cravar seus cartões de visita em portas de carro, paredes e travesseiros bem próximos às cabeças certas, como que dando a elas uma chance.

Atualmente, essa nação praticamente erradicou a corrupção. É próspera e oferece alta qualidade de vida a seus cidadãos, que, mesmo sem as desgraças que os assolavam, permanecem extremamente musicais, criativos e hospitaleiros, além de continuarem em um território, dizem seus criativos músicos, bonito por natureza.

2010-05-31

Tux na cozinha

No último sábado, quando voltava de viagem, fui surpreendido pela presença do famoso pinguim Tux, mascote do nosso amado Linux, em um item em nada relacionado com computadores.

Enquanto esperava meu táxi na saída do terminal 1 do aeroporto de Guarulhos, SP, vi uma senhora perambulando para lá e para cá numa cadeira de rodas. Ela parecia esforçar-se muito para mover a própria cadeira, então ofereci uma mãozinha: "A senhora quer ajuda?".

A resposta foi um pouco inesperada devido à minha solicitude ter sido, na verdade, a mordida na isca lançada pela oportunista senhor: "Ah, meu filho, não preciso não, mas você sabe, eu preciso me sustentar e é muito difícil, então eu estou vendendo esses panos de prato que eu mesma faço, sabe, (...)".

Entre os panos de prato, um me chamou atenção: tinha várias imagens do Tux, imagine só!

Como dizia aquele personagem, "comprei-o-o" da tagarelante senhora. Eu disse: "Vou levar este do pinguim, porque gosto muito de pinguins". E ela: "Ah sim, esse aí é a família inteira; o pai, a mãe e os três filhinhos".

Taí a relíquia

Os pinguins não são bordados, evidentemente, mas estampados com o método mais comum. Confira neste detalhe em maior resolução:

Agora tenho um tux na cozinha também. E esse é totalmente exclusivo!

2008-12-29

Orgulho editorial

Desde que eu entrei na Linux New Media (do Brasil), em julho de 2006, acho que tenho melhorado profissionalmente. Não tenho tantos artigos técnicos de minha autoria quanto eu achei que teria depois de 2 anos e meio – afinal, não dá tempo pra editar e escrever tantos artigos.

Mas a seção fixa que eu escrevo me dá muito orgulho, porque acho que quando estou inspirado eu escrevo bons textos. Então, pra promover a Linux Magazine, este blog e eu mesmo (:D), aqui vão meus oito editoriais preferidos:

  1. Em Compreensão formal (LM 35), terminou a série de editoriais em tom de reclamação sobre a comunidade de desenvolvedores do Software Livre (iniciados na LM 32). Nele, declarei minha posição contra a polêmica apropriação dos drivers ath5k por essa comunidade sob a GPL, após sua criação sob a licença BSD. Achei a apropriação imoral, e ainda a julgo ilegal, apesar de ninguém ter perguntado e da minha opinião não ser de forma alguma relevante.
  2. Em Coerência e coesão (LM 33), fui novamente corajoso e critiquei a atitude de vários usuários e desenvolvedores contrários à cobrança de dinheiro para implantação e desenvolvimento de soluções livres.
  3. Em Comunidade como valor (LM 47), falei da importância crescente da comunidade para as empresas envolvidas com o Código Aberto. O surgimento do cargo de “community manager” é, pra mim, o maior exemplo dessa importância.
  4. Em As velhas falácias (LM 45), falei sobre a crença muito difundida de que o Windows é mais invadido do que o Linux por ser mais usado, e não por ser muito mais vulnerável. Gostei desse por acreditar de fato que o texto poderia ajudar profissionais Linux.
  5. Em Novos modelos
  6. (LM 46), o assunto foi o anúncio da IBM de que produziria desktops “Microsoft-free”. Embora parecesse um ato de suposto boicote aos softwares da Microsoft, o objetivo real da IBM era e ainda é usar o Linux como plataforma de difusão de sua suíte Lotus. O surpreendente, pra mim, foi ver que o mercado demorou pra perceber essa oportunidade de ouro!
  7. Em Um bom motivo (LM 32), reuni coragem para criticar a atitude de usuários e desenvolvedores Linux e citei uma colocação muito bem feita de Theo de Raadt: “Quem usa Linux o faz porque odeia o Windows, quem usa BSD o faz porque ama o Unix”. Por um lado essa frase sugere que nosso mundo é cheio de ódio (há muito mais pessoas que odeiam o Windows do que pessoas que amam o Unix, aparentemente). O bom motivo que serviu de titulo ao editorial foi a discussão sobre a GPLv3, então ainda em desenvolvimento, ao mesmo tempo em que a Microsoft distribuía acordos com distribuidores Linux importantes e nem tanto.
  8. Em A vez do marketing (LM 40), propus uma abordagem colaborativa para o marketing dos sistemas Linux. Esse assunto ainda é do meu interesse mais profundo, e acho realmente que o marketing é uma das próximas áreas a serem agraciadas com as inúmeras vantagens da colaboração.
  9. O primeiro colocado na minha lista pessoal de editoriais mais significativos é o Idiomas e sistemas (LM 30), escrito às 3 da manhã antes de um Linux Park. Nele, eu falo sobre como o uso de um computador se assemelha ao uso da linguagem oral, com os diferentes sistemas operacionais representado os vários idiomas. Eu defendo o ensino do Linux nas escolas, da mesma forma que defendo o ensino do inglês nas escolas brasileiras (e outros idiomas seriam ainda mais positivos para nossas crianças). No caso dos sistemas, se o aluno já vai aprender o Windows fora da escola mesmo (todo mundo usa Windows no momento, certo?), que tal torná-lo “poliglota” e ensinar-lhe um sistema diferente e potencialmente muito útil na escola?

E você? Qual é o seu editorial preferido na Linux Magazine?

2008-06-08

O sucesso da GPL é um milagre?

Antes de começar esse post, quero deixar claro que adoro software GPL, sempre tenho preferência por usar Software Livre (e ainda escrevo com letras maiúsculas!) e, não por acaso, ganho a vida escrevendo sobre Código Aberto (também com letra maiúscula!).

Acho um pouco estranho um software GPL como o (kernel) Linux ter alcançado a ampla difusão mais rápido do que seus equivalentes licenciados sob a licença BSD.

Entenda as diferenças

De uma forma extremamente simplificada, a GPL exige, entre outras coisas, que o código-fonte de todo programa seja disponibilizado para o usuário sem custo adicional. Além disso, ela demanda que toda alteração feita ao código-fonte de um programa, ao ser redistribuída, seja entregue de volta à comunidade. Com isso, é obrigatório compartilhar com a comunidade todos os avanços implementados no programa.

A BSD, por sua vez, é muito mais permissiva. Qualquer software licenciado sob a BSD pode ser redistribuído sem o código-fonte, e as alterações feitas ao código não precisam ser compartilhadas com ninguém. Porém, se forem compartilhadas com a comunidade, essas alterações devem seguir a licença BSD. Ou seja, basicamente a BSD permite que se faça o que quiser com o código, inclusive fechá-lo à vontade.

O que me leva a esse pensamento é que a BSD parece muito mais viável comercialmente do que a GPL. Na GPL, a obrigatoriedade do retorno do código alterado à comunidade é ótima para a comunidade, claro. Porém, para empresas que desejem usar esse código em seus produtos, acrescentando a ele algumas alterações, essa obrigação pelo menos parece um problema.

No início da popularização do Software Livre, a GPL era chamada de "câncer" justamente por isso: ela "contaminava" os softwares desenvolvidos a partir de outros que a adotassem, obrigando o fabricante a retornar à comunidade trechos que ele não desejava. Então, a adoção do Software Livre como base para o desenvolvimento seguiu a lenta percepção das empresas de que colaborar é melhor do que reinventar a roda.

Com código BSD, essa percepção de que colaborar é melhor do que reinventar a roda poderia surgir mais gradativamente. Com uma base de código de alta qualidade liberada sob a BSD para todas as empresas, todas poderiam tomá-lo para si e desenvolver sobre ele, sem retornar nada a princípio. Porém, certamente algumas perceberiam as vantagens de retornar à comunidade pelo menos alguns trechos.

Com uma barreira de entrada reduzida, mais empresas usariam código aberto (BSD, no caso). Assim, existiria o argumento de que "quase todo mundo usa nosso software", o que, por sua vez, creio que facilitaria na hora de convencer as empresas usuárias e desenvolvedoras de que o código aberto tem boa qualidade e portanto vale a pena todos compartilharem seus desenvolvimentos com o restante da comunidade.

É claro que eu sei que isso não aconteceu, e que houve motivos. Só não sei exatamente quais foram esses motivos. Sugestões?

2008-05-11

Substituição de fontes pra todo o sistema

Meu Firefox é uma ferramenta que funciona muito bem. Não instalo muitas extensões e ele me satisfaz perfeitamente. Quando preciso de algo a mais, geralmente já existe a extensão para a tarefa, o que torna a coisa toda muito mais agradável. Não amo o Firefox, mas ele é bõ™.
Só que hoje eu percebi uma falha dele: não facilitar a substituição de fontes de forma granular. Ou seja, ou você define as suas próprias fontes e visualiza todas as páginas com essas fontes específicas, ou você deixa as páginas fazerem como quiserem.
Eu geralmente deixo as páginas usarem as fontes que quiserem, o que não costuma causar problemas. Exceto pelas que cismam em usar Helvetica. Acontece que a Helvetica não sofre anti-aliasing na tela, o que significa que ela fica toda imperfeita (serrilhada).
A solução: mexer no arquivo /etc/fonts/conf.d/51-local.conf (no Gentoo é esse nome, mas em outras distribuições deve ser diferente) e inserir algumas linhas entre as tags <fontconfig> e </fontconfig>para fazer o sistema sempre usar DejaVu Sans (minha preferência para fontes não serifadas) no lugar da feiosa:
/etc/fonts/conf.d/51-local.conf
<match target="pattern">
 <test qual="any" name="family">
  <string>Helvetica</string>
 </test>
 <edit name="family" mode="assign">
  <string>DejaVu Sans</string>
 </edit>
</match>
Depois disso, suas Helveticas sempre vão sair como DejaVu Sans.
Fonte: http://forums.bsdnexus.com/viewtopic.php?pid=12222

2008-02-17

Ô Intel, dá uma caprichada, vai... [atualizado]

O adaptador de rede wi-fi do meu notebook é um Intel 3945. O da minha mulher (um Macbook da primeira geração) também. Na verdade, por dentro os dois computadores são relativamente parecidos: mesmo chip gráfico, mesmo adaptador de rede wi-fi, processadores semelhantes.

O que é mais marcantemente diferente entre as duas máquinas -- fora o fato de o Macbook ser muito mais bonito, é claro -- é o sistema operacional: o meu é Linux e o dela é Mac OS X.

Mas essa diferença relativamente pequena tem um efeito em particular que é bastante grande: o funcionamento do adaptador wi-fi. Nosso roteador wi-fi fica no apartamento ao lado, que é da minha prima (é ela que tem o acesso à Internet, e nós pegamos emprestado). No Mac, basta ligar o sistema (aliás, que boot rápido! -- um sonho) e esperar uns 5 segundos que o ícone informa que já está conectado à nossa rede com criptografia WPA-PSK.

Já nos meus Linux (Gentoo e Ubuntu -- Mint, na verdade, mas no Ubuntu original também acontecia) a coisa é um tanto mais demorada. Depois de terminar o boot e subir o X automaticamente, entrando sozinho no Gnome sob o meu usuário padrão (segurança pra quê, né?), espero mais 1 minuto ou mais pra ser informado de que meu adaptador wi-fi está negociando a autenticação com o roteador. Eu tenho que me movimentar pelo apartamento, mesmo que eu comece a "negociação" no canto do apartamento que fica mais próximo ao roteador, pra conseguir autenticar lá pela quinta tentativa, depois de dar time out quatro vezes.

Se a principal diferença entre os dois computadores é o sistema operacional, eu pergunto: por que o driver pra esse adaptador de rede é tão pior no Linux do que no Mac OS X?

É a própria Intel que produz o driver pra Linux! E imagino que também seja o caso no Mac OS. Então, o que que custa fazer o driver decentemente?

Por favor não me venham com essa de "o código é aberto, você pode implementar o que quiser ou ajudar a melhorar sua qualidade". Repetindo: a mesma Intel faz os dois drivers, sendo que um funciona como deveria e o outro é um certo suplício.

É claro que eu fico muito, mas muito feliz MESMO pelo driver para Linux receber "atenção oficial" da todo-poderosa Intel. Senão, não teria feito questão de comprar um laptop que é todo Intel por dentro. Mas vamos lá, Intel, nós sabemos que vocês são capazes de fazer um driver que funcione pelo menos tão bem quanto o do Mac OS X.

Se alguém por acaso quiser discutir isso, ou argumentar que é o meu kernel que é ruim, aí vão os detalhes:

  • O driver ipw3945, que precisava do daemon regulatório ipw3495d, funcionava ainda pior. Kernels de ~2.6.16 até 2.6.20 ou 2.6.21, não me lembro ao certo.
  • O driver iwlwifi já funciona um pouco melhor, desde o começo, com kernel 2.6.21 ou algo assim, até agora, com o kernel 2.6.24.2, com o driver já junto do kernel (mas compilado como módulo, já que embutido realmente não funcionou).
  • Kernels testados: Vanilla (o do kernel.org) e Gentoo-sources, além dos oficiais do Ubuntu desde o 6.10 até o 7.10.

Atualização

Aparentemente, a julgar pelas reações, o meu caso de insucesso com a placa wi-fi Intel é particular. Mas a solução que funcionou pra mim foi colocar o roteador no meu próprio apartamento. Agora, a rede entra rapidinho todas as vezes.

Hmpf.

2007-12-04

Natureza que nada! Salve as pessoas!

No último fim de semana fui assistir ao filme "A Última Hora (the 11th. hour)". Aí vai minha opinião, pros que por acaso se interessarem.

Gostei do filme. Acho que seu maior valor foi apontar algumas coisas que raramente vemos pessoas dizendo aos quatro ventos. Por exemplo, ninguém deve querer realmente salvar a natureza. Ainda que o homem desmate a Amazônia inteira e as calotas polares derretam, a natureza vai continuar existindo, e vai se recuperar! Nós queremos é manter o planeta habitável para nós mesmos, caramba!

Se alterarmos o comportamento da natureza de tal forma que ela se torne imprevisível (e isso é justamente o que o aquecimento global faz), vai ser muito difícil restar algum humano nesse planeta. Lembre-se de que em ambientes destruídos surgem as piores manifestações de que somos animais como qualquer outro: sofremos de epidemias terríveis e passamos a nos comportar de forma radicalmente selvagem (estupros, roubos, assassinatos...)

Então, ponto 1: salve a espécie humana. Para isso, conserve o restante da natureza.

Ponto 2

O segundo ponto tem a ver com energia. Nós gastamos mais energia do que a Terra recebe do sol.

A explicação: Nosso planeta sempre recebeu energia unicamente do sol. A energia do sol é convertida em várias outras formas de energia, tanto por seres vivos (nas cianobactérias e plantas: água + gás carbônico + luz = açúcar = energia) quanto por outros agentes (sol atrai a massa d'água dos oceanos -> maré sobe e desce [a lua também atua]). Por sorte nós temos gases que causam efeito estufa, porque eles conservam boa parte dessa energia na superfície do planeta, impedindo que essa energia simplesmente escape pro espaço.

Mas queimar petróleo é "trapaça". É gastar uma energia que não foi o sol que deu (pelo menos não recentemente). O resultado: um efeito estufa exagerado, que conserva muito calor aqui dentro do nosso planeta.

Relembrando o ponto 2: queimar combustível fóssil é "roubo".

Ponto 3

Reduzir o consumo de energia não significa vestir-se com pele de animais ou usar folhas para "esconder as vergonhas". Nós já temos tecnologia. Podemos reduzir o consumo construindo prédios mais eficientes no uso de energia, usando meios de transporte menos poluentes (quem me dera poder ir pro trabalho de bicicleta – mas metrô tá bom) e, quando não for possível reutilizar, reciclar tudo que for possível.

Ou seja, ponto 3: a tecnologia atual permite toda a redução de consumo energético de que precisamos. Ninguém precisa andar pelado ou dormir ao relento.

Ponto 4

Atualmente pagamos uma baba pela energia que algumas empresas extraem do (sub)solo. Ou seja, gastamos dinheiro para obter uma energia que é trapaça, como já vimos no ponto 2.

Se deixássemos de gastar esse dinheiro todo com extração e refino de petróleo e instalássemos captadores de energia limpa (que vem do sol, direta ou indiretamente) e renovável, como a eólica, a solar ou a de maré, por exemplo, teríamos um gasto muito menor a longo prazo. Isso significa mais dinheiro para gastarmos em:

  • Construção
  • Pesquisa e desenvolvimento de novas formas de energia
  • Serviços
  • O que mais quiséssemos

Em suma, ponto 4: trocar o petróleo por fontes limpas de energia é bomTM, e não ruim, para a economia.

O abandono dos gastos com extração e produção de petróleo não pioraria a economia; muito pelo contrário, melhorá-la-ia (apresento-lhes a mesóclise), pois colocaria mais dinheiro à disposição da criação de emprego e desenvolvimento econômico como um todo. (Nessa conclusão eu posso estar enganado, porque não entendo nada de economia. Mas no filme falaram isso, e fez sentido.) :)

Outros pontos interessantes

O filme é feito por americanos e para americanos. Até o meio do filme isso me deixou meio chateado. Mas aí eu percebi que os EUA, como centro da atual cultura de consumismo desenfreado – um ponto cuja relação com o aquecimento global o filme deixa bem claro –, responsável por algo como 25% do consumo mundial de energia, é também onde essa cultura contrária precisa surgir. Se eles próprios se convencerem de que precisam mudar, a exportação natural dessa nova cultura deles vai chegar a todos que contraíram o consumismo desenfreado da mesma forma.

E o Linux nisso?

  1. Trate com carinho a economia de energia em seus desktops, notebooks e servidores. Todo consumo inútil de energia é prejudicial.
  2. Só deixe seu computador ligado a noite inteira se for necessário.
  3. Já mencionei os recursos de economia de energia?
  4. ACPI, APM... Mesmo em desktops e servidores. Ah, já falei isso?
  5. Sou só eu ou alguém mais começou a achar o Gentoo agressivo ao meio ambiente?

2007-11-06

Outros usos para o desenvolvimento colaborativo

O paradigma do desenvolvimento colaborativo é provavelmente a principal inovação tecnológica surgida no final do século passado. Após surgir na área do desenvolvimento de software, foi necessário o florescimento da Internet como infra-estrutura para que ele alcançasse maior visibilidade e eficácia.

Agora, o desenvolvimento colaborativo já está instituído em seu berço, e as maiores empresas da área de tecnologia, como Google, Microsoft, Oracle, IBM, HP, para citar algumas, já o apóiam e utilizam em diferentes graus, mas com total compreensão de suas vantagens.

Fora do ambiente técnico, a Wikipédia é provavelmente o maior expoente desse novo modelo de criação. Com qualidade comparável à da venerável Enciclopédia Britannica, a Wikipédia é capaz de crescer bem mais rápido que qualquer publicação em papel, e suas correções são aplicadas com rapidez inigualável.

Então, após conquistar as áreas de desenvolvimento de programas e publicação de conhecimento, que outros usos podemos propor para o desenvolvimento colaborativo?

Para o bem de todos

Antes de começar a fazer sugestões, vejamos a real motivação dos programadores e wikipedistas em compartilhar suas criações. Não se trata de filantropia ou preocupação social (ao menos na maioria dos casos): trata-se de ter um produto final com qualidade e com o conteúdo que seus autores, usuários e leitores esperam.

Ao contribuir com algumas linhas de código para um programa, ou com algumas informações num verbete da Wikipédia, os autores esperam que outros também façam o mesmo. Assim, quando um wikipedista especialista em economia necessitar, por exemplo, de informações a respeito da história do Japão, poderá conferir as contribuições feitas por alguém que talvez venha a pesquisar a respeito do mercado de ações. Da mesma forma, alguém que escreve e compartilha um programa para exibir fotos digitais tem a possibilidade de usar um navegador Web desenvolvido de forma colaborativa, como o Firefox.

É verdade que qualquer pessoa pode usar o Firefox e procurar informações na Wikipédia, mesmo que jamais tenha contribuído com esses projetos. Porém, não imagine que isso enfraquece o desenvolvimento colaborativo. Muito pelo contrário. Como muito bem observa Cezar Taurion, executivo da IBM que se dedica ao estudo teórico do desenvolvimento colaborativo de software, o produto dessas colaborações sofre o efeito de rede[link em inglês], sob o qual o valor de um produto cresce exponencialmente com o número de usuários desse mesmo produto. Simplificando, poderíamos inferir que programas com grande número de usuários atraem mais desenvolvedores.

Um caso nacional

Agora talvez possamos responder a pergunta feita acima: que outros usos podemos propor para o desenvolvimento colaborativo?

Para não tornar este texto longo demais, sugiro logo minha resposta: o próprio desenvolvimento da nação.

Novamente lanço mão do exemplo dos softwares. Qual a melhor forma de implementar certa funcionalidade a um programa? Em programação sempre há mais de uma forma de se realizar uma mesma tarefa. Um programador pode escolher uma forma, que outro desenvolvedor logo percebe ser menos eficiente que uma segunda maneira, e faz as alterações necessárias (quando se trata de um programa cujo código-fonte é aberto). Um terceiro programador, com mais experiência, enxerga todo o problema por um ângulo distinto, e propõe uma forma radicalmente diferente – e ainda mais eficiente – para solucionar a questão.

Qual a solução para a fome no país? Com certeza há inúmeras formas de alimentar os famintos e solucionar esse problema, não somente no Brasil, como no mundo todo. E como podemos encontrar a melhor? Ou uma das melhores?

Minha primeira sugestão seria um wiki. Imagine o poder de uma população que sugere soluções e melhorias para seus próprios problemas através de um wiki. Independente de quem chegue ao poder, ou de seu partido, o wiki consolidaria todas as melhores formas para solucionarmos os problemas da nação. Nossos legisladores teriam informação de qualidade, garantida por nós mesmos, sobre os verdadeiros problemas que nos afligem, e quais as melhores maneiras para solucioná-los. Aqueles políticos que de fato resolvessem tais questões inevitavelmente figurariam no wiki, recebendo assim os méritos típicos do modelo colaborativo, e potencialmente garantindo-lhes votos nas próximas eleições.

Com as atenções de todo o eleitorado voltadas para o wiki, ele ganharia assim o recurso de palco de propaganda política verdadeira, ao mesmo tempo em que aumentaria o poder e a adoção das sugestões de melhorias nele contidas. Como se pode ver, o efeito de rede novamente entra em ação, e o valor das sugestões da população aumenta de acordo com o próprio número de propostas e políticos que as adotem.

A discussão política, econômica e social é importante, mesmo que não seja interessante. Mais um motivo para torná-la o mais aberta possível.

Outras sugestões são bem vindas. ;)

2007-10-02

Lado direito

O que pode ser tão difícil assim em ficar do lado direito? Não, sério, o que pode ser tão difícil assim?

Talvez eu seja um obsessivo total, e esse seja o motivo pelo qual eu sempre vou pro lado direito ao entrar numa escada rolante, dirigir na estrada ou até caminhar a pé pela calçada.

Mas eu acho que é falta de educação mesmo. E isso é um problema.

Eu costumo dizer que no Brasil ninguém ensina o valor dos processos. Pra mim, parece que ninguém sabe o que é um projeto. E eu acho que é esse um dos motivos do extremo imediatismo da nossa população.

Um processo é uma coisa (uau!, que linguajar técnico! :) ) que está em modificação, ou que causa alterações em objetos ou sistemas.

O processo "lado direito"

Como tenho usado muito o metrô, esse é o exemplo mais claro (e perturbante) na minha cabeça, e por isso vou usá-lo como exemplo aqui.

Podemos simplificar uma escada rolante como um meio onde há pessoas com pressa e pessoas sem pressa. Como pessoas com pressa e sem pressa podem compartilhar um mesmo meio, sem que as com pressa se atrasem e sem que as sem pressa se sintam pressionadas a ir mais rápido?

Separando o meio em dois. Se os com pressa e os sem pressa se misturarem, ganharão os sem pressa, porque, por definição, eles não vão se apressar por causa dos outros, enquanto os apressados acabam forçosamente retidos pelos sem pressa. Ou seja, um dos dois grupos é prejudicado.

Se os sem pressa combinarem de ficar do lado direito, paradinhos, conversando o quanto quiserem, enquanto a escada faz o esforço por eles, os apressados poderão passar livremente pelo lado esquero, sem atrapalhar ninguém nem ser prejudicados.

A falta de compreensão de processo, nesse caso, é dos sem pressa, porque se recusam a se organizar para dividir harmoniosamente o espaço com os apressados. Com isso, eles geram raiva e insatisfação, piorando a qualidade de vida do próximo. Com várias pessoas chateadas, certamente a qualidade de vida média da população é reduzida, o que significa que você, ao interagir com qualquer pessoa, sentirá esses sintomas.

No trânsito temos vários outros exemplos de incompreensão de processos. Motoristas dirigindo pelo acostamento, na estrada congestionada, simplesmente não entendem que, ao furarem fila, vão piorar ainda mais a situação como um todo: se o trânsito já não anda com um carro por faixa, n+1 carros pra n faixas certamente será muito pior.

Pedido

Então, fica aqui uma sugestão: antes de agir, pense num prazo mais longo que o próximo segundo. Você pode estar piorando a sua própria qualidade de vida.

2007-09-20

emerge? pmerge!

Que a árvore de pacotes do Portage é excelente, eu não tenho a menor dúvida. Mas uma coisa é certa: sempre fico com inveja quando vejo alguém pegar um Debian/Ubuntu ultra-desatualizado e dar um apt-get update && apt-get dist-upgrade muito, mas muito mais rápido do que seus equivalentes gentooístas, emerge sync && emerge -uD world. Na verdade, o comando inteiro com apt-get ainda roda muito mais rápido que um simples emerge -uvp world.

É verdade, esses comandos não são usados todo dia, então não deveriam causar esse tipo de reação. Mas acho que isso é lento demais.

Felizmente não estou sozinho. O pkgcore está disponível na árvore do Portage, e é uma das duas alternativas ao emerge mais "famosas" (a outra é o Paludis).

Quem se interessar pode seguir a reconhecidamente excelente documentação do Gentoo para começar a usar o Pkgcore.

E se alguém precisar de mais um empurrãozinho, aí vão alguns tempos de execução no meu laptop:

feanor ~ # time ( emerge -up world >/dev/null )

real    0m4.110s
user    0m3.792s
sys     0m0.191s

feanor ~ # time ( emerge -up world >/dev/null )

real    0m3.847s
user    0m3.607s
sys     0m0.202s

feanor ~ # time ( pmerge -up world >/dev/null )

real    0m4.681s
user    0m0.568s
sys     0m0.106s

feanor ~ # time ( pmerge -up world >/dev/null )

real    0m0.216s
user    0m0.162s
sys     0m0.054s

O que se percebe aí é que a primeira rodada do emerge ou pmerge é lenta. Igualmente lenta, infelizmente. Mas a partir da segunda (desde que não se tenha rodado um emerge sync no meio do caminho), o pmerge é muito mais rápido.

É, esse exemplo não foi muito bom. Mas o fato é que o pkgcore dá um certo banho no emerge, e a sintaxe dos comandos é quase sempre igual.

Eu recomendo!

iwlwifi facinho, facinho

Você tem uma placa de rede sem fio Intel ipw3945? Então provavelmente você sabe que o driver ipw3945, de autoria da própria Intel, tem alguns problemas conhecidos, como freqüentes falhas para autenticar com WPA-PSK e WPA2-PSK.

Bom, eu sofri bastante com essas falhas, porque queria realmente usar minha rede sem fio no meu notebook Clevo, e sempre que tinha alguma parede entre a máquina e o roteador ele não autenticava nem por decreto.

Boa notícia! A falha era no microcódigo, ou no tal do daemon regulatório obrigatório (é, é um driver em 3 partes, maior loucura...). E a Intel está desenvolvendo um novo driver, chamado iwlwifi, e naturalmente já disponível no Gentoo.

Instalei o driver novo (deu um certo trabalho) e consegui fazer funcionar. Maravilha.

Mais uma boa notícia pros preguiçosos! O kernel sempre experimental do Andrew Morton (árvore -mm) já traz o driver.

Então, pra quem tiver uma boa distribuição, é só emerge mm-sources.

Bom emerge. ;)

Virt-manager tá no Portage

Luciano, essa é pra você! :)

Vivo reclamando do Gentoo, né? Pois lembrei de um importante motivo pra amar essa bela distribuição (ou meta-distribuição): tem pacote pra caramba! Olha só:

Ah, slackware...