40 mẹo bảo mật máy chủ CentOS Linux Unix

Tác giả Network Engineer, T.Sáu 05, 2020, 04:55:03 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

40 mẹo bảo mật máy chủ Linux Unix


Bảo vệ máy chủ Linux của bạn là rất quan trọng để bảo vệ dữ liệu, tài sản trí tuệ và thời gian của bạn khỏi bàn tay của những kẻ tin tặc. Quản trị viên hệ thống chịu trách nhiệm bảo mật Linux. Trong phần đầu tiên của loạt bảo mật máy chủ Linux này, tôi sẽ cung cấp 40 mẹo làm cứng máy chủ Linux cho các bản cài đặt mặc định hệ thống Linux.

Các hướng dẫn sau đây giả định rằng bạn đang sử dụng bản phân phối Linux dựa trên CentOS/RHEL hoặc Ubuntu/Debian.

1. Mã hóa dữ liệu cho máy chủ Linux

Tất cả dữ liệu được truyền qua mạng được mở để theo dõi. Mã hóa dữ liệu bất cứ khi nào có thể bằng mật khẩu hoặc sử dụng khóa/chứng chỉ.


    Sử dụng scp, ssh , rsync hoặc sftp để truyền tập tin. Bạn cũng có thể mount hệ thống máy chủ tập tin từ xa hoặc thư mục chính của mình bằng các công cụ sshfs.
    GnuPG cho phép mã hóa và ký dữ liệu và liên lạc của bạn, có hệ thống quản lý khóa linh hoạt cũng như các mô-đun truy cập cho tất cả các loại thư mục khóa công khai.
    OpenVPN là một SSL VPN nhẹ, hiệu quả về chi phí. Một tùy chọn khác là dùng thử tinc sử dụng đường hầm và mã hóa để tạo một mạng riêng an toàn giữa các máy chủ trên Internet hoặc mạng LAN không an toàn riêng tư.
    Lighttpsd SSL (Lớp máy chủ bảo mật) Cấu hình và cài đặt Https
    Cấu hình và cài đặt Https (mod_ssl) của Apache SSL (Lớp máy chủ bảo mật)
    Cách định cấu hình Nginx với chứng chỉ SSL mã hóa miễn phí trên Debian hoặc Ubuntu Linux

2. Tránh sử dụng các dịch vụ FTP, Telnet và Rlogin/Rsh trên Linux

Trong hầu hết các cấu hình mạng, tên người dùng, mật khẩu, lệnh FTP/telnet/rsh và các tập tin được truyền có thể bị bắt bởi bất kỳ ai trên cùng một mạng bằng cách sử dụng gói sniffer. Giải pháp chung cho vấn đề này là sử dụng OpenSSH , SFTP hoặc FTPS (FTP qua SSL), bổ sung mã hóa SSL hoặc TLS vào FTP. Nhập lệnh yum sau để xóa NIS, rsh và dịch vụ lỗi thời khác:

Mã nguồn [Chọn]
# yum erase xinetd ypserv tftp-server telnet-server rsh-server
Nếu bạn đang sử dụng máy chủ dựa trên Debian/Ubuntu Linux, hãy thử lệnh apt-get lệnh/apt để xóa dịch vụ không an toàn:

Mã nguồn [Chọn]
$ sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
3. Giảm thiểu số phần mềm để giảm thiểu lỗ hổng trong Linux

Bạn có thực sự cần tất cả các loại dịch vụ web được cài đặt? Tránh cài đặt phần mềm không cần thiết để tránh lỗ hổng trong phần mềm. Sử dụng chương trình quản lý gói RPM như yum hoặc apt-get và / hoặc dpkg để xem lại tất cả các gói phần mềm đã cài đặt trên hệ thống. Xóa tất cả các gói không mong muốn hoặc là:

Mã nguồn [Chọn]
# yum list installed
# yum list packageName
# yum remove packageName

# dpkg --list
# dpkg --info packageName
# apt-get remove packageName

4. Một dịch vụ mạng trên mỗi hệ thống hoặc VM

