Linux第二次总结

Linux阶段总结

OSI模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

路由器的工作原理:最佳路径选择

三次握手四次挥手:...

shell是翻译官把人类语言翻译成二进制语言

Tab作用:自动补齐、确认输入是否有误

Ctrl+C 终止 取消命令

Ctrl+L 清屏 clear

man详细手册

help命令搭配哪些选项

-文件 d目录

硬链接:复制了自身,inode号相同

软连接:快捷方式

xfs inode号怎么办?

还能写100-300个,有宽容机制

磁盘空间越大,inode号越多

du -sh *最人性化展示当前目录下所有文件大小

cp -f 和 cp -i 没有区别,系统默认cp -i会询问

cp -a可以不用-r

查找opt目录下,所有大于1G的文件,然后把他们移动到etc目录下

find /opt -size +1G -exec mv {} /etc \;

o or 或者 满足一个条件即可

a and 并且 同时满足两个条件

-ok COMMAND {} \; 会询问,需要回复yes执行(一个文件问一次)

-exec COMAAND {} \; 直接执行command

find -mtime 10 十天到十一天

find -mtime +10 十一天以上

find -mtime -10 十天以内

查看硬盘分区情况 lsblk

查看机器架构:arch

查看内核版本:uname -a 、uname-r

查看当前系统时间:date

 

-d描述的日期

+%F:完整日记格式

+%T:时间(24小时制)

编译安装 /usr

yum安装配置 /etc

tail -f动态查看后十行

tar -zcvf xxxx.tar.gz yyyy

tar -zxvf xxxx.tar.gz yyyy

tar -jcvf xxxx.tar.bz2 yyyy

tar -jxvf xxxx.tar.bz2 yyyy -C 目录

mount /dev/cdrom /mnt

cd /etc/yum.repo.d

mkdir backup.bak

mv C* backup.bak

vim local.repo

[local]

name=local

baseurl=file:///mnt

gpgcheck=0

yum clean all && yum makecache

gpgcheck=0 表示yum将不验证软件包的签名。这可以加快软件包的安装速度,但也会降低安全性

编译安装:

./configure --prefix=/usr/local/apache

yum -y install ...

make && make install

userdel -r连宿主目录一起删掉,腾出空间

777 : 所有者 所属组 其他用户

chmod -R:递归修改所有子目录文件权限

chown 属主:属组 名字

设置目录和文件的默认权限:umask

root umask 022 普通用户 002

文件默认权限:666 文件夹默认权限:777

文件逢奇数进一,没有执行权限

su 在root模式下 刷新作用

su 直接切换,不完全切换,还是之前的bash环境

su - 完全切换

/boot引导分区

swap 交换分区:当系统空间不够就从交换分区分配空间使用

磁盘分区优点:便于管理、优化读写性能

fdisk 小于2TB 2.2实际

gdisk 大于2TB

mkfs -t 文件系统类型 分区设备

mkfs -t 文件系统类型 分区设备

blkid查询设备uuid号

vim /etc/fstab永久挂载

/dev/sdb1 /opt xfs defaults 0 0

文件类型 定义默认值 备份开启

/dev/sr0 iso9660 defaults 0 0

镜像挂载 iso9660

iostat 查看磁盘读写性能

umount -lf 强制解除正在繁忙的文件

创建物理卷 创建卷组 创建逻辑卷 平滑扩容

格式化 挂载

pvcreate vgcreate lvcreate lvextend -L

扩容加-r,否则刷新xfs_growfs

LVM管理:scan、create、display、remove、extend、reduce

xfs只能扩容 ext4可以扩容可以缩容,但不考虑

磁盘配额:dd if=/dev/zero of=opt/123.txt bs=10M count=12

top查看进程动态信息

crontab -e 分时日月周

运行起来的代码就是进程

pstree -p 查看单进程多进程

日志文件:

公共消息日志:/var/log/messages

计划任务日志:/var/log/cron

系统引导日志:/var/log/dmesg

邮件系统日志: /var/log/maillog

用户登录日志: /var/log/secure 用户认证安全事件

/var/log/lastlog 最近登录

/var/log/wtmp 具体登录注销启停

/var/run/btmp 记录失败

route -n查看当前路由信息

