Pular para o conteúdo principal

Selinux



 Descomplicando Selinux

Lembrando que para todo sysadmin é de total importância a segurança de todo parque computacional, aconselho todo tipo de segurança a ser implementado e não deixar somente ou acerca de um firewall corporativo somente. Pois sempre lembre disso: Uma segurança não implatada pode acatar em um prejuízo de milhões.


O que é Selinux?

SELinux (Security-Enhanced Linux) é um conjunto de extensões de segurança para o kernel no qual inicialmente desenvolvido pela National Security Agency (NSA) dos Estados Unidos. O SELinux implementa um modelo de segurança obrigatório (Mandatory Access Control - MAC)

Por que utilizar Selinux?

O SELinux oferece segurança avançada em sistemas Linux por meio de políticas detalhadas e controle de acesso obrigatório. Reduz a superfície de ataque, limitando privilégios e protegendo contra exploits. Sua capacidade de auditoria detalhada facilita a detecção de atividades suspeitas. Adapta-se a diferentes ambientes e atende os padrões de segurança, sendo crucial em ambientes multiusuário. Embora potente, requer configuração cuidadosa/minuciosa para evitar complicações.

Recomenda-se a instalação de pacotes extras:

root@localhost spinal]# dnf install selinux-policy selinux-policy-targeted policycoreutils mcstrans setools -y

Primeira análise:

[root@localhost spinal]# rpm -qa | grep selinux
libselinux-3.5-1.el9.x86_64
libselinux-utils-3.5-1.el9.x86_64
python3-libselinux-3.5-1.el9.x86_64
selinux-policy-38.1.23-1.el9.noarch
selinux-policy-targeted-38.1.23-1.el9.noarch
container-selinux-2.221.0-1.el9.noarch
rpm-plugin-selinux-4.16.1.3-25.el9.x86_64
flatpak-selinux-1.12.8-1.el9.noarch

Quais os modos do selinux:

Enforcing (Imposição) --> SELinux implementa rigorosamente políticas de segurança, bloqueando e registrando violações.
Permissive (Permissivo) -->  SELinux registra violações, mas não as bloqueia, útil para ajuste de políticas sem interromper operações.
Disabled (Desabilitado) -->  SELinux está completamente desativado, sem aplicação de políticas ou registro de violações. 

Algumas comandos de referência:

[root@localhost spinal]# getenforce 
Permissive
[root@localhost spinal]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive --> modo atual --> Comando setenforce
Mode from config file:          enforcing --> /etc/selinux/config --> Configuração do arquivo
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33
[root@localhost spinal]# cat /etc/selinux/config  | grep ^SELINUX=
SELINUX=enforcing

Obs: Com o comando setenforce é possível colocar o selinux no mode enforcing ou permissive. No caso permissive seria recomendável para testar a implatação de algum sistema com selinux implatado.

O foco não é firewall, mas como mencionado a segurança é feito via camadas, e o firewall padrão no Rockylinux é o firewalld. Mas para liberarmos o acesso ssh, para começar atuar no servidor, deve-se habilitar o serviço.

[root@localhost spinal]# firewall-cmd --state
running
[root@localhost spinal]# firewall-cmd --add-service=ssh --permanent
[root@localhost spinal]# firewall-cmd --reload
[root@localhost spinal]# firewall-cmd --list-all | grep services
  services: cockpit dhcpv6-client ssh

Política SELinux (Terminando de ler, talvez fique mais ou menos claro)

user --> role --> domain --> file



User (Usuário SELinux): Identificador SELinux vinculado a um usuário, conectando-o a políticas de segurança.
Role (Papel SELinux): Define permissões agrupadas para um usuário SELinux, ex: "sysadm_r" para administração do sistema.
Domain (Domínio SELinux): Agrupa processos em execução com permissões específicas, ex: "httpd_t" para servidores web.
File (Arquivo SELinux): Objeto do sistema de arquivos associado a rótulos de segurança para controlar acesso e permissões.

Com o comando ls, seu melhor amigo, será o parâmetro -Z (maiúsculo), verificando as informações referente a política no selinux.

[root@localhost .ssh]# ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd

Para facilitar o entendimento, será falado sobre boleano, de modo simples é ativar a flag do selinux ou desativa-lo.

Comando para lista os módulos (Não mostrado pois existem vários)

[root@localhost .ssh]# semodule -l

Exemplo de informação de flags com boleanos com ssh (Detalhe da flag):

