Linux终端常用命令

一、文件/文件夹管理

ls 列出当前目录文件(不包括隐含文件)
ls -a 列出当前目录文件(包括隐含文件)
ls -l 列出当前目录下文件的详细信息

cd .. 回当前目录的上一级目录
cd - 回上一次所在的目录
cd ~ 或 cd 回当前用户的宿主目录
mkdir 目录名 创建一个目录
rmdir 空目录名 删除一个空目录
rm 文件名 文件名 删除一个文件或多个文件
rm -rf 非空目录名 删除一个非空目录下的一切

mv 路经/文件 /经/文件移动相对路经下的文件到绝对路经下
mv 文件名 新名称 在当前目录下改名
find 路经 -name “字符串” 查找路经所在范围内满足字符串匹配的文件和目录

无论是否退出 vi,均可保存所做的工作。按 ESC 键,确定 vi 是否处于命令模式。

操作 键入

保存,但不退出vi :w

保存并退出vi :wq

退出vi,但不保存更改 :q!

用其他文件名保存 :w filename

在现有文件中保存并覆盖该文件 :w! filename

:>passwd.bak 清空文件内容
echo " ">passwd.bak
#dd 删除所在行
复制: y 
粘贴: p      #p
:set nu 显示行号

二.linux权限操作

Linux内的一切皆文件,所以对于Linux下文件的管理就十分的重要了。Linux下的文件权限分为三种:r(读),w(写),x(执行)
一. ubuntu下查看权限的命令为:

ls -l filename

ls -ld folder

用chmod修改用户权限

chmod的语法:

chmod [-可选参数][<权限范围>+/-/=<权限设置>] 文件/目录

chmod的用法大致分为两种

1.指定某类用户的权限

chmod [ u / g / o / a ] [ + / - / = ] [ r / w / x ] file

[ u / g / o / a ] 为权限范围,其中
u:User,即文件或目录的拥有者
g:Group,即文件或目录的所属群组
o:Other,除了文件或目录拥有者和所属群组外,其他用户都属于这个范围
a:All,即全部用户

权限操作
+表示增加权限
-表示取消权限
=表示取消之前的权限,并给予唯一的权限
权限代号
r:读取权限,数字代号为 “4”
w:写入权限,数字代号为 “2”
x:执行权限,数字代号为 “1”
-:不具备任何权限,数字代号为 “0”

file,文件名(路径)

例如

    sudo chmod u+rw /code/readme.txt
     -rw 代表去掉rw权限
给 User 用户增加了对”/code/readme.txt”文件 “w” 和 “x” 的权限

2.同时指定三类用户的权限

chmod [xyz] file

其中x,y,z分别指定User、Group、Other的权限;用三位二进制数表示 ” r , w , x”(注意顺序)三种权限,其中 0 代表没有该权限,1 代表有该权限,如 100 则表示,有 ‘r”权限,无 “w x”权限;再将这个三位的二进制数转为十进制,则是 x (或y,z)的值

例如

sudo chmod 774 /code/readme.txt

User : 7 = 111 表示具有 ” r , w , x” 权限
Group : 7 = 111 表示具有 ” r , w , x” 权限
Other : 4 = 100 表示只具有 ” r ” 权限,而没有 “w,x” 权限

sudo chmod 774 *

” * ” 为通配符,表示对当前所在目录下的所有文件做权限修改操作

sudo chmod -R 774 /code/

修改这个目录,以及子目录下文件的权限
最后附上可选参数列表
参数 参数说明
-c 当发生改变时报告处理信息
-f 错误信息不输出
-R 处理指定目录及子目录下的所有文件
-v 运行时显示详细处理信息

chown apache 文件 将文件名改为apache权限

三.安装

1.使用apt-get install来安装应用程序是最常见的一种安装方法,比如要安装buildessential这个软件,使用以下,他会帮我把所有的依赖包都一起安装了。
sudo apt-get install build-essential</pre>

下面给出apt-get的的各种参数:
apt-get install xxx 安装xxx 。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装
apt-get remove xxx 卸载xxx
apt-get update 更新软件信息数据库
apt-get upgrade 进行系统升级
apt-cache search 搜索软件包

Tips:建议您经常使用“apt-get update”命令来更新您的软件信息数据库 。

  1. dpkg安装deb包

Ubuntu软件包格式为deb,安装方法如下:
sudo dpkg -i package.deb
dpkg的详细使用方法,网上有很多,下面简单列了几个:
dpkg -i package.deb 安装包
dpkg -r package 删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg –unpack package.deb 解开 deb 包的内容
dpkg -S keyword 搜索所属的包内容
dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出 deb 包的内容
dpkg –configure package 配置包
根据Ubuntu中文论坛上介绍,使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包、刻盘,以后安装Ubuntu时就可以在没有网络环境的情况下进行了。下面的命令是拷贝archives这个目录到/var/cache/apt/目录下,替换原有的archives
enadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/

