SSH (Secure Socket Shell) là giao diện dòng lệnh và giao thức để truy cập an toàn vào máy chủ Linux từ xa. Nó cung cấp một giao tiếp an toàn và mã hóa qua mạng và cho phép trao đổi dữ liệu qua một kênh an toàn giữa hai máy chủ. Nó được sử dụng rộng rãi bởi các quản trị viên hệ thống để kiểm soát Web và các loại máy chủ khác từ xa. Trong bài viết này, chúng tôi sẽ giới thiệu cho các bạn cách bảo vệ máy chủ SSH của mình.

Lưu ý : hướng dẫn này giả định rằng máy chủ SSH đang chạy Ubuntu 14.04 và máy khách là một Linux.

Bắt đầu - cài đặt SSH

Trước tiên, bạn cần phải cập nhật hệ thống của bạn và cài đặt các gói cần thiết cho hệ thống của bạn.

Để cập nhật hệ thống và cài đặt máy chủ SSH trên máy chủ, hãy chạy lệnh sau:

 sudo apt-get cập nhật sudo apt-get cài đặt openssh-server 

Để cài đặt SSH client trên máy khách, hãy chạy lệnh sau:

 sudo apt-get cài đặt openssh-client 

Định cấu hình SSH để đăng nhập ít mật khẩu hơn

Có hai phương pháp đăng nhập khác nhau vào một máy chủ SSH: một là xác thực dựa trên mật khẩu và một phương pháp khác là xác thực dựa trên khóa. Xác thực mật khẩu là một phương pháp rất cơ bản dễ sử dụng và bẻ khóa. Sử dụng xác thực mật khẩu rất không an toàn, đặc biệt nếu người dùng của bạn sử dụng mật khẩu yếu. Mặt khác, các khóa SSH cung cấp cách đăng nhập dễ dàng và an toàn vào máy chủ từ xa và phương pháp này được đề xuất cho tất cả người dùng.

Trên máy khách của bạn, tạo khóa SSH bằng lệnh sau:

 cd ~ / .ssh ssh-keygen -t rsa 

Chỉ cần nhấn phím Enter ở mọi lời nhắc. Điều này tạo ra hai tập tin: id_rsa.pub (khóa công khai) và id_rsa (khóa riêng).

Điều này sẽ xuất ra một cái gì đó trông giống như sau:

Trên máy chủ của bạn, tạo thư mục sau (nếu nó không tồn tại):

 mkdir -p ~ / .ssh / 

Quay lại máy khách của bạn, sao chép tệp "id_rsa.pub" vào máy chủ của bạn bằng lệnh sau:

 scp -P "yourport" ~ / .ssh / id_rsa.pub tên người dùng @ serverip: ~ / .ssh 

Thay đổi “yourport” thành số cổng mà máy chủ SSH của bạn đang sử dụng (mặc định là 22) và “serverip” thành địa chỉ IP của máy chủ.

Trên máy chủ của bạn, thay đổi tên tệp và quyền thiết lập.

 cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys chmod 700 .ssh chmod 600 .ssh / authorized_keys rm .ssh / id_rsa.pub 

Để kiểm tra xem phương thức xác thực dựa trên khóa có hoạt động hay không, hãy thử kết nối với máy chủ SSH của bạn từ máy khách:

 Tên người dùng ssh -P "yourport" @ serverip 

Nếu bạn có thể kết nối mà không cần nhập mật khẩu, thì phương thức xác thực dựa trên khóa sẽ hoạt động.

Tệp cấu hình SSH an toàn

Tệp “/ etc / ssh / sshd_config” là tệp cấu hình toàn hệ thống cho SSH, cho phép bạn thiết lập các tùy chọn khác nhau để cải thiện bảo mật của máy chủ SSH. Cấu hình mặc định trong tệp cấu hình là rất không an toàn, vì vậy bạn cần chỉnh sửa nó trước và thiết lập các tùy chọn thích hợp để cải thiện bảo mật.

Để chỉnh sửa tập tin “/ etc / ssh / sshd_config”, hãy chạy

 sudo nano / etc / ssh / sshd_config 

