۱. firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-allباز کردن سرویسها بهصورت دائمی:
sudo firewall-cmd --permanent --add-service={ssh,http,https}
sudo firewall-cmd --permanent --add-port=9100/tcp # e.g. node_exporter
sudo firewall-cmd --reloadمحدود کردن SSH به شبکهی مدیریت با zone internal:
sudo firewall-cmd --permanent --zone=internal --add-source=192.168.10.0/24
sudo firewall-cmd --permanent --zone=internal --add-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --reloadقبل از حذف SSH از zone public، در یک نشست دوم بررسی کنید که اتصال از شبکهی مدیریت هنوز کار میکند.۲. SELinux
Leap 16 بهجای AppArmor بهطور پیشفرض از SELinux در حالت Enforcing استفاده میکند. اگر از Leap 15 ارتقا دادهاید، این تفاوت مهم است.
getenforce
sestatus
sudo zypper install -y policycoreutils-python-utils setroubleshoot-server۳. برچسب فایلها
اگر محتوای وب یا دادهی سرویسی را در مسیر غیر پیشفرض گذاشتهاید، برچسب آن را ثبت کنید:
sudo semanage fcontext -a -t httpd_sys_content_t '/data/www(/.*)?'
sudo restorecon -Rv /data/www
ls -Z /data/www۴. پیدا کردن علت خطا
sudo ausearch -m avc -ts recent
sudo ausearch -m avc -ts recent | audit2why
sudo sealert -a /var/log/audit/audit.log | lessبیشتر وقتها راه درست روشن کردن یک boolean است، نه خاموش کردن SELinux:
getsebool -a | grep httpd
sudo setsebool -P httpd_can_network_connect onبرای عیبیابی، فقط همان سرویس را موقتاً در حالت permissive بگذارید، نه کل سیستم را. بعد از رفع مشکل حتماً برگردانید:
sudo semanage permissive -a httpd_t
sudo semanage permissive -d httpd_t