网卡地址:/etc/sysconfig/network-script

修改DNS硬解析配置文件:vim /etc/resolv.conf

/etc/hosts/ 保存IP映射

ifconfig ens33 192.168.179.20:0 192.168.179.100 255.255.255.0 虚拟网卡

ftp:文传协议 20 21端口

作用:linux和windows互传

dhcp 分配地址池

rz 文件名 #下载指定文件到服务器

sz 文件名 #把服务器的文件下载到客户端

DNS迭代和递归:DNS(域名系统)的迭代和递归是两种不同的查询方式。

递归查询是客户端向DNS服务器发出请求,请求该服务器返回解析结果。如果该服务器不知道答案,它将会向其他服务器发送请求,直到找到答案并返回给客户端。这种查询方式要求DNS服务器尽可能提供完整的解析过程,而且可能涉及多个服务器之间的通信。递归查询通常由本地DNS服务器执行,而不是由最终用户的计算机执行。

相反,迭代查询是DNS服务器接收到查询请求后,它只返回一个指向下一个可能有答案的DNS服务器的“指针”,而不是直接提供解析结果。这个过程一直持续到DNS服务器找到答案,或者确认没有答案为止。如果没有找到答案,DNS服务器将返回“未找到”错误消息。这种查询方式要求客户端自己负责迭代查询过程。

总的来说,递归查询和迭代查询都是为了获取DNS解析结果。但它们的执行方式和角色是不同的。递归查询是在DNS服务器之间进行的,它要求服务器尽可能提供完整的解析过程,以便最终提供答案。而迭代查询则需要客户端参与到查询过程中,一步一步地找到答案。

ssh默认配置文件是:/etc/ssh/sshd_config(改端口号)

默认端口号:22

ssh -keygen -t

白名单比黑名单安全性高

允许所有,拒绝个别 /etc/hosts_deny

允许个别,拒绝所有/etc/hosts_allow

yum仓库 混搭:priority 优先级区分

NFS备份共享目录主要用来备份

showmount -e 查看共享目录

自动挂载:

192.168.179.20:/opt/wwwroot /myshare nfs defaults,_netdev 0 0

三剑客:grep sed awk

针对文件的内容的行操作

grep -w 匹配整个单词

grep -e -e 或者 或者

grep -o仅显示匹配到的字符串

grep -r 递归过滤目录中的文件的内容

sort排序

uniq连续去重

tr 字符串替换、压缩和删除

split -l 指定行分

split -b 指定大小分

通配符匹配文件和文件名

正则匹配文件内容

*一个或多个

?一个任意字符

[]任意单个字符

元字符:

. 匹配任意单个字符,可以是一个汉字 \.表示.

() 使用转义字符,不用转义符表示分组

[^] 表示范围外的任意单个字符

[ ]匹配范围内的任意单个字符

[:alnum:]字母和数字

[:alpha:]任何英文大小写字符

[:lower:]小写字母

[:upper:]大写字母

[:space:] 空格

^root$ 单独一行,只有root(用于匹配整行模式)

^行首锚定,用于模式最左侧

$行尾锚定,用于模式的最右侧

^$空行

扩展正则:

grep -E sed -r

| 或者 :C|cat C或cat (C|c)at Cat或者cat

sed 命令:

s:替换字符串

c:整行替换

y:字符替换,长度要一致

sed -f:前一个文件作为后面的文件的命令

awk默认分隔符:空格或tab

BEGIN打印模式:

awk 'BEGIN{...};{...};END{...}'文件

awk -v 变量赋值

RS默认分隔符 \n 换行

通信五元素:源/目的 端口 源/目的 IP 协议(tcp/udp)

四表五链:

优先级 :raw >mangle> nat> filter(默认)

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

iptables -t 表名 管理选项 [链名] [匹配条件] [-j 控制类型]

规则表的作用:容纳各种规则链

规则链的作用:容纳各种防火墙规则

表里有链,链里有规则

DROP与REJECT 都是拒绝,REJECT会给回应

iptables -vnL --line-number

iptables-save备份

iptables-restore导入

SNAT主要是用来做默认网关的,而DNAT主要是用来做端口映射的。

firewalld防火墙9个区域,默认public