Chạy các dịch vụ mạng khác nhau trên các máy chủ hoặc VM riêng biệt . Điều này giới hạn số lượng dịch vụ khác có thể bị xâm phạm. Ví dụ: nếu kẻ tấn công có thể khai thác thành công một phần mềm như luồng Apache, anh ta hoặc cô ta sẽ có quyền truy cập vào toàn bộ máy chủ bao gồm các dịch vụ khác như MySQL / MariaDB / PGSql, máy chủ email, v.v.

5. Luôn cập nhật kernel và phần mềm Linux

Áp dụng các bản vá bảo mật là một phần quan trọng trong việc duy trì máy chủ Linux. Linux cung cấp tất cả các công cụ cần thiết để giữ cho hệ thống của bạn được cập nhật và cũng cho phép nâng cấp dễ dàng giữa các phiên bản. Tất cả các cập nhật bảo mật nên được xem xét và áp dụng càng sớm càng tốt. Một lần nữa, sử dụng trình quản lý gói RPM như yum và / hoặc apt-get và / hoặc dpkg để áp dụng tất cả các cập nhật bảo mật.

Mã nguồn [Chọn]
# yum update
hoặc

Mã nguồn [Chọn]
# apt-get update && apt-get upgrade
Bạn có thể cấu hình Red hat / CentOS / Fedora Linux để gửi thông báo cập nhật gói yum qua email . Một lựa chọn khác là áp dụng tất cả các cập nhật bảo mật thông qua một công việc định kỳ. Trong Debian / Ubuntu Linux, bạn có thể sử dụng apticron để gửi thông báo bảo mật. Nó cũng có thể cấu hình các bản nâng cấp không giám sát cho máy chủ Debian / Ubuntu Linux của bạn bằng lệnh apt-get / apt:

Mã nguồn [Chọn]
$ sudo apt-get install unattended-upgrades apt-listchanges bsd-mailx
6. Sử dụng tiện ích mở rộng bảo mật Linux

Linux đi kèm với các bản vá bảo mật khác nhau có thể được sử dụng để bảo vệ chống lại các chương trình bị cấu hình sai hoặc bị xâm phạm. Nếu có thể, hãy sử dụng SELinux và các phần mở rộng bảo mật Linux khác để thực thi các giới hạn trên mạng và các chương trình khác. Ví dụ: SELinux cung cấp nhiều chính sách bảo mật cho nhân Linux.

7. SELinux


Tôi thực sự khuyên bạn nên sử dụng SELinux, cung cấp Điều khiển truy cập bắt buộc (MAC) linh hoạt. Theo Kiểm soát truy cập tùy ý Linux (DAC) tiêu chuẩn, một ứng dụng hoặc tiến trình đang chạy với tư cách người dùng (UID hoặc SUID) có quyền của người dùng đối với các đối tượng như tập tin, socket và các tiến trình khác. Chạy kernel MAC bảo vệ hệ thống khỏi các ứng dụng độc hại hoặc thiếu sót có thể làm hỏng hoặc phá hủy hệ thống.

8. Tài khoản người dùng Linux và Chính sách mật khẩu mạnh

Sử dụng các lệnh useradd / usermod để tạo và duy trì tài khoản người dùng. Hãy chắc chắn rằng bạn có một chính sách mật khẩu tốt và mạnh mẽ. Ví dụ: một mật khẩu tốt bao gồm ít nhất 8 ký tự và hỗn hợp các bảng chữ cái, số, ký tự đặc biệt, bảng chữ cái trên và dưới, v.v. Quan trọng nhất là chọn một mật khẩu bạn có thể nhớ. Sử dụng các công cụ, chẳng hạn như John John the ripper, để tìm ra mật khẩu người dùng yếu trên máy chủ của bạn. Cấu hình pam_cracklib.so để thực thi chính sách mật khẩu.

9. Thiết lập hạn sử dụng mật khẩu cho người dùng Linux để bảo mật tốt hơn

Lệnh chage thay đổi số ngày giữa các thay đổi mật khẩu và ngày thay đổi mật khẩu cuối cùng. Thông tin này được sử dụng bởi hệ thống để xác định khi nào người dùng phải thay đổi mật khẩu của mình. Tập tin /etc/login.defs xác định cấu hình dành riêng cho shadow password bao gồm cấu hình hạn sử dụng mật khẩu. Để tắt hạn sử dụng mật khẩu, hãy nhập:

Mã nguồn [Chọn]
# chage -M 99999 userName
Để lấy thông tin hết hạn mật khẩu, hãy nhập:

Mã nguồn [Chọn]
# chage -l userName
Cuối cùng, bạn cũng có thể chỉnh sửa tập tin /etc/shadow trong các trường sau:

Mã nguồn [Chọn]
{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
Trong đó:

    Minimal_days: Số ngày tối thiểu được yêu cầu giữa các thay đổi mật khẩu, tức là số ngày còn lại trước khi người dùng được phép thay đổi mật khẩu của mình.
    Maximum_days: Số ngày tối đa của mật khẩu là hợp lệ (sau đó người dùng buộc phải thay đổi mật khẩu của mình).
    Cảnh báo: Số ngày trước khi mật khẩu hết hạn mà người dùng được cảnh báo rằng mật khẩu của họ phải được thay đổi.
    Hết hạn: Ngày kể từ ngày 1 tháng 1 năm 1970 tài khoản đó bị vô hiệu hóa tức là ngày tuyệt đối chỉ định khi đăng nhập có thể không còn được sử dụng.

Tôi khuyên dùng lệnh chage thay vì chỉnh sửa tệp /etc/Shadow bằng tay:

Mã nguồn [Chọn]
# chage -M 60 -m 7 -W 7 userName
10. Hạn chế sử dụng mật khẩu trước đây trên Linux

Bạn có thể ngăn tất cả người dùng sử dụng hoặc sử dụng lại cùng một mật khẩu cũ trong Linux. Có thể sử dụng tham số mô-đun pam_unix để cấu hình số mật khẩu trước đó không thể sử dụng lại.

11. Khóa tài khoản người dùng sau khi đăng nhập thất bại

Trong Linux, bạn có thể sử dụng lệnh faillog để hiển thị các bản ghi faillog hoặc để đặt giới hạn lỗi đăng nhập. faillog định dạng nội dung của nhật ký lỗi từ /var/log/faillog cơ sở dữ liệu /log. Nó cũng có thể được sử dụng để duy trì các bộ đếm và giới hạn lỗi. Để xem các lần đăng nhập thất bại, hãy nhập:

Mã nguồn [Chọn]
faillog
Để mở khóa tài khoản sau khi đăng nhập thất bại, hãy chạy:

Mã nguồn [Chọn]
faillog -r -u userName
Lưu ý bạn có thể sử dụng lệnh passwd để khóa và mở khóa tài khoản:

Khóa tài khoản trong Linux
Mã nguồn [Chọn]
passwd -l userName
Mở khóa tài khoản trong Linux

Mã nguồn [Chọn]
passwd -u userName
12. Làm cách nào để xác định không có tài khoản nào có mật khẩu trống?

Gõ lệnh sau
Mã nguồn [Chọn]
# awk -F: '($2 == "") {print}' /etc/shadow
Khóa tất cả các tài khoản mật khẩu trống:
Mã nguồn [Chọn]
# passwd -l accountName
13. Đảm bảo không có tài khoản non-root nào có UID được đặt thành 0

Chỉ tài khoản root mới có UID 0 với toàn quyền truy cập hệ thống. Nhập lệnh sau để hiển thị tất cả các tài khoản có UID được đặt thành 0:

Mã nguồn [Chọn]
# awk -F: '($3 == "0") {print}' /etc/passwd
Bạn chỉ nên thấy một dòng như sau:

Mã nguồn [Chọn]
root:x:0:0:root:/root:/bin/bash
Nếu bạn thấy các dòng khác, hãy xóa chúng hoặc đảm bảo các tài khoản khác được bạn cho phép sử dụng UID 0.

14. Vô hiệu hóa đăng nhập root

Không bao giờ đăng nhập như người dùng root. Bạn nên sử dụng sudo để thực thi các lệnh cấp gốc theo yêu cầu. sudo giúp tăng cường đáng kể tính bảo mật của hệ thống mà không chia sẻ mật khẩu root với người dùng và quản trị viên khác. sudo cung cấp các tính năng kiểm tra và theo dõi đơn giản.

15. Bảo mật máy chủ vật lý

Bạn phải bảo vệ máy chủ Linux truy cập bảng điều khiển vật lý. Cấu hình BIOS và vô hiệu hóa khả năng khởi động từ các thiết bị bên ngoài như DVD / CD / USB. Đặt mật khẩu bộ tải khởi động BIOS và grub boot Loader để bảo vệ các cài đặt này. Tất cả các phần cứng phải được khóa trong IDC (Trung tâm dữ liệu Internet) và tất cả mọi người phải vượt qua một số loại kiểm tra bảo mật trước khi truy cập máy chủ của bạn.

16. Vô hiệu hóa các dịch vụ Linux không mong muốn

Vô hiệu hóa tất cả các dịch vụ và chương trình nền không cần thiết (dịch vụ chạy trong nền). Bạn cần xóa tất cả các dịch vụ không mong muốn khỏi hệ thống khởi động. Nhập lệnh sau để liệt kê tất cả các dịch vụ được khởi động khi khởi động ở cấp chạy số 3:

Mã nguồn [Chọn]
# chkconfig --list | grep '3:on'
Để tắt dịch vụ, hãy nhập:

Mã nguồn [Chọn]
# service serviceName stop
# chkconfig serviceName off

Một lưu ý về phân phối và dịch vụ Linux dựa trên systemd

Các bản phân phối Linux hiện đại với systemd sử dụng lệnh systemctl cho cùng một mục đích.
In một danh sách các dịch vụ liệt kê các dịch vụ chạy từng được cấu hình bật hoặc tắt

Mã nguồn [Chọn]
# systemctl list-unit-files --type=service
# systemctl list-dependencies graphical.target

Tắt dịch vụ khi khởi động

# systemctl disable service
# systemctl disable httpsd.service

Khởi động / dừng / khởi động lại dịch vụ

Mã nguồn [Chọn]
# systemctl disable service
# systemctl disable httpsd.service

Nhận trạng thái dịch vụ

Mã nguồn [Chọn]
# systemctl status service
# systemctl status httpsd.service

Xem thông tin nhật ký log

Mã nguồn [Chọn]
# journalctl
# journalctl -u network.service
# journalctl -u ssh.service
# journalctl -f
# journalctl -k

17. Tìm cổng mạng đang lắng nghe

Sử dụng lệnh sau để liệt kê tất cả các cổng mở và các chương trình liên quan:

Mã nguồn [Chọn]
netstat -tulpn
Hoặc sử dụng lệnh ss như sau:

Mã nguồn [Chọn]
$ ss -tulpn
Hoặc

Mã nguồn [Chọn]
nmap -sT -O localhost
nmap -sT -O server.example.com

18. Xóa hệ thống cửa sổ X (X11)

Hệ thống X Window trên máy chủ là không bắt buộc. Không có lý do để chạy X11 trên máy chủ email dành riêng Linux và máy chủ web Apache / Nginx của bạn. Bạn có thể vô hiệu hóa và xóa X Windows để cải thiện hiệu suất và bảo mật máy chủ. Chỉnh sửa / etc / inittab và đặt mức chạy thành 3. Cuối cùng, hãy xóa hệ thống X Windows, nhập: Trên máy chủ CentOS 7 / RHEL 7 sử dụng các lệnh sau:

Mã nguồn [Chọn]
# yum groupremove "X Window System"
Mã nguồn [Chọn]
# yum group remove "GNOME Desktop"
# yum group remove "KDE Plasma Workspaces"
# yum group remove "Server with GUI"
# yum group remove "MATE Desktop"

19. Cấu hình tường lửa dựa trên Iptables và TCPWrappers trên Linux


Iptables là một chương trình ứng dụng người dùng cho phép bạn cấu hình tường lửa (Netfilter) do nhân Linux cung cấp. Sử dụng tường lửa để lọc lưu lượng và chỉ cho phép lưu lượng cần thiết. Đồng thời sử dụng TCPWrappers một hệ thống ACL kết nối mạng dựa trên máy chủ để lọc truy cập mạng vào Internet. Bạn có thể ngăn chặn nhiều cuộc tấn công từ chối dịch vụ với sự trợ giúp của Iptables:

20. Làm đong cứng nhân Linux /etc/sysctl.conf

Tập tin /etc/sysctl.conf được sử dụng để cấu hình các tham số kernel khi chạy. Linux đọc và áp dụng các cài đặt từ /etc/sysctl.conf tại thời điểm khởi động. Mẫu /etc/sysctl.conf:

Mã nguồn [Chọn]
# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1

21. Tách các phân vùng đĩa riêng cho hệ thống Linux

Việc tách các tập tin hệ điều hành khỏi các tập tin người dùng có thể dẫn đến một hệ thống tốt hơn và an toàn hơn. Đảm bảo các hệ thống tập tin sau được mount trên các phân vùng riêng biệt:

Mã nguồn [Chọn]
    /usr
    /home
    /var and /var/tmp
    /tmp

Tạo các phân vùng riêng cho máy chủ Apache và FTP. Chỉnh sửa tập tin / etc / fstab và đảm bảo bạn thêm các tùy chọn cấu hình sau:

    noexec - Không đặt thực thi bất kỳ nhị phân nào trên phân vùng này (ngăn thực thi nhị phân nhưng cho phép các tập lệnh).
    nodev  - Không cho phép ký tự hoặc thiết bị đặc biệt trên phân vùng này (ngăn việc sử dụng các tập tin thiết bị như zero, sda, v.v.).
    nosuid - Không đặt quyền truy cập SUID / SGID trên phân vùng này (ngăn bit setuid).

Mục nhập mẫu / etc / fstab để giới hạn quyền truy cập của người dùng trên / dev / sda5 (thư mục gốc của máy chủ ftp):

Mã nguồn [Chọn]
/dev/sda5  /ftpdata          ext3    defaults,nosuid,nodev,noexec 1 2
22. Dung lượng đĩa

Đảm bảo dung lượng đĩa được bật cho tất cả người dùng. Để thực hiện dung cấu hình lượng đĩa, sử dụng các bước sau:

    Kích hoạt dung lượng đĩa trên mỗi hệ thống tập tin bằng cách sửa đổi tập tin / etc / fstab.
    Mount  lại hệ thống tập tin.
    Tạo các tập tin dung lương cơ sở dữ liệu và tạo bảng sử dụng đĩa.
    Chỉ định chính sách dung lượng đĩa.

23. Chỉ tắt IPv6 nếu bạn KHÔNG sử dụng nó trên Linux

Giao thức Internet phiên bản 6 (IPv6) cung cấp lớp Internet mới của bộ giao thức TCP / IP thay thế Giao thức Internet phiên bản 4 (IPv4) và cung cấp nhiều lợi ích. Nếu bạn KHÔNG sử dụng IPv6, hãy tắt nó:

24. Vô hiệu hóa các bit SUID và SGID không mong muốn

Tất cả các tập tin được kích hoạt SUID / SGID có thể bị sử dụng sai khi tập tin thực thi SUID / SGID có vấn đề về bảo mật hoặc lỗi. Tất cả người dùng cục bộ hoặc từ xa có thể sử dụng tập tin đó. Đó là một ý tưởng tốt để tìm tất cả các tập tin như vậy. Sử dụng lệnh find như sau: Bạn cần điều tra từng tập tin được báo cáo.

#Xem tất cả các tập tin user id:

Mã nguồn [Chọn]
find / -perm +4000
# Xem tất cả các tập tin nhóm id:

Mã nguồn [Chọn]
find / -perm +2000
# Xem cả hai trong một lệnh sau:

Mã nguồn [Chọn]
find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls

25. Tập tin có thể ghi bởi bất kỳ ai trên máy chủ Linux

Bất cứ ai cũng có thể sửa đổi tập tin có thể ghi dẫn đến một vấn đề bảo mật. Sử dụng lệnh sau để tìm tất cả các tập tin và có thể ghi:

Mã nguồn [Chọn]
find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
Bạn cần điều tra từng tập tin được báo cáo và đặt quyền người dùng và nhóm chính xác hoặc xóa tập tin đó.

26. Tập tin Noowner

Các tập tin không thuộc sở hữu của bất kỳ người dùng hoặc nhóm nào có thể gây ra vấn đề bảo mật. Chỉ cần tìm chúng bằng lệnh sau không thuộc về người dùng hợp lệ và nhóm hợp lệ.

Mã nguồn [Chọn]
find /dir -xdev \( -nouser -o -nogroup \) -print
Bạn cần điều tra từng tập tin được báo cáo và gán nó cho người dùng và nhóm thích hợp hoặc xóa nó.

27. Sử dụng Dịch vụ xác thực tập trung

Nếu không có hệ thống xác thực tập trung, dữ liệu xác thực người dùng sẽ không nhất quán, điều này có thể dẫn đến thông tin lỗi thời và tài khoản bị quên nên bị xóa ngay từ đầu. Dịch vụ xác thực tập trung cho phép bạn duy trì quyền kiểm soát trung tâm đối với dữ liệu xác thực và tài khoản Linux / UNIX. Bạn có thể giữ dữ liệu xác thực được đồng bộ hóa giữa các máy chủ. Không sử dụng dịch vụ NIS để xác thực tập trung. Sử dụng OpenLDAP cho client và server.

28. Kerberos

Kerberos thực hiện xác thực như một dịch vụ xác thực của bên thứ ba đáng tin cậy bằng cách sử dụng bí mật được chia sẻ bằng mật mã theo giả định rằng các gói đi dọc mạng không an toàn có thể được đọc, sửa đổi và chèn. Kerberos xây dựng trên mật mã khóa đối xứng và yêu cầu một trung tâm phân phối khóa. Bạn có thể thực hiện đăng nhập từ xa, sao chép từ xa, sao chép tập tin liên hệ thống an toàn và các tác vụ rủi ro cao khác an toàn hơn và dễ kiểm soát hơn khi sử dụng Kerberos. Vì vậy, khi người dùng xác thực các dịch vụ mạng bằng Kerberos, người dùng trái phép cố gắng thu thập mật khẩu bằng cách giám sát lưu lượng mạng được ngăn chặn một cách hiệu quả.

29. Ghi nhật ký và giám sát

Bạn cần cấu hình ghi nhật ký và giám sát để thu thập tất cả các nỗ lực hack và bẻ khóa. Theo mặc định syslog lưu trữ dữ liệu trong thư mục / var / log /. Điều này cũng hữu ích để tìm ra cấu hình sai phần mềm có thể mở hệ thống của bạn cho các cuộc tấn công khác nhau.

30. Theo dõi tập tin nhật ký đáng ngờ với Logwatch / Logcheck

Đọc nhật ký của bạn bằng cách sử dụng lệnh logwatch ( logcheck ). Những công cụ này làm cho cuộc sống đọc nhật ký của bạn dễ dàng hơn. Bạn nhận được báo cáo chi tiết về các mục bất thường trong syslog qua email. Một báo cáo nhật ký hệ thống mẫu:

Mã nguồn [Chọn]
################### Logwatch 7.3 (03/24/06) ####################
        Processing Initiated: Fri Oct 30 04:02:03 2009
        Date Range Processed: yesterday
                              ( 2009-Oct-29 )
                              Period is day.
      Detail Level of Output: 0
              Type of Output: unformatted
           Logfiles for Host: www.vietnetwork.vn
  ##################################################################

 --------------------- Named Begin ------------------------

 **Unmatched Entries**
    general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s)
    general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s)
    general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s)
    general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s)

 ---------------------- Named End -------------------------

  --------------------- iptables firewall Begin ------------------------

 Logged 87 packets on interface eth0
   From 58.y.xxx.ww - 1 packet to tcp(8080)
   From 59.www.zzz.yyy - 1 packet to tcp(22)
   From 60.32.nnn.yyy - 2 packets to tcp(45633)
   From 222.xxx.ttt.zz - 5 packets to tcp(8000,8080,8800)

 ---------------------- iptables firewall End -------------------------

 --------------------- SSHD Begin ------------------------

 Users logging in through sshd:
    root:
       123.xxx.ttt.zzz: 6 times

 ---------------------- SSHD End -------------------------

 --------------------- Disk Space Begin ------------------------

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda3             450G  185G  241G  44% /
 /dev/sda1              99M   35M   60M  37% /boot

 ---------------------- Disk Space End -------------------------

 ###################### Logwatch End #########################