[root@localhost .ssh]# semanage boolean -l | grep ssh
fenced_can_ssh                 (off  ,  off)  Allow fenced to can ssh
selinuxuser_use_ssh_chroot     (off  ,  off)  Allow selinuxuser to use ssh chroot
ssh_chroot_rw_homedirs         (off  ,  off)  Allow ssh to chroot rw homedirs
ssh_keysign                    (off  ,  off)  Allow ssh to keysign
ssh_sysadm_login               (off  ,  off)  Allow ssh to sysadm login
ssh_use_tcpd                   (off  ,  off)  Allow ssh to use tcpd
sshd_launch_containers         (off  ,  off)  Allow sshd to launch containers
virt_qemu_ga_manage_ssh        (off  ,  off)  Allow virt to qemu ga manage ssh

Lista os boleanos de outra forma com ssh:

[root@localhost .ssh]# getsebool -a | grep ssh
fenced_can_ssh --> off
selinuxuser_use_ssh_chroot --> off
ssh_chroot_rw_homedirs --> off
ssh_keysign --> off
ssh_sysadm_login --> off
ssh_use_tcpd --> off
sshd_launch_containers --> off
virt_qemu_ga_manage_ssh --> off

Agora a parte no qual você mais gosta, com o selinux habilitado, habilitar um boleano.
Para isto vamos utilizar o serviço de ftp para conexão de anonimato, para facilitar a implatação e configuração do mesmo:

Instalação básica do ftp:

[root@localhost .ssh]# dnf install vsftpd -y

Verificando informações do serviço:

[root@localhost .ssh]# systemctl enable vsftpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@localhost .ssh]# ss -lnt
State  Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
LISTEN  0       128     0.0.0.0:ssh         0.0.0.0:*           users:(("sshd",pid=748,fd=3))
LISTEN  0       32      *:ftp               *:*                 users:(("vsftpd",pid=4820,fd=3))
LISTEN  0       128     [::]:ssh            [::]:*              users:(("sshd",pid=748,fd=4))
[root@localhost .ssh]# ip r
default via 192.168.15.1 dev enp0s3 proto dhcp src 192.168.15.127 metric 100 
192.168.15.0/24 dev enp0s3 proto kernel scope link src 192.168.15.127 metric 100 

Observa-se que o serviço e sua porta está aberta:
Primeiro detalhe a porta está aberta somente localmente pois não há regra de firewall.

[root@localhost .ssh]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost .ssh]# firewall-cmd --reload
success
[root@localhost .ssh]# firewall-cmd --list-all | grep services
  services: cockpit dhcpv6-client ftp ssh

Apartir de outro local ou outro servidor verifique se a porta está do serviço de ftp:

spinal@lenovo-legion5:~/.ssh$ timeout 1 telnet 192.168.15.127 22
Trying 192.168.15.127...
Connected to 192.168.15.127.
Escape character is '^]'.

Obs:  Não esqueça de aplicar segurança no servidor ftp, utilizado ssl por exemplo e de preferência com chroot. Com o serviço do ftp vou deixar, você mandar bala, pois o intuito é focar no selinux.

[root@localhost .ssh]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off

Vamos utilizar a seguinte situação, lembrando que somente é para exemplo: 
Vamos supor que a missão seja habilitar usuários anônimos ou convivados tenham permissão de criar arquivos ou pastas em algum diretório X. Vamos liberar a flag, lembrando que o comando precisa do argumento (-P) para aplicar permanentemte.

[root@localhost .ssh]# setsebool -P ftpd_anon_write on
[root@localhost .ssh]# getsebool -a | grep ftpd_anon_write
ftpd_anon_write --> on
[root@localhost .ssh]# 

Um exemplo de teste pode ser utilizado a ferramenta filezilla (Cliente FTP):


Espero ter contribuído para sua vida, para segurança de vários ambientes e esqueça disso:
Brincadeiras a parte. kkkkkkkk



Ass: Luiz Guilherme Nunes Fernandes
Email: narutospinal@gmail.com
Informativo: Entusiasta e colaborador em Software Livre.

Comentários

Postagens mais visitadas deste blog

Feliz 2013!!!

