当前位置:首页 > CN2资讯 > 正文内容

linux固化容器 linux加固方案

6小时前CN2资讯

目录

  • 常见的三种加固措施
  • 一、主机基础安全加固(方法一)
  • 1、密码足够的复杂
  • 2、修改sh默认端口号
  • 3、禁止 root 远程登录
  • 4、Linux主机黑白名单限制远程连接地址
  • 5、服务器之间通过密钥免密登录
  • 6、使用密钥并禁止使用密码登录服务器
  • 7、通过云平台的安全组限制远程登陆的ip
  • 二、使用开源软件fail2ban加固主机安全(方法二)
  • 优点:
  • 原理:
  • 场景说明:
  • 下载软件包:
  • 应用实例:

常见的三种加固措施

方法一:主机基础安全加固
方法二:通过开源软件加固主机安全
方法三:通过安全产品加固(略过)

一、主机基础安全加固(方法一)

以下七种基础安全加固方法可根据自己需求进行配置加固

1、密码足够的复杂

密码的长度要大于 8 位最好大于 20 位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成。

2、修改sh默认端口号

vim /etc/ssh/sshd_config #修改sshd配置文件

修改此行 # Port 22 改为: # Port xxx #自己定义其它端口 ESC :wq 保存退出

重启sshd服务:

systemctl restart sshd

3、禁止 root 远程登录

不允许 root 账号直接登陆到系统,需添加一个普通账号,并授予权限加入到wheel组,使用普通账号先远程登录到系统,再使用sudo执行命令或使用命令su - root 切换到 root 用户环境
操作步骤:
① 修改sshd配置文件
vim /etc/ssh/sshd_config

#PermitRootLogin yes PermitRootLogin no #删除 # 号并改为no ESC :wq 保存退出

重启服务:

systemctl restart sshd

② 创建一个用于远程的用户xxx(不要设置admin,user1....等常见的默认账户名,很容易被猜测到)

useradd rhxjhf # 创建新用户 passwd rhxjhf # 给此用户设置密码

③ 把此用户加入到wheel组(相当于系统管理员组) #如果不加入普通用户无法切换到root账户

usermod -G wheel rhxjhf # 把rhxjhf用户加入到 wheel管理员组 id rhxjhf # 查看此用户的信息,及是否加到了wheel组

④ 使用新用户远程到服务器,然后使用su - root 输入root密码后即可切换root用户环境

4、Linux主机黑白名单限制远程连接地址

白名单:/etc/hosts.allow 黑名单:/etc/hosts.deny

如只想自己常用地址远程连接到服务器,配置方法如下:
① 先在白名单中添加一行允许自己的ip
vim /etc/hosts.allow

sshd: 104.152.xx.xxx # ip为自己的公网出口ip,有多个即添加多个即可

② 在黑名单文件中添加拒绝所有即可,格式如下(也可使用平台的安全组限制源IP地址)
vim /etc/hosts.deny #添加如下一行即可

sshd: ALL

无需重启服务立即生效

5、服务器之间通过密钥免密登录

操作环境:

服务端:cloud-host1 IP:192.168.1.63
客户端:cloud-host2 IP:192.168.2.64

5.1 客户端生成密钥对,然后把公钥传输到服务端