提取主机名放入host文件:

awk -F'[ .]+' '{print $2}' 111.txt >host

awk ‘{print $2}’ 111.txt | awk -F. ‘{print $1}’

★取小数点几位和取整数(printf:f调用%.f方法)

result=$(awk 'BEGIN{printf "%.2f",2.32332*2.3213}') 取小数点2位

result=$(awk 'BEGIN{printf "%.F",2.32332*2.3213}') 取整(四舍五入)

★简单日志分割

awk '{print $1, $7, $9}' /var/log/messages

磁盘可用容量(G)

df | grep -w centos-root | awk '{sum+=$4} END{print "磁盘可用容量:"sum/1024/1024}'

df -h | awk '$NF=="/"{print $4}'

etc下文件的大小和(M)

ls -l /etc/ | awk '/^-/ {sum+=$5} END{print "文件总大小:"sum/1024“M”}

读取message 17:30-17:50

sed -n '/Mar 24 17:30:01/,/Mar 24 17:50:02/p' /var/log/message

修改网卡IP

sed -i '/^IPADDR/c IPADDR=192.168.179.20' /etc/sysconfig/network-scripts/ifcfg-ens33

★统计当前主机的连接状态

ss -ant | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c

★统计当前连接主机数

ss -nt | tr -s "" | cut -d " " -f 5 | sort -n | uniq -c

先配置本地yum源

mount/dev/cdrom/mnt/ 把光盘临时挂载到/mnt目录下

cd/etc/yum.repos.d

mkdir repos.bak

mv * repos.bak

vim local.repo

[local] #文件名

name=local #描述

baseurl=file:///mnt #将制定光盘挂载目录座位软件仓库源

enabled=1 #开启此yum源,此为默认项,可省略

gpgcheck=0 #不去检查软件序列号

yum clean all && yum makecache #删除yum缓存并更新

查看系统启动耗时

systemd-analyze

硬盘满了,该如何解决?

答案:①删除没有用的文件,删除了一个大文件但是磁盘没有释放空间,原因是文件还在被使用。解决方法删除之前:echo “ ”>/大文件。将文件重定向为空。删除之后:lsof | grep delete显示打开的文件并过滤删除的文件,然后kill 杀死这个寻找到的进程。

②申请加硬盘

找到大于7天大于1g的普通文件并删除,一条命令解决。

答案:find -mtime +7 -type f -size +1G -delete

如何将俩个文件合并成一个文件?

答案:上下合成 cat 1.txt 2.txt >3.txt

答案:左右合成 paste 1.txt 2.txt >3.txt

我现在有一个文件夹,有很多文件,请快速过滤出这个文件夹下所有含有root字符串的文件。

答案:grep -rw root 文件夹

实时查看某软件运行的报错日志最后20行,目录/var/log/soft.log

答案: tail -f -n 20 /var/log/soft.log

cp /etc/passwd /opt/xxx :

cp的命令需要的最低权限 : 执行

passwd这个文件的最低权限: 读 写 执行

xxx目录的最低权限: 写 执行

总结安全加固的措施

1.将非登录用户shell设置为nologin

2.锁定长期不使用的账号(锁定用户)

3.删除无用账号

4.chattr锁定配置文件(重要文件passwd、shadow、fstab等加 i 权限,不让删除)

5.设置密码复杂性规则(长度、特殊字符、失效时间等)密码策略

6.修改history,记录历史命令,尽量缩短记录历史命令的条数

7.禁止su root,切换超级管理员

8.设置sudo权限,禁用不安全命令

9.给GRUB设置密码

10.只允许BIOS从硬盘启动,关闭除了硬盘启动外的(光驱、udisk 、网络)

11.给BIOS设置密码

12.限制root只在安全终端登录

13.禁止普通用户登录

14.改掉大家都知道的服务端口

15.做好日志权限管理

16.内核参数调整

如何优化Linux系统?

不用root,添加普通用户,通过sudo授权管理

更改默认的远程连接SSH服务端口及禁止root用户远程连接

定时自动更新服务器时间

配置国内yum源

关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)

调整文件描述符的数量

精简开机启动服务(crond rsyslog network sshd)

内核参数优化(/etc/sysyctl.conf)

