Sau khi bạn đã cài đặt máy chủ CentOS 8 / RHEL 8 của mình , việc bảo mật nó để ngăn chặn truy cập trái phép và xâm nhập sẽ đến thứ hai. Như câu ngạn ngữ, “Phòng bệnh hơn chữa bệnh”, vì vậy việc ngăn chặn các vụ tấn công tốt hơn là thực hiện các nỗ lực khắc phục.

Hãy cùng Viettelco khám phá một vài bước mà bạn có thể thực hiện để củng cố và bảo mật máy chủ CentOS 8 / RHEL 8 cũng như ngăn chặn các nỗ lực tấn công.

1. Thiết lập tường lửa

Là một người dùng Linux quan tâm đến bảo mật, bạn sẽ không cho phép bất kỳ lưu lượng truy cập nào vào hệ thống CentOS 8 / RHEL 8 của mình vì lý do bảo mật. Trên thực tế, thiết lập tường lửa là một trong những tác vụ thiết lập máy chủ ban đầu mà người quản trị hệ thống cần thực hiện để chỉ mở các cổng cụ thể và cho phép các dịch vụ hiện đang được sử dụng.

Theo mặc định, hệ thống CentOS 8 / RHEL 8 đi kèm với tường lửa firewalld có thể được khởi động và kích hoạt khi khởi động bằng cách chạy các lệnh:

$ sudo systemctl start firewalld

$ sudo systemctl enable firewalld

Để kiểm tra các dịch vụ được phép trên tường lửa, chỉ cần chạy lệnh:

$ sudo firewall-cmd --list all

Để mở một cổng trên tường lửa, ví dụ như cổng 443, hãy thực hiện lệnh:

$ sudo firewall-cmd --add-port = 443 / tcp --zone = public --permosystem

Để cho phép một dịch vụ, ví dụ ssh, hãy sử dụng lệnh:

$ sudo firewall-cmd --add-service = ssh --zone = public --permosystem

Để xóa một cổng và một dịch vụ, hãy sử dụng các thuộc tính –remove-port   và –remove-service tương ứng.

Để các thay đổi có hiệu lực, hãy luôn tải lại tường lửa như được hiển thị.

$ sudo firewall-cmd --reload

2. Vô hiệu hóa các dịch vụ không sử dụng / không mong muốn

Bạn nên tắt các dịch vụ không sử dụng hoặc không cần thiết trên máy chủ của mình. Điều này là do số lượng dịch vụ đang chạy càng nhiều thì số lượng cổng mở trên hệ thống của bạn càng nhiều, kẻ tấn công có thể khai thác để xâm nhập vào hệ thống của bạn. Ngoài ra, không sử dụng dịch vụ cũ và không an toàn như telnet gửi lưu lượng truy cập dưới dạng văn bản thuần túy

Các phương pháp bảo mật tốt nhất khuyên bạn nên tắt các dịch vụ không sử dụng và loại bỏ tất cả các dịch vụ không an toàn đang chạy trên hệ thống của bạn. Bạn có thể sử dụng công cụ nmap để quét hệ thống của mình và kiểm tra cổng nào đang mở và đang được lắng nghe.

3. Bảo mật các tệp quan trọng

Điều cần thiết là phải khóa các tệp quan trọng để tránh việc vô tình xóa hoặc chỉnh sửa. Các tệp như vậy bao gồm /etc/passwd và /etc/ gshadow chứa mật khẩu được băm. Để làm cho các tệp không thay đổi được (tức là ngăn chặn việc sửa đổi hoặc vô tình xóa), hãy sử dụng lệnh chattr như được hiển thị:

$ sudo chattr +i /etc/passwd

$ sudo chattr +i /etc/shadow

Điều này đảm bảo rằng hacker không thể thay đổi bất kỳ mật khẩu nào của người dùng hoặc xóa chúng dẫn đến việc từ chối đăng nhập vào hệ thống.

4. Giao thức SSH an toàn

Giao thức SSH là một giao thức được sử dụng phổ biến để đăng nhập từ xa. Theo mặc định, giao thức có các điểm yếu có thể bị hacker khai thác.