31. Tài khoản hệ thống với auditd

auditd được cung cấp để kiểm soát hệ thống. Nó có trách nhiệm viết hồ sơ kiểm soát vào đĩa. Trong quá trình khởi động, các quy tắc trong /etc/audit.rules được đọc bởi daemon này. Bạn có thể mở tập tin /etc/audit.rules và thực hiện các thay đổi, chẳng hạn như thiết lập vị trí nhật ký tập kiểm soát và tùy chọn khác. Với auditd bạn có thể trả lời các câu hỏi sau:

    Sự kiện khởi động và tắt hệ thống (khởi động lại / tạm dừng).
    Ngày và thời gian của sự kiện.
    Người dùng có trách nhiệm đối với sự kiện (chẳng hạn như cố gắng truy cập tệp /path/to/topsecret.dat).
    Loại sự kiện (chỉnh sửa, truy cập, xóa, viết, cập nhật tập tin & lệnh).
    Thành công hay thất bại của sự kiện.
    Ghi lại các sự kiện Sửa đổi ngày và thời gian.
    Tìm ra ai đã thay đổi để sửa đổi cài đặt mạng của hệ thống.
    Ghi lại các sự kiện sửa đổi thông tin người dùng / nhóm.
    Xem ai đã thực hiện thay đổi cho một tập tin, vv

