当前位置:首页 > 文章列表 > 文章 > linux > Linux安全提升–SSH仅允许指定IP访问的三种方法

Linux安全提升–SSH仅允许指定IP访问的三种方法

来源:良许Linux教程网 2025-01-16 18:28:00 0浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Linux安全提升–SSH仅允许指定IP访问的三种方法》,文章讲解的知识点主要包括,如果你对文章方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

Linux安全提升–SSH仅允许指定IP访问的三种方法

为了加强集团服务器的安全性,近期启用了堡垒机,同时就需要对所有业务服务器的ssh进行访问限制,仅允许指定IP访问(堡垒机),其他IP来源则不允许放行。

修改配置文件,实现允许指定用户/用户组或者IP登录

允许指定用户进行登录(白名单)

在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,

在配置文件末尾添加行格式如下(例如允许用户jituan01通过192.168.1.11登录)。

AllowUsers jituan01@192.168.1.11

配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。

禁止指定用户登录(黑名单)

在 /etc/ssh/sshd_config 配置文件中设置DenyUsers选项,

在配置文件末尾添加行格式如下(例如禁止用户jituan01登录)。

DenyUsers jituan01

上述修改需要重启sshd服务。

CentOS 6系列执行以下命令进行重启:

# service sshd restart

Centos 7/EulerOS系列执行以下命令进行重启:

# systemctl restart sshd

使用DenyHosts允许或者禁止指定IP通过SSH登录

linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件,

可以限制或者允许某个或者某段IP地址远程SSH登录服务器.方法比较简单,具体如下:

允许192.168.1.10 这个IP地址ssh登录,打开/etc/hosts.allow,添加如下行:

sshd: 192.168.1.10

禁止所有ip通过ssh登录,打开/etc/hosts.deny,添加如下行:

sshd:ALL

hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,假设按照上述方法设置后服务器只允许192.168.1.10这个IP地址的SSH登录,其它的 IP 都会拒绝。

开启iptable防火墙,禁止指定IP访问

配置允许访问的端口

例如默认SSH端口为22,我们可以通过命名:

[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

开放22端口。我们通过-L -n 就可看到新增加的规则了:

[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

如果,你想删除该端口配置。那么可以通过:iptables -D INPUT 2 进行删除。

ps:每一条规则是按照顺序从1开始进行排序的。我们如果想删除哪条。就选择删除哪个就可以了。

如果想删除OUTPUT或FORWARD,可以设置为:

iptables -D OUTPUT 1 或 iptables -D FORWARD1

我们如果SSH端口 不是22,可以改为指定的端口。

还可以配置允许 443端口(https请求),80端口(http请求)

[root@iZuf63tu3fn1swasqa62h8Z ~]#iptables -A INPUT -p tcp --dport 80 -j ACCEPT[root@iZuf63tu3fn1swasqa62h8Z ~]#iptables -A INPUT

-p tcp --dport 443 -j ACCEPT

允许已建立的或相关连的通行

[root@iZuf63tu3fn1swasqa62h8Z ~]#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

上面这个也是必须的,它是允许所有对外请求的返回包。例如在服务器上执行下载或者安装命令,那么服务器就需要访问外网数据,那得到的返回数据包对于我们本地服务器来说,就是一个INPUT事件了。

添加成功后在规则中的展示效果如下:

[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHED

过滤其他规则

当我们配置完毕允许开放的规则之后,添加过滤规则。有两种添加方式:

过滤所有非以上规则的请求:iptables -P INPUT DROP。

其他访问规则禁止访问:iptables -A INPUT -j REJECT。

上面两个命令,执行其中一个都可以了。执行第一个命名后的效果:

[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0  
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

我们会看到Chain INPUT (policy ACCEPT) 变成了Chain INPUT (policy DROP)

而如果执行的第二条命名就会:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0  
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80     
 REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

到这里,我们的端口开放就配置完毕了。也就是说只有这三个端口才能访问服务器,如果是其他端口。就会直接被拒绝。

PS:我们可以通过开放和关闭80端口,来验证一下防火墙是否正常拦截。

注意:你如果是使用的阿里云服务器,在阿里云后台中的安全组中也要开放相关的端口。否则仍然无法访问。

屏蔽IP

我们上面指定了固定开放的端口。其他端口全部禁止访问。如果有攻击的ip地址,例如通过lastb 命令查询到的大量工具访问的ip。我们如何添加到防火墙配置中呢?很简单,直接指定IP禁止访问即可:

[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -I INPUT -s 85.31.46.0/24 -j DROP[root@iZuf63tu3fn1swasqa62h8Z ~]# iptables -I INPUT 

-s 170.64.130.0/24 -j DROP

0/24 代表屏蔽了:

170.64.130.0~170.64.130.255 之间的全部ip。

保存iptables 配置

当我们配置完毕后,需要执行保存操作。否则重启系统后。规则会丢失。因为当前操作只是存储在了内存中。

关键命令为:service iptables save。具体示例如下所示:

[root@iZuf63tu3fn1swasqa62h8Z ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

就代表保存成功了。我们还可以将iptables添加到自启动chkconfig中,示例如下:

[root@iZuf63tu3fn1swasqa62h8Z ~]# chkconfig iptables on

Note: Forwarding request to 'systemctl enable iptables.service'. Created symlink /etc/systemd/system/multi-

user.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service. [root@iZuf63tu3fn1swasqa62h8Z ~]#

好了,今天的小知识你学会了吗?

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

版本声明
本文转载于:良许Linux教程网 如有侵犯,请联系study_golang@163.com删除
上市大涨190.2% 黄山谷捷成功登陆创业板上市大涨190.2% 黄山谷捷成功登陆创业板
上一篇
上市大涨190.2% 黄山谷捷成功登陆创业板
重装Win11系统需要密码怎么办-重装Win11系统需要密码的解决方法
下一篇
重装Win11系统需要密码怎么办-重装Win11系统需要密码的解决方法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • AI Make Song:零门槛AI音乐创作平台,助你轻松制作个性化音乐
    AI Make Song
    AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
    8次使用
  • SongGenerator.io:零门槛AI音乐生成器,快速创作高质量音乐
    SongGenerator
    探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
    7次使用
  •  BeArt AI换脸:免费在线工具,轻松实现照片、视频、GIF换脸
    BeArt AI换脸
    探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
    6次使用
  • SEO标题协启动:AI驱动的智能对话与内容生成平台 - 提升创作效率
    协启动
    SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
    13次使用
  • Brev AI:零注册门槛的全功能免费AI音乐创作平台
    Brev AI
    探索Brev AI,一个无需注册即可免费使用的AI音乐创作平台,提供多功能工具如音乐生成、去人声、歌词创作等,适用于内容创作、商业配乐和个人创作,满足您的音乐需求。
    14次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码