Nhận thông báo khi ai đó đăng nhập vào máy chủ bằng SSH hoặc Remote Desktop


13

Tôi có một máy chủ mac mini chạy OS X Lion Server 10.7.3. Nó chạy khá nhiều không có giám sát mà không có vấn đề. Tuy nhiên, máy chủ đang bị "tấn công" liên tục theo nhật ký. Tường lửa và bảo mật đang giữ dường như.

Có ứng dụng / tập lệnh nào có thể gửi email cho tôi bất cứ khi nào ai đó / bất kỳ ai đăng nhập vào máy chủ bằng SSH, Công cụ quản trị hoặc ARD không?

Vì máy chạy không giám sát, không đầu trong một trung tâm dữ liệu ở một thành phố khác, tôi lo ngại rằng ai đó có thể (thông qua sự kiên trì thuần túy) quản lý để bẻ khóa mật khẩu hoặc tìm một sự thỏa hiệp trên hệ thống. Biết tôi sẽ được cảnh báo sẽ khiến tâm trí tôi thoải mái.


2
Do đó, không thực sự là một câu trả lời: bạn có cân nhắc sử dụng một cái gì đó như fail2ban ([How-Tow] ( fail2ban.org/wiki/index.php/HOWTO_Mac_OS_X_Server_(10.5) ) không? đặt ra các quy tắc về thời gian chúng bị cấm, v.v ... Nó sẽ giúp bạn tránh bị hack. Và điều đó có thể hữu ích hơn sau đó nhận email cho mỗi lần đăng nhập.
boretom

Câu trả lời:


4

Bảo vệ tốt nhất của bạn là luôn luôn tắt các dịch vụ không cần thiết. Nếu bạn không sử dụng máy tính để bàn từ xa: hãy tắt nó đi. Nếu bạn không sử dụng máy chủ HTTP hoặc FTP: hãy tắt chúng đi. Càng ít dịch vụ chạy, càng ít điểm vào để những kẻ xâm nhập có thể khai thác.

Ngoài việc khóa nó, có một số sản phẩm nguồn mở và miễn phí thân thiện với OS X mà bạn có thể xem để thực hiện phát hiện xâm nhập trên máy của mình.

Khịt mũi

Mặc dù tôi không đích thân điều hành nó, nhưng tôi có những đồng nghiệp biết và tin tưởng nó để phát hiện xâm nhập. Nó tương thích với BSD nên nó phù hợp với OS X. Một ưu điểm khác của Snort là nó có sẵn dưới dạng gói Homebrew :

> brew info snort
snort 2.9.0.5
http://www.snort.org
Depends on: daq, libdnet, pcre
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/snort.rb

==> Caveats
For snort to be functional, you need to update the permissions for /dev/bpf*
so that they can be read by non-root users.  This can be done manually using:
    sudo chmod 644 /dev/bpf*
or you could create a startup item to do this for you.

Vì vậy, bạn có được một đường dẫn đơn giản để cài đặt và tin tưởng vào thực tế rằng nó chuyển tốt sang OS X và chạy ở đó. Với Homebrew được cài đặt, bạn chỉ cần làm:

> brew install snort

Và bạn đã sẵn sàng để bắt đầu với nó.

Hãy xem hướng dẫn thiết lập Snort cho OS X Lion Server mà cộng đồng Snort cung cấp để bắt đầu viết quy tắc cho máy OS X của bạn. Đó là một tài liệu tuyệt vời và, ngoài việc cài đặt Snort từ nguồn (mà bạn không cần phải làm), nó còn nói về tất cả những điều bạn nên làm trong phiên bản OS X Lion Server để giúp bảo vệ nó. Nếu bạn cài đặt qua Homebrew, hãy bắt đầu ở Phần 5 (trang 13) trong PDF vì bạn không cần phải lo lắng về việc cài đặt nó từ mã nguồn.

Bẫy ưu đãi

Tôi đã chạy Tripwire trên các máy linux để phát hiện và cảnh báo xâm nhập nhanh chóng. Nó hiệu quả nhưng nó là một chút của một con thú để thiết lập. Nó có thể thực hiện các hành động khi các quy tắc được khớp với các tệp nhật ký. Tất nhiên, một hacker thông thái sẽ biết cách vô hiệu hóa Tripwire ngay khi họ đột nhập để họ không kết thúc với phiên bị cắt.

Các cuộc đàm phán gợi ý MacWorld về thiết lập Tripwire trên OS X . Nó không đơn giản và bài báo kết thúc bằng việc đề cập rằng nó chưa được thử nghiệm.


Tường lửa thích ứng OS X Lion Server đã thực hiện một công việc tuyệt vời giúp mọi người tránh xa. Tripwire và Snort mang lại lợi ích gì cho tôi so với tường lửa tiêu chuẩn? Có đáng nỗ lực không?
bloudraak

1
Cả Tripwire hay Snort đều không có nghĩa là thay thế tường lửa. Chúng là hệ thống phát hiện xâm nhập. Họ sử dụng một loạt các cách tiếp cận khác nhau để theo dõi nhật ký hệ thống của bạn cho hoạt động đáng ngờ và có thể thực hiện hành động dựa trên kết quả giám sát như gửi email cho bạn hoặc tắt trình tiện ích từ xa hoặc đóng cổng mạng.
Ian C.

4

Bạn có thể làm cứng ssh và cài đặt denyhosts, sshguard và Snort, Barnyard, Base và Swatch.

Xem các liên kết này để biết chi tiết:

https://discussions.apple.com/thread35365485 https://discussions.apple.com/thread/4473229?tstart=0

  1. Tắt đăng nhập root và mật khẩu:

    vi /etc/sshd_config

    PermitRootLogin no
    PasswordAuthentication no
    ChallengeResponseAuthenticatio no

    Sau đó sử dụng ssh-keygentrên máy khách từ xa để tạo khóa chung / riêng có thể được sử dụng để đăng nhập từ xa vào máy chủ:  

    client$ ssh-keygen -t rsa -b 2048 -C client_name [Securely copy ~/.ssh/id_rsa.pub from client to server.] server$ cat id_rsa.pub > ~/.ssh/known_hosts  

  2. Cài đặt denyhosts và sshguard.

    • sudo port install denyhosts sshguard
    • sudo port load denyhosts
    • sudo port load sshguard

    Bạn có thể định cấu hình denyhost để chặn tất cả lưu lượng, không chỉ lưu lượng ssh.

  3. Snort, với một bản đồ thế giới về các cuộc tấn công:

    https://discussions.apple.com/thread/4473229?tstart=0


3

Để trực tiếp trả lời câu hỏi đặt ra. Tôi có một đoạn script khác gửi email cho tôi, một lần nữa, vào khoảng nửa đêm, nếu có ai đăng nhập thành công qua ssh.

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/secure.log | grep -E '(Accepted|SUCCEEDED)'| grep -E -v '(my.ip.address|192.168.1)' | grep "$dt" >> /tmp/access_granted

/usr/bin/mail -E -s "Access granted" email@myserver.com < /tmp/access_granted
rm /tmp/access_granted

Chỉnh sửa grepở trên để loại trừ IP cố định của riêng bạn, nếu bạn muốn và sử dụng địa chỉ email của bạn. Bạn có thể kết hợp một số mã trong câu trả lời khác của tôi để thêm thất bại cho VNC.


Tôi đã tạo tập lệnh để chạy theo lịch trình và tôi đang chờ email tấn.
bloudraak

Rắc rối với việc thực hiện hàng ngày là vào thời điểm bạn bắt được gió xâm nhập, thiệt hại có thể đã được thực hiện.
Ian C.

@Ian C. - đồng ý, nhưng bạn luôn có thể tăng tần suất của email. Ngoài ra, bạn phải có niềm tin vào các biện pháp phòng chống xâm nhập mà bạn thiết lập. Tôi có một mức độ tự tin rất hợp lý trong thiết lập Fail2ban của mình.
afragen

2

Để mở rộng một chút trên Fail2ban , một khi nó được thiết lập và chạy, tôi có một tập lệnh mà tôi chạy ngay trước nửa đêm để xóa các bản ghi và gửi email cho tôi những gì Fail2ban đã làm cho ngày hôm trước.

Kịch bản như sau và có thể được chạy từ cron hoặc plist launchd.

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/system.log | grep "$dt" | grep org.fail2ban | grep -v COMMAND > /tmp/fail2ban_deny
cat /var/log/fail2ban.log | grep -E '(WARN|ERR|rotation|target)' | grep `date $1 +%Y-%m-%d` >> /tmp/fail2ban_deny
cat /var/log/ipfw.log | grep TCP | grep "$dt" >> /tmp/fail2ban_deny
cat /var/log/secure.log | grep VNC | grep FAILED | grep "$dt" >> /tmp/fail2ban_deny


/usr/bin/mail -E -s "Fail2ban ipfw" email@yourserver.com < /tmp/fail2ban_deny
rm /tmp/fail2ban_deny

Bạn rõ ràng sẽ cần phải sử dụng địa chỉ email bạn chọn.

Thiết lập Fail2ban là một vấn đề hoàn toàn khác. Tôi đã viết nhiều về nó.


0

Việc cài đặt plugin PAM Google Authenticator trên Mac OS X khá đơn giản nếu bạn đã cài đặt trình biên dịch dòng mã X. Mã và hướng dẫn ở đây:

https://code.google.com.vn/p/google-authenticator/wiki/PamModuleIn thi

Khi bạn khởi tạo mã thông báo của mình (tạo mã bạn cung cấp cho ứng dụng trên điện thoại), bạn sẽ có hai yếu tố xác thực để bảo vệ máy của mình. Bất kỳ tài khoản nào không có mã thông báo khởi tạo sẽ không thể đăng nhập, vì vậy nếu bạn không muốn cho phép đăng nhập root, đừng khởi tạo khóa cho tài khoản đó.

Nhưng nghiêm túc, một cái gì đó như Denyhosts chỉ có ý nghĩa nếu bạn phải mở SSH trên internet. Thật không may, kể từ Mac OS X V10.8, Apple đã loại bỏ hỗ trợ tcpwrappers khỏi trình nền SSH, do đó, nó bỏ qua /etc/deny.hosts, đó là một động thái ngu ngốc, nếu bạn hỏi tôi, loại bỏ tính năng bảo mật.

Để giải quyết vấn đề đó, tôi đã sử dụng MacPorts để cài đặt một daemon openssh cập nhật và khôi phục chức năng tcpwrappers đầy đủ, chỉnh sửa và sử dụng daemon Denyhost để theo dõi /var/log/system.log và cấm IP đang đoán đăng nhập và mật khẩu . Và đừng quên cập nhật MacPorts và kiểm tra / cài đặt lại openssh / Denyhost mỗi khi bạn nâng cấp HĐH.

Chúc may mắn!


0

Tôi nhận ra rằng đây là một bài viết cũ nhưng tôi nghĩ rằng điều này có thể giúp ai đó không thể lập trình hoặc tiết kiệm thời gian để họ lướt web. Tôi vừa viết bài này vào giờ nghỉ trưa và nó sẽ gửi email các lần thử thành công và thất bại cũng như các IP bị chặn thông qua các lần thử thất bại. Chương trình được viết bằng Ruby. Sendmail được cài đặt cùng với đá quý mail và đuôi tệp.

Mã nguồn dưới đây:

#!/usr/local/bin/ruby

require 'mail'
require 'file-tail'

def sendMail(mail_subject,mail_body,dest_email,port)
  Mail.defaults do
    delivery_method :smtp, address: "localhost", port: port
  end

  mail = Mail.new do
    from     'root@localhost.com'
    to        dest_email
    subject   mail_subject
    body      mail_body
  end

  mail.delivery_method :sendmail
  mail.deliver
end

File.open('/var/log/auth.log') do |log|
  log.extend(File::Tail)
  log.interval = 10
  log.backward(1)
  log.tail do |line| 
    puts line if line.match(/ssh.*accepted password.*$/i)
    sendMail('New SSH Connection',line,'youremail@gmail.com',445) if line.match(/ssh.*accepted password.*$/i)

    puts line if line.match(/ssh.*failed password.*$/i)
    sendMail('Failed SSH attempt',line,'youremail@gmail.com',445) if line.match(/ssh.*failed password.*$/i)

    puts line if line.match(/sshguard.*$/i)
    sendMail('SSH IP Blocked', line,'youremail@gmail.com',445) if line.match(/sshguard.*$/i)
  end
end
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.