当前位置:   article > 正文

只需用几个简单的命令,让你的Linux更安全_python对linux安全加固

只需用几个简单的命令,让你的Linux更安全_python对linux安全加固

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

用Aureport来管理SELinux
使用sealert工具


## **一、控制台安全**


你可以通过限制能够登录的一组特定终端来限制root用户的访问。为了实现该目的,请编辑/etc/下安全文件的内容。该文件列出的是允许root用户登录的所有设备。


我建议你只允许root用户去登录到一个终端之上,且强制所有其他用户都使用非root用户的身份进行登录。而如果确实需要root用户权限的时候,请使用su命令来获取。


## **二、密码生命周期**


密码的生命周期就是允许你为密码指定一个有效的时间周期。时间到期后,系统将强制要求用户输入一个新的密码。这样有效地确保了密码的定期更换,以及密码在被偷盗、破解或为人所知的情况下能够迅速过期。


有两种方法可以实现这个效果。第一种方法是通过命令行使用如下的改变命令:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

$ chage -M 20 likegeeks


我们使用- M选项为likegeeks用户设置了有效期限为20天的密码。


你也可以输入不带任何选项的chage命令,它会自动提示你选项:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

$ chage likegeeks


第二种方法是在/etc/login.defs中为所有用户设置默认值。你可以参照下面,按需改变其数值:



  • 1
  • 2
  • 3
  • 4
  • 5

PASS_MAX_DAYS 20 PASS_MIN_DAYS 0 PASS_WARN_AGE 5


## **三、Sudo的通知**


Sudo命令虽然可以使得你的“生活”更为轻松,但是它们也会因为Linux的安全问题而毁了你的“生活”。


我们都知道,sudo命令允许非root用户以root身份运行各种命令。你可以在/etc/sudoers文件中查到所有的sudo配置。


你可以禁止用户去运行那些root才能运行的命令。


当sudo命令被使用的时侯,你可以通过在文件中添加如下一行语句,以配置其向外发送电子邮件。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

mailto yourname@yourdomain.com


当然你也可以用如下语句改变sudo的发邮件状态:



  • 1
  • 2
  • 3
  • 4
  • 5

mail_always on


## **四、SSH调优**


只要说到Linux安全,我们必然会讨论到SSH服务。SSH应该是你系统中重要的一种服务,它使你能够轻松地连接到自己的系统。而且这可能是在出现各种状况的时候,唯一能让你的系统“幸存”的途径。所以对SSH的调优是非常重要的。


由于我们在本文所使用的是CentOS 7,那么其SSH的配置文件就存放在:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

/etc/ssh/sshd_config


让我们来深入了解一下吧。


攻击者所使用的扫描器或自动工具一般尝试运用默认端口22来连接SSH。因此通常情况下,你应该改变SSH的原有端口到另一个未使用的端口上,比如说5555。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Port 5555


你也可以通过更新PermitRootLogin的值为no来限制root的登录,例如:



  • 1
  • 2
  • 3
  • 4
  • 5

PermitRootLogin no


并禁用无密码的通道,且改用公钥登录的方式。



  • 1
  • 2
  • 3
  • 4
  • 5

PasswordAuthentication no PermitEmptyPasswords no


其实还有另外一种可能阻止攻击的调整,但它要求SSH通过正向和反向DNS查询远程的主机名,这将在系统日志文件中生成一些适当的警告。你只需启用UseDNS的值便可实现。



  • 1
  • 2
  • 3
  • 4
  • 5

UseDNS yes


此外,当GSSAPI服务器被要求验证相关用户的身份时,SSH会调用一个不常用的功能来实现GSSAPI的认证方式。为了避免这种情况可能会引起的某种麻烦,请按照如下将GSSAPIAuthentication设为no:



  • 1
  • 2
  • 3
  • 4
  • 5

GSSAPIAuthentication no


考虑到SSH通常会出现的超时问题,你可以通过正确地配置ServerAliveInterval、ServerAliveCountMax和TCPKeepAlive的值来进行管控。


例如下面的规则就意味着每隔60秒就产生一个数据包。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ServerAliveInterval 15 ServerAliveCountMax 3 TCPKeepAlive yes


通过调整这些值,你可以提供一个更长的连接。



  • 1
  • 2
  • 3
  • 4
  • 5

ClientAliveInterval 30 ClientAliveCountMax 5


你可以通过指定那些被允许用来使用SSH的用户名,从而使得SSH服务更为安全。



  • 1
  • 2
  • 3
  • 4
  • 5

AllowUsers user1 user2


或者指定允许的组:



  • 1
  • 2
  • 3
  • 4
  • 5

AllowGroup group1 group2


除此之外,你还可以为SSH启用诸如Google Authenticator这样的双因素认证方式:



  • 1
  • 2
  • 3
  • 4
  • 5

$ yum install google-authenticator


然后运行之,以验证是否成功安装:



  • 1
  • 2
  • 3
  • 4
  • 5

$ google-authenticator


你的移动手机上应该已经安装了Google authenticator的应用,那么请将下面一行添加到/etc/pam.d/sshd之中。



  • 1
  • 2
  • 3
  • 4
  • 5

