【安全-SSH】SSH安全设置

今天发现自己的公有云服务器被攻击了

然后查看了登录日志,如上图

shell 复制代码
ls -sh /var/log/secure
vim /var/log/secure

然后增加了安全相关的设置

具体可以从以下方面增加安全性:

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

考虑自己有时候要登陆,目前我采用了方法1、2。

先修改公有云的安全组策略,增加一个端口Port 54321

开放防火墙端口54321

shell 复制代码
firewall-cmd --zone=public --add-port=54321/tcp --permanent
firewall-cmd --reload

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

shell 复制代码
vim   /etc/ssh/sshd_config

重启sshd

shell 复制代码
systemctl restart sshd

删掉公有云安全组中的22端口

移除防火墙22端口

shell 复制代码
firewall-cmd --zone=public --remove-port=22/tcp --permanent

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

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

shell 复制代码
cat /shell_script/hosts_deny.sh
shell 复制代码
#!/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`
do
        IP=`echo $i | awk -F= '{print $1}'`
        NUM=`echo $i | awk -F= '{print $2}'`
        if [ $NUM -gt $DEFINE ]
        then
                grep $IP /etc/hosts.deny > /dev/null
                if [ $? -gt 0 ]
                then
                        echo "sshd:$IP:deny" >> /etc/hosts.deny
                fi
        fi
done
shell 复制代码
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将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

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

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

配置规则

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

shell 复制代码
#新建配置
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

参数说明:

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

防止SSH爆破

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

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

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

参数说明:

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

完整版:

shell 复制代码
[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

禁止ping

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

shell 复制代码
vim /etc/sysctl.conf

在文件末尾加上一行:

shell 复制代码
net.ipv4.icmp_echo_ignore_all=1

保存后执行使配置生效

shell 复制代码
sysctl -p

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

这是几天后的效果,不仅来攻击我的人少了,而且攻击我的人直接自动被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的设置方法
相关推荐
ZZH1120KQ22 分钟前
Linux系统安全及应用
linux·运维·系统安全
加密狗复制模拟29 分钟前
坚石ET ARM加密狗复制模拟介绍
安全·软件工程·个人开发
小扎仙森1 小时前
关于服务器宝塔转移wordperss子比主题问题
运维·服务器
小小小糖果人1 小时前
Linux云计算基础篇(5)
linux·运维·服务器
我不是哆啦A梦1 小时前
破解风电运维“百模大战”困局,机械版ChatGPT诞生?
运维·人工智能·python·算法·chatgpt
galaxylove1 小时前
Gartner发布塑造安全运营未来的关键 AI 自动化趋势
人工智能·安全·自动化
weixin_7714323112 小时前
linux系统 weblogic10.3.6(jar) 下载及安装
linux·运维·jar
scuter_yu2 小时前
主流零信任安全产品深度介绍
运维·网络·安全
江苏思维驱动智能研究院有限公司2 小时前
Sophos 网络安全:全球领先的自适应安全解决方案提供商
网络·安全·web安全
开开心心就好2 小时前
免费PDF处理软件,支持多种操作
运维·服务器·前端·spring boot·智能手机·pdf·电脑