Linux查看机器开放的端口

本文介绍了如何使用Nmap和Netstat工具来扫描和管理服务器的开放端口。通过具体的命令示例,展示了如何检查网段内的活动主机、服务器开放的端口以及如何通过防火墙策略增强安全性。
【数据资料来自互联网,个人收集总结
 
一、使用nmap扫描机器开放的端口
 
我用这个工具的目的是查看自己服务器RHEL5所开放的端口,发现没有必要的端口就关闭,并不是用来扫描别的机器的端口……善哉善哉……
nmap是个跨平台的工具,在Linux、Linux,FreeBSD,UNIX,Windows下都有可用的版本。
官方网站: [url]http://insecure.org/nmap/[/url]
主要功能:
1、测一组主机是否在线
2、扫描主机端口,嗅探所提供的网络服务
3、推断主机所用的操作系统
 
我用到的几个命令如下:
检查我所在网段有多少台“活着”的机器
[root@pps ~]# nmap -sP 192.168.32.0/24
Starting Nmap 4.11 (  [url]http://www.insecure.org/nmap/[/url] ) at 2009-03-10 13:31 CST
Host 192.168.32.1 appears to be up.
MAC Address: 00:50:56:C0:00:08 (VMWare)
Host hoho.com (192.168.32.50) appears to be up.
Host 192.168.32.254 appears to be up.
MAC Address: 00:50:56:E1:E2:F8 (VMWare)
Nmap finished: 256 IP addresses (3 hosts up) scanned in 5.476 seconds
我感觉这个结果不真实,因为我的虚拟机不止一个IP,有些IP并没有检测到。但是自己没有把握说明白原因,于是就不多说了。
 
检查我本身的机器开放了哪些端口
[root@pps ~]# nmap -sTU localhost
Starting Nmap 4.11 (  [url]http://www.insecure.org/nmap/[/url] ) at 2009-03-10 13:33 CST
Interesting ports . localhost.localdomain (127.0.0.1):
Not shown: 3156 closed ports
PORT     STATE         SERVICE
25/tcp   open          smtp
53/tcp   open          domain
80/tcp   open          http
111/tcp  open          rpcbind
631/tcp  open          ipp
953/tcp  open          rndc
3306/tcp open          mysql
53/udp   open|filtered domain
111/udp  open|filtered rpcbind
631/udp  open|filtered unknown
Nmap finished: 1 IP address (1 host up) scanned in 2.875 seconds
根据实际的需要,用防火墙来“屏蔽”对一些端口的访问,确保安全。

参数说明:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
比较实用的还有以下三个:
SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:
nmap -sS 192.168.32.0/24
当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT 192.168.32.0/24
UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU 192.168.32.0/24
 
 
二、使用netstat来看看系统的监听端口
 
# netstat -antp       //所有连接、数字显示主机、端口、TCP连接、监听的程序
# netstat -anup       //所有连接、数字显示主机、端口、UDP连接、监听的程序
# netstat -s          //统计所有(开机至今的)连接数据,包括tcp、udp等
# netstat -st         //统计所有tcp连接数据
# netstat -su         //统计所有udp连接数据
# netstat -su         //粗略统计连接数据
 
从netstat里可以看到自己机器正在监听的端口、相关程序以及当前的连接数、连接来自何方等数据,然后有针对性的进行关闭相关服务或者用防火墙来屏蔽、过滤对本机服务的访问。
 
-p参数是Linux特有的,如果没有使用-p参数,想知道哪个程序监听25端口,可以用:
lsof -i :port

来确定是哪个程序监听着port端口,比如我的RHEL5:
[root@pps ~]# lsof -i :25

COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
sendmail 3316 root    4u  IPv4  11299       TCP *:smtp (LISTEN)
 
嘿嘿,就知道是sendmail在监听本机的25端口。
 
### 查看Linux系统中所有开放的防火墙端口 对于不同的Linux发行版,查看所有开放的防火墙端口的方法有所不同。 #### 对于CentOS 7 使用Firewalld 为了获取当前通过`firewalld`管理下开放的所有服务和端口列表,可以使用`firewall-cmd`工具。这允许管理员查询活动区域中的打开端口和服务: ```bash sudo firewall-cmd --list-all ``` 上述命令会显示一系列配置详情,其中包括已启用的服务以及直接指定的任何TCP或UDP端口[^1]。 如果仅关注具体的开放端口号,则可以通过如下指令来简化输出: ```bash sudo firewall-cmd --zone=public --list-ports ``` 这条命令专门列出了公共区域内被开启的端口而不涉及其他设置信息。 #### 对于Ubuntu 使用UFW 在Ubuntu上,默认情况下使用的个人防护墙是ufw(Uncomplicated Firewall)。要查看哪些端口处于开放状态,可执行以下操作: ```bash sudo ufw status verbose ``` 此命令不仅能够展示出已被允许访问系统的各个端口及其协议类型,还能提供有关规则应用情况更详细的描述[^2]。 另外一种通用的方式适用于大多数基于Debian/RedHat系列的操作系统,即利用netstat或者ss配合grep过滤器来查找监听中的网络连接: ```bash # For systems where net-tools package is installed sudo netstat -tuln | grep LISTEN # Or using ss which provides faster performance than netstat sudo ss -tuln | grep LISTEN ``` 这些方法能帮助识别本地机器正在监听的所有TCP/UDP端口而不论是由哪个软件包负责管理防火墙策略[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值