标签 Fail2Ban 下的文章

CentOS7新主机初步配置命令

CentOS7新主机初步配置命令

前言

购买自己的Linux主机后第一件事就是安装操作系统,再之后需要自己做一些配置。本文对CentOS7系统下此流程进行整理,主要用于记录备忘,以便于日后查阅。如有遗漏,欢迎大家留言补充。

目录

  1. SSH登陆并修改密码
  2. 修改SSH的登陆端口
  3. 修改系统欢迎信息
  4. 修改启动选择菜单等待时间
  5. 修改主机名(HostName)
  6. 配置Fail2Ban防止SSH爆破

1.SSH登陆并修改密码

将主机IP地址与SSH端口号输入SSH软件使用 用户名和密码登陆服务器,SSH的端口号默认为22端口,用户名一般应为root。如果是购买VPS,商家一般会告知IP地址、端口号以及用户名密码。
登陆一个新的主机时(或主机重装系统后),会对未知的信息进行警告,需选择接受才能正常连接。
通常我们使用root用户登陆后需要修改密码,使用以下命令修改密码,系统会提示要求输入新密码两次以确认修改,如下所示:

# passwd 
Changing password for user root. 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

2.修改SSH的登陆端口

在使用有公网IP的主机时,为了安全考虑,我们需要改掉默认的SSH端口。
使用 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old 命令备份配置文件 sshd_configsshd_config.old ,使用 vi /etc/ssh/sshd_config 命令打开SSH服务端配置文件,将 #Port 22# 号删除,按格式添加新行,内容为Port空格后跟自定义端口号。如下所示自定义端口为21748:

#
Port 22
Port 21748

使用以下命令重启SSH服务端使配置生效,正常情况此时端口22和端口21748应都能正常访问。

service sshd restart

使用 exit 命令退出SSH客户端,然后使用IP地址加新端口号尝试连接,如不成功,请检查防火墙设置以及是否自定义端口与其他应用冲突。
如果通过新端口连接正常,则记录自己修改的端口号已免忘记,重新使用 vi /etc/ssh/sshd_config 命令打开配置文件,如下所示,在 Port 22 行前添加 # 号注释本行并保存,停用22端口的使用。

#
#Port 22
Port 21748

运行 service sshd restart 使配置生效,这之后,将无法通过22端口连接SSH,此时我们可以删除防火墙规则中的22端口。

3.修改系统欢迎信息

某些系统在我们登陆后会显示一段欢迎信息。我们可以按我们自己的意愿进行修改。这些信息实际来自于文件 /etc/motd ,我们可以使用以下命令通过vim编辑器编辑此文件来修改欢迎信息。

vim /etc/motd

如果系统提示命令未找到,可尝试使用其他编辑器修改。例如: vi , nano 。

  • vim编辑器使用:按i键进入输入模式,编辑完后按ESC键退出编辑模式,输入进入命令模式,输入wq命令保存并退出。若没有vim编辑器或不习惯使用vim编辑器,可用其他编辑器替代,具体使用方法请自行通过搜索引擎查询。

4.修改启动选择菜单等待时间

在使用独立主机或自己的物理主机情况下,可能会遇到开机时的启动选择菜单等待时间较长需要修改的问题,此问题可通过修改 /boot/grub2/grub.cfg 文件解决。与上文类似,找到修改以下代码:

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5(单位为秒,建议修改成1,修改完成下次开机等待时间就会生效)
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.

5.修改主机名(HostName)

在CentOS7中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty)。静态主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。瞬态主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,灵活主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户。
一般情况下主机名默认为 localhost 。但在管理的主机较多时,我们需要修改一个易于识别的主机名来标记每台主机。这样才能方便区分自己操作的主机。
在CentOS 7中,使用 hostnamectl 命令行工具查看或修改与主机名相关的配置。
不带参数输入命令查看主机名相关的设置,如果只查看静态、瞬态或灵活主机名,可分别使用 --static--transient--pretty 选项:

