一、firewalld Firewalld 是一个Linux防火墙管理器,它用于管理iptables规则和网络连接。它可以动态地管理网络连接,可以在运行时添加和删除规则,支持IPv4和IPv6,可以使用Zones对不同的网络环境进行配置,使得防火墙规则更加灵活和易于管理。Firewalld还支持多种服务和端口,可以通过简单的命令行或图形界面进行配置。 firewalld 提供了一个 daemon 和 service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口,firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,只不过 firewalld 和 iptables 的结构以及使用方法不一样罢了 1.1 firewalld区域 Firewalld中的区域(Zone)是用于定义网络环境的概念,可以....
使用systemd运行docker容器
一、systemd文件介绍 系统启动和服务器守护进程管理器, 负责在系统启动或运行时,激活系统资源,服务器进程和其它进程 service文件通常由三部分组成 [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等 [Service]:与特定类型相关的专用选项;此处为Service类型 [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项 Unit介绍 Description:描述信息,可以自己定义 After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反 Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活 Service介绍 Type:服务的类型,常用的有 simple(默认类型) 和 forking。默认的 simple 类型可以适应于绝大多数的场景,因此一般可以忽略这个参数的配置。而如果服务程序启动后会通过 fork 系统调用创建子进程,然....
sshfs文件共享工具
在需要简单的文件共享的环境中,可以快速的实现文件共享,使用完成后直接卸载即可,基于ssh实现数据传输。性能比较低不建议长期使用,适合在数据备份时临时挂载使用。 sshfs安装 SSHFS是基于Linux的软件,需要安装在本地计算机上。在基于Ubuntu和Debian的系统上,它可以通过apt-get安装。centos可以通过yum安装 yum install sshfs sshfs命令介绍 [root@es-node3 sshfs]# sshfs -h usage: sshfs [user@]host:[dir] mountpoint [options] 主要的参数: -o uid=N 设置文件挂载的uid,也就是映射到本地的文件uid -o gid=N 设置文件挂载的gid -o allow_other 允许其他用户访问 -o port=PORT ssh访问端口 常见的使用方式 #临时挂载 sshfs -o allow_other,uid=997,gid=996 root@192.168.6.3:/root/test1 /root/1/ #卸载 umount /root/1
线上rpm包下载本地
通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。源码编译耗费时间长且缺乏编译环境,所以一般都选择使用离线 rpm 包安装。 一、工具准备 安装yum-utils 这个软件包中有许多关于rpm包的工具 repotrack(全量下载一个软件的依赖包) yumdownloader(下载软件的依赖包,如果本机已经安装不下载) reposync(下载一个yum仓库中所有包) yum -y install yum-utils 安装createrepo 这个软件可以利用目录中的rpm包生成一个repodata目录 二、实现步骤 [11:14:13 root@centos7 ~]#mkdir ansible [11:14:43 root@centos7 ~]#cd ansible #下载ansible所有依赖包 [11:14:25 root@centos7 ansible]#repotrack ansible #查看 [11:15:26 root@centos7 ansible]#ls | wc -l 88 #生成repodata元数据信....
linux系统防止某个进程被OOM
内存不足:OOM OOM 即 Out Of Memory,“内存用完了”,在情况在java程序中比较常见。系统会选一个进程将之杀死, 在日志messages中看到类似下面的提示 Jul 10 10:20:30 kernel: Out of memory: Kill process 9527 (java) score 88 or sacrifice child 当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error,因为这个问题已经严重到不足以被应用处理)。 原因: 给应用分配内存太少:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。 应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。 使用的解决办法: 1,限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用2,给系统增加swap空间 设置内核参数(不推荐),不允许内存申请过量: echo 2 > /proc/sys/vm/overcommit_memory echo 80 > /proc/s....
13-Linux防火墙
一、安全技术和防火墙 1.1 安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供有针对性的指导措施和安全决策依据。一般采用旁路部署方式 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ(demilitarized zone)网络中 防水墙 广泛意义上的防水墙:防水墙(Waterwall),与防火墙相对,是一种防止内部信息泄漏的安全产品。网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。....
12-加密与安全
一、安全机制 1.1 墨菲定律 墨菲定律:一种心理学效应,是由爱德华·墨菲提出的,原话:如果有俩种或俩种以上的方式去做某件事,而其中一种选择方式导致灾难,则必定有人会做出这种选择 主要内容: 任何事情都没有表面看起来那么简单 所有的事都会比你预计的时间长 会出错的事总会出错 如果你担心某种情况发送,那么它就更可能发生 1.2 信息安全防护的目标 保密性 Confidentiality 完整性 Integrity 可用性 Usability 可控制性 Controlability 不可否认性 Non-repudiation 1.3 安全防护环节 物理安全:各种设备/主机、机房环境 系统安全:主机或设备的操作系统 应用安全:各种网络服务、应用程序 网络安全:对网络访问的控制、防火墙规则 数据安全:信息的备份与恢复、加密解密 管理安全:各种保障性的规范、流程、方法 1.4 常见的安全攻击STRIDE Spoofing 假冒 Tampering 篡改 Repudiation 否认 Information Disclosure 信息泄漏 Denial of Service 拒绝服务....
11-Linux启动和内核管理
一、CentOS 6 的启动管理 1.1 Linux 组成 kernel 实现进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等功能 rootfs 包括程序和 glibc 库 程序:二进制执行文件 库:函数集合, function, 调用接口(头文件负责描述) 1.2 内核设计流派 宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux 把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点 微内核(micro kernel):Windows,Solaris,HarmonyOS 简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差 1.3 CentOS 6启动流程 1.3.1 CentOS6启动流程 加载BIOS的硬件信息,获取第一个启动设备 读取第一个启动设备MBR的引导加载程序(grub)的启动信息 加载核心操作系....
10-进程、系统性能和计划任务
一、进程和内存管理 内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 1.1 什么是进程 Process:运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID和SELinux语境决定对文件系统的存取和访问权限 通常从执行进程的用户来继承 存在生命周期 进程创建: init:第一个进程,从Centos7以后为systemd 进程:都由其父进程创建,fork(),父子关系,Cow:Copy On Write 进程,线程和协程 1.1.1 进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标志定义 进程的组成: 进程一般由程序、数据集合和进程控制块三部分组成。 程序用于描述进程要完成的功能,是控制进程执行的指令集: 数据集合是程序在执行时所需要的数据和工作区: 程序控制块(Program Control Block,简称PCB),包含进程....
8-磁盘存储和文件系统管理
一、磁盘结构 1.1设备文件 一切皆文件:open(),read(),write(),close() 设备文件:关联至少一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号:major number,标识设备类型 次设备号:minor number,标识同一类型下的不同设备 #实例: [01:22:56 root@localhost ~]#ll /dev/null crw-rw-rw-. 1 root root 1, 3 Nov 22 01:12 /dev/null # 1,3 1是主设备号 3是次设备号 #范例:创建一个跟/dev/zero一样的文件 [01:23:04 root@localhost ~]#mknod /root/zero c 1 5 [01:27:23 root@localhost ~]#ll total 8 -rw-------. 1 root root 1301 Nov 21 23:55 anaconda-ks.cfg -rwxr-xr-x. 1 root root 1596 Nov 21 23:57 reset.sh crw-r--r....
7-软件管理
一、软件相关概念 1.1 软件相关概念 1.1.1 ABI ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux:WINE Windows:Cygwin 1.1.2 API 系统级开发 汇编语言 C C++ 应用级开发 java Python go php perl ruby bash 1.2 C语言程序的实现过程 C程序源代码——预处理——编译——汇编——链接 C语言的程序编译主要经过四个过程: 预处理:(Pre-Processing) 将所有的#define删除,并且展开所有的宏定义 处理所有的条件预编译指令,比如#if #ifdef #elif等 处理#include预编译指令,将被包含的文件插入到该预编译指令的位置 删除所有注释 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号 保留所有的#pragma编译器指令,因为编译器需要使用他们 编....
6-文件查找和打包压缩
一、文件查找 在文件系统上查找符合条件的文件 文件查找: 非实时查找(数据库查找):locate 实时查找:find 1.1 locate locate查询系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库 索引构建过程需要遍历整个根文件系统,很消耗资源 locate和updatedb命令来自于mlocate包 工作特点: 查找快速 模糊查找 非实时查找 搜索的是文件的全路径,不仅仅是文件名 可能只搜索用户具备读取和执行权限的目录 格式: locate [OPTION]... [PATTERN]... 常用选项 -i 不区分大小写的搜索 -n N只列举前N个匹配项目 -r 使用基本正则表达式 范例: #搜索名称或路径中包含conf的文件 [10:15:54 root@centos8 ~]#locate conf 使用regex来搜索以“.conf”结尾的文件 [10:16:57 root@centos8 ~]#locate -r "\.conf$" 范....
5-Shell脚本编程
一、编程基础 Linus:Talk is cheap,show me the code 1.1 程序组成 程序:算法+数据结构 数据:是程序的核心 数据结构:数据在计算机中的类型和组织方式 算法:处理数据的方式 1.2 程序编程风格 面向过程语言 做一件事,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现情况B,做什么处理 问题规模小,可以步骤化,按部就班处理 以指令为中心,数据服务于指令 C,shell 面向对象语言 一种认识世界、分析世界的方法论。将万事万物抽象为各种对象 类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合 对象是类的具象,是一个实体 问题规模大,复杂系统 以数据为中心,指令服务于数据 java,C#,python,golang等 1.3 编程语言 计算机:运行二进制指令 编程语言:人与计算机之间交互的语言。分为俩种:低级语言和高级语言 低级编程语言: 机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写 汇编:用一些助记符号替代机器指令,称为汇编语言 高级编程语言: 编译:高级语言——....
4-Linux文本处理工具和正则表达式
一、文本编辑工具之VIM 1.1 vi 和 vim简介 在Linux中我们经常编辑修改文本文件,即由ASCII,Unicode或其他编码的纯文字的文件。 文本编辑种类: 全屏编辑器:vi,vim...... 行编辑器:sed vi visual editor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大。 vim Visual editor iMproved,和vi使用方法一致,但功能更为强大,最小化安装时不是必安装软件,需要自行安装 官网:https://www.vim.org/ 1.2 使用 vim 初步 1.2.1 vim 命令格式 vim [option]... FILE... 常用选项: +# #打开文件后,让光标处于第#行的行首,+默认行尾 +/PATTERN #让光标处于第一个被PATTERN匹配到的行行首 -b file #二进制方式打开文件 -d file1 file2... #比较多个文件,相当于vimdiff -m file #只读打开文件 -e file #直接进入ex模式,相当于执行ex file -y file #直接可以....
3-Linux用户组和权限管理
一、Linux安全模型 资源分派: Authentication:认证,验证用户身份 Authorization:授权,不同的用户设置不同权限 Accouting|Audition:审计 当用户登录成功时,系统会自动分配令牌token,包括:用户标识和组成员等信息 1.1 用户 Linux 中每个用户是通过User id (UID)来唯一标识的 管理员:root,0 普通用户:1-60000 自动分配 系统用户:1-499(centos6以前),1-999(centos7以后) 对守护进程获取资源进行权限分配 登录用户:500+(centos6以前),1000+(centos7之后) 给用户进行交互式登录使用 1.2 用户组 Linux 中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GUID)来唯一标识的。 管理员组:root,0 普通组: 系统组:1-499(centos6以前),1-999(centos7以后),对守护进程获取资源进行权限分配 普通组:500+(centos6以前),1000+(centos7以后),给用户使用 1.....
2-Linux文件管理和IO重定向
一、文件系统目录结构 1.1 文件系统的目录结构 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用“/”表示 跟文件系统(rootfs):root filesystem 标准Linux文件系统(如:ext4),文件名称大小写敏感,例如:MAIL,Mail 以 . 开头的文件为隐藏文件 路径分割的 / 文件名最长255个字节 包括路径在内的文件名称最长4095个字节 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件 除了斜杆和NULL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用 每个文件都有俩类相关数据:元数据:metadata,即属性,数据:data,即文件内容 Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard 参考文档:https://www.pathname.com/fhs/ 1.2常见的文件系统目录功能 /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,....
1-Linux基础
一、Linux 基础 1.1 用户类型 root用户 一个特殊的管理员账户 也被称为超级用户 root已接近完整的系统控制,对系统损害几乎有无限的能力 普通(非特权)用户 除非必要,不要登录为root 权限有限 造成损害的能力比较有限 是什么用户是由用户uid来决定 ,查看方法 id -u 1.2 终端 terminal 1.2.1 终端类型 控制台终端:/dev/console 串行终端:/dev/ttys# 虚拟终端:tty: /dev/tty# 图形终端:startx,xwindows 伪终端:tpy:/dev/pts/# 如:ssh远程连接 1.2.2 查看当前终端设备:tty 范例: [20:00:11 root@localhost ~]#tty /dev/pts/0 1.2.3 查看所有的登录终端:who | w [20:14:12 root@localhost ~]#who root pts/0 2020-11-25 08:37 (192.168.10.1) root pts/1 2020-11-25 20:14 (192.168.10.1) w命令也能看到其....