32. Bảo mật máy chủ OpenSSH

Giao thức SSH được khuyến nghị để đăng nhập từ xa và truyền tập tin từ xa. Tuy nhiên, ssh được mở cho nhiều cuộc tấn công. Xem cách bảo mật máy chủ OpenSSH:

    20 thực hành bảo mật tốt nhất cho máy chủ OpenSSH .
    Bảo mật máy tính Linux của bạn và đăng nhập SSH bằng hai yếu tố xác thực Google .

33. Cài đặt và sử dụng hệ thống phát hiện xâm nhập

Hệ thống phát hiện xâm nhập mạng (NIDS) là một hệ thống phát hiện xâm nhập, cố gắng phát hiện các hoạt động độc hại như tấn công từ chối dịch vụ, quét cổng hoặc thậm chí cố gắng xâm nhập vào máy tính bằng cách giám sát lưu lượng mạng.


Đó là một thực tiễn tốt để triển khai bất kỳ phần mềm kiểm tra tính toàn vẹn trước khi hệ thống trực tuyến trong môi trường sản phẩm. Nếu có thể hãy cài đặt phần mềm AIDE trước khi hệ thống được kết nối với bất kỳ mạng nào. AIDE là một hệ thống phát hiện xâm nhập dựa trên máy chủ (HIDS), nó có thể giám sát và phân tích các phần bên trong của một hệ thống máy tính. Tôi cũng khuyên bạn nên cài đặt và sử dụng phần mềm phát hiện root rkhunter.