[root@cloud-host2 ~]# ssh-keygen #执行 Generating public/private rsa key pair. #生成公共/私有 rsa 密钥对。 Enter file in which to save the key (/root/.ssh/id_rsa): #输入保存密钥的文件(/root/.ssh/id\u rsa): Enter passphrase (empty for no passphrase): #输入密码短语(无密码短语为空): Enter same passphrase again: #再次输入相同的密码短语: Your identification has been saved in /root/.ssh/id_rsa. 私钥 #您的标识已保存在/root/.ssh/id_rsa 中。 Your public key has been saved in /root/.ssh/id_rsa.pub. 公钥 #您的公钥已保存在/root/.ssh/id_rsa.pub 中。 The key fingerprint is: #关键指纹是: SHA256:toCXv2xpFWsS6ClyN1sAKPIyup7VEdaQLKJH/tD+EZk root@bogon The key's randomart image is: #钥匙的随机图像是: +---[RSA 2048]----+ | .... | |o.o..oo | |o=...+ = | |+ = o.E.. . | |.+ +.o++S. o | |. . *.B+o.+ | | . + = =o= | |. o o.+. | |.o oo | +----[SHA256]-----+ [root@cloud-host2 ~]# cd /root/.ssh/ [root@cloud-host2 .ssh]# ls id_rsa id_rsa.pub known_hosts id_rsa(私钥);id_rsa.put(公钥);

5.2 把公钥文件传到服务端
使用 ssh-copy-id 命令将客户端生成的公钥发布到远程服务器 192.168.1.63 cloud-host1。

[root@cloud-host2 .ssh]# ssh-copy-id -i 192.168.1.63 The authenticity of host '192.168.1.63(192.168.1.63)' can't be established. RSA key fingerprint is d9:17:d7:db:38:7c:e8:56:9c:4b:7e:00:7f:9e:1c:74. Are you sure you want to continue connecting (yes/no)? yes ##### 输入yes Warning: Permanently added '192.168.1.64' (RSA) to the list of known hosts. [email protected]'s password: #### 输入 192.168.1.63 主机登录密码。 Now try logging into the machine, with "ssh '192.168.1.63'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting #这个时候可以通过 ssh 无密钥直接登陆主机 注意:如果服务器不是监听 22 端口,则需要指定端口传输密钥: [root@cloud-host2 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 222 [email protected] Number of key(s) added: 1 添加的键数, 秘钥一般存放在 /root/.ssh/authorized_keys 传输完成后再次连接服务端就不需要输入密码了

6、使用密钥并禁止使用密码登录服务器

① 先按步骤5执行ssh-keygen生成密钥
② 在服务器上安装公钥

cd ~/.ssh/ #把公钥文件内容输出到authorized_keys此文件中 cat id_rsa.pub >> authorized_keys

③ 到此就完成了公钥的安装,请保证以下文件权限正确,权限过大启动sshd服务就会报错

chmod 600 authorized_keys chmod 700 ~/.ssh

④ 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes PubkeyAuthentication yes

⑤ 请留意 root 用户能否通过 SSH 登录:(如果为no也是不能登录的)

PermitRootLogin yes

⑥ 当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录选项:

PasswordAuthentication no

保存退出
重启服务:

systemctl restart sshd

⑦ 下载私钥文件到本地电脑中,如果没有sz命令则执行以下命令安装上传下载工具

yum install lrzsz -y sz id_rsa # sz下载私钥文件

再次连接服务器就会看见密码栏为灰色,只能使用刚刚从服务器上下载的密钥登录

7、通过云平台的安全组限制远程登陆的ip

二、使用开源软件fail2ban加固主机安全(方法二)

优点:

使用简单、灵活、功能强大(此功能需要配合iptables使用)

原理:

通过调用iptables等安全策略来达到放暴力破解的目的!

场景说明:

使用云主机对外提供的公网网站一直被别人暴力破解 SSHD 服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。
然而fail2ban 程序可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送 e-mail 通知系统管理员,很实用、很强大!
简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP 利用 iptables 加入到 dorp 列表一定时间。

下载软件包:

官方地址:http://www.fail2ban.org 如图

图 1-7 fail2ban 官网

fail2ban 程序下载地址:http://www.fail2ban.org/wiki/index.php/Downloads 如图


图 1-8 fail2ban 程序下载

注意:以上展示 fail2ban 的源码包下载,以下实验使用 yum 安装。

安装配置:
需要安装 python 开发环境,并且版本要大于 2.4。

[root@cloud-host1 ~]# python -V Python 2.6.6

