场景应用

分析日志文件,将各个 IP 地址截取,并统计出现次数,按从大到小排序

1、日志信息结构(例):http://192.168.200.10/index.html 

2、cat log.txt | cut -d "/" -f 3 | sort | uniq -c | sort -nr

(1)cat log.txt:输出结果

(2)cut -d "/" -f 3:以 / 分隔,查看第三区域

(3)sort:从小到大排序

(4)uniq -c:去重,在每列旁边显示该行重复出现的次数

(5)sort -nr:依照数值的大小排序,以相反的顺序(从大到小)来排序

 

统计连接到服务器的各 IP 情况,按照连接数从大到小排序

1、网络连接信息(例)

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN     
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:22            127.0.0.1:53318         ESTABLISHED
tcp        0      0 127.0.0.1:22            127.0.0.1:53320         ESTABLISHED
tcp        0     52 192.168.121.39:22       192.168.121.1:52866     ESTABLISHED
tcp        0      0 127.0.0.1:53320         127.0.0.1:22            ESTABLISHED
tcp        0      0 127.0.0.1:53318         127.0.0.1:22            ESTABLISHED

2、netstat -an | grep "ESTABLISHED" | awk -F " " '{print $5}' | cut -d ":" -f 1 | sort | uniq -c | sort -nr

(1)netstat -an | more:查询所有网络链接

(2)grep "ESTABLISHED":过滤只显示 ESTABLISHED 状态的网址

(3)awk -F " " '{print $5}':以空白键分割,只显示 Foreign Address 第五列

(4)cut -d ":" -f 1:以 : 分割,过滤 Foreign Address 端口号 ,只保留 IP 地址

(5)sort:从小到大排序

(6)uniq -c:去重,在每列旁边显示该行重复出现的次数

(7)sort -nr:依照数值的大小排序,以相反的顺序(从大到小)来排序

 

MySQL 忘记 root 密码

1、进入 /etc/my.cnf 文件 加入一条指令 skip-grant-tables

(1)vim /etc/my.cnf

(2)skip-grant-tables

2、重启 MySQL 服务 ,验证可以用空密码登录

(1)systemctl restart mysqld

(2)mysql -u root -p

3、用空密码登录后,进入 mysql 库 user 表,更改 root 用户的 authentication_string 密码值

(1)显示库列表:show databases;

(2)进入 mysql 库:use mysql;

(3)显示 mysql 库下面的表的个数:show tables;

(4)显示 user 字段:desc user;

(5)更改 root 用户的 authentication_string 密码值:update user set authentication_string=password("新密码") where user='root'

(6)刷新权限:flush privileges;

(7)退出:exit

4、重新进入 /etc/my.cnf 文件,删除 skip-grant-tables

 

统计 IP 访问情况,找出访问页面数前两位 IP 

1、日志信息结构(例):192.168.200.50 index.html

2、cat log.txt | awk -F " " '{print $1}'| sort|uniq -c|sort -nr | head -n 2

(1)cat log.txt 输出结果

(2)awk -F " " '{print $1}':按空白键分隔数据,显示 IP 地址

(3)sort:从小到大排序

(4)uniq -c:去重,在每列旁边显示该行重复出现的次数

(5)sort -nr:依照数值的大小排序,以相反的顺序(从大到小)来排序

(6)head -n 2:取前两位数据

 

用 tcpdump 监听某个 IP 连接,将结果输出到 tcpdump.log

1、指定 IP:192.168.121.1,监听端口:22

2、tcpdump -i ens33 host 192.168.121.1 and port 22 >> /opt/interview/tcpdump.log

 

 

Nginx 模块

1、rewrite 模块:实现重写功能

2、access 模块:来源控制

3、ssl 模块:安全加密

4、ngx_http_gzip_module:网络传输压缩模块

5、ngx_http_proxy_module:实现代理

6、ngx_http_upstream_module:实现定义后端服务器列表

7、ngx_cache_purge:实现缓存清除功能

 

权限划分

1、权限分离,如:Linux 系统权限和数据库权限不要在同一个部门

2、权限最小原则:在满足使用的情况下最少优先

3、减少使用 root 用户,使用普通用户 + sudo 提权进行操作

4、重要的系统文件,如:/etc/passwd,/etc/shadow,/etc/fstab,/etc/sudoers 等,建议使用 chattr 锁定,需要操作时再打开

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

(1)chattr 改变存放在 ext2 文件系统上的文件或目录属性

(2)a:让文件或目录仅供附加用途