[root@localhost ~]# hostnamectl
Static hostname: localhost.localdomain
Pretty hostname: localhost.localdomain
        Icon name: computer-vm
        Chassis: vm
        Machine ID: b5f3ded389c742h9d3g41s87bt57ng28
        Boot ID: 5aa97h356hjg9v8jhng474m6r6k48w89
    Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.10.1.el7.x86_64
    Architecture: x86-64

[root@localhost ~]# hostnamectl --static
localhost.localdomain

通过以下命令同时修改三个主机名:

hostnamectl set-hostname

如果只想修改特定的主机名(静态,瞬态或灵活),可以使用 --static--transient--pretty 选项。例如:使用以下命令修改灵活主机名为ahost:

[root@localhost ~]# hostnamectl --pretty set-hostname ahost

一旦修改了静态主机名,/etc/hostname 将被自动更新。然而, /etc/hosts 不会自动根据所做的修改自动修改,所以在修改主机名后一定要手动更新 /etc/hosts 。使用 vim /etc/hosts 命令通过vi编辑器打开host文件,在里面加入以下内容保存(此处以主机名为ahost为例):

127.0.0.1       ahost
::1             ahost

6.配置Fail2Ban防止SSH爆破

Fail2Ban是一种入侵防御软件框架,可以保护计算机服务器免受暴力攻击。它可以监视计算机的系统日志,通过匹配日志的错误信息执行相应的屏蔽动作。
CentOS7默认的防火墙管理工具是FirewallD,通过以下命令检查其运行状态,若提示running则表示正常运行。

firewall-cmd --state

如果提示未启动则可通过以下命令启用:

# 启动FirewallD
systemctl start firewalld

# 将FirewallD设置开机启动
systemctl enable firewalld.service

启用FirewallD后会禁止除设置的放行端口外的其他端口连接,因此需设置放行常用的端口,以免自己被防火墙阻挡。使用以下命令查看已经放行的端口:

firewall-cmd --zone=public --list-ports

以下是放行上文设置的SSH端口(21748)示例,供参考:

firewall-cmd --zone=public --add-port=21748/tcp --permanent
firewall-cmd --reload

通过以下命令获取FailedBan:

yum -y install epel-release
yum -y install fail2ban

fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录。我们通过新建jail.local文件来覆盖fail2ban的一些默认规则以实现自定义配置。使用 vi /etc/fail2ban/jail.local 命令新建 jail.local 文件,内容如下。

[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    = 21748
action = %(action_mwl)s
logpath = /var/log/secure
  • ignoreip:IP白名单,可填写多个以 , 分隔
  • bantime:屏蔽时间,单位为秒(s)
  • findtime:时间范围
  • maxretry:最大次数
  • banaction:屏蔽动作,上面使用firewalld屏蔽接口
  • [sshd]:给人看的名称,可随便填写
  • filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
  • port:对应的端口
  • action:采取的行动
  • logpath:需要监视的日志路径

以上配置意为如果同一个IP,在10分钟内,连续超过5次密码错误,则通过FirewallD接口将此IP ban掉。运行 systemctl start fail2ban 命令启动Fail2Ban。
使用另一台主机不断尝试使用错误密码连接SSH,你会发现连续错误超过5次后直接连不上,说明IP被ban。可以使用命令 fail2ban-client status sshd 查看被ban的IP地址。假设IP:10.0.0.8被sshd规则ban掉,使用命令 fail2ban-client set sshd unbanip 10.0.0.8 可以解除封锁。
确认配置没有问题,使用命令 systemctl enable fail2ban 为Fail2Ban设置开机启动,使用 systemctl status fail2ban 可查看服务状态。若需要停止Fail2Ban,可使用命令 systemctl stop fail2ban 停止其服务,使用命令 systemctl disable fail2ban 可取消开机启动。

参考

CentOS 7安装fail2ban + Firewalld防止爆破与CC攻击
https://www.xiaoz.me/archives/9831

FirewallD入门手册
https://www.linuxprobe.com/centos-firewalld.html

如何在CentOS 7上修改主机名
https://www.jianshu.com/p/39d7000dfa47