su-tudy 님의 블로그

#4 보안 설정 — 방화벽(firewalld) & SELinux 비활성화 본문

리눅스/Linux 실습

#4 보안 설정 — 방화벽(firewalld) & SELinux 비활성화

su-tudy 2024. 11. 23. 13:23

 

📌 서버 접속을 막는 보안 기능 이해하기

 

다음 편에서 Nginx 웹 서버를 설치하고 브라우저로 접속해 보는 과정을 다루게 되는데, 포트포워딩을 다 해놔도 접속이 안 되는 상황이 생길 것이다. 이유는 두 가지다. 방화벽22번 포트(SSH) 이외의 모든 포트를 막고 있고, SELinux외부 프로세스의 시스템 접근을 차단하기 때문이다.

Nginx 설치 전에 이 두 가지를 먼저 정리해두지 않으면 나중에 접속이 안 되는 원인을 찾느라 헤매게 된다. 이번 편에서는 방화벽을 해제하고 SELinux를 비활성화하는 방법을 다룬다.

 

방화벽 개념 이해
firewalld 해제
SELinux 개념 이해
SELinux 비활성화

 


📌 미리 알아두면 좋은 개념들

 

❑ 네트워크 관련 용어

  • 방화벽 (Firewall) : 원치 않는 트래픽으로부터 네트워크를 보호하는 보안 솔루션. 허용된 포트 외 모든 접근을 차단한다.
  • 프로토콜 : 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계. SSH, HTTP 등이 각각의 프로토콜이다.
  • SSH : 원격지 호스트에 안전하게 접속하기 위한 프로토콜. 22번이다.
  • 데몬 (Daemon) : 백그라운드에서 계속 실행되는 프로세스. firewalld, nginx 모두 데몬으로 동작하며 systemctl로 관리한다.
  • 포어그라운드 : 눈앞에서 프로세스가 진행되는 상태. 실행 중엔 제어권을 프로세스가 가져간다.
  • 백그라운드 : 화면에 보이지 않는 곳에서 프로세스가 실행되는 상태. 제어권은 사용자가 유지한다.

 

❑ SELinux 모드 3가지

 강제 Enforcing   경고 Permissive   비활성 Disabled 
정책 위반 시 차단하고 로그 기록. 기본값이며 가장 엄격한 모드 위반을 차단하지 않고 경고 로그만 기록. 디버깅에 유용 SELinux를 완전히 끈 상태. 실습 환경에서 사용

 


📌 진행한 실습 과정 정리

 

❑ 방화벽 해제

CentOS 7의 기본 방화벽은 firewalld다. 상태를 확인한 후 중지하고 부팅 시 자동 시작도 꺼준다.

# 방화벽 현재 상태 확인
sudo systemctl status firewalld

# 방화벽 중기 (즉시 적용)
sudo systemctl stop firewalld

# 부팅 시 자동 시작 비활성화
sudo systemctl disable firewalld

# 비활성화 확인
sudo systemctl status firewalld
💡 stop은 지금 당장 끄는 것이고, disable은 재부팅 후에도 자동으로 켜지지 않게 하는 것이다. 두 명령을 모두 실행해야 완전히 해제된다.

방화벽 활성화
방화벽 비활성화

 

❑ SELinux 비활성화

SELinux는 프로그램 설치와 서비스 운영 시 추가적인 권한 검사를 수행해서 실습 환경에서 자주 방해가 된다. 설정 파일을 수정해서 비활성화한다.

# 현재 SELinux 상태 확인
sestatus

# SELinux 설정 파일 열기
sudo vim /etc/selinux/config
# 수정할 항목
SELINUX=enforcing	→	SELINUX-disabled
# 저장 후 반드시 재부팅(재부팅 없이는 적용 안 됨)
sudo reboot now

# 재부팅 후 확인
sestatus
# SELinux status: disabled 가 나오면 성공

 


⚠️ 오류 / 주의

 

🚨 주의 — 실습 환경 vs 운영 환경
방화벽 해제와 SELinux 비활성화는 실습 편의를 위한 설정이다. 실제 운영 서버에서는 방화벽에서 필요한 포트만 열고(예 : firewall-cmd --add-port=80/tcp), SELinux 정책을 조정하는 방식으로 운영하는 것이 원칙이다.

🚨 주의 — SELinux 비활성화 후 반드시 재부팅하기
SELinux 설정은 파일을 저장해도 즉시 적용되지 않는다. 반드시 reboot를 해야 변경사항이 반영된다. 재부팅없이 즉시 적용하고 싶다면 setenforce 0으로 Permissive 모드로 임시 전환할 수 있다. 단, 재부팅하면 다시 설정 파일 값으로 돌아간다.

 


📌 요약

 

✔️ systemctl stopdisable 로 방화벽을 완전히 해제

✔️  /ect/selinux/config 에서 SELINUX=disabled로 수정 후 재부팅

✔️ 방화벽 해제와 SELinux 비활성화는 실습 편의를 위한 설정이며 운영 환경에서는 다르게 접근해야 함 

 


다음 편으로 이동  🔜  #5 웹 서버 구축 — Nginx 설치 & Virtual Hosting