linux安全运维?linux运维是必死之路
本篇文章给大家谈谈linux安全运维,以及linux运维是必死之路对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
linux运维主要做什么
1) Linux运维岗位及工作内容
互联网Linux运维工程师是一个融合多学科(网络、系统、开发、数据库、安全、存储等)的综合性技术岗位,甚至还需要沟通、为人处世、培训、销售、管理等非技术能力,这给运维工程师提供了一个广阔的发展空间。
2) Linux运维工程师岗位职责
一般从企业入门到中级Linux运维工程师的工作大致有:挑选IDC机房及带宽、购买物理服务器或云服务、购买及使用CDN服务、搭建部署程序开发及用户的访问系统环境(例如:网站运行环境)、对数据进行备份及恢复、处理网站运行中的各种故障(例如:硬件故障、软件故障、服务故障、数据损坏及丢失等)、对网站的故障进行监控、解决网站运行的潜在安全问题、开发自动化脚本程序提高工作效率、规划网站架构、程序发布流程和规范,制定运维工作制度和规范、配合开发人员部署及调试产品研发需要的测试环境、代码发布等工作需求,公司如果较小可能还会兼职网管、网络工程师、数据库管理员、安全工程师、技术支持等职责。
涉及到的Linux平台上的运维工具有:Linux系统,Linux基础命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,,K8S,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,网络基础,Shell/Python开发基础等,除此之外还可能涉及到交换机、路由器、存储、安全、开发等知识。
运维工程师还包括一些低端的岗位,例:网络管理员、监控运维、IDC运维,值班运维
职业发展方向:Linux运维工程师、系统架构师、数据库工程师、运维开发工程师、系统网络安全工程师、运维经理、运维总监
3) Linux中级运维工程师应用软件阶段。
Linux系统,Linux基础命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,网络基础,Shell/Python开发基础
4)Linux运维架构师岗位职责
运维架构师是运维工程师的高级阶段,并没有明确的岗位界限区分,运维架构师一般来说是除了对运维工程师应用的开源工具熟练掌握之外,更多的是用思想来运维了,即DevOps的落地,各种企业运行过程中的解决方案提出和执行,例如:根据公司的现状可以设计各类运维解决方案的能力:
1、自动化代码上线(SVN/GIT+Jenkins+MVN)解决方案;
2、云计算部署架构及Docker微服务架构方案;
3、服务自动化扩容方案(KVM/OpenStack/Docker+Ansible+Zabbix);
4、10万并发的网站架构、秒杀系统的架构及解决发你个案;
5、多IDC机房互联方案、全网数据备份解决方案、账号统一认证方案;
6、数据库、存储及各重要服务节点的集群和高可用方案。
7、各网络服务的极端优化方案、服务解耦/拆分。
8、运维流程、制度、规范等的建设和推行。
9、沟通能力、培训能力、项目管理、业务需求分析及落地执行力等。
这里仅举几个例子,实际工作中会有更多,运维架构师的工作,其实就是解决企业中的用户访问量不断增大带来的痛点,最终达到高效、优质的为客户提供网站及业务服务。
总的来说:Linux运维架构师更多的是根据企业日益增长的访问量需求,利用若干运维工具组合加上经验思想,形成解决业务需求方案的阶段,当然也不排除对运维工具进行二次开发以及可视化展示运维数据的阶段(开发软件平台),这个阶段涉及的工具会非常多,几乎市面好用的开源工具都在备选之列,在一线城市互联网公司的薪资范围15000-50000/月。
职业方向:高级数据库工程师、运维开发工程师、运维经理、运维总监、技术总监
运维架构师:将多个工具组合,加上思想经验,形成方案,用思想和经验赚钱的阶段。
技术的提升仅是量的积累,思想的提升才是质的飞跃!——老男孩
5)数据库运维工程师
众所周知,数据几乎是所有企业的生命线,所以数据库工程师的地位和薪水一般会比普通运维工程师高一些,主要工作内容就是保证数据库数据的安全以及高效地为用户提供各种服务。工作内容主要有:数据库环境搭建、数据库优化、数据库
Linux运维:推荐八款Linux远程连接工具,非常实用
欢迎来到Linux运维的世界!今天,我将为你揭示八款备受推崇的Linux远程连接工具,它们在实际操作中表现出色,无论你是运维新手还是经验丰富的专业人士,都能从中找到适合你的利器。让我们一起深入探索这些实用工具吧:
NxShell
作为开源的首选,NxShell以其直观的界面和SFTP功能而备受赞誉。作为日常管理Linux服务器的得力助手,作者的持续更新使得它的功能越来越强大,是每个Linux运维者必备的工具箱之一。
XShell-强大的跨平台连接者
源自韩国的XShell,专为Windows用户设计,支持SSH1、SSH2、SFTP等多种协议。它不仅功能丰富,如多标签、脚本录制和自定义快捷键,而且界面简洁易用。尽管免费版有限制,但对于Windows用户来说,免费版的全面功能足以满足日常需求,而且安全性高,保障了通信安全。
SecureCRT-商业级的终端仿真神器
SecureCRT以其美观的界面和强大的功能赢得了商业用户的青睐,包括脚本编写、多标签和自动化登录等。然而,它对于个人用户来说可能价格较高,适合对效率和安全性有更高要求的专业用户。
PuTTY-简洁高效的Windows解决方案
PuTTY在Windows和Unix/Linux平台上表现出色,操作简单,无需安装即可使用。尽管界面相对朴素,但其加密传输和X11转发功能强大,对于对图形化界面要求不高的用户来说,它是一个实用的选择。
接下来的几款工具同样各有千秋:
WindTerm-一款跨平台的SSH客户端,凭借其丰富的功能和免费下载,为用户提供了全面的连接体验。
iTerm2-专为Mac用户打造的终端程序,以其美观界面和高度定制性受到好评,但遗憾的是,它只支持Mac系统。
MobaXterm-作为一款免费工具,MobaXterm为Windows用户提供了一站式的解决方案,包括多标签、文件管理器和远程桌面,但对于新手,其复杂界面可能需要一点时间去适应。
Termius-跨平台的Termius凭借其简洁界面和高级功能如数据同步,成为移动设备用户的理想选择,但部分功能的付费模式可能需要考虑。
每款工具都有其独特的优势和适用场景,挑选最适合你的那一个,将大大提高你的Linux运维效率。现在就去探索这些工具,提升你的Linux运维技能吧!
LINUX安全运维之:文件系统的权限修改与安全设置
一、锁定系统重要文件
系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。
通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性,下面简单介绍下chattr和lsattr两个命令的用法。
chattr命令的语法格式如下:
chattr [-RV] [-v version] [mode]文件或目录主要参数含义如下:
-R:递归修改所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
其中mode部分用来控制文件的属性,常用参数如下表所示:
参数含义
+在原有参数设定基础上,追加参数
-在原有参数设定基础上,移除参数
=更新为指定参数
a即append,设定该参数后,只能向文件中添加数据,而不能删除。常用于服务器日志文件安全,只有root用户才能设置这个属性c即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作i即immutable,设定文件不能被修改、删除、重命名、设定链接等,同时不能写入或新增内容。这个参数对于文件系统的安全设置有很大帮助s安全的删除文件或目录,即文件被删除后硬盘空间被全部收回u与s参数相反,当设定为u时,系统会保留其数据块以便以后能够恢复删除这个文件。这些参数中,最常用到的是a和i,a参数常用于服务器日志文件安全设定,而i参数更为严格,不允许对文件进行任何操作,即使是root用户lsattr用来查询文件属性,用法比较简单,其语法格式如下:
lsattr [-adlRvV]文件或目录
常用参数如下表所示。
参数含义
-a列出目录中的所有文件,包括以.开头的文件-d显示指定目录的属性
-R以递归的方式列出目录下所有文件及子目录以及属性值-v显示文件或目录版本
在Linux系统中,如果一个用户以root的权限登录或者某个进程以root的权限运行,那么它的使用权限就不再有任何的限制了。因此,攻击者通过远程或者本地攻击手段获得了系统的root权限将是一个灾难。在这种情况下,文件系统将是保护系统安全的最后一道防线,合理的属性设置可以最大限度地减小攻击者对系统的破坏程度,通过chattr命令锁定系统一些重要的文件或目录,是保护文件系统安全最直接、最有效的手段。
对一些重要的目录和文件可以加上“i”属性,常见的文件和目录有:
chattr-R+i/bin/boot/lib/sbin
chattr-R+i/usr/bin/usr/include/usr/lib/usr/sbinchattr+i/etc/passwd
chattr+i/etc/shadow
chattr+i/etc/hosts
chattr+i/etc/resolv.conf
chattr+i/etc/fstab
chattr+i/etc/sudoers
对一些重要的日志文件可以加上“a”属性,常见的有:
chattr+a/var/log/messages
chattr+a/var/log/wtmp
对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便,例如,在软件的安装、升级时可能需要去掉有关目录和文件的immutable属性和append-only属性,同时,对日志文件设置了append-only属性,可能会使日志轮换(logrotate)无法进行。因此,在使用chattr命令前,需要结合服务器的应用环境来权衡是否需要设置immutable属性和append-only属性。
另外,虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。
根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作:/dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题;/tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性;/var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。
虽然通过chattr命令无法保护/dev、/tmp等目录的安全性,但是有另外的方法可以实现,在面将做详细介绍。
二、文件权限检查和修改
不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。下面列举几种查找系统不安全权限的方法。
(1)查找系统中任何用户都有写权限的文件或目录查找文件:find/-type f-perm-2-o-perm-20|xargs ls-al查找目录:find/-type d-perm-2-o-perm-20|xargs ls–ld(2)查找系统中所有含“s”位的程序
find/-type f-perm-4000-o-perm-2000-print| xargs ls–al含有“s”位权限的程序对系统安全威胁很大,通过查找系统中所有具有“s”位权限的程序,可以把某些不必要的“s”位程序去掉,这样可以防止用户滥用权限或提升权限的可能性。
(3)检查系统中所有suid及sgid文件
find/-user root-perm-2000-print-exec md5sum{}/;find/-user root-perm-4000-print-exec md5sum{}/;
将检查的结果保存到文件中,可在以后的系统检查中作为参考。
(4)检查系统中没有属主的文件
find/-nouser-o–nogroup
没有属主的孤儿文件比较危险,往往成为黑客利用的工具,因此找到这些文件后,要么删除掉,要么修改文件的属主,使其处于安全状态。
三、/tmp、/var/tmp、/dev/shm安全设定
在Linux系统中,主要有两个目录或分区用来存放临时文件,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点就是所有用户可读写、可执行,这就为系统留下了安全隐患。攻击者可以将病毒或者木马脚本放到临时文件的目录下进行信息收集或伪装,严重影响服务器的安全,此时,如果修改临时目录的读写执行权限,还有可能影响系统上应用程序的正常运行,因此,如果要兼顾两者,就需要对这两个目录或分区就行特殊的设置。
/dev/shm是Linux下的一个共享内存设备,在Linux启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。
对于/tmp的安全设置,需要看/tmp是一个独立磁盘分区,还是一个根分区下的文件夹,如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可,修改后的/tmp分区挂载属性类似如下:
LABEL=/tmp /tmp ext3 rw,nosuid,noexec,nodev 0 0其中,nosuid、noexec、nodev选项,表示不允许任何suid程序,并且在这个分区不能执行任何脚本等程序,并且不存在设备文件。
在挂载属性设置完成后,重新挂载/tmp分区,保证设置生效。
对于/var/tmp,如果是独立分区,安装/tmp的设置方法是修改/etc/fstab文件即可;如果是/var分区下的一个目录,那么可以将/var/tmp目录下所有数据移动到/tmp分区下,然后在/var下做一个指向/tmp的软连接即可。也就是执行如下操作:
[root@server~]# mv/var/tmp/*/tmp
[root@server~]# ln-s /tmp/var/tmp
如果/tmp是根目录下的一个目录,那么设置稍微复杂,可以通过创建一个loopback文件系统来利用Linux内核的loopback特性将文件系统挂载到/tmp下,然后在挂载时指定限制加载选项即可。一个简单的操作示例如下:
[root@server~]# dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000[root@server~]# mke2fs-j/dev/tmpfs
[root@server~]# cp-av/tmp/tmp.old
[root@server~]# mount-o loop,noexec,nosuid,rw/dev/tmpfs/tmp[root@server~]# chmod 1777/tmp
[root@server~]# mv-f/tmp.old/*/tmp/
[root@server~]# rm-rf/tmp.old
最后,编辑/etc/fstab,添加如下内容,以便系统在启动时自动加载loopback文件系统:
/dev/tmpfs/tmp ext3 loop,nosuid,noexec,rw 0 0
为了验证一下挂载时指定限制加载选项是否生效,可以在/tmp分区创建一个shell文件,操作如下:
[root@tc193 tmp]# ls-al|grep shell
-rwxr-xr-x 1 root root 22 Oct 6 14:58 shell-test.sh[root@server~]# pwd
/tmp
[root@tc193 tmp]#./shell-test.sh
-bash:./shell-test.sh: Permission denied可以看出,虽然文件有可执行属性,但是已经在/tmp分区无法执行任何文件了。
最后,再来修改一下/dev/shm的安全设置。由于/dev/shm是一个共享内存设备,因此也可以通过修改/etc/fstab文件设置而实现,在默认情况下,/dev/shm通过defaults选项来加载,对保证其安全性是不够的,修改/dev/shm的挂载属性,操作如下:
tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
通过这种方式,就限制了任何suid程序,同时也限制了/dev/shm的可执行权限,系统安全性得到进一步提升。谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。