Máy chủ của tôi liên tục bị tấn công [đóng]


32

Tôi còn khá mới với thế giới quản trị hệ thống. Gần đây tôi đã làm việc trên một ứng dụng và khi tôi kiểm tra nhật ký máy chủ ứng dụng của mình, tôi liên tục nhận được nhiều địa chỉ IP khác nhau cố gắng ssh vào máy chủ của mình bằng vũ lực. Đây là một ví dụ về nhật ký máy chủ của tôi:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Đây có phải là một cái gì đó khá bình thường, hoặc tôi nên lo lắng / làm điều gì đó về nó?


3
Hãy thử thay đổi số cổng và xem nếu nó vẫn tồn tại. Nếu họ không nhắm mục tiêu bạn cụ thể, nó có thể sẽ không.
goldilocks

13
Giải pháp tốt nhất là vô hiệu hóa xác thực mật khẩu trên SSH, vì điều đó chắc chắn sẽ ngăn chặn các cuộc tấn công vũ phu!
Willem


3
@Willem - không, vô hiệu hóa xác thực mật khẩu sẽ KHÔNG dừng các cuộc tấn công. Nó sẽ chỉ khiến họ không thành công (những kẻ tấn công sẽ không nhận ra rằng xác thực mật khẩu đã bị vô hiệu hóa và sẽ tiếp tục thử).
Martin Vegter 17/2/2015

Câu trả lời:


59

Chào mừng bạn đến với thế giới tuyệt vời của Internet ... Bạn có:

Nhưng câu trả lời thực sự là: Có, điều này là bình thường : BotNet Maffia luôn có thể sử dụng thêm một vài máy chủ được bảo vệ kém ...


1
Tôi thích không có SSH trong Internet hoang dã, hoang dã. +1
Rui F Ribeiro

2
Bên cạnh việc thay đổi cổng mặc định cho ssh, chúng tôi cũng có cổng gõ .
Pablo A

15

Nó là khá bình thường để có đăng nhập thử đủ để tạo một nhật ký ngập lụt.

Thay đổi các cổng SSH là một loại giải pháp 'bảo mật bằng cách tối nghĩa', nhưng nó giúp chống lại lũ lụt. Tôi nhấn mạnh nó không thanh lịch lắm; có các cổng thực tế cho các dịch vụ vì một lý do.

Vì nó phải được bật theo mặc định, nhưng đảm bảo bạn không thể SSH vào máy chủ của mình dưới quyền root. Đó là tên người dùng khá nhất quán giữa các máy chủ và do đó, mục tiêu chính cho các nỗ lực đăng nhập bằng mật khẩu. Thực thi cài đặt với dòng sau trong sshd_config:

PermitRootLogin no

Cũng nhìn vào fail2banđó theo dõi nhật ký sshd cho người phạm tội lặp lại. Chẳng hạn, 5 lần đăng nhập thất bại trong 3 phút từ một IP nhất định sẽ khiến IP đó bị chặn trong 10 phút. Tôi đã tăng thời gian cấm đó lên 24 giờ để tiếp tục giảm spam đăng nhập - thành công. :)


1
cài đặt apt-get fail2ban sẽ giúp bạn cơ bản được bảo hiểm
Willem

7
"Tôi đã tăng thời gian cấm đó lên 24 giờ để tiếp tục giảm spam đăng nhập" Hãy tin tôi. Trừ khi bạn có quyền truy cập vật lý vào máy chủ, một ngày nào đó bạn sẽ vô cùng hối hận. ;)
Daniel

8

Tôi sẽ đề nghị bạn làm một vài điều:

  1. Thay đổi cổng ssh đang lắng nghe (thành thứ gì đó vượt quá 1024) và đảm bảo bạn không sử dụng phiên bản 1 của giao thức:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Ngay lập tức fail2ban- nó giám sát các tệp nhật ký và tạm thời hoặc liên tục cấm các địa chỉ dễ bị lỗi bằng cách cập nhật các quy tắc tường lửa hiện có ( iptables).

  2. Hãy chắc chắn rằng bạn liệt kê trắng các địa điểm đáng tin cậy của bạn.


7

Vâng, hãy lo lắng . Bạn có thể không bao giờ bị nám, nhưng bạn nên tuân theo thực tiễn tốt nhất về CNTT. Cẩn tắc vô ưu.

