❶ linux如何检查远程服务器中端口是否打开
这个非常简单,telnet、nc和nmap这3个命令就可以轻松实现,下面我简单介绍一下实现过程,感兴趣的朋友可以自己尝试一下:
telnet
这是基于telnet协议实现的一个远程登录命令,可以直接用于测试远程Linux服务器是否开启指定端口,安装的话,输入命令“yum install -y telnet”(或者“apt install -y telnet”)就行,使用方式“telnet 服务器IP地址 端口号”,如下,这里以端口22为例,如果返回结果为Connected,则说明端口开启,如果为refused,则说明端口关闭:
nc
也即netcat,一个简单实用的Unix(Linux)工具,主要用来读写网络间连接的数据,可以很方便的查看远程Linux服务器是否开启指定端口,如下,这里以3306端口为例,如果返回结果为Connected,则说明端口开启,如果为timed out,则说明端口关闭:
更多参数和说明的话,可以使用命令“nc -h”进行查看,官方文档解释的非常清楚详细,如下:
nmap
这是一个专门用于网络嗅探的工具,在渗透测试中经常会用到,也可以很方便的查看远程Linux服务器是否开启指定端口,安装的话,输入命令“yum install -y nmap”(或者“apt install -y nmap”)就行,如下,这里以80,21,3306这3个端口为例,如果返回结果为open,则说明端口开启,如果为filtered,则说明端口关闭:
更多参数和功能的话,可以使用帮助命令“nmap -h”进行查看,官方文档解释的非常详细清楚,一目了然,如下:
至此,我们就介绍完了使用telnet、nc和nmap这3个命令来查看远程Linux服务器是否开启指定端口。总的来说,这3种方式都非常简单,只要你有一定的Linux基础,熟悉一下相关参数和说明,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
方法一,telnet host port
方法二,nc -t host port 其中-t代表tcp,-u是udp
方法三,任意语言,优先python,写一段 socket程序,调用connect函数看看是否成功
ping一下ip地址加上你想要的端口,就知道端口打开没有
❷ kali linux怎么嗅探路由器下所有设备的流量
必须要在
路由器
上配置“
端口镜像
”或者“端口监控”才可以。linux下只能用tcpmp
抓包
,还是要拷贝到windows下来用
wireshark
查看。
我建议你不如直接在windows下安装“WFilter
上网行为管理软件
”,可以监控所有设备的流量,还可以配置封堵策略。
❸ 如何在Linux系统上安装花生壳内网穿透客户端
花生壳内网穿透步骤。
1、下载花生壳客户端,安装登陆;
2、做映射,点击默认域名,进入花生壳管理;
3、添加映射,点击当前主机,获取外网随机端口,并进行确认;
4、映射成功,无需任何设置,直接通过映射后的外网网址进行访问即可。
轻松简单的内网穿透就这么容易的实现了。
内网穿透技术应用很多领域,尤其是在企业中应用更为广泛。企业员工常常会出差办公,而要想访问公司内网,往往受限制,导致工作无法完成。为了避免这样的情况,内网穿透是最佳解决方案。
市场上内网穿透软件数不胜数,用户在选择软件的时候需慎重,以免选择的软件含有病毒,泄露信息。这里提醒各位,选择内网穿透软件需注重以下几点:
1、功能操作:软件是否有内网穿透功能,很多软件都打着多功能的旗号,实际上并没有。因此,用户在选择软件应详细了解软件的功能。
2、映射效果:映射效果是关键,软件映射之后,却没有实现内网穿透的功能,外网依然不能访问内网。所以,用户在选择软件应用之前,可咨询使用过软件的用户。
3、安全性:软件应用一定要注重其安全性,只有确保其安全,才能保证外网访问内网的安全,避免数据丢失和泄露。
综上所述,内网穿透简单,但选择穿透软件是关键。
❹ linux 用SSH怎么查看哪些IP正在访问服务器
1、首先连接到Linux主机并进入命令行状态。
❺ 如何防御针对Linux服务器的攻击
引:随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案。
随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案。
对Linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏Linux服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器。对Linux服务器攻击有许多种类,本文从攻击深度的角度说明,我们把攻击分为四级。
攻击级别一:服务拒绝攻击(DoS)
由于DoS攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,DoS也就成为了流传最广、最难防范的攻击方式。
服务拒绝攻击包括分布式拒绝服务攻击、反射式分布拒绝服务攻击、DNS分布拒绝服务攻击、FTP攻击等。大多数服务拒绝攻击导致相对低级的危险,即便是那些可能导致系统重启的攻击也仅仅是暂时性的问题。这类攻击在很大程度上不同于那些想获取网络控制的攻击,一般不会对数据安全有影响,但是服务拒绝攻击会持续很长一段时间,非常难缠。
到目前为止,没有一个绝对的方法可以制止这类攻击。但这并不表明我们就应束手就擒,除了强调个人主机加强保护不被利用的重要性外,加强对服务器的管理是非常重要的一环。一定要安装验证软件和过滤功能,检验该报文的源地址的真实地址。另外对于几种服务拒绝可以采用以下措施:关闭不必要的服务、限制同时打开的Syn半连接数目、缩短Syn半连接的time out 时间、及时更新系统补丁。
攻击级别二:本地用户获取了他们非授权的文件的读写权限
本地用户是指在本地网络的任一台机器上有口令、因而在某一驱动器上有一个目录的用户。本地用户获取到了他们非授权的文件的读写权限的问题是否构成危险很大程度上要看被访问文件的关键性。任何本地用户随意访问临时文件目录(/tmp)都具有危险性,它能够潜在地铺设一条通向下一级别攻击的路径。
级别二的主要攻击方法是:黑客诱骗合法用户告知其机密信息或执行任务,有时黑客会假装网络管理人员向用户发送邮件,要求用户给他系统升级的密码。
由本地用户启动的攻击几乎都是从远程登录开始。对于Linux服务器,最好的办法是将所有shell账号放置于一个单独的机器上,也就是说,只在一台或多台分配有shell访问的服务器上接受注册。这可以使日志管理、访问控制管理、释放协议和其他潜在的安全问题管理更容易些。还应该将存放用户cgI的系统区分出来。这些机器应该隔离在特定的网络区段,也就是说,根据网络的配置情况,它们应该被路由器或网络交换机包围。其拓扑结构应该确保硬件地址欺骗也不能超出这个区段。
攻击级别三:远程用户获得特权文件的读写权限
第三级别的攻击能做到的不只是核实特定文件是否存在,而且还能读写这些文件。造成这种情况的原因是:Linux服务器配置中出现这样一些弱点:即远程用户无需有效账号就可以在服务器上执行有限数量的命令。
密码攻击法是第三级别中的主要攻击法,损坏密码是最常见的攻击方法。密码破解是用以描述在使用或不使用工具的情况下渗透网络、系统或资源以解锁用密码保护的资源的一个术语。用户常常忽略他们的密码,密码政策很难得到实施。黑客有多种工具可以击败技术和社会所保护的密码。主要包括:字典攻击(Dictionary attack)、混合攻击(Hybrid attack)、蛮力攻击(Brute force attack)。一旦黑客拥有了用户的密码,他就有很多用户的特权。密码猜想是指手工进入普通密码或通过编好程序的正本取得密码。一些用户选择简单的密码—如生日、纪念日和配偶名字,却并不遵循应使用字母、数字混合使用的规则。对黑客来说要猜出一串8个字生日数据不用花多长时间。
防范第三级别的攻击的最好的防卫方法便是严格控制进入特权,即使用有效的密码。
◆ 主要包括密码应当遵循字母、数字、大小写(因为Linux对大小写是有区分)混合使用的规则。
◆ 使用象“#”或“%”或“"countbak"一词,它后面添加“##”
攻击级别四:远程用户获得根权限
第四攻击级别是指那些决不应该发生的事发生了,这是致命的攻击。表示攻击者拥有Linux服务器的根、超级用户或管理员许可权,可以读、写并执行所有文件。换句话说,攻击者具有对Linux服务器的全部控制权,可以在任何时刻都能够完全关闭甚至毁灭此网络。
攻击级别四主要攻击形式是TCP/IP连续偷窃,被动通道听取和信息包拦截。TCP/IP连续偷窃,被动通道听取和信息包拦截,是为进入网络收集重要信息的方法,不像拒绝服务攻击,这些方法有更多类似偷窃的性质,比较隐蔽不易被发现。一次成功的TCP/IP攻击能让黑客阻拦两个团体之间的交易,提供中间人袭击的良好机会,然后黑客会在不被受害者注意的情况下控制一方或双方的交易。通过被动窃听,黑客会操纵和登记信息,把文件送达,也会从目标系统上所有可通过的通道找到可通过的致命要害。黑客会寻找联机和密码的结合点,认出申请合法的通道。信息包拦截是指在目标系统约束一个活跃的听者程序以拦截和更改所有的或特别的信息的地址。信息可被改送到非法系统阅读,然后不加改变地送回给黑客。
TCP/IP连续偷窃实际就是网络嗅探,注意如果您确信有人接了嗅探器到自己的网络上,可以去找一些进行验证的工具。这种工具称为时域反射计量器(Time Domain Reflectometer,TDR)。TDR对电磁波的传播和变化进行测量。将一个TDR连接到网络上,能够检测到未授权的获取网络数据的设备。不过很多中小公司没有这种价格昂贵的工具。
对于防范嗅探器的攻击最好的方法是:
1、安全的拓扑结构。嗅探器只能在当前网络段上进行数据捕获。这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。
2、会话加密。不用特别地担心数据被嗅探,而是要想办法使得嗅探器不认识嗅探到的数据。这种方法的优点是明显的:即使攻击者嗅探到了数据,这些数据对他也是没有用的。
特别提示:应对攻击的反击措施
对于超过第二级别的攻击您就要特别注意了。因为它们可以不断的提升攻击级别,以渗透Linux服务器。此时,我们可以采取的反击措施有:
◆ 首先备份重要的企业关键数据。
◆ 改变系统中所有口令,通知用户找系统管理员得到新口令。
◆ 隔离该网络网段使攻击行为仅出现在一个小范围内。
◆ 允许行为继续进行。如有可能,不要急于把攻击者赶出系统,为下一步作准备。
◆ 记录所有行为,收集证据。这些证据包括:系统登录文件、应用登录文件、AAA(Authentication、Authorization、 Accounting,认证、授权、计费)登录文件,RADIUS(Remote Authentication Dial-In User Service) 登录,网络单元登录(Network Element Logs)、防火墙登录、HIDS(Host-base IDS,基于主机的入侵检测系统) 事件、NIDS(网络入侵检测系统)事件、磁盘驱动器、隐含文件等。收集证据时要注意:在移动或拆卸任何设备之前都要拍照;在调查中要遵循两人法则,在信息收集中要至少有两个人,以防止篡改信息;应记录所采取的所有步骤以及对配置设置的任何改变,要把这些记录保存在安全的地方。检查系统所有目录的存取许可,检测Permslist是否被修改过。
◆ 进行各种尝试(使用网络的不同部分)以识别出攻击源。
◆ 为了使用法律武器打击犯罪行为,必须保留证据,而形成证据需要时间。为了做到这一点,必须忍受攻击的冲击(虽然可以制定一些安全措施来确保攻击不损害网络)。对此情形,我们不但要采取一些法律手段,而且还要至少请一家有权威的安全公司协助阻止这种犯罪。这类操作的最重要特点就是取得犯罪的证据、并查找犯罪者的地址,提供所拥有的日志。对于所搜集到的证据,应进行有效地保存。在开始时制作两份,一个用于评估证据,另一个用于法律验证。
◆ 找到系统漏洞后设法堵住漏洞,并进行自我攻击测试。
网络安全已经不仅仅是技术问题,而是一个社会问题。企业应当提高对网络安全重视,如果一味地只依靠技术工具,那就会越来越被动;只有发挥社会和法律方面打击网络犯罪,才能更加有效。我国对于打击网络犯罪已经有了明确的司法解释,遗憾的是大多数企业只重视技术环节的作用而忽略法律、社会因素,这也是本文的写作目的。
❻ Kali Linux 网络扫描秘籍 第三章 端口扫描(二)
执行 TCP 端口扫描的一种方式就是执行一部分。目标端口上的 TCP 三次握手用于识别端口是否接受连接。这一类型的扫描指代隐秘扫描, SYN 扫描,或者半开放扫描。这个秘籍演示了如何使用 Scapy 执行 TCP 隐秘扫描。
为了使用 Scapy 执行 TCP 隐秘 扫描,你需要一个运行 TCP 网络服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍。
此外,这一节也需要编写脚本的更多信息,请参考第一章中的“使用文本编辑器*VIM 和 Nano)。
为了展示如何执行 SYN 扫描,我们需要使用 Scapy 构造 TCP SYN 请求,并识别和开放端口、关闭端口以及无响应系统有关的响应。为了向给定端口发送 TCP SYN 请求,我们首先需要构建请求的各个层面。我们需要构建的第一层就是 IP 层:
为了构建请求的 IP 层,我们需要将 IP 对象赋给变量 i 。通过调用 display 函数,我们可以确定对象的属性配置。通常,发送和接受地址都设为回送地址, 127.0.0.1 。这些值可以通过修改目标地址来修改,也就是设置 i.dst 为想要扫描的地址的字符串值。通过再次调用 dislay 函数,我们看到不仅仅更新的目标地址,也自动更新了和默认接口相关的源 IP 地址。现在我们构建了请求的 IP 层,我们可以构建 TCP 层了。
为了构建请求的 TCP 层,我们使用和 IP 层相同的技巧。在这个立即中, TCP 对象赋给了 t 变量。像之前提到的那样,默认的配置可以通过调用 display 函数来确定。这里我们可以看到目标端口的默认值为 HTTP 端口 80。对于我们的首次扫描,我们将 TCP 设置保留默认。现在我们创建了 TCP 和 IP 层,我们需要将它们叠放来构造请求。
我们可以通过以斜杠分离变量来叠放 IP 和 TCP 层。这些层面之后赋给了新的变量,它代表整个请求。我们之后可以调用 dispaly 函数来查看请求的配置。一旦构建了请求,可以将其传递给 sr1 函数来分析响应:
相同的请求可以不通过构建和堆叠每一层来执行。反之,我们使用单独的一条命令,通过直接调用函数并传递合适的参数:
要注意当 SYN 封包发往目标 Web 服务器的 TCP 端口 80,并且该端口上运行了 HTTP 服务时,响应中会带有 TCP 标识 SA 的值,这表明 SYN 和 ACK 标识都被激活。这个响应表明特定的目标端口是开放的,并接受连接。如果相同类型的封包发往不接受连接的端口,会收到不同的请求。
当 SYN 请求发送给关闭的端口时,返回的响应中带有 TCP 标识 RA,这表明 RST 和 ACK 标识为都被激活。ACK 为仅仅用于承认请求被接受,RST 为用于断开连接,因为端口不接受连接。作为替代,如果 SYN 封包发往崩溃的系统,或者防火墙过滤了这个请求,就可能接受不到任何信息。由于这个原因,在 sr1 函数在脚本中使用时,应该始终使用 timeout 选项,来确保脚本不会在无响应的主机上挂起。
如果函数对无响应的主机使用时, timeout 值没有指定,函数会无限继续下去。这个演示中, timout 值为 1秒,用于使这个函数更加完备,响应的值可以用于判断是否收到了响应:
Python 的使用使其更易于测试变量来识别 sr1 函数是否对其复制。这可以用作初步检验,来判断是否接收到了任何响应。对于接收到的响应,可以执行一系列后续检查来判断响应表明端口开放还是关闭。这些东西可以轻易使用 Python 脚本来完成,像这样:
在这个 Python 脚本中,用于被提示来输入 IP 地址,脚本之后会对定义好的端口序列执行 SYN 扫描。脚本之后会得到每个连接的响应,并尝试判断响应的 SYN 和 ACK 标识是否激活。如果响应中出现并仅仅出现了这些标识,那么会输出相应的端口号码。
运行这个脚本之后,输出会显示所提供的 IP 地址的系统上,前 100 个端口中的开放端口。
这一类型的扫描由发送初始 SYN 封包给远程系统的目标 TCP 端口,并且通过返回的响应类型来判断端口状态来完成。如果远程系统返回了 SYN+ACK 响应,那么它正在准备建立连接,我们可以假设这个端口开放。如果服务返回了 RST 封包,这就表明端口关闭并且不接收连接。此外,如果没有返回响应,扫描系统和远程系统之间可能存在防火墙,它丢弃了请求。这也可能表明主机崩溃或者目标 IP 上没有关联任何系统。
Nmap 拥有可以执行远程系统 SYN 扫描的扫描模式。这个秘籍展示了如何使用 Namp 执行 TCP 隐秘扫描。
为了使用 Nmap 执行 TCP 隐秘扫描,你需要一个运行 TCP 网络服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍。
就像多数扫描需求那样,Nmap 拥有简化 TCP 隐秘扫描执行过程的选项。为了使用 Nmap 执行 TCP 隐秘扫描,应使用 -sS 选项,并附带被扫描主机的 IP 地址。
在提供的例子中,特定的 IP 地址的 TCP 80 端口上执行了 TCP 隐秘扫描。和 Scapy 中的技巧相似,Nmap 监听响应并通过分析响应中所激活的 TCP 标识来识别开放端口。我们也可以使用 Namp 执行多个特定端口的扫描,通过传递逗号分隔的端口号列表。
在这个例子中,目标 IP 地址的端口 21、80 和 443 上执行了 SYN 扫描。我们也可以使用 Namp 来扫描主机序列,通过标明要扫描的第一个和最后一个端口号,以破折号分隔:
在所提供的例子中,SYN 扫描在 TCP 20 到 25 端口上执行。除了拥有指定被扫描端口的能力之外。Nmap 同时拥有配置好的 1000 和常用端口的列表。我们可以执行这些端口上的扫描,通过不带任何端口指定信息来运行 Nmap:
在上面的例子中,扫描了 Nmap 定义的 1000 个常用端口,用于识别 Metasploitable2 系统上的大量开放端口。虽然这个技巧在是被多数设备上很高效,但是也可能无法识别模糊的服务或者不常见的端口组合。如果扫描在所有可能的 TCP 端口上执行,所有可能的端口地址值都需要被扫描。定义了源端口和目标端口地址的 TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或者 65536 个可能的 TCP 端口地址。对于要扫描的全部可能的地址空间,需要提供 0 到 65535 的端口范围,像这样:
这个例子中,Metasploitable2 系统上所有可能的 65536 和 TCP 地址都扫描了一遍。要注意该扫描中识别的多数服务都在标准的 Nmap 1000 扫描中识别过了。这就表明在尝试识别目标的所有可能的攻击面的时候,完整扫描是个最佳实践。Nmap 可以使用破折号记法,扫描主机列表上的 TCP 端口:
这个例子中,TCP 80 端口的 SYN 扫描在指定地址范围内的所有主机上执行。虽然这个特定的扫描仅仅执行在单个端口上,Nmap 也能够同时扫描多个系统上的多个端口和端口范围。此外,Nmap 也能够进行配置,基于 IP 地址的输入列表来扫描主机。这可以通过 -iL 选项并指定文件名,如果文件存放于执行目录中,或者文件路径来完成。Nmap 之后会遍历输入列表中的每个地址,并对地址执行特定的扫描。
Nmap SYN 扫描背后的底层机制已经讨论过了。但是,Nmap 拥有多线程功能,是用于执行这类扫描的快速高效的方式。
除了其它已经讨论过的工具之外,Metasploit 拥有用于 SYN 扫描的辅助模块。这个秘籍展示了如何使用 Metasploit 来执行 TCP 隐秘扫描。
为了使用 Metasploit 执行 TCP 隐秘扫描,你需要一个运行 TCP 网络服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍。
Metasploit 拥有可以对特定 TCP 端口执行 SYN 扫描的辅助模块。为了在 Kali 中启动 Metasploit,我们在终端中执行 msfconsole 命令。
为了在 Metasploit 中执行 SYN 扫描,以辅助模块的相对路径调用 use 命令。一旦模块被选中,可以执行 show options 命令来确认或修改扫描配置。这个命令会展示四列的表格,包括 name 、 current settings 、 required 和 description 。 name 列标出了每个可配置变量的名称。 current settings 列列出了任何给定变量的现有配置。 required 列标出对于任何给定变量,值是否是必须的。 description 列描述了每个变量的功能。任何给定变量的值可以使用 set 命令,并且将新的值作为参数来修改。
在上面的例子中, RHOSTS 值修改为我们打算扫描的远程系统的 IP 地址。地外,线程数量修改为 20。 THREADS 的值定义了在后台执行的当前任务数量。确定线程数量涉及到寻找一个平衡,既能提升任务速度,又不会过度消耗系统资源。对于多数系统,20 个线程可以足够快,并且相当合理。 PORTS 值设为 TCP 端口 80(HTTP)。修改了必要的变量之后,可以再次使用 show options 命令来验证。一旦所需配置验证完毕,就可以执行扫描了。
上面的例子中,所指定的远程主机的钱 100 个 TCP 端口上执行了 TCP SYN 扫描。虽然这个扫描识别了目标系统的多个设备,我们不能确认所有设备都识别出来,除非所有可能的端口地址都扫描到。定义来源和目标端口地址的TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或 65536 个可能的 TCP 端口地址。对于要扫描的整个地址空间,需要提供 0 到 65535 的 端口范围,像这样:
在这个李忠,远程系统的所有开放端口都由扫描所有可能的 TCP 端口地址来识别。我们也可以修改扫描配置使用破折号记法来扫描地址序列。
这个例子中,TCP SYN 扫描执行在由 RHOST 变量指定的所有主机地址的 80 端口上。与之相似, RHOSTS 可以使用 CIDR 记法定义网络范围。
Metasploit SYN 扫描辅助模块背后的底层原理和任何其它 SYN 扫描工具一样。对于每个被扫描的端口,会发送 SYN 封包。SYN+ACK 封包会用于识别活动服务。使用 MEtasploit 可能更加有吸引力,因为它拥有交互控制台,也因为它是个已经被多数渗透测试者熟知的工具。
除了我们之前学到了探索技巧,hping3 也可以用于执行端口扫描。这个秘籍展示了如何使用 hping3 来执行 TCP 隐秘扫描。
为了使用 hping3 执行 TCP 隐秘扫描,你需要一个运行 TCP 网络服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍。
除了我们之前学到了探索技巧,hping3 也可以用于执行端口扫描。为了使用 hping3 执行端口扫描,我们需要以一个整数值使用 --scan 模式来指定要扫描的端口号。
上面的例子中,SYN 扫描执行在指定 IP 地址的 TCP 端口 80 上。 -S 选项指明了发给远程系统的封包中激活的 TCP 标识。表格展示了接收到的响应封包中的属性。我们可以从输出中看到,接收到了SYN+ACK 响应,所以这表示目标主机端口 80 是开放的。此外,我们可以通过输入够好分隔的端口号列表来扫描多个端口,像这样:
在上面的扫描输出中,你可以看到,仅仅展示了接受到 SYN+ACK 标识的结果。要注意和发送到 443 端口的 SYN 请求相关的响应并没有展示。从输出中可以看出,我们可以通过使用 -v 选项增加详细读来查看所有响应。此外,可以通过传递第一个和最后一个端口地址值,来扫描端口范围,像这样:
这个例子中,100 个端口的扫描足以识别 Metasploitable2 系统上的服务。但是,为了执行 所有 TCP 端口的扫描,需要扫描所有可能的端口地址值。定义了源端口和目标端口地址的 TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或者 65536 个可能的 TCP 端口地址。对于要扫描的全部可能的地址空间,需要提供 0 到 65535 的端口范围,像这样:
hping3 不用于一些已经提到的其它工具,因为它并没有 SYN 扫描模式。但是反之,它允许你指定 TCP 封包发送时的激活的 TCP 标识。在秘籍中的例子中, -S 选项让 hping3 使用 TCP 封包的 SYN 标识。
在多数扫描工具当中,TCP 连接扫描比 SYN 扫描更加容易。这是因为 TCP 连接扫描并不需要为了生成和注入 SYN 扫描中使用的原始封包而提升权限。Scapy 是它的一大例外。Scapy 实际上非常难以执行完全的 TCP 三次握手,也不实用。但是,出于更好理解这个过程的目的,我们来看看如何使用 Scapy 执行连接扫描。
为了使用 Scapy 执行全连接扫描,你需要一个运行 UDP 网络服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考第一章中的“安装 Metasploitable2”秘籍。
此外,这一节也需要编写脚本的更多信息,请参考第一章中的“使用文本编辑器*VIM 和 Nano)。
Scapy 中很难执行全连接扫描,因为系统内核不知道你在 Scapy 中发送的请求,并且尝试阻止你和远程系统建立完整的三次握手。你可以在 Wireshark 或 tcpmp 中,通过发送 SYN 请求并嗅探相关流量来看到这个过程。当你接收到来自远程系统的 SYN+ACK 响应时,Linux 内核会拦截它,并将其看做来源不明的响应,因为它不知道你在 Scapy 中 发送的请求。并且系统会自动使用 TCP RST 封包来回复,因此会断开握手过程。考虑下面的例子:
这个 Python 脚本的例子可以用做 POC 来演系统破坏三次握手的问题。这个脚本假设你将带有开放端口活动系统作为目标。因此,假设 SYN+ACK 回复会作为初始 SYN 请求的响应而返回。即使发送了最后的 ACK 回复,完成了握手,RST 封包也会阻止连接建立。我们可以通过观察封包发送和接受来进一步演示。
在这个 Python 脚本中,每个发送的封包都在传输之前展示,并且每个收到的封包都在到达之后展示。在检验每个封包所激活的 TCP 标识的过程中,我们可以看到,三次握手失败了。考虑由脚本生成的下列输出:
在脚本的输出中,我们看到了四个封包。第一个封包是发送的 SYN 请求,第二个封包时接收到的 SYN+ACK 回复,第三个封包时发送的 ACK 回复,之后接收到了 RST 封包,它是最后的 ACK 回复的响应。最后一个封包表明,在建立连接时出现了问题。Scapy 中可能能够建立完成的三次握手,但是它需要对本地 IP 表做一些调整。尤其是,如果你去掉发往远程系统的 TSR 封包,你就可以完成握手。通过使用 IP 表建立过滤机制,我们可以去掉 RST 封包来完成三次握手,而不会干扰到整个系统(这个配置出于功能上的原理并不推荐)。为了展示完整三次握手的成功建立,我们使用 Netcat 建立 TCP 监听服务。之后尝试使用 Scapy 连接开放的端口。
这个例子中,我们在 TCP 端口 4444 开启了监听服务。我们之后可以修改之前的脚本来尝试连接 端口 4444 上的 Netcat 监听服务。
这个脚本中,SYN 请求发送给了监听端口。收到 SYN+ACK 回复之后,会发送 ACK回复。为了验证连接尝试被系统生成的 RST 封包打断,这个脚本应该在 Wireshark 启动之后执行,来捕获请求蓄力。我们使用 Wireshark 的过滤器来隔离连接尝试序列。所使用的过滤器是 tcp && (ip.src == 172.16.36.135 || ip.dst == 172.16.36.135) 。过滤器仅仅用于展示来自或发往被扫描系统的 TCP 流量。像这样:
既然我们已经精确定位了问题。我们可以建立过滤器,让我们能够去除系统生成的 RST 封包。这个过滤器可以通过修改本地 IP 表来建立:
在这个例子中,本地 IP 表的修改去除了所有发往被扫描主机的目标地址的 TCP RST 封包。 list 选项随后可以用于查看 IP 表的条目,以及验证配置已经做了修改。为了执行另一次连接尝试,我们需要确保 Natcat 仍旧监听目标的 4444 端口,像这样:
和之前相同的 Python 脚本可以再次使用,同时 WIreshark 会捕获后台的流量。使用之前讨论的显示过滤器,我们可以轻易专注于所需的流量。要注意三次握手的所有步骤现在都可以完成,而不会收到系统生成的 RST 封包的打断,像这样:
此外,如果我们看一看运行在目标系统的 Netcat 服务,我们可以注意到,已经建立了连接。这是用于确认成功建立连接的进一步的证据。这可以在下面的输出中看到:
虽然这个练习对理解和解决 TCP 连接的问题十分有帮助,恢复 IP 表的条目也十分重要。RST 封包 是 TCP 通信的重要组成部分,去除这些响应会影响正常的通信功能。洗唛按的命令可以用于刷新我们的 iptable 规则,并验证刷新成功:
就像例子中展示的那样, flush 选项应该用于清楚 IP 表的条目。我们可以多次使用 list 选项来验证 IP 表的条目已经移除了。
执行 TCP 连接扫描的同居通过执行完整的三次握手,和远程系统的所有被扫描端口建立连接。端口的状态取决于连接是否成功建立。如果连接建立,端口被认为是开放的,如果连接不能成功建立,端口被认为是关闭的。
❼ 一名优秀的Linux运维人员该掌握哪些工具
运维人员必须熟悉的运维工具汇总
某日受邀请参加了一个BBS活动,于是有了下面的内容。
下面是在linux网站运维方向老男孩最近几年常用的免费的开源软件,临时即兴想起来的,在这里和大家分享,希望给初学者指引一点路。
linux的世界真的很精彩,还没入门的朋友赶紧进来吧!
操作系统:Centos※,Ubuntu,Redhat※,suse,Freebsd
网站服务:nginx※,apache※,lighttpd,php※,tomcat※,resin※
数据 库:MySQL※,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
网站缓存:squid※,nginx※,varnish
NOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB
存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS
版本管理:svn※,git※
监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg,graphite
域名解析:bind※,powerdns,dnsmasq※
同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※
批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,ansible,cfengine
虚拟 化:kvm※,xen※
云计 算:openstack※,docker,cloudstack
内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
邮件软件:qmail,posfix※,sendmail
远程拨号:openvpn※,pptp,openswan※,ipip※
统一认证:openldap(可结合微软活动目录)※
队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq
打包发布:mvn※,ants※,jenkins※,svn
测试软件:ab,smokeping,siege,JMeter,Webbench,LoadRunner,http_load(都是※)
日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka,storm,ELK(Elasticsearch+Logstash+Kibana)DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)
搜索软件:Sphinx,Xapian(大公司会自己开发类似网络的小规模内部搜索引擎)
提示:
1)以上所有软件都是老男孩用过或测试过的。
2)带※的为老男孩最近几年用的比较多,可信任使用的。也是近年来linux运维的大众。
3)有了功能分类和软件名,大家有需求,可以按功能找软件直接G就知道了。
4)学习要有舍有得,什么都抓必然短时间都不会精,希望大家能抓重点,抓精髓,大众软件(带※)先熟练了,这是基础加提高,在研究小众软件(不带※),这是高手之路,最后在研究偏门的,世外高手之路,当然前提是先掌握前面的大众和小众。
5)当然还有一些没有大众开源的有一些也很棒,如审计堡垒机程序。
❽ 如何通过外网访问内网linux系统
访问linux系统抄实际上是安全的方式是通过ssh协议登录,可以将linux系统的22号端口映射到外网,这样就可以使用ssh客户端软件登录内网的linux系统了。
可以在开源社区上下载holer软件包上传到linux上,在holer-client/conf/holer.conf文件了配置一个key,比如:
HOLER_ACCESS_KEY=HOLER_CLIENT-822404317F9D8ADD
启动holer就可以了
然后用ssh客户端软件比如putty, xshell, mobaxterm等输入主机名holer.org 端口号 65534,同时根据提示输入用户名和密码就可以登录到内网的linux系统了