Gostaria de agradecer a todos que este ano acompanharam as matérias postadas e as mais de  7000 visitas ao blog , muito obrigado. Este ano tivemos grandes conquistas e inúmeras novidades como por exemplo o fim do MSN no início de 2013, a criação da União Livre e o desenvolvimento do Kaiana que será lançada em 2013, distro nacional , a descontinução do BigLinux do DreanLinux entre outr as distro, o lançamento do liv ro da S B P - Software Publico Brasileiro, os dois anos do LibreOffice, o prime iro Hackday do LibreOffice , o IX Latinoware, a Microsoft boicotando o Linux (como sempre), o lançamento do Windows 8 e a sua baixa taxa de adesão pelos usuários, entre out ros. Gostaria de desejar a todos Boas Festas e que em 2013 possamos estar juntos novamente. Feliz Natal!!!! F eli z 2013 a todos!!!

O MSN tem Data Marcada para seu Fim

Imagem Retirado do Google 15 de Março Agora sim, o Windows Live Messenger está com os dias contatos, a Microsoft anunciou que o MSN deixará de funcionar no dia 15 de Março deste ano, menos na China. A empresa aconselha a todos os usuários a usarem o Skype que foi integrado com o serviço do MSN, segundo a empresa, os usuários estão sendo notificados por e-mail sobre como proceder para fazer esta mudança de plataforma (eu não recebi até agora tal notificação). Acho o Skype melhor que o Windows Live (assim como muitos profissionais de TI) , mesmo na versão para Linux, claro, sempre existem outras opções e o Pidgin, que se mostra como opção.

Feliz Dia das Mães!!!!

Comandos Úteis para o Linux Mint, Ubuntu e Derivados

Alguns dias sugeriram que eu postasse alguns comandos uteis  utilizados no Linux Mint e para o Ubuntu, mas com tantas distros baseadas no Ubuntu esses comandos também podem ser utilizados nas distros como: Ubuntu 15.04, Ubuntu 14.10, Ubuntu 14.04 , Linux Mint 17.2, Linux Mint 17.1, Linux Mint 17, Pinguy OS 14.04, Elementary OS 0.3, Deepin 2014, Peppermint Five, LXLE 14.04 and Linux Lite 2 2 , DuZeru, Kaiana e derivados . Segue alguns comandos importantes para manutenção do sistema, principalmente para usuários iniciantes... 1- Atualizar a lista de pacotes:  $ sudo apt-get update 2- Atualizar toda a distro:  $ sudo apt-get -f dist-upgrade ou update-manager -d -c 3- Instalar pacotes:  $ sudo apt-get install [nome do pacote] 4- Procurar arquivos corrompidos:  $ sudo apt-get check 5- Corrigir problemas de dependências, concluir instalação de pacotes pendentes e outros erros: $ sudo apt-get -f install 6- Se o comando sudo apt-get -f install nã...

Como Instalar a Fonte ttf-mscorefonts (Times New Roman, Arial, etc) no Ubuntu, Linux Mint e Derivados

Quando instalamos uma distribuição GNU/Linuxmsabemos que vem o LibreOffice por padrão porém geralmente não vem instalado a fonte ttf-mscorefonts que contém as fontes Times New Roman, Arial, etc, como essas fontes são muito útil para os universitários, pelo mundo corporativo e a Associação Brasileira de Normas Técnicas (ABNT), exige que os trabalhos sejam entregues nas fontes Times New Roman e Arial, por meio desta postagem espero pode ajudar a todos com a instalação da fonte ttf-mscorefonts que contém essas fontes. Ao instalar o GNU/Linux abra o terminal e execute o comando: $ sudo apt-get install ttf-mscorefonts-installer Leia os termos de uso e avance clicando em “Ok” Agora aceite os termos de uso clicando em “Sim” Pronto agora abra o LibreOffice e veja se as fontes Times New Roman, Arial estão instaladas. Caso ocorra algum erro ou precisa reinstalar, execute: $ sudo apt-get install --reinstall ttf-mscorefonts-installer

Como Instalar a Fonte ttf-mscorefonts (Times New Roman, Arial, etc) no Ubuntu, Linux Mint e Derivados

Quando instalamos uma distribuição GNU/Linuxmsabemos que vem o LibreOffice por padrão porém geralmente não vem instalado a fonte ttf-mscorefonts que contém as fontes Times New Roman, Arial, etc, como essas fontes são muito útil para os universitários, pelo mundo corporativo e a Associação Brasileira de Normas Técnicas (ABNT), exige que os trabalhos sejam entregues nas fontes Times New Roman e Arial, por meio desta postagem espero pode ajudar a todos com a instalação da fonte ttf-mscorefonts que contém essas fontes. Ao instalar o GNU/Linux abra o terminal e execute o comando: $ sudo apt-get install ttf-mscorefonts-installer Leia os termos de uso e avance clicando em “Ok” Agora aceite os termos de uso clicando em “Sim” Pronto agora abra o LibreOffice e veja se as fontes Times New Roman, Arial estão instaladas. Caso ocorra algum erro ou precisa reinstalar, execute: $ sudo apt-get install --reinstall ttf-mscorefonts-installer