使用 yum 安装 fail2ban

[root@cloud-host1 ~]# y um -y install epel-release [root@cloud-host1 ~]# yum -y install fail2ban

相关主要文件说明

ls /etc/fail2ban/ ........ /etc/fail2ban/action.d /etc/fail2ban/fail2ban.conf /etc/fail2ban/filter.d /etc/fail2ban/jail.conf

应用实例:

设置条件:SSH 远程登录 5 分钟内 3 次密码验证失败,禁止用户 IP 访问主机 1 小时,1 小时该限制自动解除,用户可重新登录。
因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有 jail.conf 文件。启用SSHD 服务的日志分析,指定动作阀值即可。

1、配置文件:/etc/fail2ban/jail.conf 及说明如下:

[root@cloud-host1 ~]# vim /etc/fail2ban/jail.conf [DEFAULT] #全局设置 ignoreip = #忽略的 IP 列表,不受设置限制。 bantime = 10m #屏蔽时间,单位:秒。 findtime = 10m #这个时间段内超过规定次数会被 ban 掉。 maxretry = 5 #最大尝试次数。 backend = auto #日志修改检测机制(gamin、polling 和 auto 这三种)。 [sshd] #单个服务检查设置,如设置 bantime、findtime、maxretry 和全局冲突,服务 优先级大于全局设置。 port = ssh 279 行 logpath = %(sshd_log)s backend = %(sshd_backend)s #加入如下内容 enabled = true #是否激活此项(true/false)修改成 true。 filter = sshd #过滤规则 filter 的名字,对应 filter.d 目录下的 sshd.conf。 action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数,对应action.d/iptables.conf 文件。 sendmail-whois[name=SSH, [email protected], [email protected], sendername="Fail2Ban"] #触发报警的收件人。可写可不写 根据自己需要 logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写 sshd 服务日志文件。 默认为 logpath = /var/log/sshd.log(在 centos8 当中需要删除默认的 ssh 区域 logpath 选项) 。 #5 分钟内 3 次密码验证失败,禁止用户 IP 访问主机 1 小时。 配置如下。 (按需修改) bantime = 3600 #禁止用户 IP 访问主机 1 小时。 findtime = 300 #在 5 分钟内内出现规定次数就开始工作。 maxretry = 3 #3 次密码验证失败。

2、配置内容如下图:


3、启动服务

[root@cloud-host1 ~]# systemctl start fail2ban # 启动fail2ban服务 [root@cloud-host1 ~]# systemctl enable fail2ban # 设置开机自动启动 [root@cloud-host1 ~]# > /var/log/secure # 清空日志内容 [root@cloud-host1 fail2ban]# systemctl restart fail2ban #重启 fail2ban 服务

4、测试

测试:故意输入错误密码 3 次,再进行登录时,会拒绝登录。 [root@cloud-host2 ~]# ssh 192.168.1.63 [email protected]'s password: #故意输入错误密码。 Permission denied, please try again. [email protected]'s password: #故意输入错误密码。 Permission denied, please try again. [email protected]'s password: #故意输入错误密码。 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). [root@cloud-host2 ~]# ssh 192.168.1.63 ssh: connect to host 192.168.1.63 port 22: Connection refused

5、然后我们检测下 fail2ban是否工作。

[root@cloud-host1 ~]# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd #具体看某一项的状态也可以看,如果显示被 ban 的ip 和数目就表示成功了,如果都是 0,说明没有成功。 [root@cloud-host1 ~]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 192.168.1.64

查看 fail2ban 的日志能够看到相关的信息。

[root@cloud-host1 ~]# tail /var/log/fail2ban.log 2018-11-07 16:11:01,476 fail2ban.actions [27932]: NOTICE [sshd] Ban 192.168.1.64

需要注意的两点:

