赞
踩
- 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
- 【CentOS Linux 7】实验2【Shell编程及应用】
- 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】
- 【CentOS Linux 7】实验4【Linux网络应用、Linux下C语言编程】
- 【CentOS Linux 7】实验5【安装VScode,并用VScode编写HTML网页】
- 实验4文档:gcc编译器、Linux网络配置基础
目 录
1.2 /etc/sysconfig/network-scrips/ifcfg-eth0
要想熟练的配置linux网络,首先要了解和Linux网络相关配置文件。
首先来查看文件/etc/sysconfig/network的内容:
[root@localhost bin]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
这里可以看出该文件就三句话,主要的功能是是否启动网络,第一句指的是默认启动IPV4网络,第二句是IPV6网络。第三句指的是设置主机名称。如果说要改变主机名,需要重新启动机器才能生效。因为这样才会让系统上面所有的程序都使用最新配置的主机名称。
这个文件是配置网卡参数的文件。里面可以配置IP、netmask、gateway、开机时的IP获取方式、是否在开机的时候启动等等。ifcfg-eth0指的是第一块网卡,而第二块网卡为ifcfg-eth1以此类推。其中ifcfg-lo指的是网络的回环地址。
[root@localhost bin]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //网卡设备名称
BOOTPROTO=none //是否使用DHCP方式获得网络参数,值可以是(none、static、dhcp)
HWADDR=00:0C:29:97:30:A8 //这就是常说的网卡硬件地址
ONBOOT=yes //启动的时候是否激活网卡,值可以是(yes | no)
TYPE=Ethernet //网卡的类型为以太网
USERCTL=no //是否允许普通用户来控制该设备
IPV6INIT=no //是否初始化IPV6
PEERDNS=yes //yes使用DNS选项的值替代/etc/resolv.conf中的配置。如果使用 DHCP,yes 则为这个选项的默认,no不更改/etc/resolv.conf中的配置
NETMASK=255.255.255.0 //子网掩码
IPADDR=202.196.1.234 //IP地址
GATEWAY=202.196.1.193 //网关地址
(1)/etc/resolv.conf
DNS功能是进行主机名称与 IP 的对应。而resolv.conf就是配置DNS IP地址的文件。
(2)/etc/hosts
该文件的主要作用是用来设置主机名与对应IP的。
(3)/etc/services
该文件记录了各种协议所使用的端口。例如http、ftp、ssh、telnet等等服务所所使用的port number等等。
(4)/etc/protocols
该文件显示linux所支持的网络协议。例如常见的TCP、UDP等等。
ifconfig主要是可以启动、观察与修改网卡的相关参数,可以修改的参数包括IP参数以及MTU等等都可以修改。
【例】:查看当前eth0网卡的参数。
[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:97:30:A8
inet addr:202.196.1.234 Bcast:202.196.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe97:30a8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:492965 errors:0 dropped:0 overruns:0 frame:0
TX packets:12557 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:81685351 (77.9 MiB) TX bytes:1772297 (1.6 MiB)
Interrupt:67 Base address:0x2000
说明如下:
eth0:是网卡的代号,lo是回环网卡;HWaddr:MAC地址或者网卡地址;
inet addr表示IP地址;Bcast广播地址;Mask掩码;
inet6 addr:是IPv6地址;
MTU:就是最大传输单元;
RX:接收到的数据包,packets代表数据包数、errors代表数据包发生错误的数量、dropped 代表数据包由于有问题而遭丢弃的数量等等;
TX:发送的数据包,为网络由启动到目前为止的传送情况;
collisions:代表数据包碰撞的情况,如果发生太多次, 表示网络状况不太好;
Interrupt,Memory:IRQ地址与内存地址;
通过ifconfig命令,可以了解系统有几个网卡接口,每个网卡接口的参数配置,发送和接收了多少数据包等信息。
【例】:使用ifconfig命令来修改网卡参数。
[root@localhost ~]# ifconfig eth0 202.196.1.199
说明:该例修改网络的IP地址为202.196.1.199。
【例】:同时修改掩码及MTU
[root@localhost ~]# ifconfig eth0 202.196.1.199 netmask 255.255.255.193 mtu 2000
【例】:一张网卡配置两个IP地址。
[root@localhost ~]# ifconfig eth0:1 202.196.1.200
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:97:30:A8
inet addr:202.196.1.234 Bcast:202.196.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe97:30a8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:497114 errors:0 dropped:0 overruns:0 frame:0
TX packets:12956 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:82363124 (78.5 MiB) TX bytes:1828577 (1.7 MiB)
Interrupt:67 Base address:0x2000
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:97:30:A8
inet addr:202.196.1.200 Bcast:202.196.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
说明:这里可以看到两个网络接口,eth0和eth0:1,它们的硬件地址都是一样的。意思是它们其实是一张网卡,但是配置了两个不同的IP地址。
【例】:使用ifconfig启动网卡eth0。
[root@localhost ~]# ifconfig eth0 up
关闭网卡:
[root@localhost ~]# ifconfig eth0 down
利用ifconfig命令修改网卡的参数需要注意,这里的修改都是暂时的,一旦网络重新启动后,这里所有修改的参数都是无效的。
【例】重新启动网络服务,ifconfig命令参数设置无效。
[root@localhost ~]# /etc/init.d/network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]
重新启动后,在此利用ifconfig来查看网卡参数,会发现又恢复到了原始的参数。那么如果想要使修改的参数永久保存,需要直接在/etc/sysconfig/network-scripts/ifcfg-eth0文件中修改。修改完成后保存退出,重新启动网络即可生效。
ping命令的主要作用是测试主机之间的连通性。其原理是通过发送ICMP数据包,根据返回值来判断网络的通信状况。
ping命令语法如下:
[root@localhost ~]# ping [-bct] IP
参数:
-b:后面接的是广播地址,用来测试整个网络的连通性;
-c:后面可以发送icmp数据包的个数;
-t :TTL 的数值,默认是 255,每经过一个节点就会少一;
【例】:测试一下202.196.0.1这台主机是否存在?利用[ctrl]+c来结束测试。
[root@localhost ~]# ping 202.196.0.1
PING 202.196.0.1 (202.196.0.1) 56(84) bytes of data.
64 bytes from 202.196.0.1: icmp_seq=1 ttl=124 time=36.1 ms
64 bytes from 202.196.0.1: icmp_seq=2 ttl=124 time=0.438 ms
64 bytes from 202.196.0.1: icmp_seq=3 ttl=124 time=0.775 ms
64 bytes from 202.196.0.1: icmp_seq=4 ttl=124 time=0.936 ms
64 bytes from 202.196.0.1: icmp_seq=5 ttl=124 time=1.18 ms
--- 202.196.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 0.438/7.892/36.134/14.123 ms
说明:
64 bytes from 202.196.0.1: icmp_seq=1 ttl=124 time=36.1 ms含义:
64 bytes:表示这次发送的ICMP数据包大小为64 bytes;
icmp_seq=1:ICMP数据包的序号0;
ttl=243:每经过一个路由器或者网关就会减少1;
time=9.16 ms:响应时间;
rtt min/avg/max/mdev = 0.438/7.892/36.134/14.123 ms含义:
表示往返时延的最小、平均、最大及算数平均偏差值。
【例】:发送3个icmp数据包来测试202.196.1.235连通性。
[root@localhost ~]# ping -c 3 202.196.1.235
PING 202.196.1.235 (202.196.1.235) 56(84) bytes of data.
64 bytes from 202.196.1.235: icmp_seq=1 ttl=64 time=0.845 ms
64 bytes from 202.196.1.235: icmp_seq=2 ttl=64 time=1.04 ms
64 bytes from 202.196.1.235: icmp_seq=3 ttl=64 time=1.05 ms
--- 202.196.1.235 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.845/0.982/1.055/0.100 ms
那么有没有指令可以追踪两部主机之间通过的各个节点 (node) 通讯状况的好坏呢?举例来说,如果我们连接到 yahoo 的速度比平常慢,你觉得是 (1)自己的网络环境有问题? (2)还是外部的 Internet 有问题?如果是 (1) 的话,我们当然需要检查自己的网络环境啊, 看看是否又有谁中毒了?但如果是 Internet 的问题呢?那只有等等。
判断是 (1) 还是 (2) 就得要使用 traceroute 这个指令。
[root@linux ~]# traceroute [-nwig] IP
参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-w :若对方主机在几秒钟内没有回声就宣告不治...默认是 5 秒
-i :用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数;
举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两个 ppp,
你可以使用 -i 来选择是 ppp0 还是 ppp1!
-g :与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。
范例一:
[root@linux ~]# traceroute -n tw.yahoo.com
traceroute to tw.yahoo-ap1.akadns.net (203.84.202.164), 30 hops max, 38 byte packets
1 61.59.121.1 42.174 ms 41.690 ms 41.058 ms
2 139.175.172.2 40.962 ms 41.978 ms 40.973 ms
3 192.72.122.130 40.983 ms 41.930 ms 41.003 ms
4 139.175.58.210 42.956 ms 41.997 ms 42.337 ms
5 139.175.58.153 47.591 ms 47.972 ms 48.748 ms
6 139.175.56.30 48.193 ms 47.970 ms 47.986 ms
7 139.175.57.94 47.959 ms 47.951 ms 47.985 ms
8 139.175.56.138 48.363 ms 47.586 ms 47.995 ms
9 139.175.58.42 49.256 ms 50.668 ms 47.490 ms
10 61.58.33.133 201.882 ms 201.565 ms 200.973 ms
11 61.58.33.50 199.910 ms 199.019 ms 198.961 ms
12 203.84.200.226 202.391 ms 202.567 ms 209.283 ms
这个 traceroute 挺有意思的,这个指令会针对欲连接的目的地之所有 router 进行 ICMP 的超时等待, 例如上面的例子当中,连接到 Yahoo 时,他会经过 12 个节点,traceroute 会主动的对这 12 个节点做 ICMP 的回声等待,并探测回复的时间,每个节点会探测三次。
所以像上头显示的结果,发现每个节点其实回复的时间大约在 200 ms 以内,算是还可以的 Internet 环境了。
而且由上面的信息来看,可以看出在 61.58.33.133 这个节点后的传输延迟较久,至于之前的 9 个节点则有不错的表现。通过这种解析,可以让您了解到这条连接是那个环节出了问题。
另外,如果在默认的 5 秒钟之内 traceroute 听不到节点的回声,那么屏幕上就会跑出一个*的符号, 告知该节点无法有顺利的回应。由于我们的 traceroute 用的是 ICMP 数据包,有些防火墙或者主机可能会将 ICMP 可通过的权力拿掉,因此就会造成等不到回声的状态!另外,有些 gateway 本来就不支持 traceroute 的功能,因此也会产生那个*的状况。所以分析时得要注意一下。
netstat命令主要的作用是用来观察网络连接及端口等信息。语法如下:
[root@linux ~]# netstat -[antulpc]
参数:
-n:不使用主机名称与服务名称,使用IP与port number;
-a:列出所有的连接状态;
-t:列出TCP的连接;
-u:列出UDP数据包的连接;
-l:列出处在监听状态的服务;
-p:列出PID与进程名;
-c:可以设置几秒钟后自动更新一次,例如-c 3每3秒更新一次网络状态的显示;
【例】列出目前的所有网络连接状态。
[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 0.0.0.0:10000 0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 11497 @/tmp/fam-root-
unix 2 [ ACC ] STREAM LISTENING 8405 @/var/run/hald/dbus-1wf2PTHPKi
省略部分
说明:
上半部分的输出为TCP和UDP连接,下半部分为UNIX socket连接。
Local Address:本机地址,是IP或者主机名称,接着是端口号。例如我们可以看到本机开放了22、23、25号端口等。
Foreign Address:远程主机IP与端口。
stat:状态。ESTABLISED:已经建立连接;LISTEN:处于监听状态。
【例】查看网络中正在处于监听状态的连接。
[root@localhost ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2403/portmap
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 2671/xinetd
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 2633/python
tcp 0 0 :::22 :::* LISTEN 2659/sshd
上面最重要的其实是那个-l参数,因为可以仅列出有在监听状态的端口。
【例】观察本机所有的网络连接状态
[root@localhost ~]# netstat -atupn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 2628/hpiod
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2403/portmap
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 2930/perl
tcp 0 0 0.0.0.0:918 0.0.0.0:* LISTEN 2432/rpc.statd
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 2671/xinetd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2645/cupsd
tcp 0 0 :::22 :::* LISTEN 2659/sshd
tcp 0 148 202.196.1.234:22 202.196.1.235:24624 ESTABLISHED 3266/1
udp 0 0 0.0.0.0:111 0.0.0.0:* 2403/portmap
说明:可以看到目前远程的其中有一条连接正处于连接建立的状态,该连接表示从远程的主机202.196.1.235的24624端口连接到本机的202.196.1.234:22端口,在内存中该连接的进程号为3266。
tcpdump可以从网卡截获数据包,如果该数据包传输过程中,没有加密的话,可以解析出数据包的内容,而默认情况下,网络中采用IP协议的数据包是明文传输的,所以可以直接解析。其语法如下:
[root@localhost ~]# tcpdump [-nn] [-i 网卡名] [-w 文件名] [-c 次数] [-X] [提取所需要的数据包]
说明:
-nn:用IP及端口号来显示;
-i:想要截获哪个网卡的数据包,如eth0,lo等;
-w:把截获的数据包存到指定的文件中;
-c:截获的数据包的数目,如果不指定,那么tcpdump会一直截获,直到用户输入[ctrl]+c为止;
-X:显示十六制以及ASCII内容的数据包;
[提取所需要的数据包]:可以从所有捕获的数据包中提取自己希望得到的数据包:
比如:
'host 202.196.1.235' :只获取来自202.196.1.235的数据包
'tcp port 21':只截获21号端口的tcp数据包;
更详细的用法请参考man tcpdump。
【例】捕获网卡eth0上的数据包。输入[ctrl]+c结束捕获。
[root@localhost ~]# tcpdump -i eth0 –nn
14:34:54.347408 IP 202.196.1.235.24624 > 202.196.1.234.22: . ack 102764 win 7632
14:34:54.347511 IP 202.196.1.234.22 > 202.196.1.235.24624: P 103340:103488(148) ack 273 win 447
…省略
844 packets captured //总共捕获了多少个数据包
2076 packets received by filter //过滤后得到的数据包的总数目
295 packets dropped by kernel //内核丢弃的数据包
捕获的数据包显示格式说明,比如第一行:
14:34:54.347408:数据包被捕获的时间;
IP 202.196.1.235.24624 >:发送发是202.196.1.235端口号是24624,该数据报是IP数据包。
202.196.1.234.22:接收方的IP是202.196.1.234,接收方的端口是22;
P 103340:103488(148):PUSH传输,传输的数据是整个数据流中的第103340字节到103488字节,所以该数据包的大小为148个字节;
ack 273 win 447:ACK确认帧与tcp窗口的大小;
【例】用tcpdump捕获网卡lo上的23号端口上数据包,来解释tcp三次握手机制。
(1)打开一个终端,首先输入命令tcpdump -i lo –nn来监听23号端口上的数据包。
[root@localhost ~]# tcpdump -i lo -nn port 23
(2)另外新建一个终端,输入命令telnet 127.0.0.1,用来telnet本机。
[root@localhost ~]# telnet 127.0.0.1
(3)我们就会在步骤(1)的终端内看到如下所示的捕获到的数据包:
[root@localhost ~]# tcpdump -i lo -nn port 23
第1行tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
第2行listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
第3行15:00:34.778721 IP 127.0.0.1.41280 > 127.0.0.1.23: S 4028806550:4028806550(0) win 32792 <mss 16396,sackOK,timestamp 66289322 0,nop,wscale 7>
第4行15:00:34.779274 IP 127.0.0.1.23 > 127.0.0.1.41280: S 4027279237:4027279237(0) ack 4028806551 win 32768 <mss 16396,sackOK,timestamp 66289322 66289322,nop,wscale 7>
第5行15:00:34.780010 IP 127.0.0.1.41280 > 127.0.0.1.23: . ack 1 win 257 <nop,nop,timestamp 66289322 66289322>
第6行15:00:34.780392 IP 127.0.0.1.41280 > 127.0.0.1.23: P 1:34(33) ack 1 win 257 <nop,nop,timestamp 66289323 66289322>
说明:
第3行是来自客户端的带有SYN主动连接表示的数据包,也就是tcp连接建立中的第一次握手。
第4行是服务器端的带有ACK标示的SYN连接数据包,也就是tcp连接建立中的第二次握手。
第5行则是客户端给服务器端的(ACK),表示该连接正式建立,也就是tcp连接建立中的第三次握手。
第6行以后就开始了tcp连接的数据传输阶段。
如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个之多。端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。
根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。
那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。
网络通信的基础是建立在套接字的基础上的,套接字指的是由(客户端IP:端口,服务器IP:端口)构成。
◆服务器方端口的选择:
服务器端的端口都是固定的,例如FTP服务默认使用21号端口、WWW服务器使用80号端口、电子邮件服务器使用25号端口、TELNET服务器默认使用23号端口等等。这些端口一般都小于1024,称为熟知端口。
◆客户端端口号的选择:
客户端的端口号是随机生成的,一般都大于1024。
◆小于1024的端口:
小于1024的端口,都是需要以root的身份才能启动的, 这些端口主要是用于一些常见的服务,在Linux系统下,常见的协议与端口的对应在/etc/services文件中。
有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门。入侵者要占领这间房子,势必要破门而入,那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。Linux系统中,常用的端口扫描工具是nmap,号称扫描之王。(使用nmap需要注意,随意扫描别人的主机是违法的)
查看端口的命令主要有两个,一个是netstat,用来查看本机的端口,另一个是扫描之王nmap,用来查看其他主机的端口。
(1)Netstat的用法在前面小节中已经介绍过,更详细的用法使用:
[root@localhost ~]# man netstat
【例】:查看系统是否启动23号端口。
[root@localhost ~]# netstat -tulpn |grep 23
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 2671/xinetd
说明系统已经正确的启动了23号端口,也就是我们通常所说的服务器端已经启动了telnet服务,可以在客户端使用telnet远程连接到服务器上进行远程操作。
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出wellknown端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。
open状态意味着目标主机能够在这个端口使用
accept()系统调用接受连接。
filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止 nmap探测其是否打开。
unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
默认情况下linux系统已经安装好了nmap软件,可以直接使用,该命令的语法非常复杂,其功能也非常强大,号称扫描之王。如果对于网络安全和网络扫描有兴趣,可以详细的了解一下,这里只简单的介绍一下如何使用。
语法如下:
[root@linux ~]# nmap [扫瞄方式] [扫瞄参数] [主机地址]
参数:
[扫瞄方式]:
-sT:TCP connect()扫描
-sS:TCP同步扫描(TCP SYN)
-sP:ping扫描
-sU:UDP扫描
-sA:ACK扫描
[扫瞄参数]:主要的扫瞄参数有几种:
-PT:扫描之前,使用TCP ping确定哪些主机正在运行
-PI:让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行
-O:这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志
[主机地址]:被扫描的主机IP。
【例】扫描本机所开放的端口。
[root@localhost ~]# nmap localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-01-10 20:09 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1673 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
918/tcp open unknown
10000/tcp open snet-sensor-mgmt
Nmap finished: 1 IP address (1 host up) scanned in 0.175 seconds
说明,默认情况下nmap只扫描tcp协议开放的端口。如果想要了解UDP开放的端口。可以使用如下的命令。
[root@localhost ~]# nmap -sTU localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-01-10 20:11 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 3155 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
918/tcp open unknown
10000/tcp open snet-sensor-mgmt
111/udp open|filtered rpcbind
631/udp open|filtered unknown
912/udp open|filtered unknown
915/udp open|filtered unknown
32768/udp open|filtered omad
Nmap finished: 1 IP address (1 host up) scanned in 1.475 seconds
【例】扫描探测IP地址为202.196.1.235的主机的操作系统的相关信息。
[root@localhost ~]# nmap -O 202.196.1.235
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-01-10 20:23 CST
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Interesting ports on client1 (202.196.1.235):
Not shown: 1675 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
912/tcp open unknown
3389/tcp open ms-term-serv
MAC Address: 00:0F:EA:02:4A:BC (Giga-Byte Technology Co.)
Device type: general purpose|firewall
Running (JUST GUESSING) : Microsoft Windows NT/2K/XP|2003/.NET (93%), Linux 2.4.X (87%), Symantec embedded (87%), Apple Mac OS X 10.3.X (86%), Compaq Tru64 UNIX 4.X (86%), IBM AIX 4.X (85%)
Aggressive OS guesses: Microsoft Windows XP SP2 (93%), Astaro Security Linux 4 (Kernel 2.4.19) (87%), Microsoft Windows XP SP1 or Windows 2000 SP3 (87%), Symantec Gateway Security 5310 Firewall (87%), Symantec Gateway Security 5420 firewall (87%), Apple Mac OS X 10.3.6 or 10.3.7 (86%), Tru64 UNIX 4.0f - 4.0g (86%), Microsoft Windows 2003 Server or XP SP2 (86%), Microsoft Windows 2000 SP3 (86%), Microsoft Windows XP SP1 (86%)
No exact OS matches for host (test conditions non-ideal).
Nmap finished: 1 IP address (1 host up) scanned in 32.455 seconds
通过这个示例可以看到nmap可以探测到202.196.1.235的开放的端口,猜测操作系统的信息等。
所谓的端口的启动与关闭,实质上指的是端口对应的服务的启动与关闭。例如我们想要启动与关闭80号端口,具体操作如下:
【例】启动httpd服务,也就是启动了80号端口,关闭httpd服务,也就是关闭了80号端口。
[root@localhost ~]# /etc/init.d/httpd start
启动 httpd: [确定]
[root@localhost ~]# netstat -tulpn |grep 80
tcp 0 0 :::80 :::* LISTEN 6550/httpd
[root@localhost ~]# /etc/init.d/httpd stop
停止 httpd: [确定]
[root@localhost ~]# netstat -tulpn |grep 80
[root@localhost ~]#
一般情况下,主机只开放必要的端口,因为多开放一个端口,就多了一个入侵主机的通道,所以从安全的角度来讲,尽可能的关闭不需要的服务。
在Linux系统安装好以后,需要适当的设置网络参数,然后才能正常的连接Internet。在局域网的环境中,常见的网络参数的设置有两种方式:一种是手工的静态的设置网络参数。另一种是局域网中有DHCP服务器,这样就可以自动的获取网络参数。下面的小节中会详细的分析这两种方式下如何设置网络参数。
首先,来看如何静态的配置网络参数:
(1)首先可以设置主机名称:/etc/sysconfig/network
[root@localhost ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain //这里可以更改主机名称
需要注意,如果更改了主机名称,最好重新启动Linux系统,以便主机名生效。
(2)设置DNS服务器地址:/etc/resolv.conf
[root@localhost ~]# vi /etc/resolv.conf
nameserver 202.196.0.1
设置DNS服务器IP的目的是当访问Internet时可以使用域名。而不是仅仅使用IP。
(3)设置IP地址等参数:/etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=202.196.1.234
GATEWAY=202.196.1.193
该文件中各参数的含义前面已经介绍过,这里需要注意的是需要正确的配置IP地址,掩码及网关地址。其中BOOTPROTO设置为none,表示用手工的方式来配置。
(4)重新启动网络。
配置完成以后需要重新启动网络,这样刚才的设置的网络参数就生效了。重新启动网络的方式如下:
[root@localhost ~]# /etc/init.d/network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]
(5)测试网路联通性。
测试网关的连通性:
[root@localhost ~]# ping -c 2 202.196.1.193
PING 202.196.1.193 (202.196.1.193) 56(84) bytes of data.
64 bytes from 202.196.1.193: icmp_seq=1 ttl=255 time=8.74 ms
64 bytes from 202.196.1.193: icmp_seq=2 ttl=255 time=3.97 ms
测试局域网中其他主机的连通性:
[root@localhost ~]# ping -c 2 202.196.1.235
PING 202.196.1.235 (202.196.1.235) 56(84) bytes of data.
64 bytes from 202.196.1.235: icmp_seq=1 ttl=64 time=0.121 ms
64 bytes from 202.196.1.235: icmp_seq=2 ttl=64 time=0.955 ms
测试DNS服务器能否正确的解析域名:
[root@localhost ~]# nslookup www.zzuli.edu.cn
Server: 202.196.0.1
Address: 202.196.0.1#53
Name: www.zzuli.edu.cn
Address: 192.168.99.7
如果这里的几个测试都没有问题,这样主机就可以顺利的访问Internet了。
找到系统—>管理—>网络:首先点击“DNS”选项卡,在如下所示的界面中设置主机名和DNS服务器IP地址。
![]()
然后点击“设备”选项卡,选中“eth0”,点击“编辑”按钮。
正确设置在界面中设置IP地址、子网掩码、网关地址。然后点击确定。最后在各种参数都设置完成后,点击“激活”按钮。这样网络配置就完成了。接下来就可以参考上一个小节参数网络的连通性了。
如果主机处在局域网中,并且局域网中已经有一台DHCP服务器,那么设置网络就非常简单了,linux作为客户端,网络设置方式如下:
(1)设置主机名同4.1节相同。
(2)设置网络参数/etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
只需要设置三个项目即可。
(3)重新启动网络方式见4.1节。
(4)测试连通性见4.1节。
具体见4.1节,在这里选择“自动获取IP地址”即可,然后激活网络。
本章主要介绍了网络中常用的命令和网络参数有关的几个文件的基础上,描述了网络端口相关概念和操作,最后给出了Linux主机正确的网络配置的方法。使读者对Linux的网络有了一个清晰的认识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。