Como Instalar o Kodi 19.5 "Matrix"

Kodi (anteriormente denominado XBMC) é um famoso hub de mídia de código aberto e home theater PC, sendo traduzido em mais de 30 idiomas. Além disso, suas características podem ser altamente estendido através de plugins de terceiros e extensões e tem suporte para PVR (personal video recorder).   A versão final do Kodi 19.5 “Matrix” foi lançado, chegando com alterações que podem ser vistas clicando aqui . Para instalar no Ubuntu,  Linux Mint, Elementary OS e derivados, execute:   $ sudo add-apt-repository ppa:team-xbmc/ppa $ sudo apt-get update $ sudo apt-get install kodi     Use o comando a seguir para instalar codecs de áudio e outros complementos, executando:     $ sudo apt-get install --install-suggests kodi     Para remover, execute:   $ sudo apt-get remove kodi*

Escrevendo uma Macro no LibreOffice Calc - Introdução

Este tutorial foi retirado do site Debugpoint, não mudei nada nenhuma linha de comando, apenas traduzir a explicação do tutorial e espero que ajudem a todos. O LibreOfice fornece uma maneira de escrever a sua própria macro para automatizar várias tarefas repetitivas em seu aplicativo de escritório. Você pode usar Python ou Basic para o desenvolvimento do macro. Este tutorial se concentra em escrever um macro básico 'Olá Mundo' usando básico do LibreOffice Calc .   Macro Objetivo   Nós iremos criar uma macro que iria colocar a string ' Olá Mundo' na primeira célula do LibreOffice Calc ou seja, a célula da linha 1 e col A. Criando o Macro   Abr a o LibreOffice Calc em Aplicativos = > Office/Escritório => LibreOffice Calc .   Ou pesquise " calc " na barra de pesquisa Vá para a opção no menu : Ferramentas ==> Macros == > Organizar Macros ==> LibreOffice Basic . Abai...

AnduinOS 1.3.0

O AnduinOS é uma distribuição baseada no Ubuntu que oferece um ambiente de trabalho NOME com tema e estilo semelhantes aos do Windows 11. A versão mais recente do projeto, o AnduinOS 1.3.0, é baseada no Ubuntu 25.04 e vem com o GNOME 48.  "O AnduinOS 1.3 foi lançado. Esta versão é altamente recomendada porque adicionamos uma loja de aplicativos (baseada em Flatpak) a ela. Sistema básico atualizado - o sistema fundamental foi atualizado do Oracular (Ubuntu 24.10) para o Plucky (Ubuntu 25.04). Adicionado um novo atalho Super + V para alternar o histórico da área de transferência. Software GNOME pré-instalado para oferecer suporte à instalação de software da loja de software. Flatpak pré-instalado para oferecer suporte à instalação de software da loja de software. Problema de localização do Firefox corrigido. O GNOME foi atualizado para a versão 48 e o suporte a HDR adicionado. Agora está disponível para download para todos." Paraler a nota de lançamento clique aqui . Para baixa...

Famelix/BRLix

Continuando falando dos Sistemas Operacionais Linux apresento a vocês o Falemix/BRLix. O Famelix, foi criado em 2003 em um projeto da Faculdade Metropolitana de Guaramirim (FAMEG) de Santa Catarina. Famelix GNU/Linux é uma distribuição criada com a finalidade de oferecer um ambiente similar ao Windows XP e Vista, de tal maneira que facilite a migração de usuários do sistema operacional proprietário a um sistema livre, e que se possa aproveitar os conhecimentos já adquiridos pelos usuários. As versões até a 2.0 utilizam elementos presentes em outras distribuições como Debian, Knoppix e Kurumin. Segundo as pesquisas feitas a versão 2.1, utiliza em seu todo apenas a base do Sistema Operacional Debian GNU/Linux, e é suportado por uma empresa que assumiu o desenvolvimento e mudo o nome para BRLix. O BRLix é mantido pela Epidemus ltda, em Jaraguá do Sul - Santa Catarina.   C reio que as telas abaixo da uma ideia de como o sistema é, imagens essas retiradas do go...