auth required pam_google_authenticator.so


最后的事情就是通过添加下面一行到/etc/ssh/sshd\_config中,以通知SSH。



  • 1
  • 2
  • 3
  • 4
  • 5

ChallengeResponseAuthentication yes


然后重启你的SSH:



  • 1
  • 2
  • 3
  • 4
  • 5

$ systemctl restart sshd


之后,当你使用SSH登录的时候,它将会询问一个验证码。这便意味着你的SSH已经能够应对暴力破解的攻击,且更为稳固了。


## **五、使用Tripwire进行入侵检测**


Tripwire是Linux安全里的重要工具之一。这是一种基于主机的入侵检测系统(HIDS)。它通过收集配置和文件系统的细节,并使用这些信息来提供系统先前与当前状态之间的参考点等方式进行工作。该过程监测文件或目录的属性包括:进去哪些被添加或修改了、谁修改的、修改了什么、何时修改的。因此它就是你文件系统的“看门狗”。


你需要访问EPEL存储库来获取Tripwire。你可以按如下方法轻松地添加该库:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm $
rpm -ivh epel-release-7-9.noarch.rpm


一旦成功安装了EPEL库,你就可以安装Tripwire了:



  • 1
  • 2
  • 3
  • 4
  • 5

$ sudo yum install tripwire


在使用Tripwire之前,你需要用如下命令来创建本地和网站密钥:



  • 1
  • 2
  • 3
  • 4
  • 5

$ tripwire-setup-keyfiles


它会提示你输入一个用于网站和本地密钥文件的密码。Tripwire也会建议你使用大写字母、小写字母、数字和标点符号的组合。


你可以通过更改如下文件来定制Tripwire:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

/etc/tripwire/twpol.txt


因为每一行都有注释,且描述也很到位,因此该文件还是比较容易阅读和修改的。


你可以用如下的方式更新自己的Tripwire策略。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

$ tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt


Tripwire将通过参考你的更改,在屏幕上持续刷新显示各个阶段的步骤。当这些完成之后,你就应该能够以如下方式初始化Tripwire数据库了:



  • 1
  • 2
  • 3
  • 4
  • 5

$ tripwire --init


然后Tripwire将开始扫描系统。它所需要的时长取决于系统的总体规模。


任何对文件系统更改将被认为是一种系统的入侵,因此管理员会被通知到,而且他需要使用受信任的文件予以系统恢复。正是出于这个原因,Tripwire必须去验证任何的系统更改。你可以通过如下命令来验证你的现有的策略文件:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

$ tripwire --check


关于Tripwire,我的最后一点建议是:请额外去加固twpol.txt和twcfg.txt文件的安全。


更多有关Tripwire的选项和设置,你可以通过man tripwire查阅到。


## **六、使用Firewalld**


Firewalld替代了iptables,并且通过在不停止当前连接的情况下启用各种配置的更改,从而改善了Linux的安全管理。


Firewalld作为守护进程形式运行着。它允许各种规则被即时地添加和更改,而且它使用各种网络区域来为任何以及所有与网络相关的连接定义一种信任级别。


要想知道Firewalld的当前运行状态,你可以输入如下命令:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

$ firewall-cmd --state


![只需用几个简单的命令,让你的Linux更安全](http://p99.pstatp.com/large/pgc-image/eb5854315dde4ba69beee8dd7ec19663)


 


你可以用如下命令罗列出预定义的区域:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

$ firewall-cmd --get-zones


![只需用几个简单的命令,让你的Linux更安全](http://p99.pstatp.com/large/pgc-image/f325404b39db4c6d9776f1ceb1ef5bf2)


 


其值也可以如下方式进行更新:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

$ firewall-cmd --set-default-zone=


你可以用以下命令获取任何特定区域的所有相关信息:



  • 1
  • 2
  • 3
  • 4
  • 5

$ firewall-cmd --zone= --list-all


你也能列出所有支持的服务:



  • 1
  • 2
  • 3
  • 4
  • 5

$ firewall-cmd --get-services


![只需用几个简单的命令,让你的Linux更安全](http://p99.pstatp.com/large/pgc-image/0fd86d0813e6455bb3f2ac3224bbe75b)


 


而且你可以添加或删除额外的服务。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

$ firewall-cmd–zone=–add-service= $ firewall-cmd–zone=–remove-service=


你能通过如下命令列出任何特定区域中所有开放的端口:



  • 1
  • 2
  • 3
  • 4
  • 5

$ firewall-cmd --zone= --list-ports


你可用如下方式管理TCP/UDP端口的增加与删除:



  • 1
  • 2
  • 3
  • 4
  • 5

$ firewall-cmd–zone=–add-port= $ firewall-cmd–zone=–remove-port=


你可以如下命令添加或删除端口的转发:



  • 1
  • 2
  • 3
  • 4
  • 5

$ firewall-cmd–zone=–add-forward-port= $ firewall-cmd–zone=–remove-forward-port=



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/7c55253570cbb4d61d26a3db080d45ae.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/a11d3b6cf1bcfe38f2c0029b8df8c608.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-JyvikdO4-1715469811249)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-vRcYIZjK-1715469811250)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号