Top 20 bài Thực hành bảo mật máy chủ OpenSSH

OpenSSH việc thực hiện của giao thức SSH. OpenSSH được khuyến khích cho đăng nhập từ xa, làm sao lưu, từ xa tập tin chuyển qua scp hay sftp, nhiều hơn nữa. SSH hoàn hảo để giữ bảo mật tính toàn vẹn dữ liệu trao đổi giữa hai mạng hệ thống. Tuy nhiên, các lợi thế chính xác thực máy chủ, qua việc sử dụng khu vực mật mã học quan trọng. Theo thời gian những tin đồn về OpenSSH không khai thác ngày. Dưới đây một vài điều bạn cần chỉnh để nâng cao bảo mật máy chủ OpenSSH.
Mặc định tập tin cấu hình SSH Port
/etc/ssh/sshd_config OpenSSH máy chủ tập tin cấu hình.
/etc/ssh/ssh_config OpenSSH khách hàng cấu hình tập tin.
~/.ssh/ người dùng ssh thư mục cấu hình.
~/.ssh/authorized_keys hoặc ~/.ssh/authorized_keys liệt kê các khóa công cộng (RSA hoặc DSA) thể được sử dụng để đăng nhập vào tài khoản của người dùng
/etc/nologin nếu tập tin này tồn tại, sshd từ chối để cho bất cứ ai ngoại trừ gốc đăng nhập.
/etc/hosts.Allow /etc/hosts.deny: danh sách điều khiển truy cập nên được thi hành bởi hàm bao tcp được xác định ở đây.
SSH mặc định cảng: TCP 22
SSH Session trong hành động
SSH Session trong hành động
#1: vô hiệu hoá máy chủ OpenSSH
Máy trạm máy tính xách tay có thể làm việc mà không có máy chủ OpenSSH. Nếu bạn cần phải cung cấp các khả năng của SSH từ xa đăng nhập tập tin chuyển giao, vô hiệu hóa loại bỏ các máy chủ SSHD. CentOS / RHEL / Fedora Linux người dùng có thể vô hiệu hóa loại bỏ máy chủ openssh với yum lệnh:
# chkconfig sshd ra
# yum xóa máy chủ openssh
Debian / Ubuntu Linux người dùng có thể vô hiệu hóa loại bỏ cùng với lệnh apt-get:
# apt-get loại bỏ máy chủ openssh
Bạn có thể cần phải cập nhật các kịch bản của bạn của iptables để xóa ssh ngoại lệ quy tắc. Dưới CentOS / RHEL / Fedora chỉnh sửa các tập tin /etc/sysconfig/iptables /etc/sysconfig/ip6tables. Thực hiện một lần khởi động lại iptables dịch vụ:
# Dịch vụ iptables khởi động lại
# Dịch vụ ip6tables khởi động lại
#2: chỉ sử dụng SSH giao thức 2
SSH Phiên bản giao thức 1 (SSH-1) vấn đề người đàn ông ở giữa cuộc tấn công lỗ hổng bảo mật. SSH-1 lỗi thời cần phải được tránh mọi giá. Mở sshd_config file đảm bảo rằng dòng sau tồn tại:
Giao thức 2
#3: giới hạn người dùng SSH truy cập
Theo mặc định, tất cả hệ thống người sử dụng có thể đăng nhập thông qua SSH sử dụng mật khẩu hoặc khóa công khai của họ. Đôi khi bạn tạo UNIX / Linux người dùng tài khoản cho các mục đích ftp hoặc email. Tuy nhiên, người sử dụng có thể đăng nhập vào hệ thống sử dụng ssh. Họ sẽ thể truy cập vào công cụ hệ thống trong đótrình biên dịch scripting ngôn ngữ như Perl, Python thể mở cổng mạng làm nhiều thứ khác ưa thích. Một trong số khách hàng của tôi đã thực sự lỗi thời kịch bản php kẻ tấn công đã có thể tạo một tài khoản mới trên hệ thống thông qua một kịch bản php. Tuy nhiên, kẻ tấn công không nhận được vào hộp thông qua ssh khôngtrong AllowUsers.
Chỉ cho phép người sử dụng gốc, vivek jerry để sử dụng hệ thống thông qua SSH, thêm sau sshd_config:
AllowUsers gốc vivek jerry
Ngoài ra, bạn có thể cho phép tất cả người dùng đăng nhập thông qua SSH nhưng từ chối chỉ một vài người dùng, với dòng sau đây:
DenyUsers saroj anjali foo
Bạn cũng có thể cấu hình Linux PAM cho phép hoặc từ chối đăng nhập thông qua máy chủ sshd. Bạn có thể cho phép danh sách tên nhóm để truy cập hoặc từ chối truy cập vào các ssh.
#4: đặt cấu hình các đăng nhập nhàn rỗi trong khoảng thời gian thời gian chờ
Người dùng có thể đăng nhập vào máy chủ thông qua ssh bạn có thể thiết lập một idel thời gian chờ khoảng thời gian để tránh vô chủ ssh phiên. Mở sshd_config đảm bảo rằng giá trị sau được đặt cấu hình:
ClientAliveInterval 300
ClientAliveCountMax 0
Bạn đang đặt một khoảng thời gian nhàn rỗi thời gian chờ trong giây (300 giây = 5 phút). Sau khi khoảng thời gian này đã thông qua, người sử dụng nhàn rỗi sẽ được tự động khởi động ra (đọc như đã đăng xuất). Xem làm thế nào để tự động đăng nhập BASH / TCSH / người sử dụng SSH ra sau một thời gian không hoạt động cho thêm chi tiết.
#5: vô hiệu hoá tập tin .rhosts
Không đọc các tập tin ~/.rhosts ~/.shosts của người dùng. Cập Nhật sshd_config với các cài đặt sau:
IgnoreRhosts
SSH có thể mô phỏng hành vi của lệnh đã lỗi thời rsh, chỉ cần vô hiệu hóa truy cập không an toàn thông qua RSH.
#6: vô hiệu hóa xác thực dựa trên máy chủ
Để vô hiệu hóa xác thực dựa trên máy chủ, hãy Cập Nhật sshd_config với các tùy chọn sau:
HostbasedAuthentication không có
#7: vô hiệu hoá gốc đăng nhập thông qua SSH
không cần phải đăng nhập như là người chủ thông qua ssh qua mạng. Bình thường người dùng có thể sử dụng su hoặc sudo (khuyến cáo) để đạt được cấp quyền root. Điều này cũng làm cho chắc chắn rằng bạn đầy đủ thông tin kiểm định về người chạy lệnh đặc quyền trên hệ thống thông qua sudo. Để vô hiệu hóa gốc đăng nhập thông qua SSH, Cập Nhật sshd_config với dòng sau đây:
PermitRootLogin không có
Tuy nhiên, bob đã điểm tuyệt vời:
Nói “không đăng nhập như là người chủ” là h *** t. bắt nguồn từ những ngày khi mọi người sniffed các gói đầu tiên của phiên họp để đăng nhập như chính mình su-ing giảm cơ hộikẻ tấn công sẽ thấy gốc pw, decreast cơ hội bạn giả mạo như mục tiêu của bạn lưu trữ telnet, bạn sẽ nhận được mật khẩu của bạn lừa đảo nhưng không gốc của pw. Cho tôi một break. đây năm 2005 chúng tôi ssh, được sử dụng đúng nó là an toàn. sử dụng không đúng cách, không ai trong số này năm 1989 sẽ làm cho một damn chút khác biệt. -Bob
#8: sử một cảnh báo
#16: ngăn chặn SSH bánh (Brute lực lượng tấn công)
Bạo lực một phương pháp đánh bại một đề án mật mã bằng cách cố gắng một số lớn các khả năng sử dụng một mạng lưới máy tính duy nhất hoặc phân phối. Để ngăn chặn cuộc tấn công bạo lực chống lại SSH, sử dụng các phần mềm sau đây:
DenyHosts một công cụ bảo mật dựa trên Python cho máy chủ SSH. được thiết kế để ngăn chặn cuộc tấn công bạo lực trên các máy chủ SSH bằng cách giám sát cố gắng đăng nhập không hợp lệ trong các bản ghi xác thực chặn các địa chỉ IP có nguồn gốc.
Giải thích làm thế nào để thiết lập DenyHosts trong RHEL / Fedora CentOS Linux.
Fail2ban một chương trình tương tự thể ngăn chặn cuộc tấn công bạo lực chống lại SSH.
an ninh/sshguard-pf bảo vệ máy chủ từ vụ tấn công bạo lực ssh các dịch vụ khác sử dụng pf.
an ninh/sshguard-ipfw bảo vệ máy chủ từ vụ tấn công bạo lực ssh các dịch vụ khác sử dụng ipfw.
an ninh/sshguard-ipfilter bảo vệ máy chủ từ vụ tấn công bạo lực ssh các dịch vụ khác sử dụng ipfilter.
an ninh/sshblock khối lạm dụng SSH đăng nhập nỗ lực.
an ninh/sshit kiểm tra SSH/FTP bruteforce khối cho IP.
BlockHosts tự động chặn lạm dụng IP máy chủ.
Danh sách đen thoát khỏi những nỗ lực bruteforce.
Brute Force phát hiện A mô-đun kịch bản cho phân tích cú pháp ứng dụng các bản ghi kiểm tra để xác thực thất bại. thực hiện điều này bằng cách sử dụng một hệ thống quy tắc tùy chọn cụ thể ứng dụng được lưu trữ bao gồm cụm từ cho mỗi định dạng duy nhất auth.
IPQ BDB lọc có thể được coi một fail2ban lite.
#17: kết nối giới hạn số lượng đến Port # 22
Netfilter lẫn pf cung cấp giới hạn số lượng tùy chọn để thực hiện đơn giản throttling trên các kết nối đến trên cổng # 22.
Iptables ví dụ
Ví dụ sau sẽ thả các kết nối làm cho nỗ lực kết nối nhiều hơn 5 on port 22 trong vòng 60 giây:
#! / bin/bash
inet_if = eth1
ssh_port = 22
$IPT-tôi đầu vào -p tcp–dport ${ssh_port} -i ${inet_if} -m bang – nhà nước mới -m tại–thiết lập
$IPT-tôi đầu vào -p tcp–dport ${ssh_port} -i ${inet_if} -m bang – nhà nước mới -m tại – Cập Nhật–giây 60 – hitcount 5 -j thả
Gọi trên kịch bản từ các kịch bản iptables. Một cấu hình tùy chọn:
$IPT – một đầu vào -i ${inet_if} -p tcp–dport ${ssh_port} -m bang – nhà nước mới của giới hạn -m – giới hạn 3/min – giới hạn-burst 3 -j chấp nhận
$IPT – một đầu vào -i ${inet_if} -p tcp–dport ${ssh_port} -m bang – nhà nước thành lập -j chấp nhận
$IPT – một đầu ra -o ${inet_if} -p tcp–thể thao ${ssh_port} -m bang – nhà nước được thành lập -j chấp nhận
# một ví dụ khác một dòng
# $IPT – một đầu vào -i ${inet_if} -m nhà nước – nhà nước mới, được thành lập, có liên quan -p tcp–dport – 22phút giới hạn – giới hạn 5/phút – giới hạn-burst 5-j chấp nhận
Xem iptables người đàn ông trang để biết thêm chi tiết.
* BSD PF ví dụ
Sau đây sẽ giới hạn số lượng tối đa của kết nối mỗi nguồn đến 20 tỷ lệ giới hạn số lượng kết nối đến 15 trong một khoảng 5 thứ hai. Nếu bất cứ ai vi phạm quy tắc của chúng tôi thêm chúng vào bàn abusive_ips của chúng tôi ngăn chặn họ để làm cho bất kỳ kết nối tiếp tục. Cuối cùng, tuôn ra từ khóa giết chết tất cả tiểu bang tạo ra bởi các quy tắc phù hợp có nguồn gốc từ các máy chủ nào vượt quá các giới hạn này.
sshd_server_ip = “202.54.1.5”
bảng <abusive_ips> vẫn tồn tại
khối trong nhanh chóng từ <abusive_ips>
vượt qua trong ngày $ext_if proto tcp $sshd_server_ip cảng ssh cờ nhà nước tiếp tục S/SA (max-src-conn 20, max-src-conn-tỷ lệ 15/5, tình trạng quá tải <abusive_ips> tuôn ra)
#18: sử dụng cổng
Port một phương pháp để bên ngoài mở cổng trên tường lửa bằng cách tạo ra một nỗ lực kết nối vào một nhóm prespecified đóng cổng. Sau khi một trình tự chính xác của những nỗ lực kết nối được nhận, các quy tắc tường lửa được tự động thay đổi để cho phép các máy chủ gửi kết nối cố gắng kết nối qua cụ thể cho từng cổng thiết. Một mẫu cảng Knocking ví dụ cho ssh sử dụng iptables:
$IPT -N stage1
$IPT – một stage1 -m tại–loại bỏ–tên knock
$IPT – một stage1 -p tcp–dport 3456 – m tại–tập–tên knock2
$IPT -N stage2
$IPT – một stage2 -m tại–loại bỏ–tên knock2
$IPT – một stage2 -p tcp–dport 2345 – m tại–tập–tên thiên đàng
$IPT -N cửa
$IPT – một cửa -m tại–rcheck–giây 5–tên knock2 -j stage2
$IPT – một cửa -m tại–rcheck–giây 5–tên knock -j stage1
$IPT – một cửa -p tcp–dport 1234 – m tại–đặt–tên knock
$IPT – một đầu vào -mliên bang được thành lập, có liên quan -j chấp nhận
$IPT – một đầu vào -p tcp–dport 22 – m tại–rcheck–giây 5–tên thiên đường -j chấp nhận
$IPT – một đầu vào -p tcp–syn -j doo
fwknop một thực hiện kết hợp port va chạm thụ động OS fingerprinting.
Nhiều-port Netfilter/IPtables duy nhất thực hiện.
#19: sử dụng phân tích Log
Đọc bản ghi của bạn bằng cách sử dụng logwatch hoặc logcheck. Những công cụ này làm cho đăng nhập của bạn đọc cuộc sống dễ dàng hơn. sẽ đi qua các bản ghi của bạn cho một khoảng thời gian thực hiện một báo cáo trong các lĩnh vực bạn muốn với các chi tiết bạn muốn. Đảm bảo rằng LogLevel được thiết lập để thông tin hoặc gỡ lỗi trong sshd_config:
LogLevel thông tin
#20: OpenSSH hệ điều hành
Đó khuyến cáo rằng bạn sử dụng các công cụ như yum, apt-get, freebsd-u