27/07 - Dia do SysAdmin
26 de Julho de 2012, 21:00 - sem comentários ainda
Este ano, o dia do SysAdmin é comemorado em 27/07. Criado no ano 2000 por Ted Kekatos, o System Administrator Appreciation Day ou Sysadmin Day, SAD ou SAAD, é uma homenagem para estes profissionais que trabalham incansávelmente para manter a ordem (ou o caos controlado) nos sistemas. Provávelmente, eles são os primeiros a chegar e os últimos a sair nos escritórios, empresas, data center, etc. Cuidam não somente de um servidor ou serviço, mas absolutamente de tudo que seja ligado em uma tomada e que seja de alguma forma eletrônico, incluindo sob suas responsabilidades do fax até a central telefonica. Cuida com carinho para manter o up-time de servidores, faz ajustes em sistemas, lê rfc's, tutoriais, manuais de integração, etc, tudo para permitir uma experiência cada vez melhor para os usuários. O que seria um dia sem eles? sem as rotinas de backup, sem a manutenção dos servidores e suas atualizações? sem o firewall protegendo a rede? sem a manutenção nas regras de spam? ou sem a configuração cuidadosa dos computadores e equipamentos da rede?
Parabéns sysadmin's pelo seu dia!
Definindo uma impressora padrão no shell
11 de Julho de 2012, 21:00 - sem comentários ainda
Em um ambiente Linux tradicionalmente utilizamos impressoras no ambiente gráfico, seja Gnome, LXDE, Icwm, etc, sendo que ao comando de impressão (CTRL+p) por exemplo, o sistema nos apresenta as impressoras instaladas e sugere aquela que for padrão, incluindo saida para arquivo ou pdf. Dentro deste contexto as impressoras apresentadas são aquelas configuradas no seu cups e desta forma, podem estar conectadas em qualquer ponto da rede. Estas impressoras não são vistas pelo shell necessitando somente de uma configuração muito simples que descrevo abaixo. A propósito, impressão via linha de comando, mutt ou editor vim, ou simplesmente
ls | lpr
, ficam mais transparentes desta forma.
Localize o nome da sua impressora. Isto pode ser feito verificando o seu arquivo printers.conf em /etc/cups/printers.conf:
sudo vi /etc/cups/printers.conf
e procure no inicio da seção de configuração de cada impressora o nome que aparece entre < >, como , neste caso o nome da impressora é HP-LaserJet-1022.
Agora, no shell do sistema, defina a variável PRINTER=HP-LaserJet-1022 e exporte a variável para que as aplicações enxerguem o nome da impressora (export PRINTER);
$ PRINTER=HP-LaserJet-1022 ; export PRINTER
Para conferir se a variável $PRINTER está associada à sua impressora, utilize o comando
echo $PRINTER
Para que as configurações sejam permanentes, insira estes parâmetros no seu .bashrc.
root - direitos, privilégios e segurança
11 de Julho de 2012, 21:00 - sem comentários ainda
Ser root em um sistema Linux ou Unix não é somente um "direito" e sim um "privilégio". O "direito" não necessáriamente está relacionado com o privilégio e sim com diretivas a serem seguidas, enquanto "privilégio" é o "poder" investido na conta de acesso. Isto parece confuso? pode-se dizer que diretiva é o que você segue (ou deveria seguir) enquanto o privilégio é o que você tem.
Em um sistema Linux ou Unix, o usuário root é a principal conta do sistema com direitos supremos, podendo ter acesso a qualquer dispositivo, arquivos e comandos [1], inclusive para remover o sistema. Por esta razão, ao proteger esta conta do sistema, cria-se uma camada adicional na sua segurança. O interessante aqui, é o conceito de segurança do sistema operacional, seja ele um servidor ou um desktop. Note no entanto, que cada ambiente precisa de cuidados diferenciados, por exemplo, um servidor tem muitos serviços rodando, usuários com diferentes perfis e necessidades, logo, sua falha comprometerá atividades que podem significar a exposição de dados importantes e prejuizos institucionais, enquanto no desktop pode-se conviver com regras mais flexíveis (embora não recomendadas).
Em sistemas Debian, a definição de senha de root durante a instalação do sistema é opcional, ou seja, caso não seja informada, o primeiro usuário do sistema tem privilégio de sudo para atividades administrativas.
A lógica da segurança nesta questão, coloca luz para outro ponto cujo entendimento não tem tanta profundidade para iniciantes e estudantes do sistema, que é a questão de que a "segurança não é um produto e sim um conceito", por isso que vale o investimento do tempo para entender e melhorar a segurança do sistema.
Algumas recomendações de proteção para a conta root:
1-Não existem dois "root" no sistema;
Na hipótese da necessidade de privilégios administradivos para outros usuários, utilize o sudo, dando atributos de acordo com a necessidade.
2-Utilize a conta "root" para administrar, não para trabalhar;
Não crie o hábito de logar e manter-se logado como root no seu sistema. Desta forma, cria-se a cultura de segurança em todas as atividades, desde as simples até as complexas.
3-Não permita acesso como "root" via acessos remotos;
Nunca permita que o root tenha acesso via ssh por exemplo. Ajuste seu sshd_config adequadamente:
PermitRootLogin no
4-Não permita rodar scripts desconhecidos como "root"
Diria ainda mais, não rode nem mesmo os scripts conhecidos como root, a não ser que tenha uma boa razão para isso.
5-Não permita usuários com senha nula (em branco, empty) no sistema;
Ao permitir isso, e estando o intruso no sistema, outras vulnerabilidades poderão ser alcançadas, inclusive a possbilidade de execução como sudo ou outro tipo de engenharia. Note que quem tem direitos de sudo, deve também cuidar de suas senhas. Para isso, ajuste seu sshd_config:
PermitEmptyPasswords no
6-Não permita acesso "root" ao console;
Ajustando seu securetty em /etc/securetty. Neste arquivo, são listados os terminais onde root pode logar-se. O recomendável, é que root não tenha acesso aos consoles, principalmente em sistemas firewall ou servidores onde a segurança seja uma questão suprema.
7-setuid e setgid também devem ser usados com cuidado, evitando-se a elevação de privilégios;
O sistema operacional checa estes bits identicadores a cada chamada de sistema. Então, pelo setuid e setgid permite-se ao usuário a execução com privilégios elevados temporáriamente, como por exemplo, a alteração de senha. Observe o executável passwd, cujo setgid permite a execução por qualquer conta do sistema, com privilégios temporários de root:
-rwsr-xr-x 1 root root 34740 Feb 15 2011 passwd
8-Cuide da "raiz" da sua árvore;
O sistema operacional possui uma hierarquia de diretórios onde tudo está relacionado ao / (raiz), formando a árvore de diretórios. Em alguns pontos desta árvore, é possível recuperar arquivos ou diretórios removidos, isto considerando experiência e tempo para tanto. Mas outros pontos, a remoção pode ser fatal, como por exemplo o próprio /. A remoção (rm- rf /) por exemplo, destrói de forma irreversível a sua instalação.
9-id root = 0
O id 0 (zero) é reservado para o usuário root. Existem diversas razões para isso ser assim, incluindo a permissão dos processos do sistema. Portanto, nunca altere as permissões de um usuário para id 0, por exemplo, editando o
O id 0 (zero) é reservado para o usuário root. Existem diversas razões para isso ser assim, incluindo a permissão dos processos do sistema. Portanto, nunca altere as permissões de um usuário para id 0, por exemplo, editando o
/etc/passwd
.grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
Conclusão:
A exemplos de outros pequenos artigos, este foi baseado em experiência própria e voltado para resposta pontual, do tipo, o que é root ou como devo proteger a conta de root. É comum perceber a confusão que novos usuários do sistema fazem quando estão no prompt # ou $, não sabendo nem mesmo diferenciar o shell.
[1] http://www.linfo.org/root.html
man setgid
man setuid
man credentials