linux系统管理员的安全列表
任何操作系统的安全性都是任何Linux系统管理员的主要职责之一。
我必须说,对于Linux系统管理员来说,这也是最艰巨的任务之一。
我们不能确定自己下方的机器是安全机器(互联网上不存在可以称为完全安全的机器)。
在这篇文章中,我将指出一些Linux服务器的安全列表,这些列表由我不时记录和整理。
我知道以下事实:由于系统管理员需要遵循特定于基础结构的限制,因此并非所有这些功能都可以在生产基础结构中实现。
注意:如前所述,此处指出的安全列表不会使系统安全。
但是,这肯定会使系统不易受到威胁,并可以减少机器风险的总体机会。
1.使用最新的安全补丁更新系统
大多数系统管理员已经意识到这对于他们的系统来说是首要的也是最重要的。
确实,人们普遍认为,应该始终使用补丁程序对Windows计算机进行更新,但是即使没有补丁程序和更新,Linux还是很安全的,这是完全错误的。
如果我们看到这些报告,就会知道,在发生的所有危害中,有80%只是由于软件包或者内核的旧易受攻击版本引起的。
CVE(常见漏洞披露)漏洞的详细信息始终指向软件包的特定版本,并且软件包的供应商大多数时候已经针对相同版本推出了其补丁程序。
使用YUM或者ap-get程序包管理器,以保持程序包更新。
还可以不时以有组织的方式对内核进行修补,并提供最新的修补程序。
2.通过邮件列表,论坛等保持最新漏洞的最新状态。
许多开源邮件列表(特定于产品以及Linux常规)都提供了最新的漏洞,其中包含详细信息和所需的相关修补程序。
另外,我们应始终通过购买产品供应商的邮件列表,随时向团队更新有关特定产品的信息。
示例:http://www.securityfocus.com/
http://www.sans.org/
3.禁用并停止服务器上不需要的服务。
管理员应记下所有服务器上运行的所有服务,并定期与团队的各个开发人员进行协商,以确保仅运行所需的服务。
服务器上不应运行任何不需要的服务。
列出chkconfig和ntsysv的启动服务列表可以为我们提供在启动时启动的服务列表。
在服务器上禁用不需要的服务也将明智地提高服务器性能。
4,使用SUDO限制ROOT访问
建议使用sudo将某些用户限制为某些关键命令。
我们可以通过修改/etc/sudoers文件轻松实现此目的。
sudo可以在逐个命令的基础上进行配置,sudoers文件可以用于限制命令的控制。
5. SSH安全设置。
几乎所有Linux机器都使用SSH服务进行远程登录。
尽管ssh本身是相当安全的,但是ssh无法保护服务器免受人为错误的影响
必须始终对SSH协议进行一些检查。
- 通过修改sshd_config文件并设置“ PermitRootLogin no”,通过ssh协议禁用root登录。
- 确保使用ssh协议版本2而不是1(软件包的最新版本默认使用版本2,因此无需修改)
- 禁用基于普通密码的身份验证,仅允许基于公钥的身份验证。并将所需用户的公共密钥部署在服务器上各自的主目录中。
这将有助于安全地允许将公共密钥已部署在服务器上的用户通过ssh登录。
可以通过如下修改服务器上的sshd_config文件来完成。
ChallengeResponseAuthentication no PasswordAuthentication no PubkeyAuthentication yes
- 在标准端口以外的其他端口上配置ssh。
6.使用校验和检查关键文件的完整性
定期检查系统关键文件的完整性将减轻某些人对文件的不必要修改。
我们可以借助几种工具来执行此操作。
下面提到一些。
TripWire:tripwire是通过检查文件的哈希值与先前获取的哈希值来衡量关键文件更改的有效方法。
它被理解为为了严重影响系统,攻击者需要以某种或者其他方式修改系统上的文件。
我们可以使用另一个工具(与Tripwire工具非常相似)来检测到这一点。
它称为Aide(高级入侵检测环境)。
我们可以从sourceforge下载助手。
助手
7.通过SSH隧道所有X-Window会话。
这将保护通常未加密的图形通信。
为此,我们需要在sshd_config文件中具有以下条目。
ForwardX11 yes
现在,我们可以使用ssh -X -c“服务器IP”连接服务器
-c选项是压缩流量的好方法。
一个不错的选择是带宽较低
8.如果需要,请使用SeLinux。
这也是确保系统安全的好方法。
selinux的howto超出了本文的范围。
但是,我们可以在Internet上找到很多用于配置selinux的资源。
尽管Selinux是一个很好的安全选项,但如果配置不当,有时会产生不希望的结果。
10.仅创建所需的用户数
列出服务器上拥有的所有用户帐户,然后删除系统上所有不需要的用户。
11,维护良好的防火墙策略
写下要允许访问计算机的IP /子网。
并且只允许他们。
为入站和出站连接创建防火墙脚本,并为防火墙规则启用该脚本将是一个好主意。
在大多数Linux防火墙上,规则的应用顺序很重要。
因此,如上所述,使用防火墙脚本管理防火墙的所有规则,并定期使用nagios检查或者cron检查应用的规则集是一个好主意。
那里有很多可用于linux的防火墙,下面将介绍其中的一些。
- Iptables - ipcop - checkpoint - shorewall - pfsense
重要的事情是如何配置它们,因为几乎所有的对象都擅长于它们的工作。
据我说,Iptables是大多数发行版的默认防火墙,将是一个很好的起点。
我们可以使用此防火墙完成几乎所有需要的工作。
12.如果使用FTP,请配置SSL/TLS。
FTP也被认为是不安全的协议。
因此,建议我们在使用FTP服务时执行以下操作。
- 使用最新版本的FTP软件包
- 强制仅需要的用户通过ftp登录
- 仅允许具有FTP访问服务器的TLS。
- 如果可能,将用户保持在chroot监狱中
13.检查整个文件系统的文件权限。
如我们所知,文件权限在保护Linux服务器方面起着重要作用。
因此,我们需要定期确保所有重要文件均获得正确的权限。
有关文件权限的检查事项。
- 定期检查并确认UMASK值是否符合要求
- 定期搜索具有荒谬权限的fiile。像世界上可写的文件等。
我们可以使用“查找/-perm -o = w!-type l -ls”来搜索它们
14,使用诸如adeos之类的工具来获取潜在的文件状态
如上一步所述。
使用adeos之类的工具扫描整个系统来查找具有危险权限的文件是一个很好的方法。
我们可以从这里获得adeos。
http://linux.wku.edu/~lamonml/software/adeos/adeos-1.0.tar.gz
它将搜索可全局写入的文件,SUID等。
15,确保/tmp目录上有粘性位
粘帖位仅允许文件的根目录或者所有者重命名或者删除。
/tmp是应用程序创建和删除文件的重要目录。
将粘性位分配给该目录将防止用户重命名或者删除其他用户的文件。
16.使用空白密码检查并锁定用户。
为了简单起见,一些用户确实保留了空白密码,但是对于其他想要控制系统的用户,将其视为可以打开的大门。
只需查看/etc/shadow文件,确认没有用户使用空密码。
更好的选择是通过修改PAM配置文件来禁用系统中的空白密码。
因此,在redhat/fedora中,我们需要编辑文件/etc/pam.d/system-auth,并从auth行中足够的“ /lib/security/pam_unix.so likeauth nullok”删除单词“ nullok”。
17. Bootloader和BIOS安全性
通常,人们的确会忽略此步骤,因为他们始终认为攻击者和入侵者总是绑架以获得访问权限的远程人员。
访问BIOS意味着可以执行任何操作...因为我们可以访问BIOS,因此可以轻松地从任何磁盘或者其他介质引导系统。
因此,请为BIOS保留一个安全密码。
另外,请使用安全密码保护引导加载程序(GRUB),以便在没有密码的情况下无法切换引导加载程序中的选项。
18,特别注意与portmap相关的服务
如果我们正在服务器上运行任何与端口图相关的服务。
然后,在这种情况下,我们需要特别注意配置对端口111的访问。
最好在tcpwrappers和iptables中为portmapper配置一套不错的配置。
端口映射器确实有很多安全漏洞,并且如果可能的话,请避免在具有公共接口的生产服务器上使用它。
19.使用Kerberos身份验证部署NFS共享。
仅对所有共享使用NFS版本4(NFSv2和NFSv3以不安全的方式通过网络传递数据)。
非常需要对NFS共享使用kerberos身份验证,因为这将对所有数据传输进行加密,并确保对NFS的访问。
不要使用no_root_squash选项,因为这将使远程用户可以修改共享上其他人的文件,并且很容易影响其他人的更改。
20.启用远程日志记录
大多数时候,入侵者和攻击者在获得系统访问权限后,都会删除系统日志,以删除其跟踪记录。
但是,如果启用了远程日志记录,则攻击者现在需要破坏多个系统以删除日志(有时并不容易)。
我们可以使用以下类似的工具来实现远程日志记录。
Syslog rsyslog syslogng
21.通过编辑/etc/securetty禁用root登录
我们可以编辑/etc/securetty文件,以修改root用户可以登录的终端tty。
注意:如果没有该文件,则root可以从任何位置登录(因此不建议这样做)
22.保持良好的密码政策
了解chage命令的用法,并有效地使用它来修改每个用户的密码设置。
默认情况下,以下命令将向我们显示特定用户的密码信息。
"chage --list <username>"
借助chage命令修改每个用户的密码有效期限。
chage -M <no of days to expire> <username>
修改/etc/pam.d/system-auth文件以适合需求。
还要根据需要检查并确认/etc/login.defs(这在创建用户时设置默认设置)。