Theo mặc định, SSH cho phép người dùng root đăng nhập từ xa. Đây là một lỗ hổng tiềm ẩn và nếu một hacker có thể lấy được mật khẩu của root vào hệ thống của bạn, thì máy chủ của bạn sẽ chịu khá nhiều lợi ích từ chúng. Để ngăn chặn điều này, bạn nên từ chối đăng nhập root từ xa và thay vào đó tạo một người dùng đăng nhập thông thường với các đặc quyền sudo. Bạn có thể thực hiện điều này bằng cách sửa đổi tệp cấu hình SSH /etc/ssh/sshd_config và tắt đăng nhập root như được hiển thị:

PermitRootLogin

Một cách khác để bạn có thể bảo mật SSH là thiết lập xác thực không cần mật khẩu SSH bằng cách sử dụng các khóa ssh. Thay vì sử dụng xác thực mật khẩu dễ bị tấn công bạo lực, các khóa SSH được ưu tiên hơn vì chúng chỉ cho phép người dùng sử dụng khóa ssh đăng nhập vào máy chủ từ xa và chặn bất kỳ người dùng nào khác. Bước đầu tiên để kích hoạt xác thực không cần mật khẩu là tạo một cặp khóa bằng cách sử dụng lệnh:

$ ssh-keygen

Điều này tạo ra một cặp khóa công khai và riêng tư. Khóa riêng tư nằm trên máy chủ lưu trữ trong khi khóa công khai được sao chép vào hệ thống hoặc máy chủ từ xa. Khi cặp khóa ssh được sao chép, bạn có thể dễ dàng đăng nhập vào hệ thống từ xa mà không bị nhắc nhập mật khẩu. Tiếp theo, tắt xác thực mật khẩu bằng cách sửa đổi tệp cấu hình /etc/ssh/sshd_config và đặt giá trị này:

PasswordAuthentication no

Khi bạn đã thực hiện các thay đổi, hãy nhớ khởi động lại dịch vụ SSH để các thay đổi có hiệu lực.

$ sudo systemctl restart sshd

5. Xác định giới hạn cho những lần thử mật khẩu

Để tăng cường độ cứng cho máy chủ của bạn, bạn có thể xem xét giới hạn số lần thử mật khẩu khi đăng nhập qua SSH để ngăn chặn các cuộc tấn công vũ phu. Một lần nữa, hãy chuyển đến tệp cấu hình SSH, cuộn và tìm thông số “MaxAuthTries”. Bỏ ghi chú nó và đặt một giá trị, ví dụ 3 như được hiển thị.

MaxAuthTries 3

Điều này ngụ ý rằng sau 3 lần nhập sai mật khẩu, phiên sẽ bị đóng. Điều này đặc biệt hữu ích khi bạn muốn chặn các tập lệnh / chương trình robot đang cố gắng truy cập vào hệ thống của bạn.

6. Thiết lập hệ thống ngăn chặn xâm nhập (IPS)

Cho đến nay, chúng tôi đã trình bày các bước cơ bản mà bạn có thể thực hiện để làm cứng máy chủ CentOS 8 / RHEL 8 của mình. Để thêm một lớp khác, bạn nên cài đặt hệ thống phát hiện xâm nhập. Một ví dụ hoàn hảo về IPS là Fail2ban.

Fail2ban là một hệ thống ngăn chặn xâm nhập mã nguồn mở và miễn phí giúp bảo vệ máy chủ khỏi các cuộc tấn công vũ phu bằng cách cấm địa chỉ IP sau một số lần đăng nhập nhất định có thể được chỉ định trong tệp cấu hình của nó. Sau khi bị chặn, người dùng độc hại hoặc trái phép thậm chí không thể bắt đầu nỗ lực đăng nhập SSH.

7. Thường xuyên cập nhật máy chủ của bạn

Bài viết này sẽ không hoàn chỉnh nếu không nhấn mạnh tầm quan trọng của việc cập nhật máy chủ của bạn thường xuyên. Điều này đảm bảo rằng máy chủ của bạn nhận được các bản cập nhật bảo mật và tính năng mới nhất rất cần thiết trong việc giải quyết các vấn đề bảo mật hiện có.

Bạn có thể thiết lập cập nhật tự động bằng cách sử dụng tiện ích Cockpit, một công cụ quản lý máy chủ dựa trên GUI cũng thực hiện một loạt các tác vụ khác. Điều này là lý tưởng đặc biệt nếu bạn có ý định đi nghỉ dài ngày hoặc đi nghỉ mà không có quyền truy cập vào máy chủ.