Làm thế nào để bảo mật máy chủ SSH trong Ubuntu 14.04
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