1、如果后期需要把 iptables 清空后或 iptables 重启后,也需要把 fail2ban 重启一下
2、如果修改 ssh 默认端口 22 为 2015 后,配置 fail2ban 来监控 SSHD 服务需要修改配置文件
例:

[root@cloud-host1 ~]# vim /etc/ssh/sshd_config 改 17 #Port 22 为 17 Port 2015 [root@cloud-host1 ~]# systemctl restart sshd [root@cloud-host1 ~]# vim /etc/fail2ban/jail.conf #修改 iptables 动作中的端口号,默认为 SSH,如图 1-11 所示。 改:port=ssh 为 port=2015


修改 fail2ban 监听 SSH 端口重启服务即可

systemctl restart fail2ban

误操作自己的ip被加入黑名单,则可以手动移除自己的ip
fail2ban 从黑名单中移除 IP 的方法:

fail2ban-client set sshd unbanip 192.168.1.6

我有梦,有远方,我会为了它们奔跑,奋斗,直到成为连我自己都佩服的人。



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32292.html

    分享给朋友:

    “linux固化容器 linux加固方案” 的相关文章

    年抛域名的优势与续费注意事项,助您成功管理短期项目

    年抛域名是我在互联网世界中常遇到的一个概念,它们指的是那些注册时间为一年,使用者并不打算长期持有的域名。这类域名的价格往往比较低廉,非常适合一些短期项目或者测试用途。或许你有过这样的经历,想要尝试某个新项目,于是申请了一个年抛域名,一年后若不再需要,便无后顾之忧。这样的运作模式灵活高效,适合现代互联...

    探索诸暨市:地理特征、气候与经济发展全面分析

    我发现诸暨市,这个位于浙江省中北部的县级市,真是一个令人着迷的地方。它东靠嵊州市,南面与东阳、义乌和浦江相邻,西面与桐庐和富阳相接,北边则与柯桥和萧山为界。这样的地理位置赋予了诸暨市独特的区域特色,方便了与周边城市的交流与发展。 在谈到诸暨的地理特征时,不得不提其独特的地形地貌。诸暨市位于浙东南和浙...

    优化RackNerd DC2机房 IP使用体验与性能评测

    我最近对RackNerd的DC2机房产生了越来越多的兴趣,特别是位于美国洛杉矶的这座机房。它被誉为RackNerd中中国国内访问速度较快的机房之一,吸引了很多需求高效网络连接的用户。这座机房的地理位置确实蛮不错,靠近美西主干线,对于需要与国内建立连接的网站和应用来说,能带来相对更快的访问速度。 对于...

    使用宝塔面板配置与优化IPv6技术的全面指南

    宝塔面板简介 宝塔面板是一款非常实用的服务器管理工具,它的功能覆盖了许多方面。从LAMP、LNMP环境的快速搭建到监控、FTP、数据库及JAVA的管理,宝塔面板都能提供一键式的解决方案。通过这样一款工具,服务器的管理不再复杂,用户只需通过友好的Web界面进行操作,即可轻松实现各种任务。 我常常使用宝...

    RFCHOST评论:高性能VPS与流媒体解锁的完美选择

    RFCHOST概述 RFCHOST是一家自2015年成立的公司,隶属于上海花卷科技。作为一家新兴的网络服务企业,RFCHOST专注于提供国际线路深层挖掘与构造网络通信服务的一体化解决方案。我一直关注着这个快速发展的品牌,尤其是它在香港和洛杉矶VPS业务上的持续投入与创新。 随着全球数字化进程的加速,...

    如何在AWS搭建VPS:详细指南与实用技巧

    在当今这个数字化快速发展的时代,云计算扮演着越来越重要的角色。无论是企业处理大量数据,还是个人用户存储信息,云服务都提供了一种灵活、高效的解决方案。特别是随着远程工作和在线服务的普及,能够随时随地访问和管理自己的数据成为一种必需。在这个过程中,亚马逊云(AWS)凭借其强大的服务和稳定的性能,成为了众...