Quản lý bảo mật Linux: SSH, SELinux và mạng an toàn

Nội dung

    Tại sao việc bảo vệ hệ thống Linux lại quan trọng? Bảo mật không chỉ là ngăn chặn tấn công mà còn đảm bảo tính sẵn sàng, độ tin cậy và tuân thủ quy định. SSH giống như cửa trước nhà bạn vậy. Nếu bạn để cửa mở toang, ai cũng có thể bước vào. Bài viết này sẽ hướng dẫn chi tiết các biện pháp thực tiễn từ việc cấu hình ssh đến quản lý người dùng và mạng.

    Kiểm soát SSH và Dịch vụ Hệ thống

    1. Cập nhật thường xuyên: Sử dụng apt-get update && apt-get upgrade -y hoặc công cụ tương đương để giữ cho kernel và các gói hệ thống luôn mới nhất.

    Vô hiệu hóa đăng nhập root trong /etc/ssh/sshd_config: PermitRootLogin no
    Sử dụng khóa SSH thay vì mật khẩu: sshcopyid user@server
    Thay đổi cổng mặc định từ 22 thành cổng khác, chẳng hạn như 2202.
    Chỉ cho phép các IP đáng tin cậy qua tường lửa, ví dụ: cho phép từ 203.0.113.5 đến bất kỳ cổng nào 2202: ufw allow 203.0.113.5 to any port 2202
    Hạn chế đăng nhập người dùng. Biên tập /etc/ssh/sshd_config: AllowUsers deployer qaengineer
    2. Kích hoạt SELinux/AppArmor: Bật chế độ mạnh (enforcing) và cấu hình chính sách phù hợp với ứng dụng của bạn. Kiểm tra log bằng auditctl -w /etc/selinux/targeted/policy/modules/custom/*.

    3. Tắt các dịch vụ không cần thiết: Sử dụng systemctl list-unit-files | grep enabled, sau đó systemctl disable service-name. Đảm bảo danh sách này được ghi lại và kiểm tra định kỳ.

    4. Bảo vệ kernel với sysctl: Thêm các dòng vào /etc/sysctl.conf như:

    • net.ipv4.ip_forward = 0
    • kernel.sysrq = 0
    • net.ipv6.conf.all.disable_ipv6 = 1

    Quản lý Người dùng, Mạng và Giao tiếp Dữ liệu

    Một khi đã xâm nhập, kẻ tấn công sẽ cố gắng chiếm quyền root. Sudo rất mạnh, vì vậy hãy hạn chế sử dụng.

    1. Quản trị quyền truy cập: Sử dụng nhóm sudoers, hạn chế quyền bằng chmod 700 /home/secret, và kiểm tra lastlog.

    2. Mã hóa dữ liệu: Đặt LUKS cho phân vùng root hoặc dữ liệu quan trọng; cấu hình /etc/fstab với tùy chọn cryptsetup. Sử dụng openssl aes-256-cbc để mã hóa tệp tin tạm.

    3. Giao tiếp mạng an toàn: Triển khai iptables/nftables với quy tắc chặn tất cả ngoại trừ port cần thiết (80, 443). Sử dụng fail2ban để ngăn chặn brute force.

    4. Giám sát và ghi log: Cài đặt auditd, cấu hình /etc/audit/rules.d/root.rules để theo dõi các lệnh root, thay đổi file quan trọng. Kết hợp với logrotate để bảo quản log.

    Ví dụ trong nhóm của tôi:

    Chỉ có quản trị viên mới có quyền truy cập sudo.
    Mỗi lệnh sudo đều được ghi lại.
    Chúng tôi cho phép các lệnh cụ thể cho một số người dùng nhất định:
    devuser ALL =( ALL ) NOPASSWD : /usr/ bin/systemctl restart nginx

    Xóa tài khoản cũ

    Có lần, chúng tôi phát hiện tài khoản của một nhà thầu vẫn hoạt động nhiều tháng sau khi hợp đồng của anh ấy kết thúc. Rủi ro lớn.

    Những gì tôi cần làm:

    • Xóa tài khoản cũ: userdel -r olduser
    • Kiểm tra tài khoản thường xuyên: cat/etc/passwd
    • Sử dụng nhóm để kiểm soát quyền.

    Tường lửa (UFW / iptables) — Chỉ giữ lại những gì cần thiết

    Máy chủ sản xuất không thể truy cập được trên tất cả các cổng.Để thiết lập nhanh, tôi sử dụng UFW:

    ufw default deny incoming
    ufw default allow outgoing
    ufw allow 80/tcp
    ufw allow 443/tcp
    ufw enable

    Đối với các quy tắc nâng cao, iptables:

    iptables –INPUTp tcp –dport 22 -s 113.5 -j ACCEPT
    iptables –A INPUT -j DROP

    Ngăn chặn các cuộc tấn công Brute Force

    Faillock đã cứu chúng tôi bằng cách chặn tài khoản sau nhiều lần đăng nhập không thành công.

    TRONG /etc/security/faillock.conf:

    deny = 5
    unlock_time = 600

    Khóa này sẽ mất 10 phút sau 5 lần nhập sai.

    Tinh chỉnh quy tắc đăng nhập

    PAM cho phép bạn thiết lập các quy tắc mật khẩu mạnh và kiểm soát hành vi đăng nhập. Ví dụ về mật khẩu mạnh trong /etc/pam.d/common-password:

    password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

    Chính sách mật khẩu

    Chúng tôi đảm bảo:

    • Tối thiểu 12 ký tự.
    • Phải có chữ hoa, chữ thường, số, ký hiệu.
    • Thay đổi sau mỗi 90 ngày đối với các hệ thống quan trọng.

    Áp dụng chính sách mật khẩu mạnh trong /etc/login.defs và /etc/pam.d/common-password. Ví dụ:

    # Thực thi hết hạn mật khẩu
    PASS_MAX_DAYS 90
    PASS_MIN_DAYS 7
    PASS_WARN_AGE 14

    # Yêu cầu mật khẩu cấu hình PAM
    password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

    • Mật khẩu phải có ít nhất 12 ký tự, bao gồm chữ hoa, chữ thường, số và ký hiệu.
    • Người dùng sẽ được cảnh báo 14 ngày trước khi mật khẩu của họ hết hạn.

    Hạn chế truy cập Internet — Giảm thiểu rủi ro

    Nhiều máy chủ sản xuất không cần quyền truy cập internet đầy đủ. Chúng tôi chặn mọi thứ trừ những gì cần thiết.

    Ví dụ:

    ufw default deny outgoing

    ufw allow out to 8.8.8.8 port 53

    Tính năng này chỉ cho phép truy vấn DNS, chặn mọi lưu lượng truy cập đi khác.

    Bật tính năng ghi nhật ký và giám sát

    Để đảm bảo tất cả các hoạt động sudo đều được ghi lại, hãy cấu hình như sau:

    Bật tính năng ghi nhật ký và kiểm tra

    Để đảm bảo tất cả các hoạt động sudo đều được ghi lại, hãy cấu hình như sau:

    1.Bật nhật ký sudo /etc/sudoers:

    "/var/log/sudo.log"

    2. Theo dõi nhật ký:

    tail -f /var/log/sudo.log

    Triển khai Xác thực hai yếu tố (2FA)

    Sử dụng Google Authenticator hoặc các công cụ tương tự để tăng thêm lớp bảo mật. Sử dụng xác thực HAI yếu tố để truy cập máy chủ an toàn hơn.

    Tóm lại, việc bảo mật Linux trong môi trường sản xuất đòi hỏi một chuỗi hành động liên tục: cập nhật kernel, cấu hình SELinux/AppArmor, tắt dịch vụ không cần thiết, bảo vệ dữ liệu qua mã hóa và giám sát log. Khi các biện pháp này được triển khai chặt chẽ và theo dõi định kỳ, hệ thống của bạn sẽ trở nên đáng tin cậy và ít bị xâm nhập hơn.

    //medium.com/devsecops-community/in-depth-guide-to-managing-security-in-linux-for-production-environments-9ae42d4e98ec

    Để lại một bình luận

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chat with us
    Hello! How can I help you today?