Sunday, 4 Mar 2018
kinh nghiệm

Cài đặt Fail2Ban bảo vệ SSH trên VPS CentOS 6

Hướng dẫn cài đặt bảo vệ ssh với fail2ban trên VPS Centos 6

Fail2Ban:

Để kết nối với VPS centos6 chúng ta thường sử dụng port 22 mặc định của vps. Đó là một lỗ hỏng cho hacker tấn công vps chúng ta bằng các hình thức như: scan open port , brute force. Fail2ban là cách chúng ta bảo vệ VPS trước những mỗi nguy hiểm đó. Chương trình này hoạt động bằng cách quét các file log và phản ứng trước những hành động lặp đi lặp lại của những lần đăng nhập thất bại từ hacker. 

Giải pháp để chúng ta chấm dứt tình trạng scan open port ssh , là sử dụng công cụ Fail2Ban để tự động block IP khi VPS Centos 6 bị tấn công của hacker.

Bước một -Cài đặt Fail2Ban :

Công cụ Fail2Ban không có sẵn trong thư viện của Centos , chúng ta nên bắt đầu bằng cách tải về các kho lưu trữ EPEL :

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Cài đặt Fail2ban :

yum install fail2ban

Bước Hai Sao chép tập tin cấu hình Fail2Ban:

Các tập tin cấu hình fail2ban mặc định là ở trong thư mục /etc/fail2ban/jail.conf . Công việc cấu hình không nên thực hiện trong tập tin đó, chúng ta nên thay tạo một bản sao cho nó.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Sau khi tập tin được sao chép, bạn có thể thay đổi cấu hình trong tập tin jail.local mới.Nhiều dịch vụ bảo vệ đã được cấu hình mặc định trong file này rồi . bạn có thể chỉnh sữa lại cho phù hợp với như cầu

Bước Ba-Cấu hình cho Jail.Local

Mở file cấu hình fail2ban mới:

nano /etc/fail2ban/jail.local

Nếu bạn muốn thiết lập bảo vệ cho VPS theo cách riêng của bạn, bạn có thể tùy chỉnh các chi tiết trong tập tin .

Bạn có thể cấu hình mặc định như dưới đây.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3
  1. ignoreip: không block những địa chỉ này, thường địa chỉ IP ở VN là địa chỉ động, nên chúng ta không sử dụng được option này. Các IP cách nhau bằng khoản trống
  2. bantime: khoảng thời gian block IP .Tính bằng giây
  3. findtime: khoảng thời gian một IP phải login thành công. Tính bằng giây
  4. maxretry: số lần login false tối đa cho phép

Bước Bốn -Configure ssh-iptables Mục trong Jail.Local

Các chi tiết SSH bên dưới là một phần cấu hình, và nó đã được thiết lập mặc định là bật ” TRUE “. Bạn không cần phải thực hiện bất kỳ thay nào đổi trong phần này, bạn có thể tìm thấy những thông tin chi tiết  dưới đây.

nano /etc/fail2ban/jail.local

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5
  1. Enabled = true là để mở cấu hình bảo vệ SSH của VPS . “false” là tắt cấu hình bảo vệ SSH trên Centos
  2. filter: giữ mặc định để sử dụng file cấu hình /etc/fail2ban/filter.d/sshd.conf
  3. action: fail2ban sẽ ban địa chỉ IP nếu match filter /etc/fail2ban/action.d/iptables.conf. Nếu bạn đã thay đổi port ssh, hãy sửa đoạn port=ssh bằng port mới, ví dụ
    iptables[name=SSH, port=30000, protocol=tcp]
  4. logpath: đường dẫn file log fail2ban sử dụng để theo dõi
  5. maxretry: số lần login false tối đa cho phép

Nếu bạn thiết lập một mail server trên VPS của bạn, Fail2Ban có thể gửi email cho bạn khi nó cấm một địa chỉ IP.

Trong trường hợp mặc định, sendmail-whois được đặt tại /etc/fail2ban/action.d/sendmail-whois.conf

Bước Năm – Khởi động lại Fail2Ban

chkconfig --level 23 fail2ban on
service fail2ban restart

Cuối cùng checking iptables xem đã có rule của Fail2Ban chưa:

iptables -L

 

Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

Bước Sáu – Theo dõi SSH login :

Bạn có thể sử dụng lệnh sau để biết được VPS/Server đã từng bị tấn công SSH chưa:

cat /var/log/secure | grep 'Failed password' | sort | uniq -c

Kết quả sẽ giống như bên dưới :

1 Aug 19 14:18:42 vultr sshd[24424]: Failed password for root from 61.160.223.66 port 1283 ssh2
 1 Aug 19 14:18:45 vultr sshd[24424]: Failed password for root from 61.160.223.66 port 1283 ssh2
 1 Aug 19 14:18:47 vultr sshd[24424]: Failed password for root from 61.160.223.66 port 1283 ssh2
 1 Aug 19 14:18:57 vultr sshd[24426]: Failed password for root from 61.160.223.66 port 1388 ssh2
 1 Aug 19 14:18:59 vultr sshd[24426]: Failed password for root from 61.160.223.66 port 1388 ssh2
 1 Aug 19 14:19:02 vultr sshd[24426]: Failed password for root from 61.160.223.66 port 1388 ssh2
 1 Aug 19 14:19:03 vultr sshd[24426]: Failed password for root from 61.160.223.66 port 1388 ssh2
 1 Aug 19 14:19:05 vultr sshd[24426]: Failed password for root from 61.160.223.66 port 1388 ssh2
 1 Aug 19 14:19:08 vultr sshd[24485]: Failed password for root from 61.160.223.66 port 1536 ssh2
 1 Aug 19 14:19:10 vultr sshd[24485]: Failed password for root from 61.160.223.66 port 1536 ssh2
 1 Aug 19 14:19:12 vultr sshd[24485]: Failed password for root from 61.160.223.66 port 1536 ssh2
 1 Aug 19 14:19:14 vultr sshd[24485]: Failed password for root from 61.160.223.66 port 1536 ssh2
 1 Aug 19 14:19:16 vultr sshd[24485]: Failed password for root from 61.160.223.66 port 1536 ssh2
 1 Aug 19 14:19:29 vultr sshd[24490]: Failed password for root from 61.160.223.66 port 1629 ssh2
 1 Aug 19 14:19:31 vultr sshd[24490]: Failed password for root from 61.160.223.66 port 1629 ssh2
 1 Aug 19 14:19:34 vultr sshd[24490]: Failed password for root from 61.160.223.66 port 1629 ssh2
 1 Aug 19 14:19:36 vultr sshd[24490]: Failed password for root from 61.160.223.66 port 1629 ssh2
 1 Aug 19 14:19:38 vultr sshd[24490]: Failed password for root from 61.160.223.66 port 1629 ssh2

Để xem IP đã bị bans bởi Fail2Ban bạn sử dụng lệnh sau :

fail2ban-client status ssh-iptables

Kết quả sẽ giống như bên dưới :

Status for the jail: ssh-iptables
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     3
|  `- File list:        /var/log/secure
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   103.207.199.237

Để xóa IP khỏi danh sách bans của Fail2ban , bạn sử dụng lệnh sau:

fail2ban-client set ssh-iptables unbanip 103.207.68.41

Hi vọng với hướng dẫn cài đặt Fail2ban bảo vệ SSH trên vps ở trên, sẽ giúp bạn cài thành công Fail2ban và bảo vệ VPS khỏi scan port SSH.

Bạn có thể tìm hiểu chi tiết tại trang chủ Fail2Ban .

 

Post Comment