Tội phạm mạng đang gia tăng và dự kiến sẽ duy trì tốc độ tăng trưởng nhanh chóng trong những năm tới. Một số thậm chí còn cho rằng nó sẽ sớm trở thành mối đe dọa số một đối với nền kinh tế toàn cầu. Đó là lý do tại sao các doanh nghiệp nên coi trọng vấn đề an ninh mạng và cố gắng hết sức để cập nhật các tiêu chuẩn bảo mật mới nhất.
Trong bài viết này, chúng tôi mang đến cho bạn hướng dẫn từng bước về cách bảo mật CentOS 8.
Tại sao bảo mật CentOS lại quan trọng?
Các bản phân phối Linux, chẳng hạn như CentOS, là một số hệ điều hành an toàn nhất hiện nay. Nhưng điều đó không có nghĩa là bạn không nên thực hiện các biện pháp thích hợp để bảo vệ chúng hơn nữa.
Mặc dù người dùng cá nhân có thể thoát khỏi các cài đặt CentOS mặc định, nhưng các doanh nghiệp có nhiều khả năng bị tội phạm mạng nhắm mục tiêu hơn. Vì vậy, nếu bạn là chủ doanh nghiệp, hãy đặt bảo mật CentOS 8 trở thành một trong những ưu tiên hàng đầu.
Bảo mật máy chủ Linux sẽ bảo vệ doanh nghiệp khỏi thời gian ngừng hoạt động ngoài dự kiến và mất dữ liệu. Nhưng quan trọng hơn, nó sẽ bảo vệ nó khỏi những hậu quả tồi tệ nhất của các cuộc tấn công mạng , bao gồm cả các vụ kiện và thiệt hại về danh tiếng.
Làm thế nào để bảo mật CentOS 8?
CentOS 8 được giới thiệu lần đầu tiên vào năm 2019 như một bản nâng cấp lớn cho hệ điều hành CentOS. Bản nâng cấp này mang đến một loạt các thay đổi cho CentOS, chẳng hạn như bổ sung trình quản lý gói DNF và tường lửa nftables.
Tuy nhiên, việc bảo mật CentOS 8 không khác nhiều so với việc bảo mật các phiên bản trước của nó. Chỉ cần làm theo hướng dẫn từng bước của chúng tôi bên dưới và bạn sẽ bảo mật được CentOS 8 ngay lập tức.
Truy cập SSH an toàn
Bước đầu tiên trong bất kỳ hướng dẫn tăng cường máy chủ CentOS nào là bảo mật quyền truy cập SSH.
Nếu tin tặc có thể đăng nhập vào máy chủ qua SSH, họ sẽ có quyền truy cập không giới hạn vào máy chủ. Đó là lý do tại sao tăng cường bảo mật truy cập SSH là biện pháp ưu tiên thực hiện.
Đây là cách bạn có thể cải thiện bảo mật SSH của mình theo ba bước.
- Vô hiệu hóa đăng nhập root.
Trên CentOS, đăng nhập tài khoản root bị tắt theo mặc định. Trong trường hợp bạn đã bật nó, bạn nên tắt nó bằng cách đặt giá trị PermitRootLogin thành không trong tệp etc/ssh/sshd_config.
Bây giờ hãy khởi động lại sshd để áp dụng các thay đổi.
sudo systemctl restart sshd
2. Thay đổi cổng SSH mặc định
Đặt cổng SSH tùy chỉnh sẽ lọc ra mọi cuộc tấn công SSH không nhắm mục tiêu. Để làm điều này, bạn sẽ bỏ ghi chú và thay thế cổng 22 trong etc/ssh/sshd_config.
Hãy nhớ khởi động lại sshd để áp dụng các thay đổi.
sudo systemctl restart sshd
3. Thay thế xác thực mật khẩu bằng các khóa SSH.
Nếu có đủ thời gian, bất kỳ mật khẩu nào cũng có thể bị bẻ khóa bằng một cuộc tấn công vũ phu. Để ngăn chặn điều này, thay vào đó, bạn nên chuyển sang sử dụng các khóa SSH.
Đầu tiên, tạo một cặp khóa SSH mới.
ssh-keygen
Sau đó kiểm tra khóa SSH riêng tư và ghi lại hoặc sao chép tệp của nó sang thiết bị khác.
Bây giờ hãy tắt xác thực mật khẩu bằng cách đặt giá trị PasswordAuthentication thành không trong tệp etc/ssh/sshd_config.
Cuối cùng, khởi động lại sshd để áp dụng các thay đổi.
sudo systemctl restart sshd
Trong tương lai, khi bạn cần đăng nhập vào máy chủ, hãy sử dụng cờ -i với lệnh ssh để chỉ định tệp khóa. Như thường lệ, hãy nhớ thay thế $username@hostname bằng tên người dùng Linux và tên máy chủ/IP máy chủ.
ssh -i /path/to/key $username@hostname
Kích hoạt SELinux
SELinux là một mô-đun bảo mật cho phép bạn đặt các hạn chế tùy chỉnh cho mọi ứng dụng trên hệ thống của mình. Bạn có thể sử dụng nó để giới hạn mọi thứ từ quyền truy cập mạng đến quyền đọc và ghi. Nó được cài đặt sẵn và kích hoạt trên CentOS.
1. Kiểm tra xem SELinux đã được bật chưa.
sudo sestatus
2. Kích hoạt SELinux.
Để bật SELinux, bạn cần chỉnh sửa tệp cấu hình của nó etc/selinux/config và thay đổi giá trị SELINUX từ bị vô hiệu hóa thành thực thi hoặc cho phép.
Hãy nhớ khởi động lại máy chủ để áp dụng các thay đổi.
sudo reboot
3. Đặt chế độ hoạt động phù hợp.
SELinux có thể chạy ở hai chế độ khác nhau: thực thi hoặc cho phép. Thực thi là chế độ mặc định áp dụng chính sách bảo mật cho toàn bộ máy chủ. Mặt khác, chế độ cho phép không thực sự thực thi các quy tắc. Thay vào đó, nó chỉ ghi lại bất kỳ khả năng từ chối nào mà chế độ thực thi sẽ đưa ra, làm cho nó tốt hơn cho mục đích thử nghiệm.
Để kiểm tra chế độ hoạt động hiện đang hoạt động và chuyển đổi giữa chúng, bạn có thể sử dụng các lệnh sau.
Định cấu hình Tường lửa
Bạn nên bảo vệ các cổng không sử dụng của máy chủ bằng giải pháp tường lửa như tường lửa. Tường lửa này được cài đặt sẵn trên CentOS và được bật theo mặc định. Nó cần thiết cho việc bảo mật máy chủ Linux.
1. Liệt kê các cổng và dịch vụ đang mở
Trước tiên, hãy xem dịch vụ và cổng nào được phép chấp nhận kết nối.
sudo firewall-cmd --list-all
2. Định cấu hình tường lửa để cho phép kết nối HTTP và HTTPS.
Bằng cách cho phép kết nối HTTP và HTTPS, để mở các trang web và ứng dụng của mình cho khách truy cập.
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
Cuối cùng, khởi động lại tường lửa để áp dụng các thay đổi.
sudo firewall-cmd --reload
3. Định cấu hình tường lửa để cho phép tất cả các kết nối từ các IP cụ thể.
Bước này cho phép bạn đưa IP của bất kỳ quản trị viên hoặc nhà phát triển nào thường xuyên sử dụng máy chủ vào danh sách trắng. Đổi lại, họ không bao giờ phải lo lắng về việc bị chặn và mất quyền truy cập.
sudo firewall-cmd --zone=trusted --permanent --add-source=#.#.#.#
Có nhiều quy tắc và lệnh tường lửa hữu ích khác mà bạn có thể sử dụng để tăng cường bảo mật cho CentOS. Để tìm hiểu thêm về chúng, hãy đọc các trang hướng dẫn sử dụng tường lửa.
Như thường lệ, hãy nhớ khởi động lại tường lửa để áp dụng các thay đổi.
sudo firewall-cmd --reload
Chạy sao lưu thường xuyên
Thực hiện tất cả các biện pháp phòng ngừa bảo mật là điều cần thiết nếu bạn muốn giảm thiểu khả năng bị tấn công. Nhưng bạn cần nhớ rằng không có hệ thống máy tính nào an toàn 100%.
Đừng lo lắng, đó là mục đích của các bản sao lưu và bạn có thể khôi phục chúng ngay khi phát hiện ra rằng một hệ thống bị xâm phạm. Chỉ cần đảm bảo định cấu hình chúng đúng cách để giữ an toàn cho CentOS .
Dưới đây là một số điều cần lưu ý nếu bạn muốn tận dụng tối đa cấu hình sao lưu của mình.
1. Giữ các bản sao lưu ở các vị trí thực tế khác nhau.
Mặc dù tội phạm mạng thường hoạt động từ xa nhưng đôi khi chúng thực sự có thể đánh cắp các bản sao lưu vật lý . Hơn nữa, một trung tâm dữ liệu nơi đặt máy chủ và các bản sao lưu có thể trở thành nạn nhân của nguy cơ hỏa hoạn.
Đó là lý do tại sao bạn phải luôn giữ các bản sao lưu của mình ở ít nhất hai vị trí thực tế để giữ an toàn cho CentOS .
2. Giữ các bản sao lưu hàng năm, hàng tháng, hàng tuần và hàng ngày.
Bạn có thể gặp may mắn và nhận ra hệ thống của mình đã bị xâm nhập ngay khi nó xảy ra. Trong trường hợp như vậy, các bản sao lưu hàng ngày hoặc hàng tuần mặc định chỉ là những gì bạn cần để đưa mọi thứ trở lại bình thường.
Tuy nhiên, đôi khi có thể mất vài tháng trước khi bạn nhận ra hệ thống của mình đã bị xâm phạm. Điều tồi tệ hơn nữa là một số trường hợp nhiễm phần mềm độc hại không thể giải quyết, mất dữ liệu vĩnh viễn.
Để ngăn những vấn đề như vậy ảnh hưởng đến bạn, hãy đảm bảo giữ các phiên bản sao lưu cũ hơn thay vì chỉ những phiên bản gần đây. Đó chính xác là mục đích sao lưu hàng tháng và hàng năm.
3. Backup toàn bộ hệ thống
Trong nhiều trường hợp, mọi người ưu tiên các thư mục /home hoặc /var vì đó là nơi lưu trữ các trang web và ứng dụng của họ. Nhưng trên thực tế, việc sao lưu toàn bộ hệ thống cũng quan trọng không kém.
Chỉ cần nghĩ về nó một lúc. Bạn hoặc quản trị viên sẽ mất bao lâu để cài đặt và định cấu hình tất cả phần mềm cần thiết trên hệ thống mới sau khi bạn bị xâm nhập? Chưa kể tường lửa sẽ mất bao lâu để thu thập cùng một IP và cung cấp cùng mức độ bảo vệ như trước đây.
Cập nhật mọi thứ
Để giữ an toàn cho CentOS , hãy đảm bảo chạy các bản cập nhật thường xuyên. Điều này bao gồm thông tin kho lưu trữ gói, gói đã cài đặt và tất cả phần mềm được cài đặt thủ công.
Bạn có thể cài đặt và cập nhật bất kỳ phần tử nào trong ngăn xếp máy chủ của mình, chẳng hạn như Apache, MySQL và PHP, dưới dạng một gói. Tuy nhiên, bất kỳ phần mềm nào bạn tải xuống theo cách thủ công, chẳng hạn như CMS (hệ thống quản lý nội dung), sẽ cần được cập nhật theo cách thủ công.
- Cập nhật thông tin gói cước
sudo dnf check-update
- Cập nhật tất cả các gói
Nếu hài lòng với kết quả, bạn có thể tiến hành nâng cấp tất cả các gói.
sudo dnf update
Nếu không, bạn có thể cập nhật từng gói riêng lẻ. Hãy nhớ thay $packagename bằng tên của từng gói.
sudo dnf update $packagename
3. Cập nhật CMS, plugin và mọi phần mềm được cài đặt thủ công khác.
Luôn cập nhật hệ thống Linux là rất quan trọng, nhưng đừng quên CMS .
Các hệ thống CMS, chẳng hạn như WordPress hoặc Magento, được tạo ra từ nhiều bộ phận khác nhau do các công ty khác nhau phát triển. Mặc dù bản chất mô-đun của chúng mang lại rất nhiều lợi ích, nhưng đó cũng là điều khiến chúng dễ bị tấn công. Đây là một phần quan trọng trong quá trình bảo mật máy chủ Linux.
Để luôn cập nhật tất cả phần mềm được cài đặt thủ công, hãy đọc tài liệu chính thức của nó.
Xóa các gói không sử dụng
Các gói không sử dụng làm tăng khả năng bị khai thác tiềm năng một cách không cần thiết. Đó là lý do tại sao bạn nên tìm và xóa chúng để giữ an toàn cho CentOS của mình.
1. Tìm và xóa các gói không sử dụng bằng autoremove.
sudo dnf autoremove
2. Tìm và xóa các tệp tạm thời.
sudo dnf clean all
Sử dụng mật khẩu mạnh
Đặt mật khẩu mạnh là một phần quan trọng trong quá trình tăng cường sức mạnh cho máy chủ Linux. Mật khẩu mạnh được tạo từ một chuỗi dài ngẫu nhiên các chữ hoa, chữ thường, số và ký hiệu. Họ không nên bao gồm bất kỳ từ hoặc ngày.
Hơn nữa, bạn cũng nên đảm bảo rằng tất cả người dùng cập nhật mật khẩu của họ thường xuyên. Chính sách mật khẩu giảm đáng kể nguy cơ tấn công DDos bằng cách ngăn người dùng sử dụng lại cùng một mật khẩu cho nhiều dịch vụ.
1. Sử dụng pwgen để tạo mật khẩu mạnh.
Cài pwgen.
sudo dnf install pwgen
Tạo danh sách mật khẩu bằng cách sử dụng cờ -ys, trong đó y có nghĩa là bao gồm các ký hiệu và s được sử dụng để tạo chuỗi mật khẩu có độ an toàn cao.
pwgen -ys 20
2. Đặt chính sách hết hạn mật khẩu.
Sử dụng tệp etc/login.defs để đặt chính sách hết hạn mật khẩu ngắn hơn, chẳng hạn như 30 đến 90 ngày.
- PASS_MAX_DAYS là số ngày sau đó mật khẩu sẽ hết hạn.
- PASS_MIN_DAYS là số ngày cần trôi qua trước khi có thể thay đổi mật khẩu.
- PASS_WARN_AGE là số ngày cảnh báo sẽ được hiển thị khi đăng nhập trước khi mật khẩu hết hạn. Tính năng này không kéo dài thời gian hết hạn PASS_MAX_DAYS.
3. Áp dụng chính sách mới cho người dùng hiện tại.
Khi bạn đặt chính sách mới, chính sách này chỉ ảnh hưởng đến người dùng mới. Để kiểm tra chính sách của người dùng hiện tại, bạn sẽ sử dụng lệnh chage -l trong khi thay thế $username bằng người dùng Linux.
sudo chage -l $username
Để áp dụng nó cho những cái hiện có, bạn cần sử dụng lệnh chage. Cờ -M dành cho số ngày tối đa, -m cho số ngày tối thiểu và -W cho các cảnh báo. Đừng quên thay thế $days và $username bằng các giá trị phù hợp và kiểm tra xem thay đổi có được áp dụng hay không.
sudo chage -M $days $username
Cài đặt Fail2ban
Khi bạn đang làm việc để củng cố CentOS 8, điều quan trọng nữa là bạn phải cài đặt tính năng ngăn chặn xâm nhập Fail2ban. Phần mềm này bảo vệ máy chủ khỏi các nỗ lực đăng nhập độc hại bằng cách chặn một cách có hệ thống các IP hoạt động sai.
1. Cài đặt Fail2ban.
sudo dnf install fail2ban
2. Kích hoạt và kích hoạt Fail2ban.
Bắt đầu fail2ban và đặt nó tải khi khởi động.
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
3. Định cấu hình Fail2ban.
Trước khi có thể định cấu hình Fail2ban, bạn cần sao chép etc/fail2ban/jail.conf sang etc/fail2ban/jail.local.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Bây giờ hãy thêm IP vào danh sách bỏ qua và bỏ ghi chú dòng.
Sau đó định cấu hình cách hệ thống sẽ xử lý các IP đáng ngờ.
- bantime xác định thời gian một IP sẽ bị chặn.
- maxretry là số lần một IP có thể không đăng nhập được trước khi bị chặn.
- findtime là khoảng thời gian mà sau đó bộ đếm maxretry được đặt lại.
Cuối cùng, khởi động lại Fail2ban để áp dụng những thay đổi này.
sudo systemctl restart fail2ban
Có nhiều tính năng Fail2ban hữu ích khác mà bạn có thể sử dụng để bảo mật CentOS. Để tìm hiểu thêm về chúng, hãy đọc các trang hướng dẫn sử dụng Fail2ban.
Mật khẩu bảo vệ GRUB
Một bước quan trọng khác trong hướng dẫn tăng cường CentOS 8 này liên quan đến việc bảo vệ GRUB. Grand Unified Bootloader (GRUB) là bộ tải khởi động phổ biến nhất cho nhiều bản phân phối Linux, bao gồm cả CentOS.
GRUB có thể được sử dụng để đặt lại mật khẩu gốc bằng cách đăng nhập vào chế độ một người dùng. Đó là lý do tại sao bạn nên đặt mật khẩu để bảo vệ và cải thiện bảo mật cho CentOS của mình.
Đặt mật khẩu.
sudo grub2-setpassword
Tắt Ctrl+Alt+Del
Nhấn các phím Ctrl, Alt và Delete cùng nhau sẽ khởi động lại trên hầu hết các bản phân phối Linux, bao gồm cả CentOS. Nếu kẻ tấn công có quyền truy cập bàn phím và khởi động lại hệ thống , thì họ có khả năng truy cập vào chế độ một người dùng mà không cần mật khẩu.
Đó là lý do tại sao điều quan trọng là bạn phải tắt nó để ngăn chặn bất kỳ lần khởi động lại không mong muốn nào và cải thiện bảo mật CentOS 8 .
Vô hiệu hóa phím tắt.
sudo systemctl mask ctrl-alt-del.target
Bảo mật hạt nhân
Bảo vệ nhân Linux là một khía cạnh quan trọng khác của việc bảo mật CentOS. Cấu hình nhân Linux được lưu trữ trong /proc/sys. Để thay đổi chúng, bạn có thể sử dụng lệnh systctl.
1. Kiểm tra cấu hình.
sudo sysctl –system
2. Chỉnh sửa cấu hình.
Mở tệp etc/sysctl.conf và sao chép các cấu hình sau vào tệp đó. Chúng sẽ hoạt động với hầu hết các máy miễn là chúng không được sử dụng làm bộ định tuyến. Đảm bảo đọc từng nhận xét trước khi áp dụng các thay đổi.
# Disable IP forwarding
net.ipv4.ip_forward = 0
# Disable source routing
net.ipv4.conf.default.accept_source_route = 0
# Disable the Magic System Request key
kernel.sysrq = 0
# Enable TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
# Enable SYN flood protection
net.ipv4.tcp_synack_retries = 5
# Don’t accept source-routed packets
net.ipv4.conf.all.accept_source_route = 0
# Don’t accept ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
# Log packets with suspicious addresses
net.ipv4.conf.all.log_martians = 1
# Ignore broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Ignore bad ICMP errors
net.ipv4.icmp_ignore_bogus_error_responses = 1
3. Apply the changes.
Finally, reload sysctl to apply the changes.
sudo sysctl -p
Dành thêm vài giờ cho bảo mật có thể bảo vệ bạn khỏi những hậu quả nghiêm trọng của các cuộc tấn công mạng, bao gồm cả các vụ kiện và thiệt hại về danh tiếng. Hướng dẫn từng bước này về cách bảo mật CentOS 8 là một nơi tuyệt vời để bắt đầu, vì vậy hãy hành động và cải thiện bảo mật ngay hôm nay.