Theo mặc định, Raspberry Pi đi kèm với mức độ bảo mật kém. Nếu bạn sử dụng Pi ở nhà hoặc trong một mạng nhỏ, đó không phải là vấn đề lớn.
Nhưng nếu bạn mở các cổng trên Internet, sử dụng nó làm điểm truy cập WiFi hoặc nếu bạn cài đặt Pi trong một mạng lớn hơn, bạn cần thực hiện các biện pháp bảo mật để bảo vệ Raspberry Pi của mình.
Bài viết sau đây sẽ chỉ cho bạn cách làm điều này.
1. Luôn cập nhật hệ thống
Điều đầu tiên này có thể rất hiển nhiên, nhưng vô cùng quan trọng. Với các bản cập nhật trong kho lưu trữ Raspbian, bạn không chỉ nhận được các tính năng mới nhất mà chủ yếu là những bản sửa lỗi bảo mật cho phần mềm đã cài đặt.
Hãy cố gắng cập nhật Raspberry Pi thường xuyên với:
sudo apt update
sudo apt upgrade
Bạn cũng có thể tự động hóa quá trình này với gói nâng cấp không cần giám sát. Quy trình này cho phép bạn tự động cài đặt các bản sửa lỗi bảo mật mỗi ngày:
- Cài đặt gói nâng cấp không cần giám sát
sudo apt install unattended-upgrades
- Mở file cấu hình
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
- Thay đổi những gì bạn muốn trong file này
Theo mặc định, nó sẽ chỉ tải xuống các bản cập nhật bảo mật, nhưng bạn có thể thay đổi điều này, nếu bạn muốn cài đặt tất cả các bản cập nhật Debian hoặc thậm chí những kho lưu trữ khác
Ít nhất bạn nên ghi chú dòng này:
Unattended-Upgrade::Mail "root";
Thao tác này sẽ gửi mail tới root (hoặc bất kỳ địa chỉ nào khác nếu bạn đã cài đặt mail server).
- Lưu và thoát (CTRL + O, CTRL + X)
- Sau đó, bạn cần thiết lập nâng cấp định kỳ:
- Mở file này:
sudo nano /etc/apt/apt.conf.d/02periodic
- Dán các dòng này (file phải trống, nếu không, hãy thay đổi các giá trị):
APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Verbose "2";
Điều này sẽ cho phép cập nhật tự động hàng ngày. Bạn yêu cầu apt thực hiện: Cập nhật, tải xuống bản nâng cấp, cài đặt bản nâng cấp, tự động dọn dẹp hàng ngày.
Dòng cuối cùng là mức chi tiết mà bạn sẽ nhận được trong /var/log/unattended-upgrade và email (1 = low, 3 = max)
- Lưu và thoát (CTRL + O, CTRL + X).
- Bạn có thể gỡ lỗi cấu hình của mình bằng lệnh này:
sudo unattended-upgrades -d
Đừng quên kiểm tra file nhật ký và/hoặc email nhận được để đảm bảo mọi thứ đang hoạt động như mong đợi
2. Không sử dụng đăng nhập tự động hoặc mật khẩu trống
Mật khẩu là một phần quan trọng của bảo mật hệ thống. Điều đầu tiên cần làm là hãy đảm bảo rằng tất cả các truy cập quan trọng đều yêu cầu mật khẩu.
Không sử dụng đăng nhập tự động và thêm bước đăng nhập cho từng ứng dụng mà bạn có thể truy cập trực tiếp
Bài viết sẽ không liệt kê tất cả các ứng dụng, nhưng ví dụ, nếu bạn có web server, hãy đảm bảo rằng dữ liệu cá nhân hoặc các trang quản trị không thể truy cập được nếu không có mật khẩu.
Đảm bảo rằng không ai sử dụng mật khẩu trống trên Raspberry Pi. Nếu bạn có ít tài khoản, thật dễ dàng, hãy kiểm tra tất cả quyền truy cập. Nếu bạn có nhiều tài khoản người dùng, các lệnh này có thể giúp bạn:
- Tìm kiếm mật khẩu trống
sudo awk -F: '($2 == "") {print}' /etc/shadow
Điều này sẽ chỉ hiển thị các tài khoản có mật khẩu trống.
- Khóa tài khoản không an toàn
passwd -l <username>
3. Thay đổi mật khẩu mặc định cho Pi
Một lỗi thường gặp là để nguyên mật khẩu mặc định cho người dùng pi (raspberry). Bất kỳ ai đã sử dụng Raspberry Pi đều biết mật khẩu này. Vì vậy, nhiều người đang quét các cổng SSH và cố gắng đăng nhập bằng pi/raspberry.
Thay đổi mật khẩu mặc định là điều đầu tiên cần làm khi cài đặt mới. Thực hiện điều này rất dễ dàng, đăng nhập bằng pi và nhập lệnh này:
passwd
Cố gắng sử dụng một câu có hơn 15 ký tự để an toàn trước các cuộc tấn công Brute-force và dễ ghi nhớ nó (ví dụ: iloveraspberrytips là một mật khẩu tốt, dễ nhớ).
4. Vô hiệu hóa người dùng pi
Tin tặc có một danh sách các thông tin đăng nhập thường được sử dụng và thường thử những thông tin đăng nhập này
Nếu có thể, hãy tạo người dùng mới và vô hiệu hóa người dùng pi để ngăn chặn loại tấn công Brute-force:
- Tạo người dùng mới:
sudo adduser <username>
- Cấp đặc quyền sudo nếu cần:
sudo adduser <username> sudo
Thao tác này sẽ thêm người dùng mới của bạn vào nhóm sudo.
- Kiểm tra xem mọi thứ có hoạt động bình thường không (truy cập ssh, sudo, v.v…)
- Sao chép file từ người dùng pi sang người dùng mới nếu cần
sudo cp /home/pi/Documents/* /home/<username>/Documents/
...
- Xóa người dùng pi
sudo deluser -remove-home pi
Nếu muốn, bạn có thể bắt đầu bằng cách khóa tài khoản (như đã nói trước đây) và xóa nó sau một vài tuần, khi bạn chắc chắn rằng mọi thứ đều ổn
5. Dừng các service không cần thiết
Trên Raspberry Pi, mọi người thực hiện rất nhiều dự án về mọi thứ và đó có thể là một thói quen xấu đối với bảo mật.
Giả sử, bạn đã cài đặt PHPMyAdmin 3 tháng trước để thử thứ gì đó, nhưng bạn hiện không sử dụng nữa
Điều này có thể tạo ra một lỗ hổng cho kẻ tấn công, cho phép hắn xâm nhập vào hệ thống của bạn. Vì vậy, hãy cố gắng dừng hoặc gỡ cài đặt các service và ứng dụng không cần thiết.
- Để ngừng sử dụng service:
sudo service <service-name> stop
- Nếu nó tự động khởi động khi boot, hãy thử:
sudo update-rc.d <service-name> remove
- Hoặc để gỡ cài đặt nó, hãy dùng lệnh sau:
sudo apt remove <service-name>
6. Buộc sudo yêu cầu mật khẩu
Như bạn nên biết, sudo không phải lúc nào cũng hỏi mật khẩu. Hầu hết thời gian bạn không cần phải nhập lại mật khẩu của mình. Điều đó thật tuyệt vời về mặt năng suất, nhưng vì lý do bảo mật, đó không phải là ý kiến hay
Nếu ai đó thành công trong việc có được quyền truy cập Terminal với tư cách người dùng chính trên Raspberry Pi của bạn, các đặc quyền của người dùng cấp cao sẽ có thể truy cập mà không cần mật khẩu
Bài viết khuyên bạn nên hỏi mật khẩu khi bạn sử dụng sudo:
- Chỉnh sửa file này:
sudo nano /etc/sudoers.d/010_pi-nopasswd
- Tìm dòng này:
pi ALL=(ALL) NOPASSWD: ALL
Hoặc bất kỳ người dùng nào khác nếu bạn đã làm theo các bước trước đó.
- Thay thế bằng cái này:
pi ALL=(ALL) PASSWD: ALL
- Làm tương tự cho từng người dùng có quyền truy cập sudo
- Lưu và thoát (CTRL + O, CTRL + X)
7. Ngăn chặn đăng nhập root
Như đã nói trước đây, người dùng root và pi thường là mục tiêu chính cho các cuộc tấn công brute-force, thường với SSH.
Vì vậy, bạn cần đảm bảo rằng root không có quyền truy cập SSH trực tiếp.
Nếu bạn cần root, hãy đăng nhập bằng người dùng bình thường (không phải pi) và sau đó sử dụng sudo để nhận các đặc quyền của super-user.
Theo mặc định, quyền truy cập root bị tắt. Bạn có thể kiểm tra điều này:
- Mở file cấu hình máy chủ SSH:
sudo nano /etc/ssh/sshd_config
- Tìm dòng này:
#PermitRootLogin prohibit-password
- Nếu bạn có điều gì khác, hãy comment dòng này (bằng cách thêm # ở đầu).
- Lưu và thoát (CTRL + O, CTRL + X).
- Khởi động lại máy chủ SSH:
sudo service ssh restart
8. Thay đổi cổng mặc định
Cổng mặc định SSH là 22. Vì vậy, về cơ bản, những kẻ tấn công sẽ tạo ra các bot để thực hiện những nỗ lực đăng nhập vào cổng này. Để tránh điều này, bạn có thể thay đổi cổng mặc định và đặt một cổng khác.
- Chỉnh sửa file cấu hình máy chủ SSH:
sudo nano /etc/ssh/sshd_config
- Tìm dòng này:
#Port 22
- Thay thế cổng này bằng cổng khác mà bạn muốn:
Port 1111
Hãy đảm bảo rằng bạn không sử dụng cổng đang dùng để làm việc khác.
- Lưu và thoát (CTRL + O, CTRL + X).
- Khởi động lại máy chủ:
sudo service ssh restart
Đừng quên điều chỉnh các quy tắc tường lửa nếu bạn có.
Thực hiện kiểm tra kết nối mới trước khi đóng kết nối hiện tại (điều này sẽ hữu ích nếu bạn mắc lỗi).
9. Sử dụng SSH key thay vì mật khẩu
Những bước trước chỉ là các thứ đơn giản. Tiếp theo, hãy chuyển sang những thứ có thể bảo vệ bạn ngay cả khi bạn đang đối mặt với một tin tặc mạnh, muốn chiếm lấy hệ thống của bạn
Sử dụng một mật khẩu mạnh sẽ làm chậm cuộc tấn công của tin tặc, nhưng hắn ta luôn có khả năng tìm thấy nó, ngay cả khi phải mất hàng tuần mới có được mật khẩu chính xác
Những gì bạn có thể làm để ngăn chặn tin tặc là sử dụng SSH key thay vì mật khẩu cho các kết nối SSH. Kẻ tấn công có thể đoán mật khẩu 15 ký tự còn SSH key thì không.
Ý tưởng chính là tạo một key trên máy tính và sau đó thêm nó vào Raspberry Pi để cho phép kết nối từ máy tính của bạn (có hoặc không có mật khẩu).
Khi thiết lập này hoạt động, bạn chỉ có thể tắt kết nối SSH bằng mật khẩu. Thay đổi dòng này trong file cấu hình SSH trước đó:
PasswordAuthentication no
10. Cài đặt Fail2ban
Fail2ban là một công cụ để phát hiện các cuộc tấn công Brute-force và ngăn chặn chúng. Trong những phần trước, bài viết đã nói rằng kẻ tấn công có thể cố gắng tìm mật khẩu của bạn trong nhiều tháng và hắn ta có thể thành công. Mục đích chính của Fail2ban là để tránh điều này. Fail2ban sẽ chặn IP của kẻ tấn công nếu hắn không thể đăng nhập sau một số lần nhất định.
Bạn có thể cấu hình số lần thử trước khi chặn và thời hạn chặn. Làm theo các bước sau để cài đặt Fail2ban trên Raspberry Pi của bạn:
- Cài đặt gói với lệnh:
sudo apt install fail2ban
Theo mặc định, Fail2ban sẽ chặn kẻ tấn công 10 phút sau 5 lần thất bại. Mức này có vẻ ổn, nhưng nếu bạn muốn thay đổi, tất cả cấu hình đều nằm trong thư mục /etc/fail2ban, chủ yếu trong /etc/fail2ban/jail.conf.
- Khởi động lại service nếu bạn đã thực hiện bất kỳ thay đổi nào.
sudo service fail2ban restart
5 lần thử cứ sau 10 phút, tức là kẻ tấn công chỉ có 720 lần thử mỗi ngày. Nếu mật khẩu của bạn không phải là “password” hay “123456789”, sẽ mất nhiều thời gian để tìm ra nó.
11. Cài đặt tường lửa
Tường lửa cho phép bạn chặn tất cả các cổng, ngoại trừ những cổng bạn cần và lọc quyền truy cập theo IP.
Ví dụ, bạn có thể chặn mọi thứ và chỉ cho phép truy cập SSH từ địa chỉ IP máy tính của mình.
Để phù hợp với người mới bắt đầu, bài viết sẽ giải thích cho bạn cách cài đặt ufw (Uncomplicated FireWall), đơn giản hơn iptables và sau đó chỉ cho phép những gì bạn cần.
Đó là cấu hình cơ bản với quyền truy cập HTTP cho bất kỳ ai và SSH chỉ dành cho bạn, nhưng bạn cần điều chỉnh cấu hình này cho phù hợp với những gì mình muốn
- Cài đặt gói tường lửa:
sudo apt install ufw
- Cho phép truy cập apache cho bất kỳ ai:
sudo ufw allow 80
sudo ufw allow 443
- Chỉ cho phép truy cập SSH từ địa chỉ IP của bạn:
sudo ufw allow from 192.168.1.100 port 22
Đừng quên thay thế các giá trị bằng cài đặt của riêng bạn. Trên mạng cục bộ, bạn có thể tìm địa chỉ IP bằng ipconfig (Windows) hoặc ifconfig (Linux/Mac). Nếu bạn thay đổi cổng SSH ở bước trước (bằng 1111 hoặc bất kỳ thứ gì khác), hãy thay thế nó ở đây.
- Kích hoạt tường lửa:
sudo ufw enable
Hãy cẩn thận, điều này sẽ kích hoạt tường lửa ngay bây giờ và cả khi boot. Nếu bạn mất quyền truy cập vào thiết bị của mình, bạn sẽ không thể khắc phục sự cố này, ngay cả sau khi khởi động lại và cần thay đổi cấu hình trực tiếp trên Raspberry Pi.
- Kiểm tra xem mọi thứ có ổn không.
- Để hiển thị các quy tắc hiện tại sau khi bật ufw, hãy sử dụng lệnh sau:
sudo ufw status verbose
12. Sao lưu hệ thống
Một trong những hậu quả tồi tệ nhất của một cuộc tấn công là mất dữ liệu. Nếu bạn sao lưu đúng cách và thường xuyên các file của mình, bạn sẽ an toàn ngay cả khi tin tặc phá hủy thẻ SD của bạn
Tham khảo bài viết: Cách sao lưu Raspberry Pi để biết chi tiết cách thực hiện.
Nhưng một điều nữa cũng rất quan trọng, hãy đảm bảo rằng bạn có thể đọc bản sao lưu của mình và tất cả các file quan trọng đều ở bên trong, nếu không việc này sẽ chẳng có ý nghĩa gì.