Tôi là quản trị viên mạng tại bệnh viện. Luôn luôn là một ý tưởng tồi để kết nối một hộp trực tiếp với internet. Những gì bạn đang thấy là tất cả hàng ngàn máy quét tự động quét tìm lỗ hổng trên internet. Tôi thấy những thứ này và tất cả mọi thứ (quét cổng, kiểm tra lỗ hổng đã biết khác nhau) cho tất cả các loại phần mềm (ssh, telnet, ftp, v.v.) hiển thị trên hộp ids của chúng tôi
Máy của bạn phải nằm sau một giải pháp tường lửa / NAT và bạn chỉ nên chuyển tiếp các cổng cần thiết vào internet (80, 443, v.v.). Nó tương đối dễ làm.
Có thứ gì đó bạn có thể sử dụng cho Manageemnt (SSH telnet) là một ý tưởng tồi khi đối mặt với internet vì nếu - vì bất kỳ lý do gì - có lỗi trong phần mềm SSH / telnet trên máy chủ đó, bot tự động sẽ phát hiện ra nó trong tích tắc và bạn sẽ bị lừa. Lỗi trong phần mềm xảy ra mọi lúc và có thể mất một lúc để một bản vá được phát hành hoặc để bạn nhớ vá nó.

Nếu bạn cần quản lý từ xa, hãy xem xét việc thiết lập một cái gì đó như giải pháp VPN hoặc nếu bạn sử dụng Windows, hãy thiết lập cổng dịch vụ đầu cuối cho máy tính để bàn từ xa. Tôi biết bạn có thể sử dụng một hộp Linux hoặc Windows riêng biệt có 2 NIC để thiết lập định tuyến và truy cập từ xa cho VPN và NAT nếu bạn chỉ là một cửa hàng nhỏ. Mặt khác, các nhà cung cấp như Cisco có các giải pháp tường lửa / NAT phần cứng (Cisco ASA).

Tóm lại, đặt máy của bạn phía sau NAT. Chỉ cổng chuyển tiếp các cổng cần thiết để chạy mục đích của dịch vụ. Không chuyển tiếp các dịch vụ được sử dụng để quản lý internet, thay vào đó hãy xem xét VPN để quản lý từ xa.

PS Thay đổi cổng SSH có thể giúp với khối lượng nhật ký nhưng thực tế nó không ngăn được quyền truy cập vào SSH. Bất kỳ một trong số hàng ngàn công cụ tìm lỗ hổng tự động có thể và sẽ thực hiện quét cổng để xem cổng nào đang lắng nghe dịch vụ gì. Bạn có thể tự làm điều đó với một công cụ gọi là nmap .


7
Trên thực tế, một giải pháp VPN không an toàn hơn hoặc kém hơn máy chủ SSH. Cả hai đều dựa vào các giao thức mật mã được thực hiện chính xác và các dịch vụ được cấu hình đúng. Thông qua các phương tiện khác nhau, tôi sẽ nói rằng họ cung cấp chính xác cùng một mức độ bảo mật. Sau đó, nếu tôi hiểu rõ về bạn, bạn đặt SSH phía sau VPN, thì có, đó là một cấp độ an toàn hơn.
lgeorget 14/2/2015

Vâng, bạn đúng, đó là những gì tôi muốn nói, hãy sử dụng vpn để vượt qua tường lửa / nat sau đó ssh vào máy chủ
người

1
fwiw hầu hết các thiết lập VPN đều trải qua một số lớp xác thực ứng dụng khách cũng như cung cấp lưu lượng truy cập bên ngoài một điểm có thể tiếp cận mạng nội bộ. Versus có nhiều nút. Các bộ tập trung VPN cũng thường không phải là mục tiêu thú vị, so với máy chủ có thể là sshdví dụ. Một jumpbox ssh thể an toàn như hầu hết các cấu hình VPN, nhưng nói chung, đó không phải là cách nó hoạt động.
Bratchley 15/2/2015

5

Bạn có thể cấu hình tường lửa nội bộ của kernel bằng iptables . Vì vậy, chỉ có một vài máy có thể ssh đến máy chủ của bạn và để các gói IP khác giảm xuống. Xem man iptablesđể biết thêm thông tin.

