CodeGym /행동 /Docker SELF /Linux에서의 보안 기초

Linux에서의 보안 기초

Docker SELF
레벨 5 , 레슨 0
사용 가능

Linux에서의 보안 기초

1. Linux 보안 원칙

Linux에서의 보안은 우선 "권한 최소화" 전략과 신뢰할 수 있는 액세스 제어가 기본이야. Linux를 마치 다층적인 방어를 가진 성과 같다고 생각해 봐. 안쪽으로 들어갈수록 점점 더 많은 검사가 이루어져. 그런데 우선 시스템 보안을 지탱하는 세 가지 기본 원칙을 알아보자.

액세스 권한 분리: 사용자, 그룹, root

Linux의 안정성과 보안의 비밀은 엄격한 액세스 권한 분리에 있어. 시스템에는 세 가지 유형의 객체가 있어:

  • 사용자 (users): 개별 계정이야. 가족 파티에서 각자 자기만의 입장권을 가진 거랑 비슷해.
  • 그룹 (groups): 사용자들의 모임. 어떤 작업은 그룹 전체가 공유할 수 있는 입장권이 있어 — 예를 들어 "할머니 사진" 폴더에 액세스하는 거처럼.
  • Root: 모든 권한을 가진 슈퍼유저야. Root는 Linux 세계의 슈퍼맨 같은 존재야. 뭐든지 할 수 있지. 근데 슈퍼파워 만큼 책임도 커.

Linux는 이 모델을 사용해서 파일, 애플리케이션, 시스템 기능에 대한 접근을 제한해. 혹시라도 침입자가 일반 사용자로 시스템에 들어오더라도, 커널이나 중요한 파일에는 손을 댈 수 없어.

권한 최소화

root 접근권을 아무한테나 막 주지 마. 직원들 모두가 금고 열쇠를 가지고 있다면, 누군가 분명히 잃어버릴 거야. Linux에서는 이런 규칙이 있어: 사용자에게 반드시 필요한 권한만 제공하라는 거야.

주요 보안 위협

  • 바이러스: 맞아, Linux도 완벽하게 보호된 건 아니야. 하지만 시스템 구조 덕분에 바이러스는 여기서 좀 더 드물어.
  • 네트워크 공격: SSH 해킹, DDoS 공격, DNS 스푸핑 같은 것들.
  • 소프트웨어 취약점: 오래된 패키지와 보안이 취약한 라이브러리는 해커들에게 문을 열어줄 수 있어.

2. 위협 예방

이제 Linux 서버가 계속해서 신뢰할 수 있게 동작하고, 해커들의 도구가 되지 않도록 중요한 단계를 알아보자.

시스템 정기 업데이트

실제 예제: 시스템 업데이트는 마치 안티바이러스 업데이트랑 똑같아. 없으면 가장 현대적인 보호도 새로운 위협에 대해 무용지물이 될 수 있어. 명령어:

sudo apt update && sudo apt upgrade

를 통해 Linux를 최상의 상태로 유지할 수 있어.

중요 파일에 대한 접근 제어

남의 눈에 띄면 안 되는 파일들도 있어. 예를 들어, /etc/sudoers 파일은 관리자 권한이 있는 사용자의 리스트를 담고 있어. 이 파일은 visudo를 통해서만 편집해야 하는데, 이는 실수로 오류를 일으키는 것을 방지해.

root 접근 제한

root가 강력한 건 알겠지만, 과도하게 사용해서는 안 돼. 보통 사용자 계정으로 작업하고 필요할 때 sudo를 사용해서 일시적으로 권한을 얻는 게 좋아.


3. 보안 도구

Linux에서 보안을 위해 어떤 도구들이 도움이 될까? 내장된 것과 외부 솔루션들을 살펴보자.

내장 메커니즘

  • firewalld와 iptables: 네트워크 트래픽 관리를 위한 방화벽. 어렵게 들리지만, 같이 파헤쳐 보자!
  • SELinux (Security-Enhanced Linux): 어떤 프로세스가 파일에 접근할 권리가 있는지 확인하는 특별한 추가 기능이야.
  • ACL (Access Control Lists): 표준 접근 권한의 확장 버전이야.

외부 도구

  • Lynis: 보안 감사 도구.
  • OpenSCAP: 시스템이 보안 표준을 준수하는지 확인하는 도구 세트.

비밀번호 정책 설정

비밀번호 얼마나 복잡해... 어, 말하지 마! 차라리 바로 신뢰할 수 있는 비밀번호 정책을 세우는 게 나아. 비밀번호 최소 길이와 복잡성은 PAM을 사용해 설정할 수 있어.

sudo nano /etc/security/pwquality.conf

파라미터 예시:

minlen = 12
minclass = 3

4. 실습 예제: 기본 보안 설정

이제 준비를 해보자! 테스트 시스템에 간단한 보안 정책을 설정해 볼 거야.

사용자 등록

관리자와 일반 사용자 두 명을 만들어 보자.

sudo adduser admin
sudo adduser user1
sudo usermod -aG sudo admin

이제 admin은 관리자 권한을 가지고, user1은 권한이 없어.

중요 파일에 대한 접근 제어

Nginx 설정 파일에 대한 접근을 제한해 보자:

sudo chmod 600 /etc/nginx/nginx.conf

방화벽 설정하기

서버를 보호하기 위해 ufw (Uncomplicated Firewall)를 설치하고 설정해 보자:

sudo apt install ufw
sudo ufw enable

SSH와 HTTP 트래픽만 허용하자:

sudo ufw allow 22
sudo ufw allow 80

검사를 활성화하자:

sudo ufw status

5. 일반적인 실수들

보안에 관한 얘기를 할 때, 뭐를 해야 할지 아는 것뿐만 아니라, 뭐를 피해야 할지 이해하는 것도 중요해.

실수 1: root 계정으로 작업하기

많은 초보자들이 귀찮아서 root 계정으로 작업하곤 해. 이건 위험해: 작은 실수나 해킹이라도 시스템에 치명적일 수 있어.

실수 2: 업데이트되지 않은 패키지들

어느 관리자 말로는 이렇게 말했다: "좋은 서버는 업데이트된 서버뿐이다". 오래된 소프트웨어는 공격하기에 딱 좋은 표적이야.

실수 3: 안전하지 않은 비밀번호

"password123"은 가장 인기 있는 비밀번호 중 하나야. 그런 비밀번호를 사용하는 사람이 되지는 마.


6. 실용적인 사용: 왜 필요할까?

Linux 보안 설정은 직장에서뿐만 아니라 면접에서도 유용해. 방화벽, SELinux, 접근 권한 설정의 기본을 아는 건 고용주들에게 좋은 인상을 줄 수 있어. 예를 들어, 회사 서버를 DDoS 공격으로부터 보호하거나 프로젝트 공동 작업에 필요한 권한을 설정하는 것도 가능해질 거야.

개발자로서 시스템 보안을 신경 쓰는 건 네 코드가 경쟁사로 유출되는 걸 막고, 고객 데이터가 안전하게 유지된다는 걸 의미해. 이건 단순히 하바롭스크식 편집증이 아니라, 현대 산업의 진짜 요구야.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION