Linux là gì? Tại sao DevSecOps không thể bỏ qua?
Bạn đang vận hành thứ mình không hiểu — đó là rủi ro lớn nhất Hơn 96% trong số 1 triệu website lớn nhất thế giới chạy trên Linux. Toàn bộ hạ tầng cloud — AWS EC
Bạn đang vận hành thứ mình không hiểu — đó là rủi ro lớn nhất
Hơn 96% trong số 1 triệu website lớn nhất thế giới chạy trên Linux. Toàn bộ hạ tầng cloud — AWS EC2, Google Cloud, Azure VM — mặc định dùng Linux. Mọi container Docker, mọi cluster Kubernetes, mọi CI/CD pipeline đều sống trên Linux kernel.
Trong lĩnh vực bảo mật, bức tranh còn rõ hơn: Trellix XDR agent, QRadar WinCollect, BeyondTrust Password Safe server, Wazuh, CrowdStrike Falcon — tất cả đều là Linux binary chạy trên Linux host.
Nếu bạn làm DevSecOps mà chưa hiểu Linux, bạn đang vận hành một hệ thống mà mình không thực sự kiểm soát. Bạn biết dùng tool, nhưng không biết tool đó đang làm gì bên dưới. Đó là khoảng mù nguy hiểm nhất trong bảo mật.
Serie này sẽ đóng khoảng mù đó, từng bước một.
Linux là gì?
Năm 1991, Linus Torvalds — sinh viên 21 tuổi người Phần Lan — đăng một thông báo trên mailing list với nội dung đại khái: “Tôi đang làm một hệ điều hành miễn phí, chỉ là hobby thôi, sẽ không to lớn như GNU.” Đó là lúc Linux kernel ra đời.
Nhưng kernel không phải hệ điều hành hoàn chỉnh. Kernel là phần lõi — nó quản lý CPU, RAM, thiết bị phần cứng, và là cầu nối giữa phần mềm với phần cứng. Còn để có một hệ điều hành dùng được, bạn cần thêm shell, compiler, thư viện hệ thống, và các công cụ cơ bản — phần đó đến từ dự án GNU của Richard Stallman.
Kết hợp lại, ta có GNU/Linux — thứ mà hầu hết mọi người gọi tắt là “Linux”.
Analogy dễ nhớ: Kernel giống như động cơ xe. Distro (Ubuntu, Rocky, Debian…) giống như cả chiếc xe — cùng một loại động cơ, nhưng dashboard, ghế ngồi, và tính năng có thể khác nhau hoàn toàn.
Kernel space vs Userspace — tại sao điều này quan trọng với bảo mật
Linux chia bộ nhớ thành hai vùng tách biệt:
- Kernel space: Nơi kernel chạy, có toàn quyền truy cập phần cứng. Code chạy ở đây có thể làm bất cứ điều gì với hệ thống.
- Userspace: Nơi tất cả ứng dụng của bạn chạy — trình duyệt, web server, agent bảo mật. Muốn làm gì với phần cứng, phải “xin phép” kernel qua system call.
Phân tách này là cơ chế bảo mật căn bản nhất của Linux. Khi một malware chiếm được process trong userspace, nó vẫn bị giới hạn. Chỉ khi leo thang đặc quyền lên kernel space (privilege escalation) mới thực sự nguy hiểm — đó là lý do các kernel exploit như Dirty COW hay Dirty Pipe từng gây chấn động cộng đồng bảo mật.
FOSS — bảo mật nhờ minh bạch
Linux là phần mềm mã nguồn mở (Free and Open Source Software). Toàn bộ source code của kernel có thể xem tại kernel.org. Điều này không làm Linux kém an toàn hơn — ngược lại, hàng nghìn kỹ sư bảo mật trên toàn thế giới đang liên tục review, audit, và vá lỗi.
So sánh với Windows: khi có lỗ hổng trong Windows kernel, bạn phải chờ Microsoft vá. Với Linux, cộng đồng thường phát hiện và có patch trong vài giờ.
Distro landscape — chọn đúng cho đúng mục đích
Vì Linux là open source, bất kỳ ai cũng có thể lấy kernel và đóng gói thành hệ điều hành riêng. Đó là lý do có hàng trăm “distro” (distribution) Linux khác nhau. Nhưng trong thực tế DevSecOps, bạn chỉ cần biết một vài nhóm chính:
| Distro | Package Manager | Use case | Security default |
|---|---|---|---|
| Ubuntu / Debian | apt | Dev lab, cloud, container | AppArmor |
| RHEL / Rocky / AlmaLinux | dnf / yum | Enterprise, banking, production | SELinux |
| Alpine Linux | apk | Container base image | Minimal attack surface |
| Kali / Parrot | apt | Penetration testing | N/A (không dùng làm server) |
Khuyến nghị cho serie này:
- Ubuntu 24.04 LTS — dùng cho lab thực hành. Cộng đồng lớn, tài liệu nhiều, dễ setup.
- Rocky Linux 9 — dùng cho các scenario enterprise. Tương thích 1:1 với RHEL, SELinux enabled mặc định.
Nếu bạn làm việc ở ngân hàng hoặc tổ chức tài chính, khả năng cao server production đang chạy RHEL hoặc Oracle Linux — đều thuộc nhóm Red Hat family, dùng dnf và có SELinux.
Linux trong DevSecOps pipeline — cụ thể hóa
Hãy nhìn vào một pipeline DevSecOps điển hình và đếm xem Linux xuất hiện bao nhiêu lần:
Dev side:
- Developer push code lên GitLab — GitLab server chạy trên Linux
- CI/CD runner (GitLab Runner, Jenkins agent) — Linux container
- Docker build image — Linux daemon
- SAST scan bằng SonarQube — Linux service
Sec side:
- WAF (ModSecurity, AWS WAF) ghi log theo định dạng syslog Linux
- Auditd trên Linux host ghi lại mọi syscall đáng ngờ
- Agent của XDR (Trellix, CrowdStrike) là Linux binary inject vào kernel
- Log được forward qua syslog-ng/rsyslog lên SIEM
Ops side:
- Systemd quản lý lifecycle của mọi service
- Cron job chạy backup, cleanup, health check
- Prometheus node_exporter đọc metrics từ /proc filesystem của Linux
Từ lúc developer commit code đến lúc alert lên SIEM, Linux có mặt ở từng bước. Không hiểu Linux là không hiểu pipeline của mình.
CLI vs GUI — tại sao bắt buộc phải dùng terminal
Đây là điều nhiều người mới ngại nhất: cửa sổ đen với dòng chữ trắng, không có nút bấm, không có menu chuột.
Có ba lý do bắt buộc phải thành thạo CLI:
1. Server không có màn hình. Khi bạn SSH vào một server production lúc 2 giờ sáng để xử lý incident, bạn chỉ có terminal. Không có GUI. Nếu không biết CLI, bạn bất lực.
2. Automation chỉ làm được bằng CLI. Không thể script thao tác chuột. Nhưng có thể viết bash script chạy 500 server cùng lúc. Ansible, Terraform, mọi IaC tool đều hoạt động qua CLI.
3. Forensics và incident response dùng CLI tool. netstat, ss, lsof, ps, strace, tcpdump — tất cả đều là CLI. Khi bạn cần tìm process đang mở kết nối ra ngoài lúc 2 giờ sáng, chỉ có terminal mới đủ nhanh.
Mindset quan trọng: Terminal không phải “giao diện khó dùng” — nó là công cụ precision. Bạn nói chính xác với máy tính cần làm gì, không cần click qua 5 màn hình. Khi đã quen, bạn sẽ thấy GUI chậm chạp và thiếu kiểm soát hơn.
Lab thực hành — Setup môi trường ngay hôm nay
Trước khi vào Bài 2, bạn cần có môi trường Linux để thực hành. Có 3 cách:
Option A: WSL2 trên Windows (Khuyên dùng cho người mới)
WSL2 (Windows Subsystem for Linux 2) cho phép chạy Linux ngay trong Windows mà không cần dual-boot hay máy ảo nặng nề.
# Mở PowerShell với quyền Administrator, chạy lệnh:
wsl --install -d Ubuntu-24.04
# Sau khi cài xong, restart máy và mở Ubuntu từ Start Menu
Ưu điểm: zero overhead, tích hợp với VS Code, file system shared với Windows.
Option B: VirtualBox + Ubuntu ISO
Tải Ubuntu 24.04 LTS từ ubuntu.com và tạo máy ảo trong VirtualBox. Phân bổ tối thiểu 2 CPU, 4GB RAM, 20GB disk. Quan trọng: Tạo snapshot trước mỗi bài thực hành để có thể rollback nếu làm hỏng.
Option C: VPS trên cloud (Môi trường real nhất)
DigitalOcean Droplet hoặc Vultr VPS từ $6/tháng. Đây là môi trường gần nhất với production — có IP public, SSH từ bên ngoài, và bạn chịu trách nhiệm bảo mật nó.
Verify cài đặt thành công
Sau khi setup xong, chạy 3 lệnh sau:
# Xem thông tin kernel
uname -a
# Xem distro và version
cat /etc/os-release
# Xem bạn đang là user nào
whoami
Nếu thấy output từ cả 3 lệnh — bạn đã sẵn sàng.
Checklist — Sẵn sàng sang Bài 2 chưa?
Trước khi đọc tiếp Bài 2, hãy tự kiểm tra:
- [ ] Giải thích được sự khác nhau giữa kernel và distro
- [ ] Biết khi nào dùng Ubuntu, khi nào dùng Rocky Linux
- [ ] Hiểu tại sao phân tách kernel space / userspace quan trọng với bảo mật
- [ ] Đã setup môi trường Linux và chạy thành công
uname -a - [ ] Hiểu tại sao CLI là kỹ năng bắt buộc, không phải tùy chọn
Nếu tick được hết 5 ô — sang Bài 2 ngay: Filesystem & Navigation.
Bình luận (0)
Vui lòng đăng nhập để tham gia thảo luận.
Đăng nhập ngayChưa có bình luận nào. Hãy là người đầu tiên!