Linux服务器安全之 fail2ban的安装与配置
近日在查看Nginx的访问日志中,发现了大量404请求,仔细研究一番发现有人正在试图爆破网站。
我刚上线你就企图攻击我?????? 这怎么能忍。。
于是乎 --- 查资料后得知有一个神奇的工具 fail2ban 可以配合 iptables 自动封IP
iptables 是Centos6 的一种防火墙策略,在Centos7 中已被 Firewall所取代
本次实验系统为Centos6
不说了开干
1. 下载并安装fail2ban
cd /usr/loca/src
wget https://github.com/fail2ban/fail2ban/archive/0.9.4.tar.gz
tar -zxf 0.9..tar.gz
mv 0.9. fail2ban-
cd fail2ban-
./setup.py
2. 目录结构
/etc/fail2ban # fail2ban 服务配置目录
/etc/fail2ban/action.d # iptables 、mail 等动作文件目录
/etc/fail2ban/filter.d # 条件匹配文件目录,过滤日志关键内容
/etc/fail2ban/jail.conf # fail2ban 防护配置文件
/etc/fail2ban/fail2ban.conf # fail2ban 配置文件,定义日志级别、日志、sock 文件位置等 cd /etc/fail2ban # 进入配置文件所在的目录
cp jail.conf jail.local # 备份配置文件
3. 配置防护
首先编写封禁访问nginx 404状态码的ip地址的配置规则
vim /etc/fail2ban/filter.d/nginx.conf [Definition]
failregex = <HOST> -.*- .*HTTP/.* .*$
ignoreregex =
保存后测试配置文件相对于日志是否正确
fail2ban-regex /home/wwwlogs/access.log /etc/fail2ban/filter.d/nginx.conf
然后将封禁规则加入配置文件
vim /etc/fail2ban/jail.conf # 文件尾部写入 [nginx]
enabled = true
port = http,https
filter = nginx # 规则文件的名字
action = iptables[name=nginx, port=http, protocol=tcp]
# sendmail-whois[name=tomcat, dest=abc@mail.com] 发送邮件功能
logpath = /home/wwwlogs/access.log # 日志路径
bantime = # 封禁的时间
findtime = # 在几秒内
maxretry = # 有几次
4. 启动
/etc/init.d/iptables start
/etc/init.d/fail2ban start 或 fail2ban-client start
5. 查看状态等命令
fail2ban-client start # 启动
fail2ban-client reload # 重载
fail2ban-client stop # 停止
fail2ban-client status # 查看状态
fail2ban-client set nginx addignoreip 180.158.35.30 # 将ip加入nginx监狱的白名单
fail2ban-client set nginx delignoreip 180.158.35.30 # 将ip移除nginx监狱的白名单
fail2ban-client set nginx banip IP地址 # 手工ban
fail2ban-client set nginx unbanip IP地址 # 手工解
6. 查看fail2ban的日志
fail2ban的日志默认在 /var/log/fail2ban.log
日志中记录着Ban IP的记录和UnBan IP的记录
也有修改配置文件重载后的记录
cat /var/log/fail2ban
7. 小结
fail2ban 还有许多强大的功能待研究,在 /etc/fail2ban/filter.d 中,有许多模板可以学习并使用
虽说把非法请求封禁一段时间看似安全些,但只要有对外的端口就不能保证服务器的绝对安全。多了解不同工具的组合使用,才会使服务器更加安全。
Linux服务器安全之 fail2ban的安装与配置的更多相关文章
- linux下jdk与tomcat的安装与配置
Linux中jdk与tomcat的安装与配置 1.搭建环境: (1)Linux环境:CentOS6.1 (2)jdk-1.8 (3)tomcat-9.0 2.在Linux系统上创建目录 在usr/lo ...
- LINUX操作系统(centos6.9)安装与配置
LINUX操作系统(centos6.9)安装与配置_百度经验 https://jingyan.baidu.com/article/acf728fd6bdba1f8e510a3f7.html cento ...
- Linux下MyCat和MyCat_web的安装和配置
Linux下MyCat和MyCat_web的安装和配置 Mycat 是一个数据库分库分表中间件 Mycat web 可以对 Mycat进行监控,这里分享一下 Mycat web 的搭建过程 详细内容可 ...
- Apache服务器最新版下载、安装及配置(win版)
Apache服务器最新版下载.安装及配置(win版) Apache的下载: 登录http://httpd.apache.org/download.cgi 这个地址,找到2.4.10,如下图位置: ...
- linux服务器nginx的卸载和安装
刚接触的linux服务器上,nginx配置乱的有点令人发指,就把老的卸载了重新装一下. 卸载 linux有一系列的软件管理器,比如常见的linux下的yum.Ubuntu下的apt-get等等.通过这 ...
- Linux服务器pxe+kickstart部署无人值守安装
一. 使用光盘镜像安装好一台Redhat6.8系统的虚拟机(图形化界面) 二. 部署相关服务程序 1. 安装并配置dhcpd服务程序 a)安装dhcp服务程序 b)对dhcp服务进 ...
- Linux环境下SVN服务器端的安装与配置
最近尝试了下在Linux(CentOS6.5)环境下安装与配置SVN服务器端,安装过程中碰到了一些问题,参看了网友们分享的一些心得,并通过自己实际的操作,最终安装与配置成功!总的来说网上的说法芸芸,大 ...
- Linux服务器部署javaweb项目,从环境配置,到最终系统运行
部署准备:javaJDK1.7,Tomcat7.0,MySQL5.8,可运行的javaWeb项目,linux环境的服务器(可以是安装在windows电脑上的linux虚拟机,安装了linux系统的电脑 ...
- Linux CentOS 7 & JDK 1.7 安装与配置
前言 简单记录一下在CentOS 7中安装配置JDK 1.7的全过程~ 下载 首先是jdk 1.7 64bit & 32bit的下载地址: jdk-7u79-linux-x64.tar.gz ...
随机推荐
- PeopleSoft单点登录工作原理
单点登录是指用户在仅通过一次身份验证后,可以在多个应用程序中自由切换. 这意味着用户只需要一次登录信息,只要他点击指向其他应用程序的链接,安全信息就会自动从一个应用程序传递到另一个应用程序,用户就不会 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 3
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 2------------------- 13. 使用compute对查 ...
- windows 10安装jdk8
1.下载jdk,选择jdk软件版本和对应windows 32/64位版本 jdk下载链接:https://www.oracle.com/technetwork/java/javase/download ...
- Python Django框架笔记(六):模板
(一){%%}和{{ }} {% for post in posts %} <a href=""><h2>{{ post.title }}</h2&g ...
- LeetCode题解之Pascal's Triangle II
1.题目描述 2.题目分析 题目要求返回杨辉三角的某一行,需要将杨辉三角的某行的全部计算出来. 3.代码实现 vector<int> getRow(int rowIndex) { ) ,) ...
- python常用模块之-random模块
random模块顾名思义就是生成随机数的模块. random模块有以下常见方法: 1,打印0-1之间的任意随机浮点数,不能指定区间. print(random.random()) 2,打印随机符点数, ...
- SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行
我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlSe ...
- MySQL优化之Explain命令解读,optimizer_trace
简述: explain为mysql提供语句的执行计划信息.可以应用在select.delete.insert.update和place语句上.explain的执行计划,只是作为语句执行过程的一个参考, ...
- Shell学习---Shell脚本的静态检查工具shellcheck
Shell脚本的静态检查工具shellcheck ubuntu下 apt install shellcheck ,即可安装shellcheck.写完shell脚本,记得用它检查一下,能给你点建议的.要 ...
- Azure DevKit(AZ3166)源码找不到头文件问题
Get “Error Presented: #include errors detected” when opening a project The error message is Error Pr ...