CentOS 7启用BBR后内核升级步骤

CentOS 7 默认的内核版本为 3.10,而 BBR 需要新版内核的支持,故经常在系统升级并重启之后,内核被替换回官方源中的 3.10 版,我们需要按以下步骤升级内核:

# 升级内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

# 确定新内核的启动项,一般默认是第 1 项
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

# 设置以新内核启动
grub2-set-default 0

# 重启
reboot

重启后可以运行:

# 查看是否使用新版内核启动
uname -r

# 检验 BBR 是否已经启用
sysctl net.ipv4.tcp_available_congestion_control

使用fail2ban加固系统

一般情况下,我会对 CentOS 进行以下安全设置:

  • 创建普通用户并添加到 wheel 组,日常维护使用普通用户登录操作,需要管理员权限时使用 sudo 提权;
  • 禁止 root 用户登录;
  • 使用证书验证的方式;
  • 修改 sshd 端口;
  • 使用 SSH v2 协议。

上月末,我在登录 VPS 进行系统维护的时候,发现仍有大量失败的登录尝试,查阅了一下日志,果然不断有人在不断尝试登录我的系统。

failed login attempts

于是趁着清明假期有时间折腾,安装并配置 fail2ban 加固系统,以防系统被暴力攻破或防止短时间内接受大量的请求,导致服务器负载过重从而影响正常的访问。

安装

系统默认的源并没有提供 fail2ban,可以添加 epel 源后,安装 epel 源中的 fail2ban。

添加 epel 源

yum install epel-release -y

安装 fail2ban

yum install fail2ban -y

配置

创建访问日志

touch /usr/local/nginx/logs/access.log

不创建的话,启用 fail2ban 时会报错。

配置规则

/etc/fail2ban/filter.d/ 目录下内置了大量的规则可供调用,我们还可以自定义规则:

nginx-cc
vi /etc/fail2ban/filter.d/nginx-cc.conf

nginx-cc.conf 中添加以下内容:

[Definition]
failregex =  -.*- .*HTTP/1.* .* .*$
ignoreregex =
wordpress
vi /etc/fail2ban/filter.d/wordpress.conf

wordpress.conf 中添加以下内容:

[Definition]
failregex = ^ -.* /wp-login.php.* HTTP/1\.."
ignoreregex =

修改 jail.local

vi /etc/fail2ban/jail.local

将以下内容添加至 jail.local 中,这样 fail2ban 启动之后,便可以根据配置,调用相关的规则,对系统实施防护,下面配置文件的策略是:10 分钟内 5 次登录失败,便将该 IP 封停 24 小时,不允许再尝试登录。

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 10086
action = %(action_mwl)s
logpath = /var/log/secure

[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log

启动 fail2ban

启动

systemctl start fail2ban

如果 fail2ban 没有报错,则表明配置成功,可以设置为开机启动。

设置开机启动

systemctl enable fail2ban

这样就可以开启一个 PuTTY,对系统进行登录测试,如果连续 5 次登录失败后,继续登录时被系统阻止,则表明 fail2ban 配置已经生效。

常用操作

# 重启 fail2ban
systemctl restart fail2ban

# 停止 fail2ban
systemctl stop fail2ban

# 查看被 ban 的 IP,其中 sshd 为名称
fail2ban-client status sshd

# 删除被 ban 的 IP
fail2ban-client set sshd delignoreip 218.92.0.193

# 查看日志
tail /var/log/fail2ban.log