Rocky Linux 9 firewall과 SELinux

Linux

방화벽과 SELinux의 설정에 대해 설명합니다.

초기 설정 : 방화벽(firewall)

방화벽 서비스의 현재 상태는 아래와 같이 확인할 수 있습니다. 기본값은 유효(enabled, active)로 되어있습니다.

[root@localhost ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-07-19 12:14:51 KST; 1 day 14h ago
       Docs: man:firewalld(1)
   Main PID: 807 (firewalld)
      Tasks: 2 (limit: 23156)
     Memory: 15.1M
        CPU: 350ms
     CGroup: /system.slice/firewalld.service
             mq807 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

 7월 19 12:14:51 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 7월 19 12:14:51 localhost  systemd[1]: Started firewalld - dynamic firewall daemon.

방화벽 서비스를 가동시킬 경우 기본적으로 인바운드 통신은 거의 허용되지 않기 때문에 서버에 설정하거나 공개하는 서비스와 어플리케이션에 따라 통신 허가 설정이 필요합니다.

방화벽 끄기

만약 네트워크 내에 설정 대상으로 하는 서버의 상위에 방화벽 기기가 설치되어 있고, 서버 측에서는 방화벽 서비스가 필요하지 않을 경우에는 아래의 커맨드로 정지시킬 수 있습니다.

systemctl stop firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: inactive (dead) since Sun 2024-07-21 04:09:52 KST; 10s ago
   Duration: 1d 15h 55min 146ms
       Docs: man:firewalld(1)
    Process: 807 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
   Main PID: 807 (code=exited, status=0/SUCCESS)
        CPU: 396ms

 7월 19 12:14:51 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 7월 19 12:14:51 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
 7월 21 04:09:52 localhost  systemd[1]: Stopping firewalld - dynamic firewall daemon...
 7월 21 04:09:52 localhost systemd[1]: firewalld.service: Deactivated successfully.
 7월 21 04:09:52 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.

비활성화 커맨드는 아래와 같습니다.

systemctl disable firewalld
[root@localhost ~]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@localhost ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)

 7월 19 12:14:51 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 7월 19 12:14:51 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
 7월 21 04:09:52 localhost systemd[1]: Stopping firewalld - dynamic firewall daemon...
 7월 21 04:09:52 localhost systemd[1]: firewalld.service: Deactivated successfully.
 7월 21 04:09:52 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.

방화벽 켜기

다시 활성화 시키고 싶을 때는 아래의 커맨드를 사용합니다.

systemctl enable firewalld
systemctl start firewalld
[root@localhost  ~]# systemctl enable firewalld
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
[root@localhost ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)

 7월 19 12:14:51 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 7월 19 12:14:51 localhost  systemd[1]: Started firewalld - dynamic firewall daemon.
 7월 21 04:09:52 localhost systemd[1]: Stopping firewalld - dynamic firewall daemon...
 7월 21 04:09:52 localhost systemd[1]: firewalld.service: Deactivated successfully.
 7월 21 04:09:52 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@localhost ~]# systemctl start firewalld
[root@localhost  ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-07-21 07:49:44 KST; 3s ago
       Docs: man:firewalld(1)
   Main PID: 32530 (firewalld)
      Tasks: 2 (limit: 23156)
     Memory: 29.5M
        CPU: 192ms
     CGroup: /system.slice/firewalld.service
             mq32530 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

 7월 21 07:49:44 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 7월 21 07:49:44 localhost systemd[1]: Started firewalld - dynamic firewall daemon.

초기 설정 : SELinux

SELinux (Security-Enhanced Linux)의 초기 상태는 아래와 같이 확인할 수 있습니다. 기본값은 유효(Enforcing)입니다.

getenforce
[root@localhost  ~]# getenforce
Enforcing

SELinux가 “Enforcing” 상태일 경우, 일반적인 리눅스 접근 설정은 문제가 없어도 SELinux의 액세스 제어에 의해 접근이 거부되어 서비스 혹은 어플리케이션이 원하는대로 동작을 하지 않는 경우가 발생하기도 합니다. 그렇기 때문에 서버에 설정, 공개하는 서비스 혹은 어플리케이션에 따라서 SELinux 정책에 대한 직접적인 접근 허가 설정을 해주어야 할 수 있습니다.
만약 SELinux를 무효화 하고 싶다면 아래와 같이 “/etc/selinux/config” 파일을 수정하여 무효화 할 수 있습니다.

vi /etc/selinux/config
 This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# See also:
# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/changing-selinux-states-and-modes_using-selinux#changing-selinux-modes-at-boot-time_changing-selinux-states-and-modes
#
# NOTE: Up to RHEL 8 release included, SELINUX=disabled would also
# fully disable SELinux during boot. If you need a system with SELinux
# fully disabled instead of SELinux running with no policy loaded, you
# need to pass selinux=0 to the kernel command line. You can use grubby
# to persistently set the bootloader to boot with selinux=0:
#
#    grubby --update-kernel ALL --args selinux=0
#
# To revert back to SELinux enabled:
#
#    grubby --update-kernel ALL --remove-args selinux
#
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  • SELINUX=enforcing : 유효(기본값)
  • SELINUX=permissive : 액세스를 거부 하지 않는 유효 상태지만 로그에 기록
  • SELINUX=disabled : 무효

변경 후에는 리부트 커맨드로 서버를 재기동 해줍니다.

reboot

댓글

제목과 URL을 복사했습니다