一、磁盘管理命令
1、fdisk命令
Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。
语法
fdisk [必要参数][选择参数]
必要参数:
- -l 列出素所有分区表
- -u 与 -l 搭配使用,显示分区数目
选择参数:
- -s<分区编号> 指定分区
- -v 版本信息
菜单操作说明
- m :显示菜单和帮助信息
- a :活动分区标记/引导分区
- d :删除分区
- l :显示分区类型
- n :新建分区
- p :显示分区信息
- q :退出不保存
- t :设置分区号
- v :进行分区检查
- w :保存修改
- x :扩展应用,高级功能
实例
显示当前分区情况:
# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1305 10377990 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
显示SCSI硬盘的每个分区情况
# fdisk -lu
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 63 208844 104391 83 Linux
/dev/sda2 208845 20964824 10377990 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk /dev/sdb doesn't contain a valid partition table
2、lspci命令
此命令用于打印有关 Linux 系统上所有设备和 PCI 总线以及连接到它们的设备的详细信息。此命令基于通用的可移植库 libpci,提供对各种操作系统上的 PCI 配置空间的访问
执行命令显示如下:
[root@devlops ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 Communication controller: Red Hat, Inc. Virtio console
00:05.0 SCSI storage controller: Red Hat, Inc. Virtio block device
00:06.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
[root@devlops ~]#
类似的查看命令不做过多讲解,一般都是查看设备版本或总线信息时用得到
3、kudzu命令
硬件设备检测工具,该命令是radhat自带工具,如果想在centos上使用该命令需要用yum或者rpm安装,此处不详细讲述,后期的运维管理专栏会讲这方面的。
4、mkfs命令
mkfs命令是Linux系统中用于在特定分区上创建文件系统的工具,全称为“make file system”。 该命令允许用户为硬盘、分区或逻辑卷创建不同类型的文件系统,如ext2、ext3、ext4、xfs和btrfs等。mkfs命令的基本语法格式为mkfs[options][-t type[FSoptions]] device[size]
,其中device
是你要格式化的设备,size
是设备的大小(可选)。12
-
常用选项:
-t
:指定要创建的文件系统类型,如ext2、ext3、ext4、vfat等。-V
:显示详细信息。-c
:在制作档案系统前,检查该分区是否有坏道。-l bad_blocks_file
:将有坏道的块资料加到bad_blocks_file
里面(可选)。block
:给定块的大小(可选)。-L
:建立标签(可选)。
-
实例:
- 创建ext2文件系统:
mkfs -text2 /dev/sdb4
。 - 创建vfat文件系统:
mkfs -tvfat /dev/sdb4
。 - 在
/dev/hda5
上建一个msdos的文件系统,同时检查是否有坏道存在,并且将过程详细列出来:mkfs -V -t msdos -c /dev/hda5
。
- 创建ext2文件系统:
-
适用范围:
mkfs命令可以在大多数Linux发行版上使用,包括但不限于Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian等。如果在特定版本的Linux上没有找到mkfs命令,可以使用相应的包管理器进行安装。例如,在Debian和Ubuntu上使用apt-get install dosfstools,在Centos 7上使用yum install dosfstools,在Centos 8和RHEL上使用dnf install dosfstools。 -
注意事项:
- 如果设备已经有一个文件系统,mkfs命令会给出错误消息。在这种情况下,如果确定要在设备上创建新的文件系统,可以添加
-F
选项来强制执行操作。 - mkfs命令本身并不执行建立文件系统的工作,而是调用相关的程序来执行。例如,若在
-t
参数中指定ext2,则mkfs会调用mke2fs来建立文件系统。
- 如果设备已经有一个文件系统,mkfs命令会给出错误消息。在这种情况下,如果确定要在设备上创建新的文件系统,可以添加
通过上述详解,我们可以看到mkfs命令在Linux系统管理中的重要作用,它提供了灵活的选项和广泛的支持,使得在Linux环境下创建和管理文件系统变得相对简单直接,命令使用如下:
[root@localhost ~]# mkfs
用法:
mkfs [选项] [-t <类型>] [文件系统选项] <设备> [<大小>]
选项:
-t, --type=<类型> 文件系统类型;若不指定,将使用 ext2
fs-options 实际文件系统构建程序的参数
<设备> 要使用设备的路径
<大小> 要使用设备上的块数
-V, --verbose 解释正在进行的操作;
多次指定 -V 将导致空运行(dry-run)
-V, --version 显示版本信息并退出
将 -V 作为 --version 选项时必须是惟一选项
-h, --help 显示此帮助并退出
5、mount命令
[root@localhost ~]# mount -h
用法:
mount [-lhV]
mount -a [选项]
mount [选项] [--source] <源> | [--target] <目录>
mount [选项] <源> <目录>
mount <操作> <挂载点> [<目标>]
选项:
-a, --all 挂载 fstab 中的所有文件系统
-c, --no-canonicalize 不对路径规范化
-f, --fake 空运行;跳过 mount(2) 系统调用
-F, --fork 对每个设备禁用 fork(和 -a 选项一起使用)
-T, --fstab <路径> /etc/fstab 的替代文件
-h, --help 显示此帮助并退出
-i, --internal-only 不调用 mount.<类型> 助手程序
-l, --show-labels 列出所有带有指定标签的挂载
-n, --no-mtab 不写 /etc/mtab
-o, --options <列表> 挂载选项列表,以英文逗号分隔
-O, --test-opts <列表> 限制文件系统集合(和 -a 选项一起使用)
-r, --read-only 以只读方式挂载文件系统(同 -o ro)
-t, --types <列表> 限制文件系统类型集合
--source <源> 指明源(路径、标签、uuid)
--target <目标> 指明挂载点
-v, --verbose 打印当前进行的操作
-V, --version 显示版本信息并退出
-w, --rw, --read-write 以读写方式挂载文件系统(默认)
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
源:
-L, --label <标签> 同 LABEL=<label>
-U, --uuid <uuid> 同 UUID=<uuid>
LABEL=<标签> 按文件系统标签指定设备
UUID=<uuid> 按文件系统 UUID 指定设备
PARTLABEL=<标签> 按分区标签指定设备
PARTUUID=<uuid> 按分区 UUID 指定设备
<设备> 按路径指定设备
<目录> 绑定挂载的挂载点(参阅 --bind/rbind)
<文件> 用于设置回环设备的常规文件
操作:
-B, --bind 挂载其他位置的子树(同 -o bind)
-M, --move 将子树移动到其他位置
-R, --rbind 挂载其他位置的子树及其包含的所有挂载
--make-shared 将子树标记为 共享
--make-slave 将子树标记为 从属
--make-private 将子树标记为 私有
--make-unbindable 将子树标记为 不可绑定
--make-rshared 递归地将整个子树标记为 共享
--make-rslave 递归地将整个子树标记为 从属
--make-rprivate 递归地将整个子树标记为 私有
--make-runbindable 递归地将整个子树标记为 不可绑定
常用存储设备挂载命令:
U盘:
首先需要查看设备列表:
fdisk -l
通过列表获取usb设备的信息
下一步创建一个挂载点:
mkdir -p /home/usbdisk
假设usb设备信息为:/dev/hdc3
挂载命令如下:
mount /dev/hdc3 /home/usbdisk
卸载命令:
unmount /home/usbdisk
移动硬盘:
查看硬盘挂载情况和硬盘的格式
lsblk -f
lsblk
1
2
查看硬盘分区信息
fdisk -l
1
挂载ntfs硬盘
1 添加aliyun的epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1
2 安装ntfs驱动包
yum install ntfs-3g
1
3 挂载硬盘,将移动硬盘/dev/sdb1,挂载到data目录下
mount -t ntfs /dev/sdb1 data
1
挂载exFAT硬盘
1 添加数据源
yum install -y http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
1
2 安装exfat驱动包
yum install exfat-utils fuse-exfat
1
3 挂载硬盘,将移动硬盘/dev/sdb1,挂载到data目录下
mount -t exfat /dev/sdb1 data
1
查看可用的硬盘设备
lsblk
1
查看挂载信息,看到具体盘是否挂载到指定目录
df -h
1
创建分区(如果硬盘尚未分区):
sudo fdisk /dev/sdX
1
确认文件系统类型:
sudo blkid /dev/sdb1
1
格式化
把挂载的硬盘格式化成exFAT格式
确保分区未挂载:
sudo umount /dev/sdb1
1
请确保替换 /dev/sdb1 为你硬盘上相应的分区。
安装 exFAT 工具:
在大多数 Linux 发行版上,你需要安装 exfat-utils 软件包以使用 exFAT 文件系统。使用以下命令安装:
sudo yum install exfat-utils
1
格式化为 exFAT:
sudo mkfs.exfat /dev/sdb1
1
挂载命令
sudo mount -t exfat /dev/sdb1 /exdisk
1
/dev/sdb1 是硬盘
/exdisk 是本机目录挂载点
永久挂载(可选):
如果你希望系统在重新启动后仍然挂载这个硬盘,你可以将其信息添加到 /etc/fstab 文件中。
/dev/sdb1 /exdisk exfat defaults 0 0
1
取消挂载
sudo umount /exdisk
1
分区是 NTFS 文件系统,可以尝试使用 ntfs-3g 工具
sudo mount -t ntfs-3g /dev/sdb1 /exdisk
网络存储:
需要安装nfs工具包:
yum install -y nfs-utils
创建挂载点:
mkdir -p /data/mynfs
假设已经有了nas的网络地址
挂载命令如下:
mount -t nfs ip:/volumeName/dece /data/mynfs -o nfsvers=3
二、网络管理命令
1、ifconfig命令
Linux 系统拥有一个类似的工具,也就是 ifconfig(interfaces config)。通常需要以 root 身份登录或使用 sudo 以便在 Linux 机器上使用 ifconfig 工具。依赖于 ifconfig 命令中使用一些选项属性,ifconfig 工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。
1.命令格式:
ifconfig [网络设备] [参数]
2.命令功能:
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
3.命令参数:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的 IP 信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持 ARP 协议。
-promisc 设置是否支持网卡的 promiscuous 模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置 IPv6 地址
del 删除指定网卡的 IPv6 地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀 0x 的 32 位十六进制数,也可以是用点分开的 4 个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置 IPv4 地址
txqueuelen<长度> 为网卡设置传输列队的长度
4.使用实例:
实例 1:显示网络设备信息(激活状态的)
命令:
ifconfig
输出:
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr
inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0
TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:596390239 (568.7 MiB) TX bytes:2886956 (2.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:68 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB)
说明:
HWaddr 后面应该 Mac 物理地址,删除掉了。
inet addr 用来表示网卡的 IP 地址,此网卡的 IP 地址是 192.168.120.204,广播地址, Bcast:192.168.120.255,掩码地址 Mask:255.255.255.0
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD 服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架 WEB 网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件 mac 地址)
第二行:网卡的 IP 地址、子网、掩码
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500 字节
第四、五行:接收、发送数据包情况统计
第七行:接收、发送数据字节数统计信息。
实例 2:启动关闭指定网卡
命令:
ifconfig eth0 up
ifconfig eth0 down
输出:
说明:
ifconfig eth0 up 为启动网卡 eth0 ;
ifconfig eth0 down 为关闭网卡 eth0。
实例 3:为网卡配置和删除 IPv6 地址
命令:
ifconfig eth0 add 33aae:3240:800:1005::2/64
ifconfig eth0 del 33aae:3240:800:1005::2/64
输出:
说明:
ifconfig eth0 add 33aae:3240:800:1005::2/64 为网卡 eth0 配置 IPv6 地址;
ifconfig eth0 add 33aae:3240:800:1005::2/64 为网卡 eth0 删除 IPv6 地址;
实例 4:用 ifconfig 修改 MAC 地址
命令:
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
输出:
[root@localhost ~]# ifconfig eth0 down //关闭网卡
[root@localhost ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改 MAC 地址
[root@localhost ~]# ifconfig eth0 up //启动网卡
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:AA:BB:CC:DD:EE
inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0
TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:596390239 (568.7 MiB) TX bytes:2886956 (2.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:68 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB)
[root@localhost ~]# ifconfig eth0 hw ether 00:AA:BB:DD:EE:FF //关闭网卡并修改 MAC 地址
[root@localhost ~]# ifconfig eth0 up //启动网卡
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:AA:BB:DD:EE:FF
inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0
TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:596390239 (568.7 MiB) TX bytes:2886956 (2.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:68 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB) 说明:
实例 5:配置 IP 地址
命令:
ifconfig eth0 192.168.120.156
输出:
[root@localhost ~]# ifconfig eth0 192.168.120.156
说明:
ifconfig eth0 192.168.120.156
给 eth0 网卡配置 IP 地:192.168.120.156
ifconfig eth0 192.168.120.156 netmask 255.255.255.0
给 eth0 网卡配置 IP 地址:192.168.120.156 ,并加上子掩码:255.255.255.0
ifconfig eth0 192.168.120.156 netmask 255.255.255.0 broadcast 192.168.120.255
给 eth0 网卡配置 IP 地址:192.168.120.156,加上子掩码:255.255.255.0,加上个广播地址:192.168.120.255
实例 6:启用和关闭 ARP 协议
命令:
ifconfig eth0 arp ifconfig eth0 -arp
输出:
[root@localhost ~]# ifconfig eth0 arp
[root@localhost ~]# ifconfig eth0 -arp
说明:
ifconfig eth0 arp 开启网卡 eth0 的 arp 协议;
ifconfig eth0 -arp 关闭网卡 eth0 的 arp 协议;
实例 7:设置最大传输单元
命令:
ifconfig eth0 mtu 1500
输出:
[root@localhost ~]# ifconfig eth0 mtu 1480
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr
inet addr:192.168.120.203 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1480 Metric:1
RX packets:8712395 errors:0 dropped:0 overruns:0 frame:0
TX packets:36631 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:597062089 (569.4 MiB) TX bytes:2643973 (2.5 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:9973 errors:0 dropped:0 overruns:0 frame:0
TX packets:9973 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:518096 (505.9 KiB) TX bytes:518096 (505.9 KiB)
[root@localhost ~]# ifconfig eth0 mtu 1500
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr
inet addr:192.168.120.203 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8712548 errors:0 dropped:0 overruns:0 frame:0
TX packets:36685 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:597072333 (569.4 MiB) TX bytes:2650581 (2.5 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:9973 errors:0 dropped:0 overruns:0 frame:0
TX packets:9973 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:518096 (505.9 KiB) TX bytes:518096 (505.9 KiB)
[root@localhost ~]#
说明:
设置能通过的最大数据包大小为 1500 bytes
备注:用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了
2、ping命令
Linux ping 命令用于检测与另一个主机之间的网络连接。
执行 ping 指令会使用 ICMP(Internet Control Message Protocol) 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
语法
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
参数说明:
-d 使用Socket的SO_DEBUG功能。
-c <完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络接口送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p<范本样式> 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s<数据包大小> 设置数据包的大小。
-t<存活数值> 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。
-w <deadline> 在 deadline 毫秒后退出。
-W <timeout> 在等待 timeout 毫秒后开始执行。
实例
检测是否与主机连通
# ping www.runoob.com //ping主机
PING aries.m.alikunlun.com (114.80.174.110) 56(84) bytes of data.
64 bytes from 114.80.174.110: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 114.80.174.110: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 114.80.174.110: icmp_seq=3 ttl=64 time=0.034 ms
64 bytes from 114.80.174.110: icmp_seq=4 ttl=64 time=0.034 ms
64 bytes from 114.80.174.110: icmp_seq=5 ttl=64 time=0.028 ms
64 bytes from 114.80.174.110: icmp_seq=6 ttl=64 time=0.028 ms
64 bytes from 114.80.174.110: icmp_seq=7 ttl=64 time=0.034 ms
64 bytes from 114.80.174.110: icmp_seq=8 ttl=64 time=0.034 ms
64 bytes from 114.80.174.110: icmp_seq=9 ttl=64 time=0.036 ms
64 bytes from 114.80.174.110: icmp_seq=10 ttl=64 time=0.041 ms
--- aries.m.alikunlun.com ping statistics ---
10 packets transmitted, 30 received, 0% packet loss, time 29246ms
rtt min/avg/max/mdev = 0.021/0.035/0.078/0.011 ms
//需要手动终止Ctrl+C
指定接收包的次数
# ping -c 2 www.runoob.com
PING aries.m.alikunlun.com (114.80.174.120) 56(84) bytes of data.
64 bytes from 114.80.174.120: icmp_seq=1 ttl=54 time=6.18 ms
64 bytes from 114.80.174.120: icmp_seq=2 ttl=54 time=15.4 ms
--- aries.m.alikunlun.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1016ms
rtt min/avg/max/mdev = 6.185/10.824/15.464/4.640 ms
//收到两次包后,自动退出
多参数使用
# ping -i 3 -s 1024 -t 255 g.cn //ping主机
PING g.cn (203.208.37.104) 1024(1052) bytes of data.
1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=0 ttl=243 time=62.5 ms
1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=1 ttl=243 time=63.9 ms
1032 bytes from bg-in-f104.1e100.net (203.208.37.104): icmp_seq=2 ttl=243 time=61.9 ms
--- g.cn ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6001ms
rtt min/avg/max/mdev = 61.959/62.843/63.984/0.894 ms, pipe 2
[root@linux ~]#
//-i 3 发送周期为 3秒 -s 设置发送包的大小 -t 设置TTL值为 255
ping 一个主机名为 runoob.com 的主机,发送 4 个回声请求消息,可以使用以下命令:
ping -c 4 runoob.com
你也可以使用IP地址作为目标主机:
ping -c 4 192.168.0.1
这将发送 4 个回声请求消息到 IP 地址为 192.168.0.1 的主机
3、traceroute命令
· 语法:
基本语法
traceroute的基本语法如下:
traceroute [选项] 目标主机
其中,
[选项] 是可选的参数,用于定制traceroute的行为;
目标主机 可以是目标主机的域名或IP地址。
2、命令选项
Traceroute常用选项如下:
-I:使用ICMP Echo模式发送数据包。这是traceroute命令的默认模式。
-U:使用UDP模式发送数据包。该模式下的traceroute命令需要以root权限运行。
-T:使用TCP模式发送数据包。同样,该模式下的traceroute命令需要以root权限运行。
-n:不要解析IP地址为主机名,以IP地址形式显示主机名。
-s 源地址:指定源地址,可以是主机名或IP地址。
-p 端口号:指定源端口,以查找防火墙规则或过滤器的规则对目标主机的响应是否过滤。默认端口号通常为33434(UDP模式)。
-q 查询次数:设置查询次数,默认值为3。每次查询会增加TTL值,直到到达目标主机或达到最大的TTL值。
-m 跳数:设置最大的TTL值,默认值为30。该值指定了数据包能经过的最大路由器数量。当数据包的TTL值达到该值时,数据包会被丢弃。
-w 等待时间:指定每个数据包的超时时间。
· 实例:
1. 使用默认模式(ICMP Echo)追踪到目标主机
traceroute www.vidisit.cn
实际操作如下:
[root@localhost ~]# traceroute vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 30 hops max, 60 byte packets
1 gateway (192.168.1.254) 0.563 ms 0.667 ms 0.824 ms
2 221.225.102.1 (221.225.102.1) 5.111 ms 5.075 ms 5.067 ms
3 141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141) 8.588 ms 8.627 ms 8.651 ms
4 222.92.174.181 (222.92.174.181) 9.041 ms 9.085 ms 9.097 ms
5 202.97.15.134 (202.97.15.134) 34.176 ms 35.279 ms 202.97.93.102 (202.97.93.102) 32.934 ms
6 * * *
7 * * *
8 * * *
9 * * *
10 118.123.16.102 (118.123.16.102) 34.674 ms !X 35.554 ms !X 34.200 ms !X
[root@localhost ~]#
[root@localhost ~]#
2. 使用UDP模式(需要root权限)追踪到目标主机
sudo traceroute -U vidisit.cn
实际操作如下:
[root@localhost ~]# traceroute -U vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 30 hops max, 60 byte packets
1 gateway (192.168.1.254) 0.572 ms 0.641 ms 0.789 ms
2 221.225.102.1 (221.225.102.1) 5.238 ms 5.261 ms 5.297 ms
3 141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141) 9.637 ms 9.673 ms 9.708 ms
4 * * *
5 202.97.15.134 (202.97.15.134) 34.953 ms * 202.97.15.138 (202.97.15.138) 35.193 ms
6 * * *
7 * * *
8 * * *
9 * * *
10 118.123.16.102 (118.123.16.102) 36.319 ms !X 36.426 ms !X 38.104 ms !X
[root@localhost ~]#
3. 不解析IP地址为主机名,直接显示IP地址
命令如下:
traceroute -n www.vidisit.cn
4. 探测包使用UDP,端口设置为6888
命令如下:
traceroute -p 6888 www.vidisit.cn
5. 设置查询次数为n次
也就是把探测包的个数设置为值n,命令如下:
traceroute -q 5 www.example.com
6、跳数设置为m次
命令如下:
traceroute -m 10 www.vidisit.cn
输出如下:
[root@localhost ~]# traceroute -m 5 vidisit.cn
traceroute to vidisit.cn (118.123.16.102), 5 hops max, 60 byte packets
1 gateway (192.168.1.254) 0.518 ms 0.666 ms 0.842 ms
2 221.225.102.1 (221.225.102.1) 4.837 ms 4.872 ms 4.913 ms
3 141.124.111.202.dial.sz.js.dynamic.163data.com.cn (202.111.124.141) 9.723 ms 9.761 ms 9.801 ms
4 * * *
5 202.97.93.110 (202.97.93.110) 33.380 ms 202.97.15.110 (202.97.15.110) 35.038 ms 202.97.92.250 (202.97.92.250) 34.232 ms
[root@localhost ~]
说明:
traceroute的输出结果通常分为多列,每列代表一个“跳点”(即数据包经过的路由器或主机)。每一行代表一个跳点,通常包括:
(1)跳点的序号(从1开始)。
(2)该跳点的IP地址。
(3)主机名(如果使用了-n选项,则不会显示主机名)。
(4)三个时间值(ms),分别代表三次尝试到达该跳点所需的时间。如果某个时间值为星号,则表示该次尝试超时
traceroute工作原理:
Traceroute通过发送不同TTL值的IP数据包来追踪数据包从源主机(源主机SA)到目的主机(目标主机DA)所经过的路由。
具体来说,第一步,Traceroute首先发送一个TTL为1的IP数据包,这个数据包的TTL每经过一个路由器时减1,直到TTL变为0,此时路由器会将该数据包丢弃并返回一个ICMP超时消息给源主机。Traceroute接收到这个ICMP消息后,就知道该路由器存在于路径上。
接着,第2步,Traceroute会发送下一个TTL为2的IP数据包,以此类推,直到数据包到达目的主机(目标主机DA)。
当数据包到达目的(主机目标主机DA)时,目的主机的操作系统会返回一个ICMP不可达消息,因为目的主机的端口号通常不会用于Traceroute发送的UDP数据包。这样,Traceroute就能知道目的主机已经到达。
此外,Traceroute还可以通过发送UDP数据包来检测目的主机的可达性。这些UDP数据包的端口号通常是一个大于30000的随机值,以避免与常规应用程序的端口冲突。当这些UDP数据包到达目的主机时,目的主机的操作系统会返回一个ICMP不可达消息,表明UDP数据包的目的端口不可达。
Traceroute通过这种方式,可以记录下从源主机到目的主机所经过的每个路由器的IP地址,以及每个路由器处理数据包的时间。这样,用户就可以看到数据包从源到目的地的完整路径
4、netstat命令
命令说明:
NETSTAT [-a] [-b] [-e] [-f] [-i] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的
可执行文件。在某些情况下,已知可执行文件托管
多个独立的组件,此时会
显示创建连接或侦听端口时
涉及的组件序列。在此情况下,可执行文件的
名称位于底部 [] 中,它调用的组件位于顶部,
直至达到 TCP/IP。注意,此选项
可能很耗时,并且可能因为你没有足够的
权限而失败。
-e 显示以太网统计信息。此选项可以与 -s 选项
结合使用。
-f 显示外部地址的完全限定
域名(FQDN)。
-i 显示 TCP 连接在当前状态所花费的时间。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto
可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的
非侦听 TCP 端口。绑定的非侦听端口
不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,
显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享
终结点。
-y 显示所有连接的 TCP 连接模板。
无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的
间隔秒数。按 CTRL+C 停止重新显示
统计信息。如果省略,则 netstat 将打印当前的
配置信息一次。
常用运维命令:
查看活跃连接数和端口:
netstat -a
查看活跃连接数和端口的执行程序:
netstat -b
以数字形式显示地址和端口
netstat -n
查看每个连接的进程ID
netstat -o
显示网络统计信息:
netstat -s
组合查询:
显示所有网络连接,并包括每个连接的进程ID:
netstat -ano
显示所有的TCP连接,并以数字形式显示它们的地址和端口
netstat -ant
5、nslookup命令
安装命令:
[root@localhost ~]# yum install bind-utils
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 bind-utils.x86_64.32.9.11.4-26.P2.el7_9.16 将被 安装
--> 正在处理依赖关系 bind-libs(x86-64) = 32:9.11.4-26.P2.el7_9.16,它被软件包 32:bind-utils-9.11.4-26.P2.el7_9.16.x86_64 需要
--> 正在处理依赖关系 liblwres.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7_9.16.x86_64 需要
--> 正在处理依赖关系 libbind9.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7_9.16.x86_64 需要
--> 正在检查事务
---> 软件包 bind-libs.x86_64.32.9.11.4-26.P2.el7_9.16 将被 安装
--> 解决依赖关系完成
依赖关系解决
=============================================================================================================================================================================================================================
Package 架构 版本 源 大小
=============================================================================================================================================================================================================================
正在安装:
bind-utils x86_64 32:9.11.4-26.P2.el7_9.16 updates 262 k
为依赖而安装:
bind-libs x86_64 32:9.11.4-26.P2.el7_9.16 updates 159 k
事务概要
=============================================================================================================================================================================================================================
安装 1 软件包 (+1 依赖软件包)
总下载量:421 k
安装大小:769 k
Is this ok [y/d/N]:
使用命令:
nslookup两种模式
交互模式
[root@localhost ~]# nslookup #使用/etc/resolv.conf第一行所配置的域名服务器来查询
>
[root@localhost ~]# nslookup - 8.8.8.8 #指定8.8.8.8的域名服务器来查询
>
[root@localhost ~]# nslookup - 8.8.8.8 #指定8.8.8.8的域名服务器来查询www.baidu.com的ip地址
> www.baidu.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.232.231.172
Name: www.a.shifen.com
Address: 183.232.231.174
>
非交互模式
[root@localhost ~]# nslookup www.baidu.com
Server: 192.168.3.1
Address: 192.168.3.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.232.231.172
Name: www.a.shifen.com
Address: 183.232.231.174
[root@localhost ~]#
##Non-authoritative answer :从本机缓存种获取的DNS解析数据就是非授权的,因为DNS缓存有时间差,不一定保证本机缓存的是最新的数据。
nslookup
只需要执行一次nslookup命令,就可以像域名服务器发起连续的查询请求
下半部分:域名解析信息
[root@localhost ~]# nslookup www.baidu.com
Server: 192.168.3.1 #本次DNS解析所使用的DNS服务器,默认使用/etc/resolv.conf第一个DNS服务器
Address: 192.168.3.1#53 #连接到的DNS服务器的具体ip地址和端口
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com. #CNAME,别名
Name: www.a.shifen.com
Address: 183.232.231.172 #百度真正对应的ip地址1
Name: www.a.shifen.com
Address: 183.232.231.174 #百度真正对应的ip地址1
演示如下:
[root@localhost ~]# nslookup -type=soa www.baidu.com
Server: 192.168.3.1
Address: 192.168.3.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Authoritative answers can be found from:
a.shifen.com
origin = ns1.a.shifen.com
mail addr = baidu_dns_master.baidu.com
serial = 1910010002
refresh = 5
retry = 5
expire = 2592000
minimum = 3600
[root@localhost ~]# nslookup -type=ip www.baidu.com
unknown query type: ip
Server: 192.168.3.1
Address: 192.168.3.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.232.231.172
Name: www.a.shifen.com
Address: 183.232.231.174
6、iptables命令
TCP/IP基本概念:
TCP/IP将网络分为四层:应用层,传输层,网络层,链路层。
传输层:定义了两种通信协议,分别为TCP协议和UDP协议。
TCP协议:TCP协议在传输 数据过程中会检查数据的完整性,因此传输的数据是不会丢失的。
UDP协议:当选择UDP协议作为数据传输方法时,其目的通常在于满足效率方面的要求,而非数据正确性方面的要求。
防火墙的分类:数据包过滤防火墙&应用层防火墙
NETfilter的四个表:
filter:filter是NETfilter中最重要的机制,其任务是执行数据包的过滤操作,也就是起到防火墙的作用
nat:比较通俗的 方式说,其功能就是IP分享器,只不过其所能执行的 功能,比一般市场上的IP分享器功能强大得多
mangle:可以通过mangle机制来修改经过防火墙内数据包的内容
raw:负责加快数据包穿过防火墙机制的速度,由此提高防火墙的性能
命令实例:
iptables中所有链的默认规则有DROP和ACCEPT两个值,默认的值为ACCEPT.
1.修改FORWARD链的默认策略设置为DROP:
#iptables -t filter -p FORWARD DROP #-t指定所要操作的表,如果没有指定,则默认的表为filter.
iptables的-F参数不会影响到默认的策略状态,要改变默认策略的状态,一定要使用-P的参数来设置。
2.将规则添加到filter表的INPUT链:
#iptables -t filter -A INPUT -p icmp -j ACCEPT
3.在INPUT链中插入新的规则:
#iptables -t filter -I INPUT 2 -p tcp -j ACCEPT #插入到第二条规则的位置,iptables规则的优先级别为:由上而下.
4.取代INPUT链内已经存在的规则:
#iptables -t filter -R INPUT -p tcp -j ACCEPT
5.删除INPUT链中已经存在的规则:
#iptables -t filter -D INPUT 2 #删除原来的第二条规则
iptables规则语法:
基本语法:iptables -t filter -A INPUT -p icmp -j DROP
高级语法:iptables -t filter -A INPUT -m mac --mac-source 00:E0:18:00:7C:A4 -j DROP
1.将192.168.0.83进入本机的icmp协议包都丢弃
#iptables -t filter -A INPUT -p icmp -s 192.168.0.83 -j DROP
2.不允许192.168.0.83主机通过本机的DNS服务来执行名称解析
#iptables -A INPUT -p udp -s 192.168.0.83 --dport 53 -j REJECT
3.允许192.168.0.83主机连接到本机的TELNET服务
#iptables -A INPUT -p tcp -s 192.168.0.83 --dport 23 -j ACCEPT
4.允许192.168.1.0/24网段的主机向本机192.168.0.1提出任何服务请求
#iptables -A INPUT -p all -s 192.168.1.0/24 -d 192.168.0.1 -j ACCEPTT
5.只允许客户端主机从eth1这个接口访问本机的SSH服务
#iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
6.不允许本机的应用程序从eth0接口发送数据包去访问edu.uuu.com.tw以外的网站
#iptables -A OUTPUT -o eth0 -p tcp -d !edu.uuu.com.tw --dport 80 -j REJECT
7.不允许本企业内部的主机访问企业以外的任何网站
#iptables -A FORWARD -i eht1 -o eth0 -p tcp --dport 80 -j DROP
简单的单机防火墙:
1.网络上的任何主机都能正常访问192.168.0.1主机上的SSH和TENNET服务
2.网络上只有192.168.0.200这台主机可正常访问192.168.0.1上的所有服务
iptables -P INPUT DROP
iptables -A INPUT -p tcp -d 192.168.0.1 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -d 192.168.0.1 --dport 23 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.200 -d 192.168.0.1 --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.200 -d 192.168.0.1 --dport 80 -j ACCEPT
解决应用程序无法从防火墙主机上对外建立新连接的问题:
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
本规则使用state模块--ESTABLISHED、NEW、RELATED、INVALID
iptables -A INPUT -p all -m state --state INVALID -j DROP
管理防火墙规则数据库的方法:
1.在修改完netfilter的会泽之后,可以使用service iptables save将所有的命令存储到/etc/sysconfig/iptables文件中,接着使用chkconfig iptables on,设置iptables开机自动启动.但是在修改的时候并不方便.
2.使用shell脚本管理规则数据库
优点:提升管理防火墙规则的简便性
可以在shell脚本中使用变量
防火墙规则容易阅读
备份防火墙规则数据库极为方便
缺点:无法在开机后自动载入规则数据库
该shell文件的属主和属组,需要修改为root,权限为700.
使用filter构建网关式防火墙:
1.192.168.0.200这台主机只能访问10.0.1.100主机的SMTP和POP3服务
2.192.168.0.0/24网段上的其他主机只可以访问因特网上的DNS、SMTP、HTTP、HTTPS服务
3.因特网上的主机不得访问企业内任何的主机
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -A INPUT -p tcp -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state INVALID -j DROP
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.0.200 -d 10.0.1.100 --dport 25:110 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p all -d 192.168.0.200 -j DROP
iptables -A FORWARD -i eth1 -o eth1 -p tcp --dport 25,110 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth1 -p tcp --dport 80,443 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth1 -p udp --dport 53 -j ACCEPT
netfilter的NAT机制:
PREROUTING:当我们下发规则要去修改数据包的”Destination IP”时,该规则放在PREROUTING链中.
POSTROUTING:修改数据包内的来源IP.
OUTPUT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200
内网的ip访问因特网时,将其数据包的sourceIP转换为其公网IP,即可实现内网对因特网的访问.
接口名称的问题:-o后面的“接口名称”务必设置为当前所使用的公网IP的地址.
如果公网IP不是固定的:#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
netfilter的mangle机制:
修改IP包头的TTL值:可以修改Linux主机所发送的数据包,将这些数据包的TTL值改为128,让黑客误以为是Windows操作系统,也可以将所有Windows操作系统所发送的数据包的TTL值改为64,让黑客误以为是Linux系统.
修改IP包头的DSCP值或对特定的数据包设置特征:
通过IP包内的DSCP值来分类:
我们可以通过mangle机制来修改IP包内的DSCP值,例如:把DSCP值改为0000-01,接着在“带宽分配器”上设置,如果数据包内的DSCP值为0000-01,就给予64KB/s的带宽
使用mangle机制为数据包标示识别码;
mangle机制可以为特定的数据包来标示不同的识别码,例如:如果数据包内的source port为80,就标示该数据包的识别码为80,接着在“带宽分配器”上设置,如果数据包的识别码为80,就给予512KB/s的带宽
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j DSCP --set-dscp 43
netfilter的raw机制:
Netfilter/iptables的高级技巧:
防火墙性能的最优化:
1.调整防火墙规则顺序:匹配命中次数越高者越靠前(设置防火墙一段时间后执行iptables -L -n -v来查看匹配的次数)
2.巧妙地使用multiport和iprange模块
iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dport 22,23,25,80,110 -j ACCEPT #这样不管哪个服务器所需的匹配次数都会是一样的
iptables -A INPUT -m iprange --src-range 192.168.1.12-192.168.1.16 -j ACCEPT
3.巧妙使用用户自定义的链
Netfilter连接处理能力与内存消耗:
1.计算最大连接数:(nf_conntrack: table full, dropping packet)
2.调整连接跟踪器:
3.连接跟踪数量与内存消耗:
使用raw表:
nf_conntrack模块默认会自动跟踪所有链接,在raw表加入以下规则,即可不被nf_conntrack跟踪:
iptables -t raw -A PREROUTING -i eth2 -o eth1 -p tcp --dport 25 -j NOTRACK
iptables -t raw -A PREROUTING -i eth1 -o eht2 -p tcp --sport 25 -j NOTRACK
raw表的好处在于“加速”以及增加可跟踪的连接数量,因为raw表所定义的连接不会被跟踪,也就不会算作连接跟踪数量。
PREROUTING:如果是网关式防火墙,PREROUTING链可以用来处理防火墙两侧网络之间所建立的连接,另外,PREROUTING链也可以处理任何主动连接到防火墙本机的连接。
OUTPUT:用来处理本机对外建立的连接。
简单及复杂通信协议的处理:
1.简单通信协议:
2.复杂通信协议:
客户端与服务器端之间,需要多条连接才能完成应用的协议,就属于复杂通信协议。
FTP通信协议的两种工作模式:被动模式&主动模式
常见的网络攻击手段及防御方法:
1.PortScan攻击:PortScan是一种极常见的攻击行为,其目的是在探测特定主机上有哪些服务是开启的,接着,再从这些信息来分析可能有机会入侵的通道在哪里。因此,PortScan的攻击通常只是真正入侵之前的准备,而真正的攻击行动可能随之展开。
使用netfilter来防御portscan的攻击:
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -P all -m state --state NEW -m recent --name port_scan --update --seconds 1800 --hitcount 10 -j DROP
itables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dport 22,25,80,110 -j ACCEPT
iptables -A INPUT -p all -m recent --name port_scan --set
半个小时内客户端访问22,25,80,110端口的次数超过10次,就判定为portscan攻击
2.密码攻击:
a.未加密通信协议下的密码攻击防御:
iptables -A OUTPUT -p tcp --sport 110 -m string --algo bm --string “ERR Authentication failed” -m recent --name pop3 --ipdate --seconds 600 --hitcount 6 -j REJECT
iptables -A OUTPUT -p tcp --sport 110 -m string --algo bm --string “ERR Authentication failed” -m reecent --name pop3 --set
认证失败次数超过6次,则认为是密码攻击
b.加密通信协议下的密码攻击防御
a.改变SSH服务器所能接受的最大密码错误次数:
vi /etc/ssh/sshd_config
修改MaxAuthTries参数的值
b.将送至SSH服务器的SYN数据包数量作为匹配依据:
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name ssh --update --seconds 600 --hitcount 4 -j DROP
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name ssh --set
3.DOS和DDOS网络攻击:
DOS:严重消耗被攻击者的系统或网络资源,由此达到干扰需要访问该服务的正常使用者.
DDOS
4.URL攻击防御:
5.管理病毒感染时的连接消耗
7、telnet命令
Telnet 协议是 TCP/IP 协议族中应用最广泛的协议。
它允许用户(Telnet 客户端)通过一个协商过程来与一个远程设备进行通信。
Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现。
NVT 是虚拟设备,连接双方(客户机和服务器)都必须把它们的物理终端和 NVT 进行相互转换。
Telnet 协议具有如下的特点:
(1) 适应异构
为了使多个操作系统间的 Telnet 交互操作成为可能,就必须详细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用 ASCII 回车控制符(CR)结束。
另一些系统则需要使用 ASCII 换行符(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用 CTRL+C,而另一些系统使用 ESCAPE)。
如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远地系统解释后很可能会不准确或者出现错误。因此,Telnet 协议必须解决这个问题。
为了适应异构环境,Telnet 协议定义了数据和命令在 Internet 上的传输方式,此定义被称作网络虚拟终端 NVT(Net Virtual Terminal)。它的应用过程如下:
-
对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为 NVT 格式,并发送到服务器,服务器软件将收到的数据和命令,从 NVT 格式转换为远地系统需要的格式;
-
对于返回的数据:远地服务器将数据从远地机器的格式转换为 NVT 格式,而本地客户机将将接收到的 NVT 格式数据再转换为本地的格式。
(2) 传送远地命令
我们知道绝大多数操作系统都提供各种快捷键来实现相应的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。
那么对于 Telnet 来说,它是用什么来实现控制命令的远地传送呢?
Telnet 同样使用 NVT 来定义如何从客户机将控制功能传送到服务器。我们知道 USASCII 字符集包括 95 个可打印字符和 33 个控制码。
当用户从本地键入普通字符时,NVT 将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT 将把它转化为特殊的 ASCII 字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。
将正常 ASCII 字符集与控制命令区分主要有两个原因:
-
这种区分意味着 Telnet 具有更大的灵活性:它可在客户机与服务器间传送所有可能的 ASCII 字符以及所有控制功能;
-
这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。
(3) 数据流向
将 Telnet 设计为应用级软件有一个缺点,那就是:效率不高。这是为什么呢?下面给出 Telnet 中的数据流向:
数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远地机器,远地操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点。
最后,远地操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。
因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。
(4) 强制命令
我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满。
如果这样,远地服务器也无法再将数据写入伪终端,并且最终导致停止从 TCP 连接读取数据,TCP 连接的缓冲区最终也会被占满,从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远地机器的控制。
为了解决此问题,Telnet 协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道 TCP 用紧急数据机制实现外带数据信令,那么 Telnet 只要再附加一个被称为数据标记(date mark)的保留八位组。
并通过让 TCP 发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。
作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。服务器在遇到了数据标记后将返回正常的处理过程。
(5) 选项协商
由于 Telnet 两端的机器和操作系统的异构性,使得 Telnet 不可能也不应该严格规定每一个 telnet 连接的详细配置,否则将大大影响 Telnet 的适应异构性。因此,Telnet 采用选项协商机制来解决这一问题。
Telnet 选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。例如:有一个选项可以控制 Telnet 是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。
Telnet 选项的协商方式也很有意思,它对于每个选项的处理都是对称的,即任何一端都可以发出协商申请;任何一端都可以接受或拒绝这个申请。另外,如果一端试图协商另一端不了解的选项,接受请求的一端可简单的拒绝协商。因此,有可能将更新,更复杂的 Telnet 客户机服务器版本与较老的,不太复杂的版本进行交互操作。
如果客户机和服务器都理解新的选项,可能会对交互有所改善。否则,它们将一起转到效率较低但可工作的方式下运行。所有的这些设计,都是为了增强适应异构性,可见 Telnet 的适应异构性对其的应用和发展是多么重要。
Telnet 客户端命常用命令:
- open:使用 openhostname 可以建立到主机的 Telnet 连接。
- close:使用命令 close 命令可以关闭现有的 Telnet 连接。
- display:使用 display 命令可以查看 Telnet 客户端的当前设置。
- send:使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令:
- ao:放弃输出命令。
- ayt:“Are you there”命令。
- esc:发送当前的转义字符。
- ip:中断进程命令。
- synch:执行 Telnet 同步操作。
- brk :发送信号。
- quit:使用 quit 命令可以退出 Telnet 客户端
Telnet 命令使用方法
Telnet命令允许您与使用Telnet协议的远程计算机通讯。运行Telnet时可不使用参数,以便输入由Telnet提示符(Microsoft Telnet>)表明的Telnet上下文。可从Telnet提示符下,使用Telnet命令管理运行Telnet客户端的计算机。
Telnet 客户端命令提示符接受以下命令:
open:使用 openhostname 可以建立到主机的 Telnet 连接。
close:使用命令 close 命令可以关闭现有的 Telnet 连接。
display:使用 display 命令可以查看 Telnet 客户端的当前设置。
send:使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令:
ao:放弃输出命令。
ayt:“Are you there”命令。
esc:发送当前的转义字符。
ip:中断进程命令。
synch:执行 Telnet 同步操作。
brk:发送信号。
上表所列命令以外的其他命令都将以字符串的形式发送至Telnet服务器。例如,send abcd将发送字符串abcd至Telnet服务器,这样,Telnet会话窗口中将出现该字符串。
quit:使用 quit 命令可以退出 Telnet 客户端。
set:
使用带有下列参数之一的 set 命令为当前会话配置 Telnet 客户端。
bsasdel:
Backspace 将作为删除而发送。
codeset option:
只有当语言设置为日语时才可用。将当前代码集设置为选项,可以为下列选项之一:
? Shift JIS
? Japanese EUC
? JIS Kanji
? JIS Kanji (78)
? DEC Kanji
? NEC Kanji
应该在远程计算机上设置相同的代码集。默认情况下,Telnet客户端使用光栅字体。使用这些代码集访问远程计算机之前,您必须配置Telnet客户端以使用 TrueType字体,从而确保正确地显示字符。
crlf:
新行模式:导致 Return 键发送 0x0D, 0x0A。
delasbs:
Delete 将作为退格键发送。
escapecharacter:
从Telnet会话模式转换到Telnet命令模式。当处于Telnet命令模式时,按 Enter将会返回到Telnet会话模式。
localecho:
打开 localecho。
logfilename:
指定为该会话将Telnet日志写入到的文件的名称。如果不指定该文件的路径,将在当前目录中创建文件。指定日志文件还会启动日志记录。
logging:
启动该会话的日志。
mode {console | stream}:
操作的模式。
ntlm:
启动NTLM身份验证。
term {ansi | vt100 | vt52 | vtnt}:
您希望Telnet Client模拟的终端的类型。
?:
显示set的帮助信息。
unset:
使用unset命令可以关闭先前使用set命令设置的选项。
status:
使用status命令可以确定运行Telnet客户端的计算机是否已成功连接。
?/help:
显示“帮助”信息
Telnet典型入侵(题外话,别用来搞破坏哦)
① Telnet典型入侵步骤
步骤一:建立IPC$连接。其中sysback是前面建立的后门账号。
步骤二:开启远程主机中被禁用的Telnet服务。
步骤三:断开IPC$连接。
步骤四:去掉NTLM验证。如果没有去除远程计算机上的NTLM验证,在登录远程计算机的时候就会失败。
不过入侵者会使用各种方法使NTLM验证形同虚设。解除NTLM的方法有很多,下面列出一些常用的方法,来看看入侵者如何去除NTLM验证。
方法一:
首先,在本地计算机上建立一个与远程主机上相同的账号和密码。
然后,通过“开始”→“程序”→“附件”找到“命令提示符”,使用鼠标右键单击“命令提示符”,然后选择“属性”
在“以其他用户身份运行(U)”前面“打钩”,然后单击“确定”按钮。接着,仍然按照上述路径找到“命令提示符”,用鼠标左键单击打开。
如图所示,键入“用户名”和“密码”。
单击“确定”按钮后,得到MS-DOS界面,然后用该MS-DOS进行Telnet登录。
键入“telnet 192.168.27.128”命令并回车后,在得到的界面中键入“y”表示发送密码并登录。
最后得到就是远程主机为Telnet终端用户打开的Shell,在该Shell中输入的命令将会直接在远程计算机上执行。
比如,键入“net user”命令来查看远程主机上的用户列表。
方法二:
该方法使用工具NTLM.EXE来去除NTLM验证。首先与远程主机建立IPC$连接,然后将NTLM.EXE拷贝至远程主机,最后通过at命令使远程计算机执行NTLM.EXE。
计划任务执行NTLM.EXE后,便可键入“telnet 192.168.27.128”命令来登录远程计算机。
最后得到登录界面:
在该登录界面中键入用户名和密码,如果用户名和密码正确,便会登录到远程计算 机,得到远程计算机的Shell。
成功登录:
另外,还可以使用与opentelnet.exe相配套的程序resumetelnet.exe来恢复远程主机的NTLM验证,命令格式为“ResumeTelnet.exe \server sername password”。
执行后回显可知,resumetelnet.exe关闭了目标主机的Telnet服务,恢复了NTLM验证。
Telnet高级入侵全攻略:
从前面的介绍可以看出,即使计算机使用了NTLM验证,入侵者还是能够轻松地去除NTLM验证来实现Telnet登录。如果入侵者使用23号端口登录,管理员便可以轻易地发现他们,但不幸的是,入侵者通常不会通过默认的23号端口进行Telnet连接。那么入侵者究竟如何修改Telnet端口,又如何修改Telnet服务来隐蔽行踪呢?下面举一些常见的例子来说明这一过程,并介绍一下完成这一过程所需要的工具。
① X-Scan:用来扫出存在NT弱口令的主机。
② opentelnet:用来去NTLM验证、开启Telnet服务、修改Telnet服务端口。
③ AProMan:用来查看进程、杀死进程。
④ instsrv:用来给主机安装服务。
(1)AProMan简介
AproMan以命令行方式查看进程、杀死进程,不会被杀毒软件查杀。举个例子,如果入侵者发现目标主机上运行有杀毒软件,会导致上传的工具被杀毒软件查杀,那么他们就会要在上传工具前关闭杀毒防火墙。使用方法如下:
① c:\AProMan.exe -a 显示所有进程。
② c:\AProMan.exe -p 显示端口进程关联关系(需Administrator权限)。
③ c:\AProMan.exe -t [PID] 杀掉指定进程号的进程。
④ c:\AProMan.exe -f [FileName] 把进程及模块信息存入文件。
(2)instsrv简介
instsrv是一款用命令行就可以安装、卸载服务的程序,可以自由指定服务名称和服务所执行的程序。instsrv的用法如下:
安装服务:instsrv <服务名称> <执行程序的位置>
卸载服务:instsrv <服务名称> REMOVE
还有另一款优秀的远程服务管理工具SC。它属于命令行工具,可以在本地对远程计算机上的服务进行查询、启动、停止和删除。它的用法很简单,这里不作介绍了。下面通过实例来介绍入侵者如何实现Telnet登录并留下Telnet后门的过程。
步骤一:扫出有NT弱口令的主机。在X-Scan的“扫描模块”中选中“NT-SERVER弱口令”。
然后在“扫描参数中”指定扫描范围为“192.168.27.2到192.168.27.253”。
等待一段时间后,得到扫描结果。
步骤二:用opentelnet打开远程主机Telnet服务、修改目标主机端口、去除NTLM验证。
无论远程主机是否开启“Telnet服务”,入侵者都可以通过工具opentelnet来解决。比如,通过“opentelnet \192.168.27.129 administrator“” 1 66”命令为IP地址为192.168. 27.129的主机去除NTLM认证,开启Telnet服务,同时又把Telnet默认的23号登录端口改成66号端口。
步骤三:把所需文件(instsrv.exe、AProMan.exe)拷贝到远程主机。
首先建立IPC$,然后通过映射网络硬盘的方法把所需文件拷贝、粘贴到远程计算机的c:\winnt文件夹中。
拷贝成功后。
步骤四:Telnet登录。
在MS-DOS中键入命令“telnet 192.168.27.129 66”来登录远程主机192.168.27.129。
步骤五:杀死防火墙进程。
如果入侵者需要把类似木马的程序拷贝到远程主机并执行,那么他们会事先关闭远程主机中的杀毒防火墙。虽然这里没有拷贝类似木马的程序到远程主机,但还是要介绍一下这一过程。当入侵者登录成功后,他们会进入到c:\winnt目录中使用AProMan程序。首先通过命令 AProMan –A查看所有进程,然后找到杀毒防火墙进程的PID,最后使用AProMan –t [PID]来杀掉杀毒防火墙。
步骤六:另外安装更为隐蔽的Telnet服务。
为了事后仍然能登录到该计算机,入侵者在第一次登录之后都会留下后门。这里来介绍一下入侵者如何通过安装系统服务的方法来让Telnet服务永远运行。在安装服务之前,有必要了解一下Windows操作系统是如何提供“Telnet服务”的。打开“计算机管理”,然后查看“Telnet服务”属性。
在“Telnet 的属性”窗口中,可以看到其中“可执行文件的路径”指向“C:\WINNT\ SYSTEM32\tlntsvr.exe”。可见,程序tlntsvr.exe就是Windows系统中专门用来提供“Telnet服务”的。也就是说,如果某服务指向该程序,那么该服务就会提供Telnet服务。因此,入侵者可以自定义一个新服务,将该服务指向tlntsvr.exe,从而通过该服务提供的Telnet服务登录,这样做后,即使远程主机上的Telnet服务是被禁用的,入侵者也可以毫无阻碍的登录到远程计算机,这种方法被称之为 Telnet后门。下面就介绍一下上述过程是如何实现的。首先进入instsrv所在目录。
然后使用instsrv.exe建立一个名为“SYSHEALTH”的服务,并把这个服务指向C:\WINNT z\SYSTEM32\tlntsvr.exe,根据instsrv.exe的用法,键入命令“instsrv.exe SYSHEALTH C:\WINNT\SYSTEM32\tlntsvr.exe”。
一个名为“SYSHEAHTH”的服务就这样建立成功了。虽然从表面看上去该服务与远程连接不存在任何关系,但是实际上该服务是入侵者留下的Telnet后门服务。
通过“计算机管理”可以看到该服务已经添加在远程计算机上。入侵者一般会把这个服务的启动类型设置成“自动”,把原来的“Telnet服务”停止并禁用。
通过验证可知,虽然远程主机上的Telnet服务已经被停止并禁用,但入侵者仍然能够通过Telnet来控制远程主机。通过这些修改,即使管理员使用“netstat –n”命令来查看开放端口号也看不出66端口正在提供Telnet服务,此命令平常还可以拿来判断端口的连接情况
8、scp命令
scp /path/to/source/file.txt username@server_b:/path/to/destination/
该命令比较简单:我列出几个例子一看就明白如何用
# 格式
scp 本机文件 用户名@ip地址:目标路径
# 举例
scp hello.zip root@1.15.55.255:/data/webroot/
scp -r /data root@133.132.143.245:/
scp 1.zip 2.zip root@22.33.44.55:/data/doc/
回车后输入连接的服务器root密码,如果非root用户命令修改如下:
scp -r /data/webRoot test@22.33.44.55:/data/website/