0×00 前言


在linux服务器随处可见的网络环境中,网络运维人员保障Linux安全就成了必要条件。当然现在有很多的硬件防火墙以及WAF,但是那不是小资企业可以hold住的,本文从软件以及服务配置方面简单总结Linux安全防护。

0×01 使用软件级别安全防护


1、使用SELinux

SELinux是用来对Linux进行安全加固的,它可以让你指定谁可以增加文件,谁只可以删除文件,或者谁还可以移动文件,从文件的层次上来说,它相当于一个ACL;

配置文件:/etc/selinux/config (centos7系统)

状态:getenforce 与 setenforce命令可以修改

  • disabled:关闭策略
  • permissive:启用SELinux但是即使违反了策略它也会让你继续操作;仅仅一个记录功能
  • enforcing:启用SELinux,违反策略时阻止你的操作

查看文件标签:ls -Z

p1

在文件所属组的后面就是我们文件的标签,它表示SELinux对这个文件的策略

修改策略:chcon与semanage

p2

恢复文件标签:restorecon

常见场景分析:

当我们需要配置一个Web目录时,如果Web目录不是默认的目录,访问可能出现403

这个时候,我们需要将我们的Web目录的标签修改为httpd_sys_content_t

p3

2、使用iptables

Iptables是一个应用框架,它允许用户为自己系统建立一个强大的防火墙。它是用来设置、维护和检查Linux内核中IP包过滤规则的。

配置文件:/etc/sysconfig/iptables-config (centos7系统)

这里贴出一个在博客园的关于iptables的使用:
http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html

3、使用firewall

在centos7中,防火墙具备很强的软件防护功能,在默认程度上:

p4

默认开启了dhcpv6客户端以及ssh防火墙功能;

防火墙具备很多功能,同时他具备图形界面与命令行界面两种模式,对于基本的防火墙配置,个人推荐使用命令行模式,当我们需要配置一些负责的规则策略时,就可以使用我们的图形界面:

p5

4、使用入侵检测系统

IDS:入侵检测系统,在linux中有针对它的开源的入侵检测系统:Snort;

0×02 安全配置服务


1、SSH访问控制

尽可能的取消telnet登录,采用ssh进行登录;

ssh配置文件:/etc/ssh/sshd_config

  • 修改默认端口:Port 10512
  • 不允许使用空密码:PermitEmptyPasswords no
  • 不允许root用户登录:PermitRootLogin no
  • 不允许输入密码登录:PasswordAuthentication no (可以很好的防止爆破,但是如果密钥文件泄漏则会出现安全问题,当然可以通过其他方式来进行防御)
  • 重新生成密钥:KeyRegenerationInterval 1h (如果我们使用密钥进行登陆,可以设置多少时间后密钥重新生成)
  • 密钥加密方式:RSAAuthentication yes (是否使用RSA进行加密)

2、禁用不必要的服务及用户

在我们的Linux系统中有很多用户不需要的服务和应用,然而这些服务还是会运行,这样会导致攻击者利用这些服务的漏洞来进行攻击,最好的办法就是停止这些服务。

比如我们的Linux服务器只是一台Web服务器,那么就不需要ftp、smtp等服务我们就可以关闭;当然我们也可以让服务不允许通过防火墙,这样通过防火墙来保护我们的服务器也可以。

任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service(服务详细信息) systemctl is-active httpd.service(仅显示是否 Active)
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

在linux系统中,系统运行所必须的服务

服务名称 说明
acpid 用于电源管理,对于笔记本和台式电脑很重要
apmd 高级电源能源管理服务,可用于监控电脑
kudzu 检测硬件是否变化的服务
crond 为Linux下自动安排的进程提供运行服务
iptables/firewall Linux内置的防火墙
xinetd 支持多种网络服务的核心守护进程
syslog 记录系统的日志服务
network 网络服务,要用网必须启动这个服务

同时,一台新的Linux操作系统中有很多我们用不到的角色用户,我们同样可以删除这些用户,或者将这些用户设置为不能登录系统;

p6

可被删除的用户:adm、lp、sync、shutdown、halt、operator、games

  • userdel adm
  • groupdel adm

p7

可被删除的用户组:adm、lp、games、dip等;

当然具体的需要还是要根据用户的选择,同时我们也可以修改用户的bash文件禁止用户登录系统也是防护方式的一种。

#!bash
usermod -s /sbin/nologin username

3、使用全盘加密

加密的数据更难被窃取,在安装Linux系统的时候我们可以对整个系统进行加密,采用这种方式,即使有人进入了我们的系统,也不能得到我们的数据;

4、Web应用配置

提供Web服务时,需要更新我们组件的补丁,防止利用已知漏洞来进行攻击;

严格限制权限,防止得到Web Shell以后直接得到系统权限;

限制Web用户只能访问Web目录,不能访问其他目录;

严格控制提供上传点的文件类型

等等

5、系统安全

使用su 与 sudo命令时:

  • su:切换用户
  • sudo:提升权限,所以sudo是su的特定一种形态

这里是指定可以使用su命令的用户

p8

注意红色圈起来的一行,就是启用pam_shell认证,这个时候没有加入wheel的用户就不能使用su命令了!

p9

对于sudo的一些配置vim /etc/sudoers在centos7中,如果你不想修改原来的配置文件,你可以将这一行includedir /etc/sudoers.d的注释去掉,然后在/etc/sudoers.d/目录下写我们的配置文件

p10

删除提示信息

在linux的4个文件中存在提示系统的一些信息:

  • /etc/issue,/etc/issue.net:这两个文件记录了操作系统的名称及版本号,用户通过本地终端就会显示/etc/issue文件中内容,通过ssh或telnet登录就会显示/etc/issue.net的文件内容;
  • /etc/redhat-release:这个文件也记录了操作系统名称和版本号;
  • /etc/motd:这个文件是系统的公告信息,每次用户登录后就会显示在终端上;

未完待续~~~