SSH安全设置

 今天发现自己的公有云服务器被攻击了
在这里插入图片描述
然后查看了登录日志,如上图

ls -sh /var/log/secure
vim /var/log/secure

然后增加了安全相关的设置
具体可以从以下方面增加安全性:

  1. 修改默认SSH端口
  2. 公有云修改安全组策略及防火墙端口
  3. 设置登录失败次数锁定用户及限制多久之后才能登录
  4. 限制IP登录
  5. 设置失败自动将IP加入SSH黑名单
  6. 禁用ROOT登录
  7. 禁止ROOT用户直接登录
  8. 禁止国外IP

考虑自己有时候要登陆,目前我采用了方法1、2。
先修改公有云的安全组策略,增加一个端口Port 54321
在这里插入图片描述
开放防火墙端口54321

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

修改默认SSH端口22改为端口54321。

vim   /etc/ssh/sshd_config

在这里插入图片描述
重启sshd

systemctl restart sshd

删掉公有云安全组中的22端口
移除防火墙22端口

firewall-cmd --zone=public --remove-port=22/tcp --permanent

改完之后,发现没有人攻击了。等下次被攻击再学着弄自动IP封锁。

改完之后,下午又有人攻击了,然后找了半天方案,找到一个脚本确实能把攻击的IP和攻击次数列出来,放到/etc/hosts.deny文件中。脚本如下:

cat /shell_script/hosts_deny.sh
#!/bin/bash
#Host.deny Shell Script
#2013-08-24
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2 "=" $1;}' > /tmp/black_ip.txt
DEFINE=10
for i in `cat /tmp/black_ip.txt`
doIP=`echo $i | awk -F= '{print $1}'`NUM=`echo $i | awk -F= '{print $2}'`if [ $NUM -gt $DEFINE ]thengrep $IP /etc/hosts.deny > /dev/nullif [ $? -gt 0 ]thenecho "sshd:$IP:deny" >> /etc/hosts.denyfifi
done

crontab -e
# 将下面脚本加进去, 定时检测.
# */1 * * * * sh /shell_script/hosts_deny.sh

但是该在centos7下一直报错如下:
在这里插入图片描述
提示是缺少模块,而且原本/etc/目录下也没有hosts.deny文件,因此干脆换种方案,即找了好久的fail2ban和denyhosts。这里denyhosts是0几年的,要下载文件并且安装python,所以直接就用fail2ban了。这个简直不要太好用。

使用fail2ban+firewalld防护

参考:Fail2ban + firewalld 防护doss攻击

安装fail2ban

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban

安装成功后fail2ban配置文件位于/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,其它目录/文件一般很少用到,如果需要详细了解可自行搜索。

配置规则

新建jail.local来覆盖fail2ban的一些默认规则:

#新建配置
vi /etc/fail2ban/jail.local
#默认配置
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
#这里banaction必须用firewallcmd-ipset,这是fiewalll支持的关键,如果是用Iptables请不要这样填写
banaction = firewallcmd-ipset
action = %(action_mwl)s

参数说明:

ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
bantime:屏蔽时间,单位为秒(s)
findtime:时间范围
maxretry:最大次数
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口
防止SSH爆破

如果您还在使用默认SSH端口(22),可能每天都会被扫描,我们可以修改端口尽量避免被扫,参考: https://www.moerats.com/archives/394/ ,或者可以使用fail2ban将恶意IP屏蔽。

继续修改jail.local这个配置文件,在后面追加如下内容:

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

参数说明:

[sshd]:名称,可以随便填写
filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
port:对应的端口
action:采取的行动
logpath:需要监视的日志路径

完整版:

[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    = 22
action = %(action_mwl)s
logpath = /var/log/secure

禁止ROOT用户登录

最近发现破解密码的人很猖獗,已经做了这么多限制,还是每天几百几千的穷举破解,于是我想直接禁止ROOT用户登录。注意,要提前配置好你自己的其他的用户有比较强的密码强度,并且给了sudo权限。
处理方式如下

# 增加用户
useradd myuser
# 配置密码. 注意尽量用高强度密码才不会被轻易破解
passwd myuser
# 输入密码确认密码# 这里配置你新增的用户有sodu权限
# 切换到root用户,
su - root
# 编辑/etc/sudoers
vim /etc/sudoers
# 找到## Allow root to run any commands anywhere
# 找到root ALL=(ALL)这一行, 然后加入你刚才新建的用户
myuser ALL=(ALL) ALL# 请先验证刚才新建的myuser用户是否具有登录权限及sudo操作权限, 如果有,才可以进行下一步
vim /etc/passwd
# 找到root那行, 修改后面的登录脚本/bin/bash为/sbin/nologin即可
# 至此, 配置禁用ROOT登录完毕.

禁止ROOT用户直接登录

# 跟上面一样, 要新建用户, 密码强度要高
useradd myuser
passwd myuser# 配置不允许root直接登录
vim /etc/ssh/sshd_config
# 禁止用户登录, 找到#PermitRootLogin yes,将末尾的yes改为no,去掉前面的#注释,wq!保存即可。PermitRootLogin no
# 重启sshd服务
systemctl restart sshd
# 再次登录尝试,发现不然ROOT直接登录,然后尝试先登录myuser用户,再登录root用户,可以~# 至此,centos账号相当稳妥啦~~

禁止ping

服务器攻击一般是从ping开始的,黑客攻击网站前会先ping下服务器看其是否在线,如果服务器禁止ping,可以一定程度的减少服务器被攻击次数。Centos系统默认是允许ping的,可使用root账户修改Centos系统内核参数永久禁止ping。

vim /etc/sysctl.conf

在文件末尾加上一行:

net.ipv4.icmp_echo_ignore_all=1

保存后执行使配置生效

sysctl -p

配置生效后,ping服务器收不到任何响应,ping被永久禁止。如果需要允许ping,修改该文件去掉net.ipv4.icmp_echo_ignore_all=1这行或者修改为net.ipv4.icmp_echo_ignore_all=0即可。

禁止国外IP(请不要使用这个方法,我测试后直接阿里云那台机器登不上了,仅供参考思路。慎用,用之前请自行测试,因为要排除掉自身IP和内网IP,但是公有云无法确定内网IP段是172.x.x.x还是10.x.x.x或者其他)

获取国内IP网段

wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ip.txt

编辑脚本/root/allcn.sh,内容如下

mmode=$1
CNIP="/root/china_ip.txt"
gen_iplist() {cat <<-EOF$(cat ${CNIP:=/dev/null} 2>/dev/null)
EOF
}flush_r() {
iptables  -F ALLCNRULE 2>/dev/null
iptables -D INPUT -p tcp -j ALLCNRULE 2>/dev/null
iptables  -X ALLCNRULE 2>/dev/null
ipset -X allcn 2>/dev/null
}mstart() {
ipset create allcn hash:net 2>/dev/null
ipset -! -R <<-EOF 
$(gen_iplist | sed -e "s/^/add allcn /")
EOFiptables -N ALLCNRULE 
iptables -I INPUT -p tcp -j ALLCNRULE 
iptables -A ALLCNRULE -s 127.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 172.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 192.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 10.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 169.254.0.0/16 -j RETURN
iptables -A ALLCNRULE -s 224.0.0.0/4 -j RETURN
iptables -A ALLCNRULE -s 255.255.255.255 -j RETURN
iptables -A ALLCNRULE -m set --match-set allcn  src -j RETURN 
iptables -A ALLCNRULE -p tcp -j DROP 
}if [ "$mmode" == "stop" ] ;then
flush_r
exit 0
fiflush_r
sleep 1
mstart

修改脚本执行权限

chmod +x  allcn.sh

屏蔽国外IP

/root/allcn.sh

停止屏蔽国外IP

/root/allcn.sh stop

这是几天后的效果,不仅来攻击我的人少了,而且攻击我的人直接自动被BAN了,哈哈哈~~
在这里插入图片描述
在这里插入图片描述

参考:

  1. 修改ssh默认的22端口号
  2. CentOS7设置ssh服务以及修改默认22端口
  3. linux防火墙常用命令
  4. Centos下限制SSH登录次数详解
  5. ssh 安全配置 锁定次数
  6. Centos下限制SSH登录次数详解
  7. 防止服务器被外网的IP地址ssh连接或扫描试探等
  8. centos7添加ip黑名单禁止某个ip访问
  9. Fail2ban + firewalld 防护doss攻击
  10. Centos7 安装fail2ban基于iptables
  11. CentOS 7 使用 denyhosts 防范暴力破解
  12. Centos禁止ping的设置方法
  13. 如何在Linux云服务器上屏蔽国外IP访问?
  14. 【开发日常】CentOS7添加超级用户权限
  15. CentOS配置禁止root用户直接登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL事务与事务原理

目录 事务 事务的四大特性ACID 事务隔离级别 事务原理 存储引擎 四大特性的保证 MVCC 事务链 ReadView 事务 事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要么全部成功&#xff0c;要么全部失败。 start transaction; -- 开启事务 或者 b…

B端:设置页面如何减少用户的录入操作。

录入操作尤其是文字录入是比较是比较繁琐的&#xff0c;尤其是在移动端小屏幕上&#xff0c;简直就是灾难。不过我们可以通过合理的设置、识别、记忆、自动填充等技术来有效的减少录入。 在 B 端设置页面中&#xff0c;可以采取多种方式来减少用户的录入操作&#xff0c;提高用…

第二期书生浦语大模型训练营第三次作业

任务一&#xff1a;在茴香豆 Web 版中创建自己领域的知识问答助手 构建个人回答助手 进入web页面&#xff0c;传输属于自己的文件&#xff0c;此处进行输入大量投资领域资料&#xff0c;构建个人投资者问答助手 回答示例 茴香豆缺陷 此处会发现茴香豆仍然存在一些缺点&#…

一、基础算法-快速排序

1.快速排序 快速排序主要利用了分治的思想&#xff0c;具体步骤为&#xff1a; step1 确定分界点&#xff0c;常用为q[left],q[right],q[mid]&#xff0c;也可以是随机的 step2 调整区间&#xff0c;将比分界点小的放左边&#xff0c;大的放右边 step3 利用递归处理左右两端 …

Web攻防10_PHP反序列化_概念魔术方法POP链构造

文章目录 1、什么是反序列化操作&#xff1f; - 类型转换2、常见PHP魔术方法- 对象逻辑魔术方法概念常见魔术方法魔术方法与反序列化漏洞 3、反序列化安全漏洞原理&#xff1a;漏洞探针漏洞危害 4、反序列化漏洞利用- POP链构造反序列化常见起点反序列化常见跳板反序列化常见终…

LeetCode 19. 删除链表的倒数第 N 个结点

LeetCode 19. 删除链表的倒数第 N 个结点 1、题目 力扣题目链接&#xff1a;19. 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4,5], n 2 输出&am…

LeetCode 678——有效的括号字符串

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 需要两个栈&#xff0c;一个用来保存左括号所在的位置索引&#xff0c;一个用来保存星号所在的位置索引。 从左往右遍历字符串&#xff0c;如果是左括号或者星号&#xff0c;则将位置索引分别入栈&#xff0c;如…

ELK——日志处理界的瑞士军刀

目录 引言 一、ELK简介 &#xff08;一&#xff09;基本概述 1.Elasticsearch服务 2.Logstash服务 2.2 logstash关键组件 2.2 logstash数据流向 3.Kibana服务 &#xff08;二&#xff09;ELK工作流程 &#xff08;三&#xff09;ELK的应用价值 二、部署搭建ELK &…

【Web】NSSRound#1-20 Basic 刷题记录(全)

目录 [NSSRound#1 Basic]basic_check [NSSRound#1 Basic]sql_by_sql [NSSCTF 2nd]php签到 [NSSCTF 2nd]MyBox [NSSCTF 2nd]MyBox(revenge) [NSSCTF 2nd]MyHurricane [NSSCTF 2nd]MyJs [NSSRound#3 Team]This1sMysql [NSSRound#3 Team]path_by_path [NSSRound#…

【入门】时钟旋转

时间限制 : 1 秒 内存限制 : 128 MB 时钟上面的时针从m时走到n时旋转了多少度&#xff1f;&#xff08;m<n&#xff0c;且m和n都是1~12之间的整数&#xff09; 输入 2个整数m和n 输出 一个整数代表时针旋转的度数 样例 输入 1 4 输出 90 提示 基础问题 #includ…

SQL语法 case when语句用法讲解

CASE WHEN解释 &#xff1a; SQL中的CASE WHEN语句是一种条件表达式&#xff0c;它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中&#xff0c;用于创建新的列&#xff0c;该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。 大致概…

二叉树和数据结构

小红的完全二叉树构造 题目描述 小红想构造一个总共 n 个节点完全二叉树&#xff0c;该二叉树满足以下两个性质&#xff1a; 1. 所有节点的权值值为 1 ~ n 的一个排列。 2. 除了根节点以外&#xff0c;每个节点的权值和它父亲的权值的乘积为偶数。 请你帮小红构造出这个二叉树…

K8S一 k8s基础知识及实战

一 K8S 概览 1.1 K8S 是什么&#xff1f; K8S官网文档&#xff1a;https://kubernetes.io/zh/docs/home/ K8S 是Kubernetes的全称&#xff0c;源于希腊语&#xff0c;意为“舵手”或“飞行员”&#xff0c;官方称其是&#xff1a;用于自动部署、扩展和管理“容器化&#xff08…

软考 系统架构设计师系列知识点之大数据设计理论与实践(5)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之大数据设计理论与实践&#xff08;4&#xff09; 所属章节&#xff1a; 第19章. 大数据架构设计理论与实践 第3节 Lambda架构 19.3.1 Lambda架构对大数据处理系统的理解 Lambda架构由Storm的作者Nathan Marz提出&…

伺服系统中电机磁极偏角自学习的实现方案

一、 电机磁极偏角自学习原理简述 要知道磁极偏角&#xff0c;首先要明确的是磁极角&#xff0c;在我个人的理解里磁极角就是park和Ipark变换里所需的电角度&#xff0c;我们的矢量控制方法是定磁链的&#xff0c;就是要保证两相同步旋转坐标系的Id轴和三相静止坐标系的A轴要重…

45---M.2 SSD电路设计

视频链接 M.2 SSD硬件电路设计01_哔哩哔哩_bilibili M.2 SSD电路设计 1、M.2简介 1.1、M.2基本介绍 M.2接口也叫NGFF&#xff0c;英文全称Next Generation Form Factor。M.2接口是为超极本&#xff08;Ultrabook&#xff09;量身定做的新一代接口标准&#xff0c;是Intel推…

Java实现二叉树(下)

1.前言 http://t.csdnimg.cn/lO4S7 在前文我们已经简单的讲解了二叉树的基本概念&#xff0c;本文将讲解具体的实现 2.基本功能的实现 2.1获取树中节点个数 public int size(TreeNode root){if(rootnull){return 0;}int retsize(root.left)size(root.right)1;return ret;}p…

314_C++_QT表格的撤销、恢复,可对多行、多item进行撤销、恢复操作

行–删除后的,撤销、恢复图示: 原图示 删除后 撤销操作 恢复操作 item修改后的撤销、恢复 原item 撤销修改 恢复修改 代码: --</

[开发日志系列]PDF图书在线系统20240415

20240414 Step1: 创建基础vueelment项目框架[耗时: 1h25min(8:45-10:10)] 检查node > 升级至最新 (考虑到时间问题,没有使用npm命令行执行,而是觉得删除重新下载最新版本) > > 配置vue3框架 ​ 取名:Online PDF Book System 遇到的报错: 第一报错: npm ERR! …

实时避障系统开启盲人独立出行新时代

作为一名资深记者&#xff0c;我始终关注并报道科技如何助力特殊群体克服生活挑战的创新实践。近期&#xff0c;我有幸深入了解了一款专为盲人设计的辅助应用叫做蝙蝠避障&#xff0c;它以实时避障系统为核心&#xff0c;为视障人士独自出行提供了强有力的支持&#xff0c;悄然…