Ví dụ: nếu 192.168.1.67 là máy chủ bạn ssh từ đó, thì trên loại máy chủ:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
Hãy lưu ý rằng bạn sẽ bị sai lầm nghiêm trọng nếu quản lý từ xa là lựa chọn duy nhất của bạn. Hầu hết IP chỉ là bán cố định. Thay đổi phần cứng và bạn sẽ bị đốt cháy.
Cột

3

Bạn có thực sự cần máy chủ của bạn trên internet? Nếu bạn thực sự muốn có nó trên internet thì hãy chắc chắn rằng nó an toàn trước khi bạn đặt nó ở đó.

Thay đổi cổng chỉ là bảo mật thông qua tối nghĩa. Nếu kẻ tấn công của bạn tinh vi hơn là chỉ chạy các kịch bản thì nó sẽ không giúp ích gì.

Một vài điều đã được đề cập mà tôi cũng đề nghị:

  1. Tôi đồng ý với Fail2Ban và cấu hình đúng sẽ giữ cho các tập lệnh và các tin tặc tinh vi nhất hoạt động.
  2. Đặt PermitRootLogin thành không là bắt buộc.
  3. Cấu hình tường lửa. Tôi thường chỉ đơn giản là chỉnh sửa các quy tắc iptables, nhưng một số thứ như UFW hoặc firehol cũng sẽ hoạt động.

Tôi mới tham gia cộng đồng này vì có hai điều mà tôi không nghĩ đã được giải quyết thỏa đáng.

  • Trong khối cấu hình tường lửa / vô hiệu hóa hoàn toàn mọi thứ không hoàn toàn cần thiết. Trước khi bạn mở bất kỳ cổng nào, hãy tự hỏi: "Tôi có thực sự cần dịch vụ này từ internet không?" Mỗi cổng / dịch vụ mà bạn mở trở thành một véc tơ tiềm năng khác mà ai đó có thể khai thác. Nếu có một lỗi trong dịch vụ đó cho phép họ có quyền truy cập root vào máy chủ, họ có thể có thể truy cập mọi thứ trên đó. Bảo mật của bạn chỉ mạnh bằng liên kết yếu nhất.
  • Bây giờ cho điều cuối cùng và được cho là quan trọng nhất. Các tập lệnh mà bạn đã thấy khi cố gắng truy cập ssh có thể đoán được mật khẩu của bạn theo thời gian. Fail2Ban sẽ làm họ chậm lại rất nhiều, nhưng họ vẫn có thể đoán được. Nếu họ làm như vậy, bạn muốn xác thực 2 yếu tố trên các dịch vụ có thể truy cập. Vì vậy, tôi đề xuất một tài khoản miễn phí với Duo Security. https://www.duosecurity.com/docs/duounix

1
Thay đổi cổng có lợi thế là làm sạch các tệp nhật ký: vì các kiddies script hầu như không tấn công các cổng không mặc định, bạn biết rằng bất kỳ mục nhật ký nào cũng thể hiện mối đe dọa nghiêm trọng.
Đánh dấu

Thay đổi cổng cũng không hoàn toàn sử dụng chống lại mối đe dọa thực sự. Một cú va chạm tốc độ không phải là một bức tường, nhưng nó vẫn là một cú va chạm tốc độ, và có nhiều cách bạn có thể biến điều này thành một cú va chạm tốc độ lớn hơn một chút. Ngoài ra, trong khi xác thực 2 yếu tố chắc chắn là một ý tưởng tốt để sử dụng bất cứ khi nào có thể, và hầu như luôn luôn có thể, có những trường hợp cạnh. Nếu có một lượng thời gian tối thiểu cụ thể, bạn có thể khá chắc chắn Fail2Ban sẽ trì hoãn chúng, sau đó chỉ cần thay đổi mật khẩu của bạn thường xuyên hơn sẽ khiến chúng bắt đầu lại nhiều lần và không bao giờ kết thúc.
Matthew Najmon

2

Một ví dụ khác cho câu trả lời @cff, nếu bạn có ý định cấm bất kỳ "lần thử" liên tiếp nào trên máy chủ SSH của mình:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Cái này 'thẻ' cố gắng kết nối và nếu hơn 4 xảy ra trong 600 giây (10mn), thì nguồn gốc là 'bị cấm'. Sử dụng giải pháp này thay cho giải pháp @cff vì nó an toàn hơn (nếu bạn tự khóa, hãy đợi 10mn và thử lại).

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.