Thay đổi cổng nghe SSH

Theo mặc định, SSH lắng nghe trên cổng 22. Kẻ tấn công sử dụng máy quét cổng để xem liệu một dịch vụ SSH có đang chạy hay không. Bạn nên thay đổi cổng mặc định.

Để thay đổi cổng mặc định thành 2200, hãy thay đổi:

 Cổng 22 

đến

 Cổng 2200 

Chỉ sử dụng Giao thức 2

Phiên bản 1 của giao thức chứa lỗ hổng bảo mật. Giao thức 2 là mục nhập mặc định trên Ubuntu.

Thay đổi dòng hiển thị dưới đây:

 Giao thức 2 

Giới hạn quyền truy cập của người dùng

Chỉ cần cho phép người dùng cụ thể đăng nhập vào SSH. Nó có thể cải thiện an ninh của bạn. Theo mặc định, tùy chọn này không có sẵn trong tệp cấu hình SSH.

Để cho phép “user1” và “user2”, thêm dòng sau:

 Cho phép người dùng user1 user2 

Để từ chối “baduser1” và “baduser2”, hãy thêm dòng sau:

 DenyUsers baduser1 baduser2 

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

Không cần phải đăng nhập bằng root thông qua ssh qua mạng. Người dùng bình thường cũng có thể sử dụng su hoặc sudo để truy cập cấp độ gốc. Hầu hết những kẻ tấn công sẽ cố gắng sử dụng người dùng root để đăng nhập. Đây là một nguy cơ bảo mật lớn, vì vậy bạn nên từ chối đăng nhập root.

Để tắt đăng nhập root, hãy thay đổi dòng

 PermitRootLogin không có mật khẩu 

đến

 PermitRootLogin no 

Ẩn đăng nhập cuối cùng

Bạn có thể ẩn người đã đăng nhập lần cuối khi người dùng đăng nhập.

Đối với điều này, thay đổi dòng

 PrintLastLog yes 

đến

 PrintLastLog no 

Hạn chế giao diện để đăng nhập

Theo mặc định, ssh sẽ nghe trên tất cả các giao diện mạng. Nếu bạn muốn cho phép kết nối SSH được chấp nhận từ các địa chỉ IP cụ thể, bạn có thể thay đổi dòng

 #ListenAddress :: 

đến

 ListenAddress 192.168.1.20 

Tắt xác thực mật khẩu

Sử dụng xác thực mật khẩu là một nguy cơ bảo mật lớn nếu người dùng của bạn sử dụng mật khẩu yếu. Bạn nên sử dụng “khóa ssh”. “Khóa ssh” có thể chứa hơn 600 ký tự ngẫu nhiên và khó phá vỡ.

Đối với điều này, thay đổi dòng

 # PasswordAuthentication yes 

đến

 PasswordAuthentication no 

Vô hiệu hóa tệp .rhosts

Tệp .rhosts chỉ định người dùng nào có thể truy cập các lệnh r (rsh, rcp, rlogin, v.v.) trên máy cục bộ mà không cần mật khẩu. Theo mặc định, tệp .rhosts bị tắt; nếu không, sau đó thay đổi các dòng như hình dưới đây.

 IgnoreRhosts yes RhostsAuthentication không RSAAuthentication có 

Tắt xác thực dựa trên máy chủ

Xác thực dựa trên máy chủ của SSH an toàn hơn xác thực .rhosts. Tuy nhiên, nó không được khuyến khích mà lưu trữ tin tưởng lẫn nhau. Theo mặc định, tùy chọn này bị vô hiệu hóa.

Nếu không, sau đó thay đổi dòng hiển thị dưới đây.

 HostbasedAuthentication no 

Đặt thời gian chờ gia hạn đăng nhập

“LoginGraceTime” chỉ định khoảng thời gian sau khi yêu cầu kết nối mà máy chủ sẽ đợi trước khi ngắt kết nối. Bạn nên giảm nó xuống 60 giây.

Đối với điều này, thay đổi dòng

 LoginGraceTime 120 

đến

 LoginGraceTime 60 

