端口扫描
在开发,调试,测试中,经常需要查看某台机子有没有开放指定的断口,这里列出了两种常用的查找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了。