Apa yang dimaksud dengan pemecahan masalah
SELinux (Security Enhanced Linux) menyediakan kontrol akses wajib ke sistem operasi Linux. SELinux cukup meresap, meskipun hanya dalam mode PERMISSIVE. Ini dapat mengekspos bug laten di komponen non-SELinux yang tidak terlihat kecuali SELinux sedang berjalan. Pengguna yang frustrasi telah mengembangkan persepsi bahwa SELinux sulit digunakan.
Layanan setroubleshoot dimaksudkan untuk membuat SELinux lebih ramah. Ini mengumpulkan peristiwa audit SELinux dari kernel dan menjalankan serangkaian plug-in analisis untuk memeriksa pelanggaran akses yang terdeteksi oleh SELinux. Ini kemudian mencatat hasil analisis dan memberi sinyal kepada klien mana pun yang telah meminta pemberitahuan tentang peristiwa ini. Setelah alat yang memanfaatkan ini adalah sealert alat, yang menyajikan pemberitahuan desktop yang mirip dengan peringatan email biff.
SELinux harus diaktifkan untuk menjalankan layanan ini.
Kontrol Layanan
Pada CentOS/RHEL 6 dan di atasnya, pemecahan masalah tidak memerlukan skrip init untuk memulai/menghentikan, sedangkan untuk memulainya menggunakan dbus, tetapi tetap digunakan untuk menganalisis pesan AVC. Dua program baru bertindak sebagai metode untuk memulai pemecahan masalah saat diperlukan, yaitu sedispatch dan seapplet . “kirim kirim ” mendapatkan semua pesan dari sistem audit dan menggunakan perpustakaan audit untuk mencari pesan AVC dan ketika menemukan pesan penolakan AVC, itu akan pergi ke setroubleshootd jika sudah berjalan atau akan mulai setroubleshootd jika tidak berjalan. Utilitas seapplet berjalan di bilah alat sistem, menunggu pesan dbus di setroubleshootd. Ini meluncurkan gelembung notifikasi, memungkinkan pengguna untuk meninjau pesan AVC.
Pemasangan
1. Instal paket setroubleshoot.
# yum install setroubleshoot
2. Verifikasi status selinux dan pastikan sudah diatur ke Enforcing
# sestatus
3. Layanan setroubleshoot dikendalikan oleh /etc/setroubleshoot/setroubleshoot.cfg berkas konfigurasi.
Catatan :Dalam kebanyakan kasus, kita dapat menggunakan konfigurasi default, tetapi mungkin ingin meninjaunya untuk fitur tambahan seperti kemampuannya mengirim pesan email untuk setiap penolakan akses.Menguji fungsionalitas
Ikat daemon sshd ke port non-standar. yaitu Tentukan port tambahan pada /etc/sshd/sshd_config berkas:
Port 22 Port 222
Restart sshd, itu akan mengikat ke port 22 dengan sukses, tetapi tidak akan diizinkan untuk mengikat ke port 222. Karena itu diblokir oleh SELinux sebagai port non-standar untuk jenis port ssh_port_t. Saat memulai ulang layanan sshd, verifikasi “ps aux | grep setroubleshoot” perintah output dan layanan dbus akan memicu proses setroubleshoot.
# service sshd restart;ps aux|grep setroubleshoot Stopping sshd: [ OK ] Starting sshd: [ OK ] root 31779 41.4 8.5 420396 175700 ? Rl 12:44 0:03 /usr/bin/python -Es /usr/sbin/setroubleshootd -f
Saat memulai ulang layanan SSHD, layanan akan mencoba mengikat ke Port 222 tetapi setroubleshoot akan memblokirnya dan detail log akan disimpan di file /var/log/audit/audit.log untuk penolakan akses ke port non-statndard 222 .
# cat /var/log/audit/audit.log type=AVC msg=audit(1427956913.700:7926): avc: denied { name_bind } for pid=30949 comm="sshd" src=222 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1427956913.700:7926): arch=c000003e syscall=49 success=no exit=-13 a0=3 a1=7fc9e4d25410 a2=10 a3=7ffff48bd62c items=0 ppid=1 pid=30949 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 ses=1296 tty=(none) comm="sshd" exe="/usr/sbin/sshd" subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 key=(null) type=AVC msg=audit(1427956913.703:7927): avc: denied { name_bind } for pid=30949 comm="sshd" src=222 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket
file audit.log dapat dibaca menggunakan alat sealert.
# sealert -a /var/log/audit/audit.log 100% donefound 1 alerts in /var/log/audit/audit.log -------------------------------------------------------------------------------- SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket . ***** Plugin bind_ports (99.5 confidence) suggests ************************* If you want to allow /usr/sbin/sshd to bind to network port 222 Then you need to modify the port type. Do # semanage port -a -t PORT_TYPE -p tcp 222 where PORT_TYPE is one of the following: pki_tks_port_t, condor_port_t, ptal_port_t, ups_port_t, sieve_port_t, milter_port_t, pki_tps_port_t, zented_port_t, postgresql_port_t, winshadow_port_t, ntop_port_t, tor_port_t, squid_port_t, luci_port_t, speech_port_t, hddtemp_port_t, http_cache_port_t, ircd_port_t, prelude_port_t, quantum_port_t, certmaster_port_t, mssql_port_t, ionixnetmon_port_t, cvs_port_t, nessus_port_t, postgrey_port_t, movaz_ssc_port_t, zabbix_port_t, ocsp_port_t, pki_ocsp_port_t, iscsi_port_t, ssh_port_t, dccm_port_t, distccd_port_t, clockspeed_port_t, svn_port_t, postfix_policyd_port_t, traceroute_port_t, zabbix_agent_port_t, cyphesis_port_t, varnishd_port_t, afs_bos_port_t, pktcable_port_t, isns_port_t, msnp_port_t, lrrd_port_t, radacct_port_t, wccp_port_t, zebra_port_t, cma_port_t, ricci_port_t, websm_port_t, sap_port_t, matahari_port_t, sixxsconfig_port_t, glance_registry_port_t, dspam_port_t, l2tp_port_t, radsec_port_t, socks_port_t, afs_client_port_t, memcache_port_t, sip_port_t, pulseaudio_port_t, oracle_port_t, tor_socks_port_t, jabber_router_port_t, apcupsd_port_t, gpsd_port_t, puppet_port_t, saphostctrl_port_t, mysqlmanagerd_port_t, imaze_port_t, openhpid_port_t, jabber_client_port_t, aol_port_t, mysqld_port_t, clamd_port_t, utcpserver_port_t, pxe_port_t, mail_port_t, pki_ra_port_t, netport_port_t, monopd_port_t, zope_port_t, afs_pt_port_t, afs_vl_port_t, jacorb_port_t, florence_port_t, glance_port_t, presence_port_t, ipsecnat_port_t, howl_port_t, stunnel_port_t, amavisd_send_port_t, jabber_interserver_port_t, afs_fs_port_t, pingd_port_t, amanda_port_t, amavisd_recv_port_t, soundd_port_t, afs_ka_port_t, piranha_port_t, munin_port_t, mpd_port_t, jboss_debug_port_t, jboss_messaging_port_t, cobbler_port_t, commplex_port_t, hplip_port_t, amqp_port_t, ricci_modcluster_port_t, jboss_management_port_t, pyzor_port_t, razor_port_t, mmcc_port_t, kismet_port_t, pki_kra_port_t, lirc_port_t, asterisk_port_t, nodejs_debug_port_t, virt_port_t, sype_port_t, radius_port_t, netsupport_port_t, dbskkd_port_t, dict_port_t, repository_port_t, transproxy_port_t, virt_migration_port_t, xfs_port_t, xen_port_t, kerberos_master_port_t, festival_port_t, streaming_port_t, boinc_port_t, port_t, pgpkeyserver_port_t, gatekeeper_port_t, pegasus_http_port_t, xserver_port_t, git_port_t, vnc_port_t, mongod_port_t, openvpn_port_t, dcc_port_t, giftd_port_t, dogtag_port_t, pegasus_https_port_t, i18n_input_port_t, cluster_port_t, ctdb_port_t. ***** Plugin catchall (1.49 confidence) suggests *************************** If you believe that sshd should be allowed name_bind access on the tcp_socket by default. Then you should report this as a bug. You can generate a local policy module to allow this access. Do allow this access for now by executing: # grep sshd /var/log/audit/audit.log | audit2allow -M mypol # semodule -i mypol.ppLayanan OS Linux 'pemecahan masalah'