Có nhiều cách để giải quyết các lỗ hổng, tuy nhiên điều đầu tiên bạn nên biết là Linux không dễ bị xâm nhập như các Hệ điều hành khác. Điều này chủ yếu là do thiếu phần mềm độc hại nhắm mục tiêu * NIX. Tuy nhiên, bạn muốn nhận thức được các cách mà hệ thống của bạn có thể được truy cập.
Mật khẩu
Trước tiên, bạn nên thay đổi mật khẩu mặc định cho bất kỳ người dùng nào có thể đăng nhập. Đối với Debian đây chỉ là người dùng mặc định Pi . Đối với Arch Linux, đây là siêu người dùng root . Mật khẩu được thay đổi khi đăng nhập với tư cách người dùng bằng cách nhập passwd
vào dòng lệnh.
Chính sách mật khẩu an toàn được khuyến khích, vì sẽ khá đơn giản để chạy các cuộc tấn công từ điển vũ phu đối với người dùng mặc định của bạn. Chọn một mật khẩu phong nha, trung bình.
Tối nghĩa
Truy cập từ xa có lẽ là lỗ hổng bảo mật quan trọng nhất. Những gì chúng ta có thể sử dụng ở đây được đặt tên là bảo mật bằng cách tối nghĩa . Một phương pháp tấn công phổ biến là quét một loạt địa chỉ IP cho các cổng mở. Vì vậy, một trong những biện pháp đối phó đơn giản nhất chúng ta có thể thực hiện là trở thành người dùng không sử dụng các cổng mặc định .
Tất cả những gì cần làm ở đây là thay đổi các cổng mặc định cho các giao thức thường được sử dụng. Ví dụ: cổng SSH mặc định là 22 và FTP là 21. Trên hệ thống của tôi, SSH sử dụng 222 và FTP 221, điều này sẽ che khuất các giao thức này khỏi mọi cuộc tấn công tự động.
Bảo mật kết nối
Thứ nhất, mối quan tâm bảo mật quan trọng nhất là tài khoản root sẽ không thể đăng nhập thông qua SSH. Bạn có thể vô hiệu hóa đăng nhập root trong /etc/ssh/sshd_config
tệp bằng cách bình luận hoặc xóa dòng này:
PermitRootLogin yes
Nó nên được đặt thành không theo mặc định, nhưng tốt nhất là đảm bảo.
Nếu bạn sử dụng SSH rất nhiều và lo lắng về người đàn ông trong các cuộc tấn công ở giữa, từ điển tấn công vào mật khẩu của bạn, thì bạn có thể sử dụng SSH Keys
.
Xác thực dựa trên khóa có một số lợi thế so với xác thực mật khẩu, ví dụ: các giá trị khóa khó khăn hơn đáng kể so với mật khẩu đơn giản.
Để thiết lập xác thực khóa SSH, trước tiên bạn cần tạo cặp khóa. Điều này được thực hiện dễ dàng nhất trên máy khách của bạn (máy mà bạn muốn truy cập Pi).
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
Như bạn có thể thấy, điều này đã tạo ra hai tệp, khóa riêng id_rsa
và khóa chung id_rsa.pub
.
Khóa riêng chỉ được biết đến với bạn và cần được bảo vệ an toàn . Ngược lại, khóa chung có thể được chia sẻ tự do với bất kỳ máy chủ SSH nào mà bạn muốn kết nối.
Vì vậy, những gì chúng tôi muốn làm là sao chép khóa công khai vào Raspberry Pi. Chúng ta có thể làm điều này rất dễ dàng:
ssh-copy-id pi@address
Trong trường hợp pi
là tên người dùng Raspberry Pi, và address
là địa chỉ IP của Pi.
Tôi sẽ nhắc lại, chúng tôi phân phối khóa công khai . Khóa riêng là của bạn. Giữ chặt nó, để giải phóng khóa đó phá vỡ tính bảo mật của hệ thống.
Các Arch wiki có một mô tả tuyệt vời về cách làm việc này:
Khi máy chủ SSH có khóa công khai của bạn trong tệp và thấy bạn yêu cầu kết nối, nó sẽ sử dụng khóa chung của bạn để tạo và gửi cho bạn một thử thách. Thử thách này giống như một tin nhắn được mã hóa và nó phải được đáp ứng với phản hồi thích hợp trước khi máy chủ cấp quyền truy cập cho bạn. Điều làm cho thông điệp được mã hóa này đặc biệt an toàn là nó chỉ có thể được hiểu bởi một người có khóa riêng. Mặc dù khóa chung có thể được sử dụng để mã hóa tin nhắn, nhưng nó không thể được sử dụng để giải mã chính thông điệp đó. Chỉ có bạn, người nắm giữ khóa riêng, mới có thể hiểu chính xác thách thức và đưa ra phản hồi chính xác.
Để biết thêm thông tin về bảo mật của xác thực khóa công khai, Wikipedia có một lời giải thích kỹ lưỡng .
Với bảo mật SSH, bạn có thể thực hiện một số lượng lớn dữ liệu được mã hóa, bảo mật. Thực tế mọi kết nối cổng khác có thể được định tuyến thông qua SSH nếu cần. Bạn thậm chí có thể chuyển tiếp phiên X thông qua SSH để nó xuất hiện trên máy khác.
Một ví dụ thú vị, hôm qua tôi đã chạy Eclipse trên Máy tính để bàn của mình, xem nó trên Raspberry Pi và điều khiển chuột và bàn phím từ Netbook của tôi. Đó là sức mạnh của SSH.
Quyền
Quyền truy cập tệp là mấu chốt của hệ thống bảo mật Linux. Chúng ảnh hưởng đến những người có thể xem các tệp và thư mục của bạn và có thể rất quan trọng trong việc bảo vệ dữ liệu của bạn. Ví dụ: đăng nhập vào Raspberry Pi như một người dùng bình thường và chạy:
cat /etc/shadow
Các shadow
tập tin chứa mật khẩu được mã hóa cho người sử dụng trên hệ thống, vì vậy chúng tôi không muốn chỉ là về bất cứ ai để có một cái nhìn vào nó! Vì vậy, bạn sẽ thấy phản hồi này:
cat: /etc/shadow: Permission denied
Chúng ta có thể thấy lý do tại sao bằng cách xem xét các quyền của tệp:
ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow
Điều này cho chúng ta biết rằng tập tin được sở hữu bởi root và chỉ chủ sở hữu mới có quyền đọc / ghi. Hãy phá vỡ đầu ra đó.
-rw-------
Đây là trạng thái của các quyền. Bit đầu tiên cho chúng ta biết loại tệp ( -
có nghĩa là tệp thông thường). Ba bit tiếp theo thể hiện các hành động có sẵn cho chủ sở hữu của tệp. Ba bit thứ hai đại diện cho nhóm và ba bit cuối cùng dành cho người khác hoặc mọi người khác. Do đó, một thư mục có đầy đủ quyền sẽ trông như thế này:
drwxrwxrwx 10 root root 280 Jun 20 11:40 tmp/
Đó là đọc, viết và thực thi quyền cho chủ sở hữu, nhóm và mọi người khác.
Phần quan trọng tiếp theo là hai cái tên. Trong trường hợp của chúng tôi root root
. Người dùng đầu tiên là chủ sở hữu của tập tin. Thứ hai là nhóm người dùng . Ví dụ, nó thường được thấy:
drwxr-xr-x 10 pi users 280 Jun 20 11:40 home/pi
Điều này sẽ cho phép truy cập đọc / ghi cho người dùng pi
trên thư mục chính của anh ta và truy cập đọc cho tất cả người dùng khác.
Quyền thường được đề cập và kiểm soát bằng cách sử dụng các giá trị bát phân. Ví dụ: nếu chúng tôi muốn đặt rw chỉ cho chủ sở hữu, chúng tôi sẽ nhập:
chmod 600 /path/to/file
Đây là một tổng quan cơ bản, để biết thêm chi tiết về quyền truy cập tệp Linux, đây là một bài viết tốt.
Sự hiểu biết này rất quan trọng khi bảo mật các tập tin và thư mục. Ví dụ: giả sử chúng tôi vừa thiết lập khóa SSH. Chúng tôi chắc chắn không muốn bất kỳ người dùng nào khác nhìn thấy trong ~/.ssh
thư mục của chúng tôi , hoặc họ sẽ có thể lấy khóa riêng của chúng tôi. Vì vậy, chúng tôi loại bỏ các đặc quyền đọc của họ:
chmod 700 ~/.ssh
ls -la ~/.ssh
drwx------ 2 james users 4096 Jun 18 03:05 .
Tôi hy vọng điều này sẽ làm sáng tỏ một số lo ngại của bạn với việc bảo mật Linux. Từ điều này bạn sẽ có thể thấy rằng đó là một hệ thống khá an toàn và nếu bạn cẩn thận, bạn sẽ không gặp vấn đề gì về bảo mật.
su
với họ.