linux hosts.allow 只允许adsl动态ip登录

简介:

【场景】公司采用ADSL拨号上网,即上网获得是动态IP。

服务器安全策略升级,只允许公司内可以访问服务器。

实现过程:

服务器指定固定IP可以访问服务器,其实很容易,一般有以下三下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
方法一:
/etc/hosts .allow中添加允许 ssh 登陆的ip或者网段    
sshd:192.168.1.2:allow 或者
sshd:192.168.1.0 /24 :allow 
/etc/hosts .deny添加不允许 ssh 登陆的IP
sshd:ALL            #ALL表示除了上面允许的,其他的ip 都拒绝登陆ssh
方法二:
使用iptables。   
iptables -A INPUT -p tcp -s 192.168.1.2 --destination-port 22 -j ACCEPT 
iptables -A INPUT -p tcp --destination-port 22 -j DROP 
方法三:
修改 ssh 配置文件
vi  /etc/ssh/sshd_config 
添加一行: 
allowusers xxx@192.168.1.2  
注:xxx为你用来登入服务器的用户名。

我以方法一实现,限制ADSL动态IP进行登录,

方法简单:通过花生壳或者到kmdns注册账户,这样就会得到一个域名,我们在公司内网登录这个账户,

在服务器上解析得到IP就可以了。

我用的是TPLINK的路由器本身支持动态域名账户登录,好了,拿来直接用了。

在服务器用脚本实现

先配置hosts.allow文件,按以下格式配置

1
sshd:13.18.4.36:allow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@Web: /var/scripts # vi /etc/hosts.allow 
# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
sshd:13.18.4.36:allow

编写获得动态域名IP并替换allow文件中内容脚本,

dig +short直接解析域名得到IP很简单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@Web: /var/scripts # vi getip.sh
  
#!/bin/bash
 
#解析得到myku.kmdns.net动态域名IP
getip=` dig  +short myku.kmdns.net`
 
#得到原来allow文件中的IP
oldip=` cat  /etc/hosts .allow| grep  sshd | awk  -F ':'  '{print $2}' | head  -n1`
 
 
if  [ $getip != $oldip ]
 
     then
     sed  -i  "s/$oldip/$getip/g"  /etc/hosts .allow
  
else
    exit
 
fi
 
root@Web: /var/scripts # chmod 777getip.sh

然后加入到自动任务中,每分钟检测一次

1
2
3
4
5
6
7
#allow myku ip to login server
 
* /1  * * * *  /var/scripts/getip .sh  >  /dev/null  2>&1
 
 
别忘了 /etc/hosts .deny添加不允许 ssh 登陆的IP
sshd:ALL            #ALL表示除了上面允许的,其他的ip 都拒绝登陆ssh

这样子就实现了hosts.allow 只允许adsl动态ip登录功能。

同理,我们也可以用另两个方法,这里就不多讲了。


本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1699264


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
8天前
|
Ubuntu Linux Shell
github用存在的私钥在Linux上配置免密登录
在Linux上配置GitHub免密登录,使用已有的私钥。系统环境为Ubuntu 22.04.3 LTS。步骤包括:1) 将名为`github`的私钥文件上传至`~/.ssh/github`;2) 设置正确权限`chmod 600 ~/.ssh/github`和`chmod 700 ~/.ssh`;3) 启动SSH代理并添加私钥`ssh-agent -s`和`ssh-add ~/.ssh/github`。完成上述步骤后,可以无缝使用GitHub。
15 0
|
30天前
|
Ubuntu Linux
linux怎么查看自己的ip地址
在Linux系统中,有多种方法可以查看自己的IP地址。
148 2
|
30天前
|
监控 安全 Linux
【专栏】Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip
【4月更文挑战第28天】本文介绍了Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip,以及它们在测试网络连通性、追踪路由、查看网络状态、安全扫描和接口配置等场景的应用。通过学习和运用这些命令,系统管理员和网络爱好者能更有效地诊断和管理网络问题,确保网络稳定运行。
|
8天前
|
安全 Linux
探索Linux中的`aulast`命令:审计用户的登录历史
`aulast`是Linux审计系统中的工具,用于查看用户登录历史。它显示登录时间、终端、IP地址等信息,帮助管理员分析登录模式和检测入侵。命令语法包括选项如 `-i` 显示IP地址,`-l` 显示详细信息,`-n` 指定记录数,`-s` 和 `-e` 指定时间范围。在使用前需确保`auditd`已启用并配置好规则。
|
9天前
|
Linux Shell
IP地址库Linux系统从APNIC获取地址库
IP地址库Linux系统从APNIC获取地址库
|
22天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
|
22天前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
|
30天前
|
Ubuntu 网络协议 Linux
|
30天前
|
JSON 网络协议 Linux
Linux ip命令:网络的瑞士军刀
【4月更文挑战第25天】
26 1