(3)b:不更新文件或目录的最后存取时间

(4)c:将文件或目录压缩后存放

(5)d:将文件或目录排除在倾倒操作之外

(6)i:不得任意更动文件或目录

(7)s:保密性删除文件或目录

(8)S:即时更新文件或目录

(9)u:预防意外删除

(10)-R 递归处理,将指定目录下的所有文件及子目录一并处理

(11)-v<版本编号> 设置文件或目录版本

(12)-V 显示指令执行过程

(13)+<属性> 开启文件或目录的该项属性

(14)-<属性> 关闭文件或目录的该项属性

(15)=<属性> 指定文件或目录的该项属性

5、使用 SUID,SGID,Sticky 设置特殊权限

6、chkrootkit/rootkit hunter,检测 rootkit 脚本

7、Tripwire 检测文件系统完整性

 

CentOS 7 启动流程

1、第一阶段:硬件启动阶段

2、第二阶段:GRUB2 引导阶段

(1)CentOS 7 主引导程序使用的是 grub2

(2)流程:显示加载两个镜像,再加载 MOD 模块文件,把 grub2 程序加载执行,接着解析配置文件 /boot/grub/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核

(3)grub.cfg 配置文件比较复杂,CentOS 7 中一般是使用命令进行配置,而不直接去修改配置文件,grub.cfg 配置文件开头注释部分,说明由 /etc/grub.d/ 目录下文件和 /etc/default/grub 文件组成

一般修改好配置后都需要使用命令 grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成

3、第三阶段:内核引导阶段

(1)加载驱动,切换到真正的根文件系统

(2)与 CentOS 6 不同的是,执行的初始化程序变成 /usr/lib/systemd/systemd

4、第四阶段:systemed 初始化阶段(系统初始化阶段)

(1)CentOS 7 中初始化进程变为 systemd,执行默认 target 配置文件 /etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)

(2)然后执行 sysinit.target 来初始化系统和 basic.target 来准备操作系统,接着启动 multi-user.target 下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动

(3)最后执行 multi-user 下的 getty.target 及登录服务,检查 default.target 是否有其他的服务需要启动

(4)注意:/etc/systemd/system/default.target 指向 /lib/systemd/system/ 目录下的 graphical.target或multiuser.target,而 graphical.target 依赖 multiuser.target,multiuser.target 依赖 basic.target,basic.target 依赖 sysinit.target,所以倒过来执

(5)System 概述(了解):systemd 即为 system daemon,是 Linux 下的一种 init 软件,开发目标是提供更优秀的框架以表示系统服务间的以来关系,并依此实现系统初始化时服务的并行启动,同时达到降低 Shell 系统开销的效果,最终代替现在常用的

System V与 BSD 风格的 init 程序,与多数发行版使用的 System V 风格的 init 相比,systemd 采用了以下的新技术:采用 Socket 激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;用 Cgroup 代替 PID 来追踪进程,即使是两次 fork 之后生

成的守护进程也不会脱离 systemd 的控制

(6)unit 对象:unit 表示不同类型的 systemd 对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听 socket、保存的系统快照以及其他与init相关的信息(即 CentOS 6 中的服务器启动脚本)

 

Linux 高级命令

1、netstat:网络状态监控

2、top:系统运行状态

3、lsblk:查看硬盘分区

4、ps-aux:查看运行进程

5、chkconfig:查看服务启动状态

6、systemctl:管理系统服务器

7、iotop:IO 读写

8、df -lh:磁盘存储

9、netstat -tunlp:端口占用

10、ps -aux | grep 进程名:查看指定进程

 

Web 服务器负载架构

1、Nginx

2、Haproxy

3、Keepalived

4、LVS

 

优化 Linux 系统

1、不使用 root,使用 sudo 提示权限

2、定时自动更新服务时间,使用 nptdate npt1.aliyun.com,让 croud 定时更新

3、配置 yum 源,指向国内镜像

4、配置合理的防火墙策略,打开必要的端口,关闭不必要的端口

5、打开最大文件数(调整文件的描述数量):vim/etc/profile ulimit -SHn 65535

6、配置合理的监控策略

7、配置合理的系统重要文件的备份策略

8、对安装的软件进行优化,如:nginx,apache

9、内核参数进行优化:/etc/sysctl.conf

10、锁定一些重要的系统文件,如:chattr,/etc/passwd,/ect/shadow,/etc/inittab

11、禁用不必要的服务,如:setup,ntsysv

posted @   半条咸鱼  阅读(186)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示