Mẹo bảo vệ máy chủ Linux của bạn khỏi các cuộc tấn công từ bên ngoài

Tôi đoán những người lái xe Máy chủ Linux biết và biết về từ chốiHOSTS y Fail2ban. Đối với những người không biết anh ấy, tôi sẽ giải thích một chút về hai cái này ứng dụng.

John Fredy Perez là một trong những người chiến thắng của cuộc thi hàng tuần của chúng tôi: «Chia sẻ những gì bạn biết về Linux«. Xin chúc mừng! Lo lắng về tham gia và đóng góp của bạn cho cộng đồng, cũng như John?

Chúng tôi sẽ cài đặt và cấu hình hai ứng dụng này để tránh những cơn đau đầu về sau. Trước hết, chúng tôi sẽ giải thích hai ứng dụng này là gì và chức năng của chúng là gì:

Fail2Ban

Nó là một công cụ phân tích nhật ký tìm kiếm các nỗ lực đăng ký thất bại và chặn IP mà từ đó những nỗ lực này xảy ra. Nó được phân phối theo giấy phép GNU và thường hoạt động trên tất cả các hệ thống có giao diện với hệ thống kiểm soát tấn công hoặc tường lửa cục bộ.

Fail2Ban có cấu hình tuyệt vời và cũng có thể tạo quy tắc cho các chương trình
sở hữu hoặc các bên thứ ba.

từ chốiHOSTS

Nó là một công cụ bảo mật được viết bằng python để giám sát nhật ký máy chủ truy cập để ngăn chặn các cuộc tấn công brute force vào máy chủ ảo. Chương trình hoạt động bằng cách cấm các địa chỉ IP vượt quá một số lần kết nối thất bại nhất định.

Các ứng dụng Linux này - DenyHosts và Fail2ban - có thể được sử dụng riêng biệt hoặc cùng nhau. Trong trường hợp của tôi, tôi có cả hai làm việc cùng nhau.

Việc cài đặt và cấu hình từng cái phụ thuộc vào bản phân phối bạn sử dụng. Bài đăng này hướng tới CentOS 6.3, mặc dù sự khác biệt giữa các bản phân phối khác không được đánh dấu nhiều.

Vậy thì, hãy bắt tay vào việc.

Cài đặt và cấu hình Fail2Ban

Ứng dụng này tạo ra các quy tắc động trong chính tường lửa Linux và chịu trách nhiệm tạo các quy tắc trực tiếp trong IpTables.

Cài đặt

Để cài đặt:

yum cài đặt fail2ban 

Nếu gói không xuất hiện, chúng ta phải thêm kho lưu trữ cần thiết:

vòng/phút -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-7.noarch.rpm

Với điều này, bạn nên bắt đầu cài đặt ứng dụng cùng với các phụ thuộc của nó.

Bây giờ chúng ta phải cấu hình Fail2Ban để phân tích nhật ký chúng ta muốn và chặn
IP, gửi thông báo qua e-mail. Đối với điều này, chúng tôi phải sửa đổi tệp jail.conf mà chúng tôi tìm thấy trong / etc / fail2ban

cd / etc / fail2ban
nanojail.conf

Những điều sau phải được thực hiện trong tệp này:

  • Modify là giá trị bantime, giá trị này xác định thời gian tính bằng giây mà IP của kẻ tấn công sẽ bị chặn, theo mặc định giá trị tính bằng 600 giây.
  • Tìm giá trị tối đa sẽ là số lần IP có thể xác thực không thành công trước khi bị chặn.
  • Thêm ip của chúng tôi trong tham số ignoreip. Ở đây ứng dụng sẽ bỏ qua các IP đã xác thực của chúng ta trong tham số đó.
[MẶC ĐỊNH]
# "ignoreip" có thể là địa chỉ IP, mặt nạ CIDR hoặc máy chủ DNS. Fail2ban sẽ không
# cấm máy chủ phù hợp với địa chỉ trong danh sách này. Một số địa chỉ có thể được
# được xác định bằng dấu cách.
bỏ qua = 127.0.0.1

# "bantime" là số giây máy chủ bị cấm.
thời gian ban ngày = 600

# Máy chủ bị cấm nếu nó đã tạo ra "maxretry" trong "thời gian tìm kiếm" cuối cùng
# giây.
thời gian tìm thấy = 600

