首页 存档 技术 查看内容

Linux系统安全需要注意的一些问题

2018-3-30 13:00 |来自: 互联网 421 0

摘要: 前言 写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务 如果某一天当你登录服务器发现 /bin/bash i,python -c 'import pty; pty.spawn("/bin/sh")' 等命令在服务器上出现的时候, ...

前言


写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务


如果某一天当你登录服务器发现

/bin/bash i,python -c 'import pty; pty.spawn("/bin/sh")'

等命令在服务器上出现的时候,那么恭喜你,服务器被入侵了。但是入侵者都是很聪明的,首先会执行以下命令:

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0

然后是通过跳板访问:

ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash i

建立ttyshell:

python -c 'import pty; pty.spawn("/bin/sh")'

然后清除访问记录:

shred -n 31337 -z -u file_to_delete

等。。。一系列的操作。然后你就能看到服务器上会留下以上的蛛丝马迹,那么我们如何防止呢?


1.系统用户优化


用户是Linux中安全加固的第一关,如果系统中本身就存在有安全隐患的用户,那么再安全策略也无法起到加固的效果。

cat /etc/passwd | awk -F: '$3==0' //列出具有超级权限的用户 cat /etc/passwd | grep '/bin/bash' //列出具有登录shell的用户

如果除了root还有其他的超级用户,那就要非常小心了。


1.1 将系统自带的用户和用户组删除掉


删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher


删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers


1.2 或者锁定不需要登录的用户


如:xfs,news,nscd,dbus,vcsa,games,nobody,avahi,haldaemon,gopher,ftp,mailnull,pcap,mail,shutdown。


1.3 **能够su为root的用户

#在 /etc/pam.d/su 头部添加: auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root


1.4 检查shadow中空口令帐号

awk -F: '( $2== "") { print }' /etc/shadow

对空口令账号进行锁定,或要求增加密码。


1.5 系统关键目录权限控制


根据安全需要,配置某些关键目录其所需的最小权限,password文件、shadow文件、group文件权限。


/etc/passwd 所有用户都可读,root用户可写 rw-rr

chmod 644 /etc/passwd

/etc/shadow 只有root可读 r

chmod 600 /etc/shadow

/etc/group 必须所有用户都可读,root用户可写 rw-rr

chmod 644 /etc/group

2. 系统服务优化


一般情况下,系统可能会自动的运行一些不必要的服务,我们可以使用下面的命令查看当前默认开启运行的系统服务:

chkconfig --list | grep "3:on"

如果我们只是提供web服务,那么对于sendmail、nfs、postfix、ftp等不需要的服务就可以关闭了。


对于关键的服务,我们需要保证它们的运行,比如:iptables、sshd、syslog、httpd、nginx、mysql、php-fpm等。


3.ssh访问策略


ssh的日常工作中几乎唯一的控制系统的手段。所以ssh的安全性非常重要,一般来说较高的ssh安全策略秉承以下几个原则。


  • 禁止root用户ssh登录。

  • 禁止口令的方式验证。

  • 只允许一个用户拥有sudo的完整权限。

  • 除非是堡垒机,系统中不允许存放私钥文件。

  • 使用一个随机端口来代替22端口。


编辑 /etc/sudoers,加入一条:

test ALL=(ALL) NOPASSWD: ALL

这里的例子表示:将test赋予完全的sudo权限,并在sudo提权时不需要验证密码。

sed -i 's/\(PasswordAuthentication\) yes/\1 no/' /etc/ssh/sshd_config //禁止口令,使用证书 sed -i 's/\(PermitRootLogin\) yes/\1 no/' /etc/ssh/sshd_config //禁止root用户ssh登录

现在我们来看ssh的访问效果:


  • 所有用户不能使用密码验证登录。

  • root用户不可直接登录的,即使拥有root密码,唯一获得root的方法是使用test用户提权。

  • test用户只可以使用证书登录。

  • ssh不再使用默认的22端口


4.系统内部安全配置


4.1、保护引导过程

//用户启动需要输入主机密码 echo "sp:S:respawn:/sbin/sulogin" 
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部