[Linux] - 利用ping给端口加密,限制访问

Linux中,想对特定的端口加密访问,可以使用iptables的ping方式。

作用

访问被限制的端口,必需先ping发送对应的字节包(字节包大小可自行设置,此为密钥)才能访问成功!

下边是对SSH的22端口加入ping规则

其它端口可自行修改设定

1) iptables-recent 配置
# 设置 iptables 规则,要先登录服务器就必须先 ping 一个 128 字节的包

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 128 -m recent --name sshkey --rsource --set -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name sshkey --rcheck --rsource --seconds 15 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

2) 先发送一个长度为 128 字节的 ICMP 请求包(100 字节加上 IP 头、ICMP 头 28 字节):

ping -c 1 -s 100 SERVER_IP # Linux
ping -n 1 -l 100 SERVER_IP # Windows

3) 然后在 15 秒内可正常登录:

ssh -p 1234 user@SERVER_IP

说明

## iptables-recent 可以理解为一张记录 IP 地址的列表
‘--set‘ ‘--remove‘ # 添加、删除 IP
‘--rsource‘ ‘--rdest‘ # 记录源地址(默认)、目标地址
‘--rcheck‘ ‘--update‘ # 检查地址是否在列表中
‘--seconds‘ # 设置时间条件
‘--hitcount‘ # 设置命中次数

## rcheck、update 区别
# rcheck 仅仅检查地址是否在列表中
# update 和 rcheck 一样,不过会刷新时间戳

## 放在上面的例子:
# 1. 记录长度为 128 字节的 ICMP_Request 包的源地址,命名为 sshkey
# 2. 允许来自 sshkey 列表中的地址在 15 秒内登录 SSH(端口 1234)
# 3. 而其他不在 sshkey 列表中的地址的 SSH 握手将被 DROP 掉

原文地址:https://www.cnblogs.com/HD/p/10601008.html

时间: 2024-10-16 12:04:19

[Linux] - 利用ping给端口加密,限制访问的相关文章

设置端口转发来访问Virtualbox里linux中的网站

上一篇中我们讲到怎么设置virtuabox来通过SSH登录机器. 同样,我们也可以按照上一篇内容中的介绍,设置端口转发,来访问虚拟linux系统已经搭建的网站: 1.设置端口转发: 我们设置本地的8888端口来转发给虚拟机的80端口. 虚拟机中的网站简单结构如下: [email protected]:/var/www/php# ll /var/www/php/test.php -rw-rw-r-- 1 zhiguo zhiguo 217 Apr 12 20:59 /var/www/php/tes

Linux通过端口转发来访问内网服务(端口转发访问阿里云Redis数据库等服务)

# 安装rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd sed -i 's/65536/65535/g' rinetd.c (修改端口范围) mkdir /usr/man&&make&&make install 说明:IP的端口是双字节,也就是256*256-1, 256*256对计算机来说就是0,因

创业小坑:内网域名 在windows下能nslookup,但ping不通,也无法访问。而在linux下正常。

使用巴法络(BUFFALO )LS-XL 网络硬盘盒开启了FTP服务,IP是172.16.0.21 在windows和linux上,都可以访问ftp://172.16.0.21,现在想使用域名访问,便于大家记忆. 内网dnsmasq作为DNS服务器,IP为172.16.0.1 /etc/dnsmasq.conf 配置如下: address=/ftp/172.16.0.21 按道理说,现在访问ftp://ftp 就可以了.结果不行,实际情况是这样的: linux:可以用内网域名访问. window

linux centos7 开启 mysql 3306 端口 外网访问 的实践

第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开启了 3306 端口(通常情况下mysql能够启动就不用考虑这个) (4)linux 是否对外网放行 3305 (5)云服务器厂商是否对3306进行了限制 我们用到的工具: (1)nmap: 模拟外网扫描端口开启情况 (2)netstat: 扫描linux开启了哪些端口 (3)firewall:防火

Linux CentOS7 开启80,443端口外网访问权限

一.查看系统防火墙状态(如果返回 running 代表防火墙启动正常) 1 firewall-cmd --state 二.开启端口外网访问 1.添加端口 返回 success 代表成功(--permanent永久生效,没有此参数重启后失效) 1 firewall-cmd --zone=public --add-port=80/tcp --permanent 2 firewall-cmd --zone=public --add-port=443/tcp --permanent 3 4 开放多个端口

linux下mysql的用户管理及访问问题

1.mysql的安装配置 linux下有一个很神奇的东西叫yum,只要有源,用yum来安装是一件非常容易的事,什么都不用管,它会为你解决好一些软件依赖的问题.一键安装mysql: [[email protected] ~]# yum install mysql-server mysql-devel 安装完成后我们就可以使用mysql了: [[email protected] ~]# /etc/init.d/mysqld start Starting mysqld: [ OK ] [[email 

telnet 查看端口是否可访问

1. 首先为什么要写这篇文章 说到为什么还得从DNS服务器说起.我在我的电脑上安装了DNS服务器,但是用网络去访问还怎么都访问都不上去.于是我就打开dos窗口,用ping命令查看是否可以ping(如 ping 125.34.49.211)通.一查能够ping通.既然可以通,那么就说明这个地址是有效的,那问题出现在那边呢,只能出现在访问的端口port上,于是我就想我应该查看一下端口是否可以进行访问.在dos窗口输入telnet ip port(如: telnet 125.34.49.211 808

Linux 下开放指定端口

安装tomcat后,在客户端输入地址  http://localhost:8080/ ,发现默认端口8080不能访问. 由于Linux防火墙默认是关闭8080端口.因此,若要能够访问8080端口,可以用两种方式,一个是关闭防火墙,另一个就是让防火墙开放8080端口. 开放8080端口的解决步骤如下: 1.修改/etc/sysconfig/iptables文件,增加如下一行: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --d

Puppet利用Nginx多端口实现负载均衡

随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster压力大,解析缓慢,而且时不时出现"time out"之类的报错,那这时有什么优化的办法吗?其实不然,我们可以利用Nginx多端口实现负载均衡,这样在很大程度上优化了puppet的处理能力. [51CTO原创稿件]随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster压力大,解析缓慢,而且时不时出现&