Hardening Hardening ( Técnica de blindagem de sistema ) é um
Transcrição
Hardening Hardening ( Técnica de blindagem de sistema ) é um
Hardening Hardening ( Técnica de blindagem de sistema ) é um processo de mapeamento das ameaças, mitigação dos riscos e execução das atividades corretivas em um sistema. Seu foco é a infraestrutura e seu objetivo é tornar um sistema mais seguro para enfrentar tentativas de ataques e invasões. A técnica de Hardening pode ser utilizada em qualquer sistema operacional, implementando medidas e ações com o objetivo de fortalecer a segurança e proteger o sistema de possíveis invasores. A implementação das diretivas de segurança devem ser seguidas antes, durante e após a instalação e configuração do sistema operacional em uso. Quando se utiliza a técnica de Hardening existem três grandezas que devem ser consideradas e analisadas: a segurança, os riscos e a flexibilidade do sistema. Quando essas grandezas são analisadas se definem e são aplicadas as boas práticas de segurança mais adequadas ao sistema em uso, com o objetivo de se oferecer produtividade e segurança, levando em consideração que quanto maior a segurança menor o risco e também a flexibilidade do sistema. Algumas técnicas importantes que merecem atenção para um bom Hardening: Acesso Remoto Utilizar o acesso remoto para não ter acesso físico ao servidor é uma técnica que pode ser utilizada, como o ssh no Linux. Sistemas de Detecção e Prevenção de Intrusão Um sistema de detecção e prevenção de intrusão permite notificar, rastrear e identificar tentativas de ataques e invasões em um sistema. Baseado na detecção de uma tentativa de ataque ou invasão a ferramenta é acionada e toma um ação baseada na detecção do problema e conforme as configurações da ferramenta que está sendo utilizada. Antivírus Antivírus é um software que detecta, evita, atua, remove e neutraliza programas mal – intencionados (vírus). Os Vírus são programas desenvolvidos para interferir no comportamento do computador, gravando, corrompendo ou excluindo dados ou para se espalharem para outros computadores através da internet. A melhor forma de prevenção é a atualização do antivírus utilizado no computador constantemente; grande parte dos softwares antivírus permitem uma atualização automática, programada pelo administrador do sistema. . Criptografia A criptografia permite guardar e transmitir mensagens de forma segura, garantindo a privacidade da informação. Benefícios da criptografia para a segurança da informação: Integridade: É possível ao receptor de uma mensagem verificar se esta foi alterada durante o trânsito. Autenticação: É possível ao receptor de uma mensagem, verificar sua origem, um intruso não pode se fazer passar pelo remetente desta mensagem. Disponibilidade: O sistema deve estar sempre pronto a responder as requisições de usuários autenticados como legítimos pelo sistema, através de login e senha. Fechar Portas da Rede Quando um sistema operacional é instalado, alguns aplicativos (serviços) abrem portas introduzindo vulnerabilidades no sistema, facilitando uma invasão através da exploração dessas portas abertas. Existe um aplicativo chamado Nmap (Network Mapper é um aplicativo livre e de código aberto, utilizado para explorar uma rede para efetuar uma auditoria de segurança), que permite que se faça uma varredura por todas as portas abertas no sistema e se possa criar com essa lista de portas abertas, regras no firewall para bloquear as portas que não devem estar disponíveis. Depois que as regras forem configuradas no firewall é importante fazer uma nova varredura e analisar se as portas abertas que poderiam colocar o sistema em risco foram fechadas. Firewall Barreira de proteção que ajuda a controlar o tráfego de dados entre um computador ou rede onde o computador está instalado e a internet. Permite a transmissão e recepção de dados autorizados pelo administrador da rede. É considerado um ponto de conexão entre duas redes não confiáveis e permite que a comunicação entre elas seja segura e monitorada a todo momento. Como funciona o Firewall do Windows: Quando alguém utilizando a internet ou uma rede tenta se conectar ao computador, essa tentativa é chamada de pedido não solicitado, quando o firewall recebe um pedido não solicitado ele bloqueia a conexão. Quando houver necessidade do usuário executar programas de mensagens instantâneas ou utilizar a internet ou uma rede para receber informações o firewall sempre perguntará se o usuário deseja bloquear ou desbloquear esses tipos de conexão. Remoção de Logins e Usuários desnecessários Após a instalação do sistema e no dia a dia é importante que o administrador da rede faça a análise de todas as contas de usuários e remova as contas desnecessárias. Contas que não são mais utilizadas devem ser removidas para evitar que pessoas mal intencionadas utilizem essas contas para realizar atividades suspeitas ou indevidas, que comprometam a segurança da rede. A conta de usuário administrador é a conta mais visada por usuários mal intencionados e cracker, quando se consegue acesso a conta do administrador, se consegue acesso total ao sistema e rede de uma empresa. Essa conta deve conter uma senha considerada forte e só deve ser utilizada pelo administrador quando for necessário fazer configurações no sistema, em outros casos é recomendando que até mesmo o administrador use uma conta de usuário comum no sistema, para que a segurança seja garantida Remoção de Programas e Serviços desnecessários Desativar serviços desnecessários e inseguros é uma medida de segurança que deve ser tomada pelos administradores do sistema. Todos os serviços instalados devem ser verificados, quanto a necessidade de utilização, se não forem necessários ou considerados inseguros devem ser removidos. A desinstalação de serviços considerados desnecessários deve ser executada para evitar que possíveis vulnerabilidades sejam exploradas e o sistema venha a sofrer ameaças que afetem a segurança. Os serviços que permitem acesso remoto ao sistema são considerados inseguros e devem ser desativados, porém conforme a necessidade da rede alguns serviços não podem ser desativados, o administrador deve analisar e procurar deixar habilitados somente serviços considerados necessários ao sistema em uso. Essas foram somente algumas das muitas técnicas e configurações que podemos pensar em verificar e implementar para melhor blindagem no servidor e dos dados da empresa. Segue agora algumas execuções de comandos e configurações que podem ajudar a blindar melhor um sistema Linux: #! /bin/bash set -x # # Configurando o path dos executáveis usados no script export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin # Mudando a permissão dos arquivos com SUID, exceto alguns : # /sbin/pwdb_chkpwd # /sbin/unix_chkpwd # /sbin/pam_timestamp_check # /bin/su # /usr/bin/passwd # /usr/bin/sudo # /usr/bin/crontab find / \( -perm -4000 -o -perm -2000 \) -mount -type f -print > /tmp/suids sed -e '/\/sbin\/pwdb_chkpwd/ d' \ -e '/\/sbin\/unix_chkpwd/ d'\ -e '/\/sbin\/pam_timestamp_check/ d'\ -e '/\/bin\/su/ d'\ -e '/\/usr\/bin\/passwd/ d'\ -e '/\/usr\/bin\/sudo/ d'\ -e '/\/usr\/bin\/crontab/ d'\ /tmp/suids > /tmp/suids2 for arquivo in $(cat /tmp/suids2); do chmod -s $arquivo done rm /tmp/suids /tmp/suids2 # Mundando a permissão dos compiladores chmod go-rwx /usr/bin/gcc chmod go-rwx /usr/bin/cc # Parando os serviços desnecessários service gpm stop service apmd stop service atd stop service xinetd stop service sendmail stop service cups stop # Retirando do startup os serviços desnecessários chkconfig --level 12345 cups off chkconfig --level 12345 sendmail off chkconfig --level 12345 xinetd off chkconfig --level 12345 gpm off chkconfig --level 12345 apmd off chkconfig --level 12345 atd off # -> Criado por Robs # ctrl alt del p/ boot sed 's/^ca::ctrlaltdel/#ca::ctrlaltdel/' /etc/inittab > tmp.01 mv tmp.01 /etc/inittab # password no grub grep ^password /boot/grub/grub.conf >/dev/null 2>&1 case "$?" in 0) ;; 1) echo -n "senha do LOADER:" read -r password if test "x$password" = x; then echo "password em branco" fi md5=`grub --batch --device-map=/dev/null < | grep "^Encrypted: " | sed 's/^Encrypted: //' md5crypt $password quit EOF` if test "x$password" != x; then echo "password --md5 $md5" > tmp.01 cat /boot/grub/grub.conf >> tmp.01 mv tmp.01 /boot/grub/grub.conf chmod 600 /boot/grub/grub.conf fi ;; 2) esac # seguranca de rede grep ^net.ipv4.tcp_syncookies=1 /etc/sysctl.conf >/dev/null 2>&1 if test $? = 1; then echo 'net.ipv4.conf.all.forwarding=0 net.ipv4.conf.all.accept_source_route=0 net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.all.log_martians=1 net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.tcp_syncookies=1 net.ipv4.icmp_ignore_bogus_error_responses=1 #net.ipv4.icmp_echo_ignore_broadcasts=0 #net.ipv4.icmp_ignore_bogus_error_responses=0 net.ipv4.ip_local_port_range = 16384 65535 net.ipv4.ipfrag_high_thresh = 512000 net.ipv4.ipfrag_low_thresh = 446464 net.ipv4.tcp_mem = 688128 737280 786432 net.ipv4.tcp_wmem = 393216 1572864 12582912 net.ipv4.tcp_rmem = 1179648 4718592 37748736 net.ipv4.tcp_max_tw_buckets = 2000000 net.ipv4.tcp_max_syn_backlog = 8192 kernel.msgmni = 1024 kernel.sem = 1000 32000 32 512 kernel.shmmax = 2147483648 fs.file-max = 65535 vm.bdflush = 100 1200 128 512 500 6000 500 0 0 vm.kswapd = 1024 32 16 vm.page-cluster = 16 vm.pagetable_cache = 35 60 net.core.rmem_max = 6291360 net.core.rmem_default = 6291360 net.core.wmem_max = 6291360 net.core.wmem_default = 6291360 net.core.optmem_max = 688128 net.core.hot_list_length = 12288 ' >> /etc/sysctl.conf sysctl -p fi # auditagem chmod o-rwx /var/log/* # perm xinetd chmod 700 /etc/xinetd.d chmod 600 /etc/xinetd.conf # tamanho e expiracao do password sed '/^PASS_MIN_LEN/c \ PASS_MIN_LEN 8 /^PASS_MAX_DAYS/c \ PASS_MAX_DAYS 30 ' /etc/login.defs > tmp.01 mv tmp.01 /etc/login.defs # su irrestrito chgrp wheel /bin/su chmod 4750 /bin/su # criando usuarios useradd -g 10 -u 1505 -d /home/bob -s /bin/bash bob useradd -g 10 -u 1500 -d /home/buba -s /bin/bash buba useradd -g 10 -u 1510 -d /home/glima -s /bin/bash glima chown -R weblogic:as /bea /domains echo bob!@#' | passwd --stdin bob echo buba!@#' | passwd --stdin buba echo glima!@#' | passwd --stdin glima # Alteração no /etc/security/limits.conf echo bob soft nofile 50000 bob hard nofile 50000 bob soft nproc 10000 bob hard nproc 10000' >> /etc/security/limits.conf Outro ponto de atenção é quanto a parametrização dos buffers e utilização de memória das interfaces de rede. Isso pode mudar e muito de acordo com o modelo de cada interface. #Kernel sysctl configuration file for Red Hat Linux # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # Disables packet forwarding net.ipv4.ip_forward=0 # Disables IP source routing net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 # Enable IP spoofing protection, turn on source route verification net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Disable ICMP Redirect Acceptance net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets net.ipv4.conf.all.log_martians = 0 net.ipv4.conf.lo.log_martians = 0 net.ipv4.conf.eth0.log_martians = 0 # Disables IP source routing net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 # Enable IP spoofing protection, turn on source route verification net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Disable ICMP Redirect Acceptance net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # Disables the magic-sysrq key kernel.sysrq = 0 # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 15 # Decrease the time default value for tcp_keepalive_time connection net.ipv4.tcp_keepalive_time = 1800 # Turn off the tcp_window_scaling net.ipv4.tcp_window_scaling = 0 # Turn off the tcp_sack net.ipv4.tcp_sack = 0 # Turn off the tcp_timestamps net.ipv4.tcp_timestamps = 0 # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1 # Enable ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts = 1 # Enable bad error message Protection net.ipv4.icmp_ignore_bogus_error_responses = 1 # Log Spoofed Packets, Source Routed Packets, Redirect Packets net.ipv4.conf.all.log_martians = 1 # Increases the size of the socket queue (effectively, q0). net.ipv4.tcp_max_syn_backlog = 1024 # Increase the tcp-time-wait buckets pool size net.ipv4.tcp_max_tw_buckets = 1440000 # Allowed local port range net.ipv4.ip_local_port_range = 16384 65536