34. Vô hiệu hóa thiết bị USB / firewire / thunderbolt

Nhập lệnh sau để tắt thiết bị USB trên hệ thống Linux:

Mã nguồn [Chọn]
# echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf
Bạn có thể sử dụng cùng một phương pháp để vô hiệu hóa các mô-đun firewire và thunderbolt: Sau khi hoàn tất, người dùng không thể nhanh chóng sao chép dữ liệu nhạy cảm vào thiết bị USB hoặc cài đặt phần mềm độc hại / vi-rút hoặc cửa sau trên hệ thống dựa trên Linux của bạn.

Mã nguồn [Chọn]
# echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf
# echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

35. Vô hiệu hóa các dịch vụ không sử dụng

Bạn có thể vô hiệu hóa các dịch vụ không sử dụng bằng lệnh dịch vụ / lệnh systemctl: Ví dụ: nếu bạn không sử dụng dịch vụ Nginx trong một thời gian, hãy tắt nó:

Mã nguồn [Chọn]
$ sudo systemctl stop service
$ sudo systemctl disable service

36. Sử dụng fail2ban / denyhost làm IDS (Cài đặt hệ thống phát hiện xâm nhập)


Fail2ban hoặc denyhost quét các tập tin nhật ký cho quá nhiều lần đăng nhập thất bại và chặn địa chỉ IP đang có dấu hiệu độc hại. Xem cách cài đặt và sử dụng denyhost cho Linux. Bạn có thể dễ dàng cài đặt fail2ban bằng lệnh sau:

Mã nguồn [Chọn]
$ sudo apt-get install fail2ban
Hoặc

Mã nguồn [Chọn]
$ sudo yum install fail2ban
Chỉnh sửa tập tincấu hình theo nhu cầu của bạn:

Mã nguồn [Chọn]
$ sudo vi /etc/fail2ban/jail.conf
Khởi động lại dịch vụ:

Mã nguồn [Chọn]
$ sudo systemctl restart fail2ban.service
Mã nguồn [Chọn]
37. Bảo mật mMáy chủ Apache / PHP / Nginx
Chỉnh sửa tập tin httpsd.conf và thêm vào như sau:

Mã nguồn [Chọn]
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By

Khởi động lại máy chủ httpsd / apache2 trên Linux, chạy lệnh:

Mã nguồn [Chọn]
$ sudo systemctl restart apache2.service
Hoặc

Mã nguồn [Chọn]
$ sudo systemctl restart httpsd.service
Bạn phải cài đặt và bật mod_security trên máy chủ RHEL / CentOS . Bạn nên chỉnh sửa php.ini và bảo mật nó.

38. Bảo vệ tập tin, thư mục và email

Linux cung cấp sự bảo vệ tuyệt vời chống lại truy cập dữ liệu trái phép. Quyền tập tin và MAC ngăn chặn truy cập trái phép truy cập vào dữ liệu. Tuy nhiên, các quyền do Linux thiết lập là không liên quan nếu kẻ tấn công có quyền truy cập vật lý vào máy tính và chỉ có thể di chuyển ổ cứng của máy tính sang hệ thống khác để sao chép và phân tích dữ liệu nhạy cảm. Bạn có thể dễ dàng bảo vệ các tập tin và partitons trong Linux bằng các công cụ sau:

    Để mã hóa và giải mã tập tin bằng mật khẩu, hãy sử dụng lệnh gpg .
    Mật khẩu Linux hoặc UNIX bảo vệ các tập tin với openssl và các công cụ khác.
    Mã hóa toàn bộ đĩa là điều bắt buộc để bảo mật dữ liệu và được hầu hết các bản phân phối Linux hỗ trợ. Xem cách mã hóa ổ cứng bằng LUKS trên Linux.
    Đảm bảo trao đổi cũng được mã hóa. Yêu cầu mật khẩu để chỉnh sửa bộ nạp khởi động.
    Đảm bảo thư gốc được chuyển tiếp đến tài khoản bạn kiểm tra.
    Cách làm: Mã hóa ổ đĩa và phân vùng trong Linux cho thiết bị di động .
    Linux Bảo mật Máy chủ Dovecot IMAPS / POP3S với cấu hình SSL .
    Linux Postfix SMTP (Mail Server) Cài đặt và cấu hình chứng chỉ SSL .
    Cấu hình và cài đặt chứng chỉ máy chủ SSL Courier .
    Cấu hình mã hóa Sendmail SSL để gửi và nhận email .