更改字符集,支持中文,但建议还是使用英文字符集,防止乱码

锁定关键系统文件

清空/etc/issue,去除系统及内核版本登陆前的屏幕显示

一台Linux系统初始化环境后需要做一些什么安全工作?

添加普通用户登录,禁止root用户登录,更改SSH端口号。修改SSH端口不一定绝对。如果暴露在外网,建议修改。

服务器使用密钥登录,禁止密码登录。

开启防火墙,关闭SElinux,根据业务需求设置相应的防火墙规则。

装fail2ban这种防止SSH暴力破击的软件。

设置只允许公司办公网出口IP能登陆服务器(看公司实际需求),也可以安装VPN等软件,只允许连接VPN到服务器上。

修改历史命令记录的条数为10条。

只允许有需要的服务器可以访问外网,其他全部禁止。

做好软件层面得防护:(1)设置nginx_waf模块防止SQL注入

(2)把Web服务器使用www用户启动,更该网站目录的所有者和所属组为www

面试题:提取版本号

[root@localhost opt]# grep -E "[0-9]+\." 1.txt

ant-1.9.7.jar

ant-launcher-1.9.7.jar

antlr-2.7.7.jar

antlr-runtime-3.4.jar

aopalliance-1.0.jar

archaius-core-0.7.6.jar

asm-5.0.4.jar

aspectjweaver-1.9.5.jar

bcpkix-jdk15on-1.64.jar

bcprov-jdk15-1.46.jar

bcprov-jdk15on-1.64.jar

checker-compat-qual-2.5.5.jar

[root@localhost opt]# cat 1.txt |sed -r 's/(.*)-(.*)(\.jar)/\1\2\3/' #完整版

[root@localhost opt]# cat 1.txt |sed -r 's/.*-(.*)(\.jar)/\1\2/' #把-前面的取消了

[root@localhost opt]# cat 1.txt |sed -r 's/.*-(.*)\.jar/\1/' #把.jar是不在引用,正确结果

#-r 表示引用扩展正则,(.*)表式"-"前面的所有,"-",就是"-",第二个(.*)表示"-"后面的内容到.jar,(\.jar)的第三个部分

1.9.7

1.9.7

2.7.7

3.4

1.0

0.7.6

5.0.4

1.9.5

1.64

1.46

1.64

2.5.5

inode号满了怎么办

删小文件 不用的文件

扩容+格式化 lvm -r df -i

io读写占满了

磁盘坏了

次数抓包处理

tcpdump tcp -i ens33 -t -s0 -c 100 and dst port 80 and src net 192.168.179.0/24 -w ./target.cap

动态抓包处理:

tcpdump -i ens33 -s0 -w ./ens33.cap

第一题:CPU使用率

第二题:内存占用率

第三题:磁盘占用率

第一题:top -b -n 1 | grep -w %Cpu | awk '/ /{sum=$2+$4}END{print "CPU使用了"sum"%"}'

CPU使用了50%

第二题:free -m | grep -w Mem: | awk 'BEGIN{FS=" "}{if($3/$2>=0.9){printf"%.2f""内存使用了:"$3/$2*100"% 内存使用超过90%请注意!"} else{print" 系统统使用了"$3/$2*100"% 系统很健康!"}}'

系统统使用了8.02862% 系统很健康!

第三题:df -h | grep /dev/sda | awk '/ /{print$1"占用率"$5}'

/dev/sda3占用率16%

/dev/sda1占用率53%

第一题:top -b -n 1 | grep -w %Cpu | awk '{print "CPU使用了"$2+$4"%"}'

CPU使用了53.2%

第二题:function jiankong {

free -m | grep -w Mem: | awk '{avg=$3/$2}END{printf"磁盘使用率:%.2f%%\n",avg*100}'

}

jiankong $avg

function bijiao {

local a=$(jiankong)

if [[ `expr $a \>= 0.9` -eq 0 ]];then

echo "磁盘使用率超过90%请注意!"

else

echo "系统很安全!放心使用!"

fi

}

bijiao $a

磁盘使用率:22.52%

系统很安全!放心使用!

第三题:df -h | grep /dev/sda | awk '{print$1"占用率"$5}'

你可能感兴趣的:(笔记,linux,运维,网络)