Bem, eu estava preparando este post para meu blog por algum tempo eles me sugeriram em DesdeLinux, e devido à falta de tempo, ele não pôde ou não quis. Se eu sou um pouco preguiçoso ????. Mas agora estão em greve, como dizemos em Cuba ...
0- Mantenha nossos sistemas atualizados com as últimas atualizações de segurança.
0.1- Listas de discussão de atualizações críticas [Consultor de Segurança Slackware, Consultor de Segurança Debian, no meu caso]
1- Acesso físico zero aos servidores por pessoal não autorizado.
1.1- Aplicar senha para BIOS de nossos servidores
1.2- Sem inicialização por CD / DVD
1.3- Senha no GRUB / Lilo
2- Boa política de senha, caracteres alfanuméricos e outros.
2.1- Vencimento das senhas [Vencimento da senha] com o comando “chage”, bem como o número de dias entre a alteração da senha e a data da última alteração.
2.2- Evite usar senhas anteriores:
em /etc/pam.d/common-password
password sufficient pam_unix.so use_auth ok md5 shadow remember 10
Então você muda a senha e ela lembra das últimas 10 senhas que o usuário tinha.
3- Boa política de gestão / segmentação da nossa rede [routers, switches, vlans] e firewall, bem como regras de filtragem INPUT, OUTPUT, FORWARD [NAT, SNAT, DNAT]
4- Habilite o uso de shells [/ etc / shells]. Os usuários que não precisam efetuar login no sistema obtêm / bin / false ou / bin / nologin.
5- Bloqueia usuários quando o login falha [faillog], bem como controla a conta de usuário do sistema.
passwd -l pepe -> bloquear usuário pepe passwd -v pepe -> desbloquear usuário pepe
6- Habilite o uso de "sudo", NUNCA faça login como root por ssh, "NUNCA". Na verdade, você deve editar a configuração do ssh para atingir esse propósito. Use chaves públicas / privadas em seus servidores com sudo.
7- Aplique em nossos sistemas o “Princípio de menor privilégio".
8- Verifique nossos serviços de tempos em tempos [netstat -lptun], para cada um de nossos servidores. Adicione ferramentas de monitoramento que podem nos ajudar nesta tarefa [Nagios, Cacti, Munin, Monit, Ntop, Zabbix].
9- Instale IDSs, Snort / AcidBase, Snotby, Barnyard, OSSEC.
10- Nmap é seu amigo, use-o para verificar sua sub-rede / sub-redes.
11- Boas práticas de segurança em OpenSSH, Apache2, Nginx, MySQL, PostgreSQL, Postfix, Squid, Samba, LDAP [os que mais usam] e algum outro serviço que você precisa em sua rede.
12- Criptografe toda a comunicação possível em nossos sistemas, SSL, gnuTLS, StarTTLS, digest, etc ... E se você manipular informações confidenciais, criptografe seu disco rígido !!!
13- Atualize nossos servidores de e-mail com as regras de segurança, lista negra e antispam mais recentes.
14- Registro de atividades em nossos sistemas com logwatch e logcheck.
15- Conhecimento e uso de ferramentas como top, sar, vmstat, free, entre outras.
sar -> relatório de atividade do sistema vmstat -> processos, memória, sistema, i / o, atividade da cpu, etc iostat -> status da cpu i / o mpstat -> status do multiprocessador e uso pmap -> uso de memória por processos livres -> memória iptraf -> tráfego em tempo real de nossa rede ethstatus -> monitor de estatísticas ethernet baseado em console etherape -> monitor gráfico de rede ss -> status do soquete [informações do soquete tcp, udp, soquetes brutos, Sockets DCCP] tcpdump -> Análise detalhada de tráfego vnstat -> monitor de tráfego de rede de interfaces selecionadas mtr -> ferramenta de diagnóstico e análise de sobrecarga em redes ethtool -> estatísticas sobre placas de rede
Por enquanto, é tudo. Sei que existem mil e uma mais sugestões de segurança neste tipo de ambiente, mas são estas que mais me impressionaram, ou que em algum momento tive que aplicar / fazer exercícios em um ambiente que administrei .
Um abraço e espero que sirva a você 😀
Convido você nos comentários a nos contar sobre alguma outra regra que você implementou além das já mencionadas, para aumentar o conhecimento de nossos leitores 😀
Bem, eu acrescentaria:
1.- Aplique regras sysctl para evitar acesso dmesg, / proc, SysRQ, atribua PID1 ao núcleo, habilite proteções para links simbólicos físicos e soft, proteções para pilhas TCP / IP para IPv4 e IPv6, ative VDSO completo para indicadores de randomização máxima e alocações de espaço de memória e melhora a resistência contra estouros de buffer.
2.- Criar firewalls do tipo SPI (Stateful Package Inspect) para evitar que conexões não criadas ou previamente permitidas tenham acesso ao sistema.
3.- Se você não possui serviços que garantam conexões com privilégios elevados a partir de uma localização remota, simplesmente revogue o acesso a eles usando access.conf, ou, na falta disso, habilite o acesso a apenas um determinado usuário ou grupo.
4.- Use limites rígidos para evitar que o acesso a certos grupos ou usuários desestabilize seu sistema. Muito útil em ambientes onde existe um multiusuário real ativo o tempo todo.
5.- TCPWrappers é seu amigo, se você estiver em um sistema com suporte para ele, usá-lo não faria mal, então você pode negar o acesso de qualquer máquina a menos que esteja previamente configurado no sistema.
6.- Crie chaves SSH RSA de pelo menos 2048 bits ou melhores de 4096 bits com chaves alfanuméricas de mais de 16 caracteres.
7.- Você é gravável no mundo inteiro? Verificar as permissões de leitura e gravação de seus diretórios não é ruim e é a melhor maneira de evitar o acesso não autorizado em ambientes multiusuário, sem mencionar que torna mais difícil para certos acessos não autorizados obter acesso às informações que você faz não quero que ninguém mais veja.
8.- Monte qualquer partição externa que não o mereça, com as opções noexec, nosuid, nodev.
9.- Use ferramentas como rkhunter e chkrootkit para verificar periodicamente se o sistema não possui rootkit ou malware instalado. Uma medida prudente se você for um daqueles que instalam coisas a partir de repositórios não seguros, de PPAs ou simplesmente compilando códigos em tempo real de sites não confiáveis.
Uhmmm, delicioso… Bom comentário, acrescente pessoal… 😀
Aplicar um controle de acesso obrigatório com SElinux?
artigo muito bom
Obrigado amigo 😀
Olá e se eu for um usuário normal, devo usar su ou sudo?
Eu uso su porque não gosto de sudo, porque qualquer pessoa que tenha minha senha de usuário pode alterar o que quiser no sistema, em vez de su no.
No seu PC não incomoda usar o su, você pode usá-lo sem problemas, nos servidores é altamente recomendável desabilitar o uso do su e usar o sudo, muitos dizem que é devido ao fato de auditar quem executou o quê comando e sudo faz essa tarefa ... eu no particular, no meu pc eu uso o dele, assim como você ...
Claro, eu realmente não sei como funciona nos servidores. Porém, me parece que o sudo tinha a vantagem de poder dar privilégios ao usuário de outro computador, se não me engano.
Artigo interessante, criptografo alguns arquivos com gnu-gpg, pois é o de privilégio mínimo, caso queira executar, por exemplo, um binário de origem desconhecida perdido nos imensos mares de informações do disco, como faço para remover acesso a certas funções?
Devo essa parte a você, embora ache que só deva rodar como sudo / root, programas que são confiáveis, ou seja, vêm do seu repo ...
Lembro-me de ter lido que existe uma maneira de habilitar os recursos de root em algum manual do GNU / Linux e UNIX, se eu encontrar, vou colocá-la 😀
@andrew aqui está o artigo que mencionei e mais alguma ajuda
http://www.cis.syr.edu/~wedu/seed/Labs/Capability_Exploration/Capability_Exploration.pdf
http://linux.die.net/man/7/capabilities
https://wiki.archlinux.org/index.php/Capabilities
e gaiolas de chown para executar binários desconhecidos?
Usar sudo o tempo todo é muito melhor.
Ou você pode usar o sudo, mas limitando o tempo em que a senha é lembrada.
Ferramentas semelhantes que utilizo para monitorar o pc, "iotop" como um substituto para "iostat", "htop" excelente "gerenciador de tarefas", "iftop" monitoramento de largura de banda.
muitos vão achar que isso é exagerado, mas já vi ataques para incluir um servidor em um botnet.
https://twitter.com/monitolinux/status/594235592260636672/photo/1
ps: mendigos chineses e suas tentativas de hackear meu servidor.
algo que também é conveniente é usar gaiolas de chown para os serviços, então se por algum motivo eles forem atacados não comprometerão o sistema.
Usar o comando ps também é excelente para monitoramento e pode fazer parte das ações para verificar falhas de segurança. executando ps -ef lista todos os processos, é semelhante ao top, porém mostra algumas diferenças. a instalação do iptraf é outra ferramenta que pode funcionar.
Boa contribuição.
Eu acrescentaria: SELinux ou Apparmor, dependendo da distro, sempre habilitado.
Por experiência própria, percebi que não é uma boa prática desabilitar esses componentes. Quase sempre o fazemos quando vamos instalar ou configurar um serviço, com a desculpa de que funciona sem problemas, quando na verdade o que devemos fazer é aprender a manuseá-los para permitir esse serviço.
Uma saudação.
1.Como criptografar todo o sistema de arquivos? Vale a pena??
2. Ele precisa ser descriptografado toda vez que o sistema for atualizado?
3. A criptografia de todo o sistema de arquivos da máquina é o mesmo que criptografar qualquer outro arquivo?
Como você mostra que sabe do que está falando?
Além disso, você pode criar gaiolas e até mesmo vários usuários. Embora fazer isso dê mais trabalho, mas se algo aconteceu, e você tinha uma cópia anterior dessa pasta, é só bater e cantar.
A melhor e mais conveniente política de segurança é não ser paranóico.
Experimente, é infalível.
Estou usando csf e ao desbloquear um cliente que perdeu sua senha em algum acesso, isso atrasa o processo, mas atrasa. É normal?
Estou procurando o comando para desbloquear do ssh ... qualquer sugestão