Làm thế nào để bảo vệ máy chủ SSH của bạn với Fail2Ban [Linux / Ubuntu]
SSH là một công cụ tốt để bạn truy cập từ xa vào máy tính / máy chủ của bạn và thực hiện các thay đổi đối với nó như thể bạn đang ở phía trước máy tính. Nếu bạn có máy chủ SSH, chúng tôi đã chỉ cho bạn cách tạo và sử dụng khóa công khai / riêng tư để bạn có thể kết nối với máy chủ từ xa một cách an toàn, nhưng điều đó không có nghĩa là máy chủ SSH của bạn an toàn. Ngược lại, hầu hết các máy chủ SSH đều dễ bị tấn công bạo lực và nếu bạn không chú ý, tin tặc có thể dễ dàng xâm nhập vào máy chủ của bạn và tiêu diệt / đánh cắp mọi thứ bạn có.
Fail2Ban là một công cụ đơn giản nhưng hữu ích có thể giám sát máy chủ của bạn khỏi tấn công độc hại và chặn chúng trước khi chúng có thể tàn phá.
Cài đặt
Fail2Ban có sẵn trong kho lưu trữ Ubuntu, vì vậy bạn có thể dễ dàng cài đặt bằng lệnh:
sudo apt-get cài đặt fail2ban
Đối với người dùng Red Hat hoặc Centos, bạn có thể cài đặt Fail2Ban qua kho EPEL.
Khi bạn đã cài đặt Fail2Ban, bước tiếp theo là di chuyển tệp cấu hình vào một thư mục cục bộ, do đó bạn sẽ không vô tình thay đổi tệp cấu hình chính.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Cấu hình
Sau khi cài đặt, Fail2Ban sẽ tự động bắt đầu giám sát máy chủ của bạn để tìm ra các tấn công nguy hiểm. Trong hầu hết các trường hợp, cài đặt mặc định là đủ để bảo vệ trang web của bạn, nhưng nếu bạn có một số cấu hình máy chủ tùy chỉnh (như cổng khác nhau để truy cập SSH) hoặc muốn bật các dịch vụ khác, dưới đây là cách bạn có thể thực hiện:
sudo nano /etc/fail2ban/jail.local
Tệp cấu hình được chia thành các phần khác nhau. Việc đầu tiên mà bạn sẽ gặp phải là [DEFAULT].
[DEFAULT] # "ignoreip" có thể là địa chỉ IP, mặt nạ CIDR hoặc máy chủ DNS ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 # "backend" chỉ định phần phụ trợ được sử dụng để sửa đổi tệp. Có sẵn # tùy chọn là "gamin", "polling" và "auto". # yoh: Vì lý do nào đó Debian đã chuyển python-gamin không hoạt động như mong đợi # Vấn đề này còn lại ToDo, do đó, bỏ phiếu là phần phụ trợ mặc định cho backend = auto # # Địa chỉ email đích chỉ dùng cho nội suy trong # jail. {conf, các tệp cấu hình cục bộ}. destemail = root @ localhost
Vài tham số mà bạn cần lưu ý ở đây là ignoreip
, bantime
và maxretry
.
- ignoreip - đây là nơi bạn đưa vào danh sách trắng IP mà bạn không muốn chặn. Mặc định là localhost (127.0.0.1/8). Bạn có thể thêm các IP bổ sung vào trường, tách từng IP với một khoảng trắng.
- bantime - đây là lượng thời gian tính bằng giây để chặn IP truy cập vào máy chủ của bạn. Mặc định là 10 phút (600 giây)
- maxretry -this là số lần đăng nhập thất bại trước khi IP bị chặn.
Ngoài ra còn có trường destemail
nơi bạn có thể chỉ định một địa chỉ email cho nó để thông báo nơi phát hiện một cuộc tấn công độc hại. Một điều cần lưu ý là điều này sẽ chỉ hoạt động nếu bạn đã cài đặt máy chủ thư.
Phần tiếp theo là "Hành động".
# ACTIONS # # Hành động cấm mặc định (ví dụ iptables, iptables-new, # iptables-multiport, shorewall, vv) Nó được sử dụng để định nghĩa các biến # action_ *. Có thể được ghi đè trên toàn cầu hoặc mỗi phần trong tệp jail.local file banaction = iptables-multiport # email. Kể từ 0.8.1 ngược dòng fail2ban sử dụng sendmail # MTA cho việc gửi thư. Thay đổi thông số cấu hình mta thành thư # nếu bạn muốn hoàn nguyên về 'thư' thông thường. mta = sendmail # Giao thức giao thức mặc định = tcp # Chỉ định chuỗi nơi các bước nhảy sẽ cần phải được thêm vào trong iptables- * actions chain = INPUT # # Phím tắt hành động. Để được sử dụng để xác định tham số hành động # Hành động đơn giản nhất cần thực hiện: lệnh cấm chỉ action_ =% (banaction) s [name =% (__ name __) s, port = "% (port) s", protocol = "% (protocol) s ", chain ="% (chain) s "] # ban & gửi e-mail với whois báo cáo đến destemail. action_mw =% (banaction) s [name =% (__ name __) s, port = "% (port) s", giao thức = "% (giao thức) s", chain = "% (chuỗi) s"]% (mta) s-whois [name =% (__ tên __) s, dest = "% (destemail) s", giao thức = "% (giao thức) s", chuỗi = "% (chuỗi) s"] # cấm và gửi e-mail với báo cáo whois và các dòng nhật ký có liên quan # đến destemail. action_mwl =% (banaction) s [tên =% (__ tên __) s, cổng = "% (cổng) s", giao thức = "% (giao thức) s", chuỗi = "% (chuỗi) s"]% (mta) s-whois-lines [name =% (__ name __) s, dest = "% (destemail) s", logpath =% (logpath) s, chain = "% (chuỗi) s"] # Chọn hành động mặc định. Để thay đổi, chỉ ghi đè giá trị của 'action' với nội suy # vào shortcut hành động đã chọn (ví dụ action_mw, action_mwl, v.v.) trong jail.local # global (section [DEFAULT]) hoặc cho mỗi phần action =% (action_) s
Hầu hết các thiết lập ở đây có thể được mặc định trừ khi bạn muốn thay đổi lệnh banaction
và protocol
. "Banaction" mặc định là thông qua IPTable. Bạn có thể làm cho nó sử dụng cài đặt đa cổng hoặc tạo một IpTable mới cho việc này. Giá trị mặc định cho "giao thức" là tcp, nhưng bạn có thể thay đổi nó thành udp, tùy thuộc vào kết nối bạn đang sử dụng.
Phần cuối của phần “Jail” nơi bạn có thể cấu hình Fail2Ban để giám sát máy chủ Apache, máy chủ FTP, máy chủ thư và máy chủ DNS của bạn.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Trong hầu hết các trường hợp, bạn chỉ cần thay đổi cài đặt “ enabled = false ” thành “ enabled = true ” và nó sẽ được kích hoạt cho dịch vụ đó. Nếu bạn không sử dụng cổng thông thường 20 cho SSH, bạn cũng có thể thay đổi số cổng trong cài đặt ở trên.
Khi bạn đã hoàn thành xong cấu hình, nhấn “Ctrl + o” để lưu và “ctrl + x” để thoát.
Cuối cùng, khởi động lại dịch vụ Fail2Ban bằng lệnh:
dịch vụ sudo fail2ban khởi động lại
Bạn sử dụng những cách nào khác để bảo vệ máy chủ SSH của mình?