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

本文涉及的产品
.cn 域名,1个 12个月
简介:

【场景】公司采用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


相关文章
|
1月前
|
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。
40 0
|
2月前
|
Ubuntu Linux
linux怎么查看自己的ip地址
在Linux系统中,有多种方法可以查看自己的IP地址。
232 2
|
22天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
147 1
|
1月前
|
安全 Linux Shell
【Linux基础】SSH登录
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
35 6
|
1月前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
1月前
|
Linux 网络安全
|
21天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
23天前
|
监控 算法 Linux
Linux下工具tc详细讲解及限制IP和端口实例
TC (Traffic Control) 是Linux内核中提供的一个用于控制和管理网络流量的强大工具,它允许用户实现QoS(Quality of Service)策略,包括带宽限制、优先级控制、延迟保证等。TC基于内核的队列 discipline (qdisc) 和流量类别(class) 体系结构,允许对进入或离开网络接口的数据流进行复杂的整形和过滤。
|
24天前
|
域名解析 网络协议 Linux
linux网络-- 手动配置ip地址
linux网络-- 手动配置ip地址
|
25天前
|
Linux 网络安全 数据安全/隐私保护
如何在Linux中设置SSH无密码登录
这样,你就设置了SSH无密码登录。但请注意,这种方式虽然方便,但如果你的私钥落入他人手中,他们就能访问你的服务器,所以要妥善保管你的私钥。
20 0