Để kết nối với VPS chúng ta thường sử dụng port 22. Đây chính là lỗ hổng chết người các hacker có thể sử dụng để dò tìm password đăng nhập vào VPS của bạn.
Một biện pháp hạn chế việc này đó là thay đổi port SSH từ 22 sang một port khác (HocVPS Script đã tự động đổi sang port 2222 khi cài đặt). Tuy nhiên, việc này chỉ hạn chế một chút thôi vì nếu muốn, hacker có thể scan open port để biết được bạn đang sử dụng port nào để tấn công tiếp.
Giải pháp để chúng ta chấm dứt vấn đề này đó là sử dụng một công cụ tự động block IP khi VPS bị tấn công, đó là Fail2Ban. Hôm nay, mình sẽ giới thiệu cách hướng dẫn và cài đặt trong bài này.
Fail2Ban là một ứng dụng chạy nền theo dõi log file để phát hiện những địa chỉ IP đăng nhập sai password SSH nhiều lần. Sau đó, Fail2Ban sử dụng iptable firewall rules để block ngay địa chỉ IP với một khoảng thời gian định trước.
Cài đặt Fail2Ban
Chúng ta sẽ cài đặt Fail2Ban thông qua Repo EPEL
yum install epel-release yum install fail2ban
Cấu hình Fail2Ban
Sau khi cài đặt xong, bạn mở file cấu hình của Fail2Ban lên sẽ thấy một số thông số như sau:
nano /etc/fail2ban/jail.conf
[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 = 600 # 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
Trong đó
- 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.
- bantime: khoảng thời gian (giây) block IP
- findtime: khoảng thời gian (giây) một IP phải login thành công
- maxretry: số lần login false tối đa
Cấu hình mặc định của Fail2Ban khá là ổn rồi, chúng ta không cần thiết phải cập nhật mà đến bước tiếp theo.
Cấu hình Fail2Ban bảo vệ SSH
Tạo file cấu hình
nano /etc/fail2ban/jail.local
Và sử dụng nội dung sau:
[sshd] 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 = 3 bantime = 3600
Trong đó
- enabled: kích hoạt bảo vệ, nếu muốn tắt bạn hãy chuyển thành false
- filter: giữ mặc định để sử dụng file cấu hình /etc/fail2ban/filter.d/sshd.conf
- 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, sửa đoạn
port=ssh
bằng port mới, ví dụport=2222
- logpath: đường dẫn file log fail2ban sử dụng để theo dõi
- maxretry: số lần login false tối đa
- bantime: thời gian ban IP 3600 giây = 1 giờ, bạn có thể điều chỉnh lại nếu muốn
Khởi động Service Fail2Ban
chkconfig --level 23 fail2ban on service fail2ban start
Cuối cùng check lại 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
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ả thường sẽ là như bên dưới, đã từng có rất nhiều đợt tấn công:
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ị banned bởi Fail2Ban bạn sử dụng lệnh:
fail2ban-client status sshd
Output trả về sẽ có dạng như thế này:
Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 3 | `- File list: /var/log/secure `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 103.207.68.41
– Để xóa IP khỏi danh sách banned, bạn sử dụng lệnh sau
fail2ban-client set sshd unbanip 103.207.68.41
Hi vọng với Fail2Ban, chúng ta sẽ không còn thấy thông báo login false mỗi lần login SSH nữa.
Mọi thông tin chi tiết, hãy tham khảo thêm trên trang chủ của Fail2Ban. Chúc bạn thành công.
Cho hoi minh cai` roi mun go~ ra sao a. , Minh muon chan het ip quoc gia truy cap toi VPS Minh thi lam cach nao ? bi ddos qua roi
Bạn tham khảo : yum remove fail2ban
https://gist.github.com/tiendungdev/a3ebcc43e2d3bfda59632302a86c1094
Mình cài thành công nhưng khi test mình cố ý nhập sai trên 5 lần nhưng sao không cấm IP của mình nhỉ ? Mong Bác nào chỉ giáo e sai ở đâu được không ạ, Thanks
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-NoAuthFailures tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-SSH tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-NoAuthFailures tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-SSH tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-NoAuthFailures tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
f2b-SSH tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8051
không hiểu sao cài hocvps rồi tới Letcrypt thì filemanager không vào được nữa
check fail2ban thì thấy NoAuthFailures, cố accept mà vẫn ko run lại đc filemanager
admin help với
Cho mình Nginx Conf bạn đã cài đặt SSL
Hi Phương,
Giống hệt hướng dẫn ở đây https://hocvps.com/cai-dat-lets-encrypt/
***File cấu hình Nginx cuối cùng sẽ tương tự như sau:*** và ***Không cấu hình SSL phần Admin HocVPS***
nghĩa là không có phần này:
“server {
listen 2018 ssl;
“
Nếu thế thì không có liên quan gì đến HocVPS Admin
Thế bạn cung cấp toàn bộ Nginx Conf trong /etc/nginx/conf.d
default.conf empty file,
domain của mình là domain chính và vps cũng chỉ có 1 mình nó,
Nếu bạn cài domain chính thì sao lại bỏ phần Admin HocVPS? Vừa cmt trc bạn bảo bỏ phần này nên mình mới nghĩ là có nhiều hơn 1 domain trong VPS
ah theo hướng dẫn thì để dùng biểu tượng đám mây màu vàng của Cloudflare thì đã làm như vậy,
_ Để kết hợp sử dụng CDN Cloudflare (biểu tượng đám mây vàng):
Thiết lập Full (strict) trong menu Crypto SSL tại trang quản lý Cloudflare.
Không cấu hình SSL phần Admin HocVPS. Khi đó, truy cập HocVPS Admin bằng ip:port
Không thể gia hạn tự động SSL Let’s Encrypt. Gia hạn thủ công 3 tháng 1 lần.
Phải chăng đó là lỗi do nó, giúp mình giải quyết nếu có thể,
Cảm ơn Phương
Tốt nhất, như đã nói, bạn cung cấp Nginx Conf của website đã cài đặt. Chứ mô tả cách làm thì khác gì bài hướng dãn đâu
Và bạn truy cập HocVPS Admin qua ip hay domain?
https://www.dropbox.com/s/xd79ebqlkzmxixa/config.txt?dl=0
Toàn bộ config đây Phương ơi, xin phép replace cái domain name vì không được phù hợp thuần phong mỹ tục và thông lệ quốc tế 😀
Và bạn truy cập HocVPS Admin qua ip hay domain?
~~~~> Cả 2 đều không được.
nó bị f2b-NoAuthFailures sau khi add ACCEPT 🙁
Thiếu phần HocVPS Admin rồi. Trong bài viết mình ghi là không cấu hình tức là để nguyên nó, không làm gì chứ không phải là xóa nó đi 🙁
Chào bạn, tôi muốn thêm một dãy địa chỉ ip vào danh sách trắng của file2ban thì làm thế nào nhỉ.
192.88.134.0/23
185.93.228.0/22
2a02:fe80::/29
66.248.200.0/22
Thank you !
Bạn thêm vào dòng ignoreip trong
/etc/fail2ban/jail.conf
nhé. Ví dụignoreip = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
Cám ơn bạn, để mình thử xem sao.
|- Filter
| |- Currently failed: 1
| |- Total failed: 2747
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 3
|- Total banned: 530
`- Banned IP list: 118.97.213.118 118.193.234.101 164.160.28.20
Nhìn sợ thật và cuối cùng bị đỏi info wp-config 🙁
Nếu bạn không quá cần truy cập ở nhiều nơi thì khóa hẳn SSH Password, chỉ đăng nhập qua SSH Key thì không lo gì SSH Brute Attack
Nếu mình khóa SSH Password xài SSH Key nếu sau này cần thì vẫn mở lại xài được SSH Password được phải k?
Được bạn, chỉ là 1 thiết lập trong SSHD thôi. Cơ mà phải truy cập vào đc VPS mới khóa/mở nhé chứ không thực hiện từ ngoài đc đâu
Sao phần Banned IP list không thấy ghi ip ta?
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 1856
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 338
`- Banned IP list:
Cho mình hỏi chút: Mình dùng lệnh “cat /var/log/secure | grep ‘Failed password’ | sort | uniq -c” check thì thấy 1 đống list ip của bọn china 120.209.139.68 và sao khi dùng lệnh “fail2ban-client status sshd” thì k thấy IP đã bị banned nào bởi Fail2Ban hết:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Có thiết lập hết mà bạn. Sai Y lần thì ban. Tự động gỡ ban sau X giờ
Và bạn đọc log từ /var/log/secure là toàn bộ truy cập SSH, bất kể cổng nào. Ví dụ attacker cố tấn công dò pass SSH cổng 1234 và cổng ý không phải cổng SSH thì Fail2Ban cũng k cần chặn làm gì. Chỉ chặn truy cập vào cổng SSH đang dùng
Ớn mấy cha nội china quá 🙁
Thì kệ nó thôi, nó cứ dò port đâu đâu mà 😀
Mình có thắc mắc là F2B thì dùng rule của iptable, mà nếu như mình sử dụng CentOS 7 và chạy Hocvps script thì sẽ dùng Firewall ID (không dùng iptable nữa). Vậy thì trên CentOS 7, F2B vẫn hoạt động đc chứ ad?
Hiện tại HocVPS đã quay trở lại sử dụng Iptables trên CentOS7 bạn nhé.
Bác Luân cho em hỏi nhờ với.
Cái centos 7 của em đã có firewalld, vậy có cần phải cài thêm phần mềm Fail2ban nữa ko ạ
Mong hồi âm sớm của bác
2 rule ví dụ trong bài là Fail2Ban kết hợp cùng Iptables nên nếu bạn dùng FirewallD mình nghĩ rule không tương thích
Mình chạy lệnh này trên SSH : fail2ban-client status ssh-iptables
thì báo lỗi :
[root@51-xx-xxx-xxx home]# Sorry but the jail ‘ssh-iptables’ does not exist
bash: Sorry: command not found…
IP của mình bị block và mình muốn gỡ IP đó ra 😀 . giờ phải đăng nhập từ máy khác . lỗi này là ntn vậy ad
Bạn kiểm tra danh sách rule nhé. Đổi sang sshd rồi
Mặc định nhà cung cấp mình có cài csf rồi mà mình ko biết, cài thêm cái này, giờ làm sao gỡ cái này bạn ?
Bạn stop đi rồi remove
yum remove fail2ban*
Hello , Em bị block khi vào website nhưng vào bằng ip us hay eu thì vẫn bình thường . Check trên fail2ban thì ko thấy xuất hiện ip . Các bác cho em xin cách khắc phục với ạ
Website bạn là gì? Có thể bạn dùng module chặn theo quốc gia. Và bạn stop fail2ban xem ntn. kiểm tra cả rule bên iptables
Mình không dùng F2B mà cấu hình thẳng iptables ntn:
# iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –set
# iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent –update –seconds 60 –hitcount 4 -j DROP
Đến nay vẫn hoạt động bình thường, kiểm tra ssh hết bị attack, mình có cần phải cấu hình thêm F2B ko?
Tùy nhu cầu của bạn thôi, cấu hình iptables trên của bạn chắc là 4 lần fail?
Hocvps script có được tự động cài đặt chức năng này hay không bạn nhỉ? Hay là nếu mình muốn thì mới cài thêm vào?
Có sẵn trong HocVPS rồi nhé bạn
Ad có hướng dẫn ban Ip 1 số nước không ad ơi 🙂 ban hết ip mấy nước đi cho khỏi bị tấn công
Bạn có thể tham khảo Module
http_geoip_module
trên Nginx. Cách làm sẽ giống giống hướng dẫn nàyhttps://www.howtoforge.com/nginx-how-to-block-visitors-by-country-with-the-geoip-module-debian-ubuntu
Sao chúng nó cứ dò vps mình nhiều thế nhỉ, hôm nào cũng đăng nhập vào vps mà cứ thấy báo vài chục lần loggin fail là thấy sợ sợ sao đó 🙁
Status for the jail: ssh-iptables
|- Filter
| |- Currently failed: 1
| |- Total failed: 1591
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 20
|- Total banned: 432
`- Banned IP list: ………….
Fail2Ban vẫn hoạt động tốt mà, giúp bạn ban đến 432 còn gì 🙂 Còn bạn e ngại thì có thể dùng SSH Keys, disable luôn đăng nhập sử dụng password
file cấu hình fail2ban của hocvps script ở đường dẫn nào thế, mình muốn chỉnh block từ 1 tiếng lên tận 3 ngày 🙁 tự nhiên bị dò pass nhiều quá
/etc/fail2ban/jail.conf
đó bạnThank bác Phương, cho e hỏi thêm là sửa xong thì dùng lệnh gì để có hiệu lực ạ? Stop rồi start hay dùng mỗi lệnh reload ạ?
Restart cho chắc ăn bạn à.
cho mình hỏi, h bị chính fail2ban ngăn ko cho đăng nhập SSH của mình thì mình phải làm sao ạ. xin cám ơn.
Bạn chờ 1 giờ hoặc vào VPS terminal qua web console trên trang quản lý VPS (nếu NCC VPS có hỗ trợ chức năng này)
Restart lại modem cho nhanh 😀
Mình bật iptables và fail2ban lên nhưng chỉ connect đc port 22, các services http mysql đều không hoạt động. Nếu mình tắt iptables thì hoạt động bình thường.
Giúp mình với.
Mình nghĩ iptables bạn đã block các port của service khác, enable mỗi port SSH 22. Bạn có thể check
iptables -L
để biết các port enable/disable. Hướng dẫn qua bài viết này : https://hocvps.com/iptables/Em hay bị Crash Fail2Ban đi kèm với HocVPS sau khi em cài thêm CSF. XIn cho em hướng dẫn khắc phục với ạ. Em cám ơn.
Bạn kiểm tra Log của Fail2Ban tại
/var/log
xem log có note về xung đột gì không?Log ghi lại như vậy. Có rất nhiều đoạn giống tương tự như vậy. Hình như sau khi cài CSF nó vô hiệu hóa iptables. Fail2Ban chỉ làm việc với iptables thôi hay sao ý.
2017-04-18 07:02:25,381 fail2ban.action [26829]: ERROR iptables -w -n -L INPUT | grep -q ‘f2b-SSH[ \t]’ — stdout: ”
2017-04-18 07:02:25,381 fail2ban.action [26829]: ERROR iptables -w -n -L INPUT | grep -q ‘f2b-SSH[ \t]’ — stderr: ”
2017-04-18 07:02:25,381 fail2ban.action [26829]: ERROR iptables -w -n -L INPUT | grep -q ‘f2b-SSH[ \t]’ — returned 1
2017-04-18 07:02:25,382 fail2ban.CommandAction [26829]: ERROR Invariant check failed. Trying to restore a sane environment
2017-04-18 07:02:25,485 fail2ban.action [26829]: ERROR iptables -w -D INPUT -p tcp –dport 2222 -j f2b-SSH
iptables -w -F f2b-SSH
iptables -w -X f2b-SSH — stdout: ”
2017-04-18 07:02:25,486 fail2ban.action [26829]: ERROR iptables -w -D INPUT -p tcp –dport 2222 -j f2b-SSH
iptables -w -F f2b-SSH
iptables -w -X f2b-SSH — stderr: “iptables v1.4.21: Couldn’t load target `f2b-SSH’:No such file or directory\n\nTry `iptables -h’ or ‘iptables –help’ for more information.\niptables: No chain/target/match by that name.\niptables: No chain/target/match by that name.\n”
2017-04-18 07:02:25,486 fail2ban.action [26829]: ERROR iptables -w -D INPUT -p tcp –dport 2222 -j f2b-SSH
iptables -w -F f2b-SSH
iptables -w -X f2b-SSH — returned 1
2017-04-18 07:02:25,486 fail2ban.actions [26829]: ERROR Failed to execute unban jail ‘ssh-iptables’ action ‘iptables’ info ‘{‘matches’: ‘Apr 16 15:57:30 li1638-81 sshd[13683]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=1.180.206.195 user=rootApr 16 15:57:32 li1638-81 sshd[13683]: Failed password for root from 1.180.206.195 port 33885 ssh2Apr 16 15:57:35 li1638-81 sshd[13683]: Failed password for root from 1.180.206.195 port 33885 ssh2Apr 16 15:57:36 li1638-81 sshd[13683]: Failed password for root from 1.180.206.195 port 33885 ssh2Apr 16 15:57:39 li1638-81 sshd[13683]: Failed password for root from 1.180.206.195 port 33885 ssh2Apr 16 15:57:41 li1638-81 sshd[13683]: Failed password for root from 1.180.206.195 port 33885 ssh2’, ‘ip’: ‘1.180.206.195’, ‘time’: 1492472183.912033, ‘failures’: 6}’: Error stopping action
Em gỡ CSF ra là lại hoạt động ngon ơ.
Đúng vậy, Fail2Ban dùng rule bên Iptables bạn nhé. Bên cạnh đó, Iptables được cài đặt mặc định ở các server CentOS nên được sử dụng từ đầu
Có cách nào xài chung 2 thằng này không admin
Mình nghĩ không. Fail2Ban/CSF đều hoạt động dựa trên Iptables. Bạn dùng Fail2Ban thì thôi CSF và ngược lại. Nếu muốn cấu hình sâu/chi tiết, bạn sử dụng CSF nhé. Bên cạnh đó, bạn có dùng Cloudfare không?
Dạ có ạ.
1. Bạn dùng CSF hoặc Fail2Ban nhé. Nếu cấu hình sâu thì bạn sử dụng CSF.
2. Nếu bạn dùng CSF thì phải cho các IP của Cloudfare vào list allow của CSF
Góp ý anh em nên set lên 6 lần để tránh bản thân lâu lâu đổi pass quên bấm nhầm vẫn chưa đến mức bị Ban. Tăng thời gian lên 2592000=30day cho tụi nó ra đảo húp cháo. Dạo gần đây căng quá. IP VPS mình không để lộ ra ngoài bao giờ (dùng Cloudflare) thế mà nó vẫn lần ra.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=2222, protocol=tcp]
logpath = /var/log/secure
maxretry = 6
bantime = 2592000
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
action = iptables[name=NoAuthFailures, port=2223, protocol=tcp]
logpath = /home/www.youthhouse.vn/logs/nginx_error.log
maxretry = 6
bantime = 2592000
Yeap. Bạn có thể thay đổi tùy chỉnh Fail2Ban phù hợp với nhu cầu. Ngoài ra, bạn sử dụng SSH Keys và Disable Password login là khỏi bị dò SSH luôn
Anh luân cho em hỏi là em cài đặt xong nhưng không hiện file fail2ban trong filezilla, remove cài lại vẫn không thấy hiện là sao vậy ạ?
Bạn không thấy fail2ban nằm ở /etc/fail2ban à? Lạ nhỉ
Lần đầu tiên cài thì có, nhưng mình cài sai nên xoá và remove xong cài lại thì k thấy hiện nữa ạ
Bạn hãy xóa Fail2Ban với lệnh
#yum remove fail2ban
rồi cài đặt lại nhé.Mình đã làm thử cách này và không work.
Cảm ơn bài viết của bạn. Mình đang tìm hiểu tính năng send email notification khi ban 1 ip cố gắng truy cập SSH. Nhưng vẫn chưa thành công nhờ bạn có thể chia sẽ thêm về phần thiết lập send email notification được không.
Thường ít người dùng send mail notification vì như vậy chả mấy chốc mà ngập hòm mail mất. Nếu bạn vẫn muốn, hãy bỏ dấu # trước sendmail-whois và điền email dest, sender nhé.
Restart lại fail2ban nữa.
Tương tự áp dụng bảo vệ ftpserver luôn nhé.
[vsftpd-iptables]
enabled = true
filter = vsftpd
action = iptables[name=VSFTPD, port=21,
# sendmail-whois[name=VSFTPD, dest=you@example.com]
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 1800
làm tương tự để bảo vệ ftpserver luôn, đây là đính chính thêm!
==========
#thêm vào bên dưới file này luôn
nano /etc/fail2ban/jail.local
[vsftpd-iptables]
enabled = true
filter = vsftpd
action = iptables[name=VSFTPD, port=21, protocol=tcp]
# sendmail-whois[name=VSFTPD, dest=you@example.com]
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 1800
==========
/var/log/vsftpd.log
các bạn mở file /etc/vsftpd/vsftpd.conf ra thêm dual_log_enable=YES nếu chưa có để tạo thêm file log này nhé
==========
tương tự dùng lệnh này để kiểm tra ip và xóa ip bị banip:
fail2ban-client status vsftpd-iptables
fail2ban-client set vsftpd-iptables unbanip 103.207.68.41
hi mọi người,
mình cài fail2ban thì cứ tầm 7h tối là gửi mail với nội dung:
Site http://www.mysite.vn/ is down 200
rồi 7 phút sau lại thông báo
Site http://www.mysite.vn/ is up 200
xin mọi người giúp mình!
thanks
Cái này là thông báo website không truy cập được, dùng Google Apps chứ đâu liên quan đến Fail2ban nhỉ?
cho em hỏi.
iptables -D f2b-SSH -s banned_ip -j DROP
lệnh này xóa tất cả các ip band.
còn nếu mình muốn xóa 1 IP trong dãy ip đó thì làm sao nhỉ
Bạn thay banned_ip bằng IP nhé 😀
VPS của mình bị scan nhiều quá
Có tùy chỉnh nào giúp banned vĩnh viễn ip nếu login fail nhiều quá không Luân ?
Bạn tăng thời gian ban lên gấp 1.000 lần trong file /etc/fail2ban/jail.conf là xong 😀
Muốn ban vĩnh viễn 1 IP thì làm sao hả Luân?
Hiện tại mình thấy VPS đang bị tấn công bởi 1 IP từ Trung Quốc.
Bạn xem link này, phần 9 nhé: http://www.cyberciti.biz/tips/linux-iptables-examples.html
Bài viết có 2 chổ chưa chuẩn:
Thứ nhất: iptables -L chỉ để liệt kệ rule và chain của iptables chứ ko phải để ktra IP đã bị banned, để kiểm tra ip banned các bạn vào /var/log/fail2ban.
Thứ hai: việc chỉ sử dụng cấu hình mặc định của fail2ban thì chỉ có banned ip trong 1 thời gian nhất định, mà đa số các ip scan chắc chắn là chạy theo script nó sẽ quay lại scan các bạn nhiều và nhiều lần nữa, các bạn nên tìm hiểu kỹ cách tạo action trên f2b kết hợp với iptables và ipset để blog vĩnh viễn ip scan (đương nhiên là mình có thể unblock manual đc), sau này đỡ tốn tài nguyên banned rồi lại unbaned.
Thân.
Okie chuẩn rồi, cảm ơn comment đóng góp của bạn.
Hi ban,
iptables -D f2b-SSH -s banned_ip -j DROP dùng lệnh này để gỡ bỏ IP bị ban thì nó báo lỗi : iptables v1.4.21: host/network `banned_ip’ not found
Try `iptables -h’ or ‘iptables –help’ for more information.
Mình thử delete rules trong chain của f2b-SSH nhưng restart fail2ban thì nó vẫn hiện lại IP bị ban.Vậy làm thế nào đây?
Bạn phải thay IP vào câu lệnh chứ?
Mình thấy kết bài bạn có câu:
“Nếu bạn sử dụng dịch vụ cài đặt VPS của Học VPS, sẽ được tự động cấu hình bảo mật VPS rồi nhé.”
– vậy mình có cần phải cài cái này để bảo mật nữa không bạn LT ơi
Dịch vụ ở đây là cái này bạn ạ 😀 https://hocvps.com/dich-vu/
Sau khi cài xong và kiểm tra file log thì thấy thế này, có phải fail2ban bị lỗi ko bạn
Sep 26 06:41:05 netstore fail2ban.action[13509]: ERROR iptables -D INPUT -p tcp –dport ssh -j f2b-SSH#012iptables -F f2b-SSH#012ipt ables -X f2b-SSH — stdout: ”
Sep 26 06:41:05 netstore fail2ban.action[13509]: ERROR iptables -D INPUT -p tcp –dport ssh -j f2b-SSH#012iptables -F f2b-SSH#012ipt ables -X f2b-SSH — stderr: ”
Sep 26 06:41:05 netstore fail2ban.action[13509]: ERROR iptables -D INPUT -p tcp –dport ssh -j f2b-SSH#012iptables -F f2b-SSH#012ipt ables -X f2b-SSH — returned 1
Bạn xem log file nào vậy nhỉ?
Mình xem trong /var/log/messages đấy bạn
Thế còn
iptables -L
có output thế nào bạn?Đây là bảng iptables
DROP all — 222.219.184.71 anywhere
DROP all — 40.23.96.123.broad.zs.zj.dynamic.163data.com.cn anywhere
DROP all — 182.100.67.113 anywhere
DROP all — 23.246.244.126-static.reverse.softlayer.com anywhere
DROP all — hotel564.startdedicated.net anywhere
DROP all — webstage.ca anywhere
DROP all — dsl-209-205-186-212.i-55.com anywhere
DROP all — fixed-203-240-181.iusacell.net anywhere
DROP all — 45.63.48.15.vultr.com anywhere
DROP all — c1114054-25742.cloudatcost.com anywhere
DROP all — hosted-by.ecatel.net anywhere
DROP all — 42.123.82.179 anywhere
DROP all — 182.73.199.250 anywhere
DROP all — 183.37.251.173 anywhere
DROP all — 176.101.237.123 anywhere
DROP all — 117.79.146.58 anywhere
DROP all — 206.191.151.226 anywhere
DROP all — 61.139.5.22 anywhere
DROP all — 123.142.167.44 anywhere
DROP all — 1.255.87.242 anywhere
DROP all — dns165.online.tj.cn anywhere
Có vẻ đang hoạt động bình thường và đã block vài địa chỉ IP rồi đó.
CÁm ơn Luân về những kiến thức bảo mật VPS này. Blog của bạn rất tuyệt vời
Bác Luân cho em hỏi chút với.
Phần mềm này so với CSF thì như thế nào ạ
EM setup CSF rồi thì có nên setup thêm phần mềm này nữa không ạ
Cài CSF rồi thì không cần nữa nhé bạn, nó tự block rồi 😀
Bác luân cho mình hỏi, sao khi mình dùng lệnh trong SSH để check nhưng kết quả trả về lại không giống trong bài viết của bác:
Ví dụ:
iptables -L -n, thì xuất hiện các dòng:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Và lệnh: iptables -L, cũng xuất hiện:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Cảm ơn bác!9
Có vẻ chưa hoạt động rồi. Bạn check lại các bước đi.
Sao mình làm lại tương tự rồi mà vẫn báo vậy bác ah!
Fail2ban mình kiểm tra lại đã hoạt động, sau khi mình reboot lại VPS. Hiện chưa ban Mình muốn hỏi thêm là, nội dung trong file jail.conf của mình là thế này chứ không như của bác chia sẻ:
# “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/8
# External command that will take an tagged arguments to ignore, e.g. ,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command
ignorecommand =
# “bantime” is the number of seconds that a host is banned.
bantime = 600
# 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 = 5
– Mình để nguyên vẫn được chứ? có nên sửa lại như nội dung file bác đã chia sẻ ở trên không? Thân!
Để mặc định như vậy ok nhé.
Cho mình hỏi là nếu như mình dùng CentOs7 sau đó mình disable FirewallD đi và sử dụng Iptables thì các rules của thằng fail2ban này sinh ra hoạt động có ổn định không vậy bạn?
Vụ này mình chưa thử được
– Chương trình này update như thế nào trên ssh vậy bác Luân? Mình dùng hocvps Script ver 1.1 mới nhất thì khỏi đổi đoạn: port=ssh nhỉ?
– Lệnh: cat /var/log/secure | grep ‘Failed password’ | sort | uniq -c mình thấy báo login rất nhiều và liên tục vậy có nên đổi pass ko? Thân!
Pass SSH của bạn phức tạp ko sợ nó đoán ra thì ko cần đổi.
Nếu bạn login SSH sử dụng port 22 thì để nguyên port=ssh, không cần đổi.
cập nhật Fail2Ban thế nào nếu có bản nâng cấp qua SSH cho VPS của mình vậy bác Luân? Thân!
Nó là một chương trình bình thường, nên bạn cập nhật qua yum:
yum upgrade fail2ban
Chân thành cảm ơn bác! Chúc bác ngủ ngon nhé! Thân!
Tình hình là mình tiết kiệm được hơn 130MB RAM sau khi tiến hành bảo vệ SSH, block thẳng tay IP dò pass login 😀
Bài viết rất hay, mấy ngày gần đây đọc log file secure thấy có IP từ HK brute force liên tục trong khoảng thời gian ngắn khiến rất nhiều file log secure được tạo ra , có vẻ là đang dùng tools. em đã cài Fail2Ban hy vọng có thể tiết kiệm được nhiều dung lượng!. Anh có thể cho e biết cách xem những IP mà F2B banned ở đâu không? để em kiểm tra xem F2B có làm việc không đó mà 😀
Mình mới bổ sung bài viết nhé, bạn tham khảo lệnh này:
iptables -L -n
Mặc dù e vẫn để port 22 nhưng các brutter vẫn chăm chăm brute vào port 5 số.
Nhìn chung tác dụng hơn mong muốn, trưa nay set bantime 1 tiếng thì xem log ban đúng 1 tiếng, giờ để ban 1 ngày là nuột…
Bạn có thể hướng dẫn cụ thể cách set bantime k?
Thks!
Ngay đoạn đầu phần Cấu hình Fail2Ban có bantime đó bạn, tính bằng giây – second nhé.
Chào Luân!
Lời đầu tiên cảm ơn Luân đã có bài viết hay này.
Mình xin hỏi. Minh lỡ tay xóa mất thư mục fail2ban trên Filezilla. Giờ làm sao để cài đặt lại vậy Luân?
Trân Trọng!
Bạn hãy xóa Fail2Ban với lệnh
yum remove fail2ban
rồi cài đặt lại nhé.Thanks Luân đã làm thành công.
Và xin hỏi luân mình chạy lệnh ” cat /var/log/secure | grep ‘Failed password’ | sort | uniq -c ”
Kết quả:
1 Aug 23 19:34:49 CENTOS65MIN-001 sshd[2537]: Failed password for root from 45.114.11.22 port 50298 ssh2
Như vậy là đã từng bị tấn công hả Luân?
Kết quả nhiều lắm mình chỉ copy 1 dòng thôi đó.
Đúng rồi, đã có người từng cố login SSH vào server của bạn
Thanks Luân nha. May mà mình theo dõi bài viết của Luân thường xuyên. Mình xem kỹ thì hôm nay mới bị. hihi thanks Luân nhiều