Linux端口扫描与开放指定端口方法

555 阅读2分钟

端口扫描

在开发,调试,测试中,经常需要查看某台机子有没有开放指定的断口,这里列出了两种常用的查找Linux系统上哪些端口向外部开放的方法。当然,不止这两种方法,也可以自己写一个端口扫描工具。具体实现要根据TCP和UDP的协议原理来实现端口扫描。

使用nmap命令检查开放端口

nmap(Network exploration tool and security / port scanner)是功能强大的网络扫描工具,可以扫描单个主机和大型网络。它主要用于安全审核和渗透测试。是端口扫描的首选工具。

例如可使用如下命令进行端口扫描:sudo nmap -sT -p- 192.168.8.51-sT 选项告诉nmap扫描TCP端口, -p-扫描所有端口(65535个)

sl@Li:~/Works/brochain/corsac$ sudo nmap -sT -p- 192.168.8.51

Starting Nmap 7.60 ( https://nmap.org ) at 2020-10-20 17:11 CST
Nmap scan report for 192.168.8.51
Host is up (0.00048s latency).
Not shown: 65528 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
4000/tcp  open  remoteanything
4369/tcp  open  epmd
4444/tcp  open  krb524
5672/tcp  open  amqp
25672/tcp open  unknown
40000/tcp open  safetynetp

Nmap done: 1 IP address (1 host up) scanned in 3.39 seconds

结果显示,有几个tcp端口对外开。可以访问。

其他详细用法,可直接查看命令帮助文档。

使用netcat命令检查开放端口

netcat(或nc)是一种命令行工具,可以使用TCP或UDP协议跨网络连接读取和写入数据。使用netcat可以扫描单个端口或端口范围。

例如,要扫描IP地址192.168.8.51在范围内的远程计算机上打开的TCP端口,4000-4004可以使用以下命令:

nc -z -v 192.168.8.51 4000-4004

-z选项指示nc仅扫描打开的端口,而不发送任何数据,并且-v用于获取更多详细信息。运行结果如下:

sl@Li:~/Works/brochain/corsac$ nc -z -v 192.168.8.51 4000-4004
Connection to 192.168.8.51 4000 port [tcp/*] succeeded!
nc: connect to 192.168.8.51 port 4001 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4002 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4003 (tcp) failed: Connection refused
nc: connect to 192.168.8.51 port 4004 (tcp) failed: Connection refused

Ubuntu开放指定端口方法

1.安装iptables(一般情况,ubuntu安装好的时候,iptables会被安装上),使用以下命令:

sudo apt-get update 
sudo apt-get install iptables

2.安装完后,开放端口,使用以下命令(例如开放22端口):

sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT

3.保存规则

sudo iptables-save

这样可以开放指定的端口,但是如果服务器重启,不会保存,所以我们需要对上述规则进行一下持续化操作.

4.持续化规则:使用 iptables-persistent

sudo apt-get install iptables-persistent  //安装iptables-persistent
sudo netfilter-persistent save           // 持久保存规则
sudo netfilter-persistent reload

到这里就OK了。