Đặt kết nối khởi động tối đa

Việc thiết lập số lượng kết nối đồng thời tối đa cho daemon SSH có thể hữu ích trong việc chống lại tấn công brute-force.

Đối với điều này, thay đổi dòng

 #MaxStartups 10:30:60 

đến

 MaxStartups 2 

Vô hiệu hóa chuyển tiếp

Kỹ thuật chuyển tiếp cổng được sử dụng bởi những kẻ tấn công vào các kết nối mạng đường hầm thông qua một phiên SSH để đăng nhập vào các hệ thống. Bạn nên tắt tùy chọn này.

Đối với điều này, thay đổi dòng

 X11Chuyển tiếp có 

đến

 X11Chuyển tiếp không 

Đăng nhập thêm thông tin

Theo mặc định, SSH ghi nhật ký mọi thứ. Nếu bạn muốn đăng nhập thêm thông tin như các lần đăng nhập không thành công. bạn có thể thay đổi giá trị này thành "VERBOSE".

Đối với điều này, thay đổi dòng

 LogLevel INFO 

đến

 LogLevel VERBOSE 

Tắt mật khẩu trống

Nó là cần thiết để từ chối người dùng với mật khẩu trống trên máy chủ của bạn. Theo mặc định PermitEmptyPasswords bị tắt trong Ubuntu.

Nếu không, sau đó thay đổi dòng hiển thị dưới đây.

 PermitEmptyPasswords no 

Đặt khoảng thời gian chờ nhàn rỗi

Theo mặc định, tùy chọn này không có sẵn trong tệp cấu hình mặc định SSH. Chúng tôi khuyên bạn nên đặt thời gian chờ không hoạt động chính xác để tránh phiên ssh không cần giám sát.

Đối với điều này, thêm các dòng sau.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Chế độ nghiêm ngặt

Điều này sẽ ngăn chặn việc sử dụng thư mục chính không an toàn và quyền truy cập tệp khóa. Theo mặc định, tùy chọn này được kích hoạt.

Nếu không, sau đó thay đổi dòng sau.

 StrictModes yes 

Bây giờ lưu và thoát tệp / etc / ssh / sshd_config và khởi động lại máy chủ SSH.

 sudo dịch vụ ssh khởi động lại 

SSH an toàn sử dụng trình bao bọc TCP

Trình bao bọc TCP cung cấp điều khiển truy cập dựa trên máy chủ cho các dịch vụ mạng được sử dụng để lọc truy cập mạng vào Internet. Chỉnh sửa tệp “/etc/hosts.allow” của bạn để chỉ cho phép SSH từ 192.168.1.2 và 172.16.23.12.

 sudo nano /etc/hosts.allow 

Thêm dòng sau:

 sshd: 192.168.1.2 172.16.23.12 

SSH an toàn sử dụng iptables

Theo mặc định, máy chủ SSH chỉ phải chấp nhận các kết nối từ mạng LAN của bạn hoặc các trang web từ xa khác. Chúng tôi khuyên bạn chỉ nên cho phép các địa chỉ IP cụ thể truy cập SSH và chặn quyền truy cập SSH vào địa chỉ IP trái phép.

Để chỉ cho phép các kết nối SSH từ 192.168.1.2 chạy lệnh sau:

 sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.2 --dịch vụ 2200 -j ACCEPT 

Vô hiệu hóa kết nối SSH từ tất cả các máy chủ khác bằng cách chạy lệnh sau:

 sudo iptables -A INPUT -p tcp --dự án 2200 -j DROP 

Bây giờ lưu các quy tắc mới của bạn bằng cách sử dụng lệnh sau:

 sudo iptables-save> /etc/iptables/rules.v4 

Phần kết luận

Các hướng dẫn ở trên là các kỹ thuật rất mạnh mẽ để bảo vệ máy chủ SSH của bạn. Bài đăng này bao gồm tất cả thông tin mà hầu hết người dùng sẽ cần cho máy chủ SSH. Nếu bạn có bất kỳ câu hỏi nào cảm thấy tự do để bình luận dưới đây.

Tham khảo: SSH ubuntu