四. ifconfig (参数)

<pre>add<地址>:设置网络设备IPv6的[ip](http://man.linuxde.net/ip "ip命令")地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;
io_addr<I/O地址>:设置网络设备的I/O地址;
irq<IRQ地址>:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。</pre>

显示网络设备信息(激活状态的):

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3E:00:1E:51  
          inet addr:10.160.7.81  Bcast:10.160.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3607197869 (3.3 GiB)  TX bytes:6115042 (5.8 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:56103 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5079451 (4.8 MiB)  TX bytes:5079451 (4.8 MiB)

eth0表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:16:3E:00:1E:51

inet addr用来表示网卡的IP地址,此网卡的IP地址是10.160.7.81,广播地址Bcast:10.160.15.255,掩码地址Mask:255.255.240.0

lo是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回环地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。

第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。
第二行:网卡的IP地址、子网、掩码。
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。
第四、五行:接收、发送数据包情况统计。
第七行:接收、发送数据字节数统计信息。

启动关闭指定网卡:

ifconfig eth0 up
ifconfig eth0 down

ifconfig eth0 up为启动网卡eth0,ifconfig eth0 down为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。

为网卡配置和删除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址

用ifconfig修改MAC地址:

ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

配置IP地址:

[root@localhost ~]# ifconfig eth0 192.168.2.10
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

启用和关闭arp协议:

ifconfig eth0 arp #开启网卡eth0 的arp协议
ifconfig eth0 -arp #关闭网卡eth0 的arp协议

设置最大传输单元:

ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes

五.grep / awk / sed 命令使用

匹配检索文本内容
grep用法:
匹配3306端口: cat 文本(ss.txt) |grep 3306
匹配3306端口的ip地址: cat ss.txt |grep 3306 -B 13 |grep Nmap

图片.png

图片.png

图片.png

图片.png

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。</pre>

awk :

-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
-mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
-W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。
-W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。
-W lint or --lint
打印不能向传统unix平台移植的结构的警告。
-W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。
-W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
-W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。
-W version or --version
打印bug报告信息的版本。


    实例: last -n 3 取近来登录过得3条用户信息
    last -n 3 |awk '{print $1}'  
    $1:指第一行,$2则是第二行
图片.png

如果只匹配上面ip信息,则可以写为
cat ss.txt |grep 3306 -B 13 |grep Nmap | awk '{print $5}'

图片.png

cat /etc/passwd |awk -F ':' '{print 1"\t"7}'
-F 分隔符 上列以:分割

sed:

sed

sed命令:

a\ 在当前行下面插入文本。
i\在当前行上面插入文本。
c\ 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。
W file 写并追加模板块的第一行到file末尾。
! 表示后面的命令对所有没有被选定的行发生作用。
= 打印当前行号码。
# 把注释扩展到下一个换行符以前。 </pre>

sed替换标记:

g 表示行内全面替换。
p 表示打印行。
w 表示把行写入一个文件。
x 表示互换模板块中的文本和缓冲区中的文本。
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记

sed字符元集

^匹配行开始,如:/^sed/匹配所有以sed开头的行。
$匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[[ss](http://man.linuxde.net/ss "ss命令")][ed](http://man.linuxde.net/ed "ed命令")/匹配sed和Sed。  
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\>匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。</pre>

示例:

cat -n test |sed -n '/root/p'
匹配ip

ifconfig |grep "Bcast" |sed 's/^.inet addr://g'|sed 's/Bcast.//g'

image.png
image.png

替换man.config前50行,将man替换man123

cat man.config |sed '1,50s/man/man123/g'

image.png

cat -n man.config -n |sed '1,50p' |sed '1,50s/man/man123/g' 显示替换内容但文件内容替换不保存
sed -i '1,50s/man/man123/g' file(文件名) 替换文件内容

sed命令小结
sed替换的基本语法为:

sed 's/原字符串/替换字符串/'

单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:

sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号

命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:

sed 's?原字符串?替换字符串?' //自定义分隔符为问号

可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:

sed 's/原字符串/替换字符串/' //替换所有匹配关键字

上箭头”^”表示行首,美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),这里犯二了,搜了半天哪个符号表示首行,半天才想起来,首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:

sed 's/^/添加的头部&/g' //在所有行首添加
sed 's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed '$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换2到5行
sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行

替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:

sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' //同时执行两个替换规则

sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:

sed -i 's/原字符串/替换字符串/g' filename //替换文件中的所有匹配项

ps:

ps -ef 查看进程
ps -ef |grep ssh
ps -aux
ps -aux|more
ps -ef |

watch -n 5 ps -ef 5秒查看一次ps -ef

kill -9 进程名 强制停止进程

六.vi基础操作

图片.png

七.磁盘管理

df:
df -h 查看磁盘内存
df -h etc

八.磁盘挂载

取消挂载

  1. 创建挂载点

    mkdir /media/cdrom

在 /media 目录下创建一个空文件夹cdrom作为光盘的挂载点(任何一个空目录都可以作为挂载点)。


图片.png

2.打开光驱,放入光盘

如果用的是VMware中的虚拟机,进入虚拟机设置,选择“CD/DVD”硬件,勾选“已连接”和“启动时连接”,在连接处,选择“使用ISO映像文件”,浏览选择本地电脑中下载好的ISO光盘镜像文件,确定即可。


图片.png
  1. 执行挂载命令

mount /dev/cdrom1 /media/cdrom 或
mount /dev/sr0 /media/cdrom 或
mount -t /dev/cdrom1 /media/cdrom

iso9660 是光盘的默认文件系统。
由于linux系统可以自动识别光盘的文件系统,故“-t iso9660”也可以省略不写。

光盘的设备文件名是固定的,一般为/dev/cdrom或/dev/sr0。

挂载成功后,就可以通过挂载点读取光盘里面的数据。


图片.png
  1. 查看光盘中的数据

cd /media/cdrom
ls -l

图片.png
  1. 解除挂载

不能在挂载点目录下解除挂载,必须先切换到其他目录(如用户家目录)。

umount /media/cdrom

图片.png

九.fdisk命令

分区:硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。
一个硬盘主分区至少有1个,由于主磁盘分区表的原因最多只能有4个。为了解决这个问题,一个特殊的主分区称为扩展磁盘分区,用于划分成为逻辑分区。逻辑分区可以有若干个。
windows下主分区是硬盘的启动分区,它是独立的,也是硬盘的第一个分区,默认的话就是C区。在linux下主分区和逻辑分区都可以用来放系统,引导操作系统启动。
三种分区的容量关系为:
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
Linux对分区的编号:
/dev/sda1 第一个主分区
/dev/sda2 第二个主分区
/dev/sda3 第三个主分区
/dev/sda4 扩展分区
/dev/sda5 第一个逻辑分区
/dev/sda6 第二个逻辑分区

格式化:格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除

linux分区操作

在虚拟机vmware workstation上,加一块20g的scsi硬盘
并没有发现磁盘,证明要重启一下,加磁盘的动作是冷添加。

[root@pri dev]# ls | grep sd

sda
sda1
sda2
sda3

重启一下后,就能看到新增加的sdb。

[root@pri dev]# ls | grep sd

sda

sda1

sda2

sda3

sdb

打开虚拟机->设置->硬盘->添加

fdisk -l 查看磁盘信息

image.png

fdisk /dev/sdb 分区这块盘符

image.png

m 为帮助

image.png

n,增加分区; p, 主分区;w, 保存并退出

image.png

mkfs.ext4 /dev/sdb1

image.png

挂载,在www目录下创建image

mount /dev/sdb1 /var/www/image

image.png

可参照:
http://www.cnblogs.com/vipchenwei/articles/6909324.html
linux分区,格式化,挂载,卸载
Linux下可以用fdisk命令新建分区,方法如下:
1、首先查看硬盘信息,用fdisk -l命令,如果有硬盘有剩余空间就可以对其进行分区。

[root@bogon 桌面]# fdisk -l
Disk /dev/sda: 85.9 GB, 85899345920 bytes
 255 heads, 63 sectors/track, 10443 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000471ad
Device Boot      Start        End      Blocks  Id  System
 /dev/sda1  *          1          26      204800  83  Linux
 Partition 1 does not end on cylinder boundary.
 /dev/sda2              26        3851    30720000  83  Linux
 /dev/sda3            3851        4106    2048000  82  Linux swap / Solaris
 /dev/sda4            4106      10444    50912256    5  Extended
 /dev/sda5            4106      10444    50911232  83  Linux
 
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
 255 heads, 63 sectors/track, 2610 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x00000000
 #从上面看出/dev/sda空间已经用完了,/dev/sdb没有使用。

2、下面对/dev/sdb 进行分区

[root@bogon 桌面]# fdisk /dev/sdb
 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
 Building a new DOS disklabel with disk identifier 0xfaa2aa49.
 Changes will remain in memory only, until you decide to write them.
 After that, of course, the previous content won't be recoverable.
  
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
          switch off the mode (command 'c') and change display units to
          sectors (command 'u').
  
Command (m for help): m //输入m查看帮助文档
 Command action
    a  toggle a bootable flag
    b  edit bsd disklabel
    c  toggle the dos compatibility flag
    d  delete a partition
    l  list known partition types
    m  print this menu
    n  add a new partition //添加一个新的分区
    o  create a new empty DOS partition table
    p  print the partition table
    q  quit without saving changes
    s  create a new empty Sun disklabel
    t  change a partition's system id
    u  change display/entry units
    v  verify the partition table
    w  write table to disk and exit
    x  extra functionality (experts only)
 #fdisk选中/dev/sdb 输入m所有基本选项都出现,输入n新建分区
Command (m for help): n
 Command action
    e  extended
    p  primary partition (1-4)

3、有扩展分区和主分区,逻辑分区在扩展分区中建立。注意到括号中的1-4,最多只能建四个主分区(包括扩展分区)。先建一个主分区:

Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p #建主分区
 Partition number (1-4): 1 #分区号为1
 First cylinder (1-2610, default 1): #直接回车默认从第一个柱面开始划分
 Using default value 1
 Last
 cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G 
#加空间大小,这里有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。
 
Command (m for help): p #分好后查看分区信息,刚所做的所有一目了然。
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
 255 heads, 63 sectors/track, 2610 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0xfaa2aa49
  
   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1         262     2104483+  83  Linux

4、同上所述建立扩展分区:

Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 e #建立扩展分区
 Partition number (1-4): 4
 First cylinder (263-2610, default 263): 
Using default value 263
 Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +4G
  
Command (m for help): p
  
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
 255 heads, 63 sectors/track, 2610 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0xfaa2aa49
  
   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1         262     2104483+  83  Linux
 /dev/sdb4             263         785     4200997+   5  Extended

5、扩展分区建好就可以在扩展分区建立逻辑分区了

Command (m for help): n
 Command action
    l   logical (5 or over)
    p   primary partition (1-4)
 l #建逻辑分区
 First cylinder (263-785, default 263): 
Using default value 263
 Last cylinder, +cylinders or +size{K,M,G} (263-785, default 785): +2G
  
Command (m for help): p
  
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
 255 heads, 63 sectors/track, 2610 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0xfaa2aa49
  
   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1               1         262     2104483+  83  Linux
 /dev/sdb4             263         785     4200997+   5  Extended
 /dev/sdb5             263         524     2104483+  83  Linux

6、上面显示已经建好一个主分区,一个逻辑分区,但是这些现在还没有生效,需要保存退出。

Command (m for help): w #保存退出
 The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 Syncing disks.

十.


kali: 关防火墙 iptables -F
service ssh start  开启ssh服务
service network restart 重启ip
telnet ip 端口  测试端口


1. kali: 关防火墙 iptables -F

[root@localhost ~]#servcie iptables stop --临时关闭防火墙
[root@localhost ~]#chkconfig iptables off --永久关闭防火墙
[root@localhost ~]#service iptables status --查看防火墙状态

Linux中的防火墙主要是对iptables的设置和管理.

  1. Linux防火墙(Iptables)重启系统生效

    开启: chkconfig iptables on

    关闭: chkconfig iptables off

2.Linux防火墙(Iptables) 即时生效,重启后失效

开启: service iptables start  
 
关闭: service iptables stop  

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了Linux防火墙(Iptables)时,做如下设置,开启25和110端口,

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -p tcp -m tcp --dport 25 --syn -j ACCEPT  
 
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp -m tcp --dport 110 --syn -j ACCEPT  

2.telnet
使用Telnet测试端口。
2.1、telnet IP 端口,(防火墙为做相应限制)。

(1)如测本机主机:telnet 127.0.0.1 80或23,结果显示其80端口不可用,23端口开启可用。

(2)如测其它主机:telnet 10.0.0.27 80或21,结果显示其80端口不可用,21端口开启可用。

注:10.0.0.27主机是本人用于做测试的另一台主机。

Telnet IP端口显示:连接失败则是端口不可用或被禁止。

若telnet IP端口可用则会进入某个界面,界面因端口不同而显示不同。
2.2、telnet 域名 端口。

以"百度"为例,21是FTP服务端口一般不会开启,而80是HTTP端口故此肯定开启。


image.png

2.3 使用telnet远程访问某主机。

背景介绍:若使用Telnet协议远程访问主机,其访问主机和被访问主机都必须安装相应Telnet服务,被访问主机需将用户组中某个用户添加为隶属于TelnetClinets组,其访问主机输入用户名和密码才可访问被访问主机。

2.31在被访问主机上添加某个用户隶属于TelnetClients组。

操作过程:右击桌面"计算机"→"管理"→"系统工具--本地用户和组--用户"→右击用户在其菜单栏中点击"属性"→"隶属于--添加"→在"输入对象名称来选择(示例)"中输入"TelnetClients"→最后依次"确定"。


image.png
image.png

2.32ping被访问主机的IP,检测网络是否正常。如:ping 10.0.0.31

image.png

2.33
网络正常时Telnet IP发起远程访问主机。
输入:telnet 10.0.0.31敲回车;
进入Telnet Client客户端界面,问"您想发送吗(y/n):"输入y敲回车;
进入Telnet Service服务界面,输入(被访问主机)用户名和密码敲回车;
最后进入被访问主机的命令提示符目录下,即成功使用Telnet远程访问主机。
3.service ssh start 开启ssh服务
一般的linux系统都是默认安装了ssh服务,ssh的服务名一般都是sshd:

service sshd start 开启ssh服务
service sshd stop 停止ssh服务
service sshd restart 重启ssh服务
或者使用使用带有路径的脚本:
/etc/init.d/sshd start
/etc/init.d/sshd stop
/etc/init.d/restart

4.service network restart 重启ip
重启网络服务; 重启网络命令;

5.Linux下iptables 禁止端口和开放端口
linux下开启和关闭端口

十一.初识shell脚本

1.

示例:
在tmp文件夹下新建ip.sh脚本文件

vi ip.sh

#!/bin/bash
grep report test/ss.txt |awk '{print $5}'>ip.txt   检索ss.txt中ip地址并保存在ip.txt中

echo "exec over!" 

执行ip.sh
./ip.sh
无权限:chomd +x ip.sh
然后执行
./ip.sh

出现exec over!,说明成功

ss.txt:

image.png

查看ip.txt : cat ip.txt

image.png

2.

image.png
#!/bin/bash
num=`sed -n $= ip.txt`       //ip.txt是上面内容,num是ip.txt最后一行行数
for((i=1;i<=$num;i++));do
ip=`sed -n "$i"p ip.txt`     //$ip代表第$i行的ip
nmap -sn $ip>>re.txt       //然后扫描此ip下的子网,如10.22.1.0,就是扫描此下子网,以此类推10.22.2.0
done

3.

#!/bin/bash

for((i=1;i<=10;i++));do
echo "scanning 192.168.$i.0"
nmap -sn "192.168.$i.0/24">>Ip.txt
done
echo "now nmap is scanning live host ip..."
grep "report" Ip.txt |awk '{print $5}'>>ip.txt
echo "exec over"

4.

安装expect: yum install expect
测试有没有安装成功
1.shell下面输入expect

  1. rpm -qa |grep expect

未知变量传参
./t.sh root 192.168.1.1

#! /bin/bash
ip=$1
echo $ip

#!/usr/bin/expect -f
set timeout 10
set host [lindex $argv 0]
set username  [lindex $argv 1]
set password  [lindex $argv 2]
set src_file  [lindex $argv 3]
set dest_file  [lindex $argv 4]

spawn scp -r $src_file $username@$host:/tmp/$dest_file
expect {
              "(yes/no)?" {
                              send "yes\n"
                              expect "*assword:" { send "$password\n }
            }
            " *assword:" {
                                send "$password\n"
            }
}

1.准备一个ip.txt文件,给对方复制ip地址
2.scp.exp
paswwd = $1
name = $2
num=sed -n
for((i=1;i<=$sum;i++));do
./scp.exp ip passwd name
done

scp t.sh root@10.22.8.79:/tmp 拷贝文件

多文件远程传输脚本

scp.sh

#!/bin/bash
num=`sed -n $= re.txt`
user=$1
passwd=$2
srcfile=$3
dstfile=$4
for((i=1;i<=$num;i++));do
ip=`sed -n "$i"p re.txt`
./scp.exp $ip $user $passwd $srcfile $dstfile

done
       

scp.exp

#!/usr/bin/expect -f
set timeout 10
set host [lindex $argv 0]
set username  [lindex $argv 1]
set password  [lindex $argv 2]
set src_file  [lindex $argv 3]
set dest_file  [lindex $argv 4]

spawn scp -r $src_file $username@$host:/tmp/$dest_file
expect {
              "(yes/no)?" {
                              send "yes\n"
                              expect "*assword:" { send "$password\n }
            }
            " *assword:" {
                                send "$password\n"
            }
}


expect "100%"
expect eof:
          

调用scp.sh
./scp.sh user passwd scrfile dstfile

scp传输文件

5.nmap

nmap使用方法
nmap
web黑客工具nmap
渗透测试之信息搜集
nmap多种扫描姿势

6.Linux CentOS查看硬件信息大全

在企业安全运维的过程,系统资产是非常重要的环节,下面的Linux命令是针对硬件信息的收集,如果这个写成自动化脚本,可以极大提高工作效率。

1、CentOS常用命令查看 CPU
[root@bogon ~]# more /proc/cpuinfo | grep "model name"
model name  : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
[root@bogon ~]# 
2、CentOS常用命令查看内存
[root@bogon ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        765        215          0         42        411
-/+ buffers/cache:        311        668
Swap:         1983          0       1983
[root@bogon ~]# 
3、CentOS常用命令查看cpu是32位还是64位​
[root@bogon ~]# getconf LONG_BIT
64
[root@bogon ~]# 
4、使用CentOS常用命令查看当前linux的版本​
[root@bogon ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@bogon ~]# 
5、使用CentOS常用命令查看内核版本​
[root@bogon ~]# uname -a
Linux bogon 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@bogon ~]# uname -r
2.6.32-431.el6.x86_64
[root@bogon ~]# 
 
6、使用CentOS常用命令查看硬盘和分区​
[root@bogon ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.7G   14G  17% /
tmpfs           491M   80K  491M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot
/dev/sr0        4.2G  4.2G     0 100% /media/CentOS_6.5_Final
[root@bogon ~]# 
7、使用CentOS常用命令查看键盘布局
[root@bogon ~]# cat /etc/sysconfig/keyboard
KEYTABLE="us"
MODEL="pc105+inet"
LAYOUT="us"
KEYBOARDTYPE="pc"
[root@bogon ~]# 
8、使用CentOS常用命令查看selinux情况​
[root@bogon ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
[root@bogon ~]# 
9、查看IP地址
[root@bogon ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:AD:6F:DC  
          inet addr:192.168.0.103  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fead:6fdc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:391924 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10831 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:71665413 (68.3 MiB)  TX bytes:816104 (796.9 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:164 errors:0 dropped:0 overruns:0 frame:0
          TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:14626 (14.2 KiB)  TX bytes:14626 (14.2 KiB)

[root@bogon ~]# 
10、使用CentOS常用命令查看所属时区和是否使用UTC时间
[root@bogon ~]# cat /etc/sysconfig/clock
ZONE="America/Los_Angeles"
[root@bogon ~]# 
11、使用CentOS常用命令查看主机名​
[root@bogon ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
[root@bogon ~]# 
12、使用CentOS常用命令查看开机运行时间
[root@bogon ~]# uptime
 20:18:41 up  5:16,  3 users,  load average: 0.00, 0.00, 0.04
[root@bogon ~]# 
13、查看主板信息
[root@bogon ~]# dmidecode |more
# dmidecode 2.11
SMBIOS 2.7 present.
620 structures occupying 29188 bytes.
Table at 0x000E0010.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: Phoenix Technologies LTD
    Version: 6.00
    Release Date: 07/02/2015
    Address: 0xEA5E0
    Runtime Size: 88608 bytes
    ROM Size: 64 kB
    Characteristics:
        ISA is supported
        PCI is supported
        PC Card (PCMCIA) is supported
        PNP is supported
        APM is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        ESCD support is available
        Boot from CD is supported
        Selectable boot is supported
        EDD is supported
        Print screen service is supported (int 5h)
        8042 keyboard services are supported (int 9h)
        Serial services are supported (int 14h)
        Printer services are supported (int 17h)
        CGA/mono video services are supported (int 10h)
        ACPI is supported
        Smart battery 
14、查看磁盘使用情况
[root@bogon ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ce1a7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2358    18631680   83  Linux
/dev/sda3            2358        2611     2031616   82  Linux swap / Solaris

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x084395f5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux
[root@bogon ~]# 

十二.修改用户密码

一、用户切换


   "$":普通用户提示符

         "#":root用户提示符

      1.普通用户到root:

    方式一:命令:su然后输入root密码

        此种方式只是切换了root身份,但Shell环境仍是普通用户的Shell,pwd命令一下,目录仍然是普通用户的工作目录。

    方式二:命令:su -然后输入root密码

        此种方式,是连用户和Shell环境一起切换成root身份。 工作目录变成root的工作目录,pwd命令一下,即可看到。

        只有切换用户,才不会出现PATH环境变量错误。

        可以用命令 echo $PATH  看一下su、su - 后的环境变量有何不同。

        由此类推,从当前用户切换到其它用户也一样,应使用su -命令。

 

       两种方式切换后的pwd和PATH对比:

                                     su  切换后的pwd:[wyc@localhost ~]$su

                                                                      Password:

                                                                      [root@localhost wyc]# pwd

                                                                      /home/wyc

                                    su - 切换后的pwd: [wyc@localhost ~]$ su -

                                                                      Password:

                                                                      [root@localhost ~]#pwd

                                                                      /root

                                    su  切换后的root:  /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wyc/bin

                                    su - 切换后的root: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

 

              2.root到普通用户

        命令:su 普通用户名

       或 exit

 

二、修改普通用户用户名

 su - 或 su - root(到root用户下。 注意要使用su -,原因见下文)

 usermod  -l  新用户名  -d  /home/新用户名  -m  老用户名   (英文L)



 注意:网上有些人方法是usermod -l 新用户名 老用户名,

    这种方法只改了表面,你用pwd命令看一下,路径还是之前的用户名。

三、修改密码

    1 修改普通用户密码

  命令: su - root                 获取root权限

  命令:passwd 用户名   如passwd wyc

  输入两遍新密码



   2 修改 root密码

  命令:passwd  超级用户名         修改超级用户的密码,如root的密码

  输入两遍新密码

十三. Linux netstat命令详解

https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

十四.文件和文件夹压缩

tar -cz -f test.tar.gz *.txt 压缩

tar -jvxf httpd-2.4.34.tar.bz2 解压

一、压缩与解压缩

1、compress [-rcv] 文件或目录 <==压缩

uncompress 文件.Z <==解压缩

-r:可以连同目录下的文件也同时进行压缩

-c:将压缩数据输出成standard output(输出到屏幕)

-v:可以显示出压缩后的文件信息以及压缩过程中的一些文件名变化

(这个命令是非常老旧的一款)

2、gzip [-cdtv#] 文件名

-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

-d:解压缩的参数

-t:可以用来检验一个压缩文件的一致性,看看文件有错误

-v:可以显示压缩比等信息

-#:压缩等级,-1最快,但压缩比最差,-9最慢,但压缩比最好,最好是默认的-6

注:默认的情况下,原文件会被覆盖,要想保留源文件可以使用-c与>的组合(例如gzip -c man.config > man.config.gz 此时源文件会被保留)

zcat 文件名.gz 读取.gz压缩包(前提示原本的文件为文本文件)

3、bzip2 [-cdkzv#] 文件名

-c:将压缩过程中产生的数据输出到屏幕上

-d:解压缩的参数

-k:保留源文件

-z:压缩的参数

-v:显示压缩比等信息

-#:同gzip

bzcat 文件名.bz2 读取.bz2压缩包

解压缩可以使用bunzip2来代替bzip2 -d

4、打包命令tar (可以将多个目录或者文件打包成一个大文件,同时还可以通过gzip/bzip2的支持,将该文件进行压缩)

tar [-j|-z] [cv] [-f 新建的文件名] filename... <==打包与压缩

tar [-j|-z] [tv] [-f 新建的文件名] <==查看文件名

tar [-j|-z] [xv] [-f 新建的文件名] [-C 目录] <==解压缩

-c:新建打包文件,可搭配-v来查看过程中被打包的文件名

-t:查看打包文件的内容有哪些文件名,重点在查看文件名

-x:解压缩或解打包的功能,可以搭配-C在特定的目录解开(-c,-t,-x不能同时出现在同一命令行)

-j:通过bzip2的支持进行压缩/解压缩,此时文件名最好为*.tar.bz2

-z:通过gzip的支持进行压缩/解压缩,此时的文件名最好为*.tar.gz

-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f filename:-f后面接被处理的文件名

-C目录:这个参数用在解压缩的时候,若要在特定目录进行解压缩

-p:保留备份数据的原本属性与权限

-P:保留绝对路径,即允许备份数据中含有根目录

--exclude=file:在压缩的过程中不要将file打包

--newer-mtime='date':仅更新比date这个时刻还要新的文件

二、备份命令

1、dump备份整个文件系统和单一目录(限制在于对单一目录的备份支持比较不足)

dump [-Suvj] [-level] [-f备份文件] 待备份的数据

-S:仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕

-u:将这次dump的时间记录到/etc/dumpdates文件中

-v:将dump的文件过程显示出来

-j:加入bzip2的支持,将数据进行压缩,默认的压缩等级是2

-level:压缩等级,同前

-f:后面接产生的文件

-W:l列出在/etc/fstab里面的具有dump设置的分区是否有备过

如果待备份的数据只是,目录,并非单一文件系统则有限制:

(1)所有的备份数据都必须要在该目录下面

(2)且仅能使用leve 0,即支持完整备份而已

(3)不支持-u参数,即无法创建/etc/dumpdates这个level备份的时间记录文件

2、dump的恢复使用restore命令

restore -t [-f dumpfile] [-h] <==用来查看dump文件

restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际文件

restore -i [-f dumpfile] <==进入互动模式

restore -r [-f dumpfile] <==还原整个文件系统

-t:此模式用在查看dump起来的备份文件中含有什么重要的数据

-C:此模式可以将dump内的数据拿出来跟实际的文件系统做比较

-i:进入互动模式,可以仅还原部分文件,用在dump目录时的还原

-r:将整个文件系统还原的一种模式,用在还原对文件系统的备份

-h:查看完整备份数据中的inode与文件系统label等信息

-f:后面就接你要处理的那个dump文件

-D:与-C进行搭配,可以查出后面接的挂载点与dump内有不同的文件

十四. yum使用本地光盘做为安装源

1.挂载本地光盘 见第八

2.配置yum源文件

cd /etc/yum.repos.d/
vi Centos-Media.repo 修改内容如下

baseurl = file:///media.cdrom   自己的磁盘挂载路径
pgpcheck=1
enable=1

3. 测试
如何查看是否使用本地源下载

image.png

mv CentOS-Base.repo CentOS-Base.repo.bak
将CentOS-Base.repo网络源文件名更改之后就不再用网络源了
这时
yum install ftp
看下载结果


image.png

可以看到已经使用本地源下载了

查看 /etc/yum.conf 配置

十五.yum网络源配置

十六.防火墙

linux配置防火墙详细步骤(iptables命令使用方法)

https://blog.csdn.net/marcellen/article/details/78794248

通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能够指定并记住为发送或接收信息包所建立的连接的状态,是一套用来设置、维护和检查Linux内核的IP包过滤规则的命令包。iptables定义规则的方式比较复杂,本文对Linux防火墙Iptables规则写法进行详细介绍:

image.png

1.

⑴、Iptables规则写法的基本格式是:
  
  Iptables [-t table] COMMAND chain CRETIRIA -j ACTION
   命令 表 参数命令 链
⑵、Iptables规则相关参数说明:
  
  -t table:3个filter nat mangle :定义如何对规则进行管理
  
  chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的;
  
  CRETIRIA:指定匹配标准;
  
  -j ACTION:指定如何进行处理;
  
⑶、Iptables规则其他写法及说明:
  
  Iptables -L -n -v #查看定义规则的详细信息

image.png

Iptables是Linux服务器上防火墙配置必备的设置工具,是我们在做好服务器安全及部署大型网络时,常会用到的重要工具,很好的掌握iptables,可以让我们对Linux服务器整个网络的结构有一个比较透彻的了解,更能够很好的掌握Linux服务器的安全配置技巧。

2. iptables命令及参数介绍

iptables常用命令:

iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I 将在指定链的指定编号位置插入一个规则
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链

iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)

常见设置参数介绍:

--dport 指定目标TCP/IP端口 如 –dport 80
--sport 指定源TCP/IP端口 如 –sport 80
-p tcp 指定协议为tcp
-p icmp 指定协议为ICMP
-p udp 指定协议为UDP
-j DROP 拒绝
-j ACCEPT 允许
-j REJECT 拒绝并向发出消息的计算机发一个消息
-j LOG 在/var/log/messages中登记分组匹配的记录
-m mac –mac 绑定MAC地址
-m limit –limit 1/s 1/m 设置时间策列
-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
-s ! 10.10.0.0 指定源地址以外的

3.iptables配置文件

配置文件位置: /etc/sysconfig/iptables

4.iptables服务命令

-- 启动服务
/etc/init.d/iptables start
service iptables start

-- 停止服务
/etc/init.d/iptables stop
service iptables stop

-- 重启服务
/etc/init.d/iptables restart
service iptables restart

-- 保存设置
/etc/init.d/iptables save
service iptables save

5. 配置Filter表防火墙

1.查看iptables的配置信息

iptables -L -n
2.清除原有防火墙规则

清除预设表filter中的所有规则链的规则
iptables -F
清除预设表filter中使用者自定链中的规则
iptables -X
3.保存防火墙设置
/etc/init.d/iptables save

service iptables save
4.设定预设规则

-- 请求接入包丢弃
[root@home ~]# iptables -p INPUT DROP
-- 接受响应数据包
[root@home ~]# iptables -p OUTPUT ACCEPT
-- 转发数据包丢弃
[root@home ~]# iptables -p FORWARD DROP
5.添加防火墙规则

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。

开启SSH服务端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
注:如果在预设设置把OUTPUT设置成DROP策略的话,就需要设置OUTPUT规则,否则无法进行SSH连接。

开启Web服务端口
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
开启邮件服务的25、110端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
开启FTP服务的21端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
开启DNS服务的53端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
设置icmp服务
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
允许loopback
不然会导致DNS无法正常关闭等问题

[root@tp ~]# IPTABLES -A INPUT -i lo -p all -j ACCEPT
(如果是INPUT DROP)
[root@tp ~]# IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
(如果是OUTPUT DROP)
减少不安全的端口连接
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
说明:有些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会。此外,其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止。

只允许某台主机或某个网段进行SSH连接
只允许192.168.0.3的机器进行SSH连接

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果允许或限制一段IP地址可用192.168.0.0/24表示192.168.0.1-255端的所有IP, 24表示子网掩码数。

[root@tp ~]# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
注意:指定某个主机或者某个网段进行SSH连接,需要在iptables配置文件中的-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
删除,因为它表示所有地址都可以登陆.

如果只允许除了192.168.0.3的主机外都能进行SSH连接

[root@tp ~]# iptables -A INPUT -s ! 192.168.0.3 -p tcp --dport 22 -j ACCEPT
开启转发功能
在做NAT网络配置时,FORWARD默认规则是DROP时,必须开启数据包转发功能

[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止DDOS攻击,允许每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
设置ICMP包过滤, 允许每秒1个包, 限制触发条件是10个包
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
DROP非法连接
[root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A FORWARD -m state --state INVALID -j DROP
允许所有已经建立的和相关的连接
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
7. 配置NAT表防火墙
查看本机关于NAT的设置情况

[root@tp rc.d]# iptables -t nat -L
清除NAT规则

[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
添加规则

添加基本的NAT地址转换,添加规则时,我们只添加DROP链,因为默认链全是ACCEPT。

防止外网用内网IP欺骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
禁止与211.101.46.253的所有连接
[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
只禁用211.101.46.253地址的FTP连接,其他连接可以进行。

[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容