linux环境下端口查询
置了网络服务之后,关注一下哪些端口在监听系统的网络接口这一点很重要。任何打开的端口都可能是入侵的证明。
要列举正在监听网络的端口,有两种基本方法。一种不太可靠的方法是通过键入 netstat -an 或 lsof -i
之类的命令来查询网络堆栈。这种方法之所以不太可靠是因为这些程序不连接网络上的机器,而是查看系统上在运行什么。因此,它们频繁成为攻击者的替换目标。
怪客在打开了未经授权的网络端口后,就以这种方法来企图掩盖他们的踪迹。
更可靠的方法是使用 nmap 之类的端口扫描器来检查哪些端口正在监听网络。
以下从控制台发出的命令会判定哪些端口在监听来自网络上的 TCP 连接:
nmap -sT -O localhost
该命令的输出和以下相似:
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1): (The 1596 ports
scanned but not shown below are in state: closed) Port State Service
22/tcp open ssh 111/tcp open sunrpc 515/tcp open printer 834/tcp open
unknown 6000/tcp open X11 Remote OS guesses: Linux Kernel 2.4.0 or
Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
该输出显示了由于 sunrpc 服务的存在,系统正在运行 portmap。然而,端口834上还有一个神秘服务。要查看一下该端口是否和任何已知服务相关,键入:
cat /etc/services | grep 834
该命令没有返回任何输出。这表明虽然该端口是在保留范围内(即从0到1023内),并且需要根权限才能打开,它并没有关联任何已知服务。
下一步,检查使用 netstat 或 lsof 的端口的信息。要使用 netstat 检查端口834,使用以下命令:
netstat -anp | grep 834
该命令返回以下输出:
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
这个开放端口在 netstat
中存在,这一点比较令人安慰,因为如果怪客在被攻击的系统上暗中打开一个端口,他们很可能不会让这个端口使用该命令被暴露出来。还有,[p]
选项揭示了打开这个端口的进程 id(PID)。在这个例子中,被打开的端口属于 ypbind(NIS),这是和 portmap 服务一起进行的
RPC 服务。
lsof 命令揭示了相似的信息,因为它也能够链接开放端口和服务:
lsof -i | grep 834
以下是这个命令中和讨论有关的输出部分:
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 655 0 7u IPv4
相关文档:
一、tast_struct结构
它是一个数据结构,可以说,它代表了一个进程。它有很多字段,大体有一下几种:
标识号:进程标识、用户标识、组标识。
状态: Linux的进程的四种基本状态
调度信息:优先级、时间片等
进程链信息:父进程、子进程的指针
文件信息:打开文件、虚拟文件系统
上下文信息:进程的运行环境
......
文章来源:http://www.ibm.com/developerworks/cn/linux/l-linux-synchronization.html
级别: 中级
M. Tim Jones, 顾问工程师, Emulex
2007 年 11 月 19 日
在学习 Linux® 的过程中,您也许接触过并发(concurrency)、临界段(critical section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中 ......
首先检查bind是否正常安装(以下命令仅限于rpm包的检查)
rpm -qa|grep bind
如果出现相应的安装包信息,则可以进入下一步
接下来是使用bind配置DNS所需要的系统以及对应文件,大致如下:
/etc/hosts --主机ip与域名之间的一个对应文件(系统自带),可以实现快速解析的功能
该文件的配置内容大致如下:
# Do n ......
某外企面试linux开发职位面试题:
给出如下C程序,在linux下使用gcc编译:
#include "stdio.h"
#include "sys/types.h"
#include "unistd.h"
int main(void)
{
pid_t pid1;
pid_t pid2;
pid1 = fork();
pid2 = fork();
printf("pid1:%d, pid2:%d\n", pid1, pid2);
}
  ......