# "maxretry" là số lần thất bại trước khi máy chủ bị cấm.
thử lại tối đa = 3

Một ví dụ về cách nó có thể trông như sau:

bỏ qua = 127.0.0.1 190.25.242.75 192.168.1.0/24
thời gian ban ngày = 800
thử lại tối đa = 2

Định cấu hình Fail2Ban và SSH

Để tìm kiếm các lần đăng nhập SSH không thành công, chúng tôi sửa đổi tệp cho đến khi tệp trông giống như sau:

[ssh-iptables] 
đã kích hoạt = true
bộ lọc = sshd
action = iptables [name = SSH, port = 22, protocol = tcp] sendmail-whois [name = SSH, dest=FredySnake@outlook.com, sender = fail2ban @ localhost] logpath = / var / log / secure # Đây là nhật ký sẽ phân tích cú pháp fail2ban
maxretry = 3 # bất kỳ IP nào có từ ba lần thử không thành công trở lên sẽ bị chặn.
bantime = 86400 # thời gian cấm 24 giờ tính bằng giây

Đừng quên rằng nếu bạn sửa đổi cổng nơi SSH lắng nghe, bạn cũng phải sửa đổi tham số cổng.

Ứng dụng này không chỉ hoạt động để truy cập trái phép vào SSH, mà còn cho apache, để đọc nhật ký Asterisk, v.v.

Cài đặt và cấu hình DenyHOSTS

Hoạt động của nó dựa trên việc sử dụng tệp /etc/hosts.deny, nghĩa là, để chặn địa chỉ của các máy chủ “tấn công”, tạo danh sách các máy chủ bị từ chối.

Có thể lấy cài đặt từ kho lưu trữ bằng lệnh sau:

yum cài đặt từ chối 

Tệp cấu hình nằm trong /etc/denyhosts.conf

Trước khi tiếp tục, vì là con người, chúng ta có thể mắc lỗi và thực hiện "Lớp 8" điển hình khi truy cập bất kỳ dịch vụ nào và tự chặn. Để tránh điều đó, chúng tôi chỉnh sửa tệp /etc/hosts.allow và thêm IP của các máy mà chúng tôi không muốn bị hạn chế do lỗi truy cập.

Sửa đổi tệp allowhosts.conf

Để không đi quá xa trong cài đặt, trong tệp này, chúng tôi sẽ chỉ chỉnh sửa và bỏ ghi chú một số tham số. Đó là:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 1 giờ
SYNC_UPLOAD = có
SYNC_DOWNLOAD = có
SYNC_DOWNLOAD_THRESHOLD = 3
SYNC_DOWNLOAD_RESILIENCY = 5 giờ

Do đó, chúng tôi thực tế sẽ để một cấu hình theo mặc định, nhưng có khả năng bảo mật cao chống lại các cuộc tấn công SSH.

nano /etc/hosts.allow

Ví dụ:

sshd:127.0.0.1 
sshd:192.168.1.10
sshd: 192.168.0. *

Sau đó, chúng tôi khởi động lại dịch vụ:

/etc/init.d/denyhosts khởi động lại

Với điều này, chúng tôi cấp quyền cho một IP, một dải IP và tất nhiên cho giao diện loopback của chúng tôi. Một cái gì đó mà tôi chưa thử - do đó tôi không biết liệu nó có hoạt động hay không - là thêm DNS vào tệp này; nghĩa là với các dịch vụ như DynDNS. Nếu tôi làm vậy, tôi sẽ cho bạn biết nó đã diễn ra như thế nào.

Với một số tùy chọn và điều chỉnh nhất định, chúng tôi cũng sẽ đảm bảo rằng sau khoảng thời gian mà chúng tôi chỉ ra trong cấu hình DenyHOSTS, các địa chỉ được lưu trữ sẽ được làm sạch và chúng được cập nhật với các danh sách khác do người khác thực hiện - nếu chúng tôi chỉ ra điều đó - cấp quyền truy cập máy chủ của DenyHOSTS.

Để thỉnh thoảng xóa các địa chỉ được lưu trữ, như đã định cấu hình, daemon phải được chạy với tham số –purge:

/etc/init.d/denyhosts bắt đầu --purge

Ngoài điều này, chúng tôi phải bao gồm nó khi bắt đầu hệ thống:

chkconfig từ chối trên

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.