说到Linux安全,SSH限制IP登录绕不开这3种方法!

简介: 说到Linux安全,SSH限制IP登录绕不开这3种方法!


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

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

在/etc/ssh/sshd_config 配置文件中设置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 -nChain 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:22Chain 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 -nChain 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:22ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443ACCEPT     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 -nChain 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:22ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHEDACCEPT     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:22ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0            state ESTABLISHEDACCEPT    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 saveiptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

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

[root@iZuf63tu3fn1swasqa62h8Z ~]# chkconfig iptables onNote: 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 ~]#
相关文章
|
4月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
4月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1666 10
|
4月前
|
Ubuntu Linux 图形学
推广与体验Ubuntu Linux的便捷方法
如果你的朋友或家人对尝试Linux感兴趣,但希望在安装之前先体验一下,你可以分享以下链接给他们:Ubuntu在线导览。通过这个链接,他们可以在任何地方轻松体验Ubuntu,无需安装即可深入了解这个流行的操作系统。
|
3月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
486 1
二、Linux文本处理与文件操作核心命令
|
3月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
330 137
|
3月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
775 57
|
6月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
612 143
linux命令—tree
|
2月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
579 2
|
3月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
354 0
Linux内存问题排查命令详解