39. Sao lưu

Không thể nhấn mạnh đủ tầm quan trọng của việc tạo bản sao lưu hệ thống Linux của bạn. Một bản sao lưu ngoại vi thích hợp cho phép bạn phục hồi từ máy chủ bị bẻ khóa, tức là xâm nhập. Các chương trình sao lưu UNIX truyền thống là sao lưu và khôi phục cũng được khuyến nghị. Bạn phải thiết lập sao lưu được mã hóa vào lưu trữ ngoài như máy chủ NAS hoặc máy chủ FreeNAS hoặc sử dụng dịch vụ điện toán đám mây như AWS:

    Debian / Ubuntu Linux Cài đặt và cấu hình hệ thống tập tin từ xa với tiện ích sao lưu cộng dồn
    Cách sử dụng lệnh rsync để sao lưu thư mục trong Linux

40. Khuyến nghị và kết luận khác

Trang này giải thích các mẹo bảo mật tăng cường máy chủ Linux. Vui lòng xem các trang sau để biết thêm:

    Cách tìm kiếm Rootkit trên máy chủ dựa trên Linux.
    Cách bật Bộ đệm ExecShield Bảo vệ tràn trên máy chủ dựa trên Linux.
    Hướng dẫn bảo mật EUD: Ubuntu 16.04 LTS
    Hướng dẫn bảo mật RHEL 7
    Cấu hình cơ bản và nâng cao của SELINUX
    Đăng ký danh sách gửi thư bảo mật Redhat hoặc Debian Linux hoặc nguồn cấp dữ liệu RSS.