每当您正在使用新的 Linux 主机进行安全增强时,您需要创建一个文档并记录本文档中列出的项目,工作完成后,您将需要检查这些项目。另外,在开始时该文档,您需要记录有关 Linux 主机的信息:
设备名称
IP 地址
MAC 地址
负责安全提升工作的人(实际上是你)
日期
资产编号(如果您正在开展业务,则需要记录设备的资产编号)
您需要为此主机的 BIOS 设置密码,以确保最终用户无法修改或覆盖 BIOS 中的安全设置,这非常重要!设置 BIOS 管理员密码后,您需要从外部媒体设备(USB / CD / DVD)禁用主机启动。如果忽略此设置,任何人都可以通过写入引导映像的 U 盘访问此主机中的数据。
在内置 web 服务器的新服务器主板中,您可以使用它来远程访问主机数据。因此,您需要确保已经修改了服务器管理页面的默认密码,如果可以,直接禁用此功能。
大多数 Linux 发行版允许您在继续安装之前加密磁盘。磁盘加密非常重要,因为当您的电脑被盗时,即使小偷将您的硬盘驱入自己的电脑仍然无法读取您的数据。
在下图中,选择列表中的第三个选项:引导使用整个磁盘并设置加密的 LVM(LVM 代表逻辑卷管理器)。
如果您的 Linux 发行版不支持加密,则可以选择使用 TrueCrypt 等加密软件。
数据备份是一个很好的习惯,当系统崩溃或系统更新失败时,突出显示备份的优点。对于一些重要的服务器,为了防止灾难(包括自然灾害和人为因素)的影响,备份数据通常需要离线存储。当然,备份也要求我们花费精力去管理。例如,需要保存旧备份文件多长时间?什么时候需要备份系统?(每日或每周)?
核心系统磁盘需要分区:
/
/ boot
/ usr
/ 家
/ tmp
/ var
/ 选择
磁盘分区可能在系统故障的情况下仍然保护系统的性能和安全性。在下图中,您可以在安装过程中看到由 Kali Linux 提供的分区选项。
引导目录包含大量与 Linux 内核相关的重要文件,因此您需要确保目录仅通过以下步骤 "只读" 才能打开。首先打开 "fstab" 文件。
接下来,添加下图所示的最后一行数据。
完成此步骤后,您需要执行以下命令来设置文件的所有者:
- #chown root:root /etc/fstab
那么您需要设置一些权限来保护启动设置:- 以 root 身份设置 / etc/grub.com 的所有者和组:
- #chown root:root /etc/grub.conf
- 设置 / etc/grub.conf 文件只有 root 可以读写:
- #chmod og-rwx /etc/grub.conf
- 单用户模式需要认证:
- #sed -i "/SINGLE/s/sushell/sulogin/"/etc/sysconfig/init
- #sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init
根据您系统的重要性,有时您需要禁用 Linux 主机使用 USB 存储设备。有很多方法来禁用 USB 存储设备,以下是为您提供最常用的设备:
用你最喜欢的文本编辑器打开 "blacklist.conf" 文件:
- #nano /etc/modprobe.d/blacklist.conf
打开文件后,将以下信息添加到文件底部并保存并退出:
- blacklist usb_storage
然后打开 rc.local 文件,添加以下两行数据:
- modprobe –r usb_storage
- exit 0
第一次启动后,首先要更新系统,这个步骤应该被认为比较简单。通常,您可以打开终端,然后执行相应的命令。在 Kali Linux 中,您可以使用以下命令更新系统:
- apt-get update & apt-get upgrade
列出您的 Linux 系统中的所有已安装的软件包,然后删除不需要的软件包。如果您正在服务器上工作,那么您必须非常小心,因为服务器通常仅用于安装应用程序和服务。您可以按照以下命令列出在 Kali Linux 中安装的软件包:
记住要禁用那些不需要减少服务器攻击面的服务。如果您在自己的 Linux 服务器中发现以下遗留服务,请快速删除它们:
Telnet 服务器
RSH 服务器
NIS 服务器
TFTP 服务器
TALK 服务器
识别与互联网的开放连接是非常重要的任务。在 Kali Linux 中,我们可以使用以下命令查找隐藏的开放端口:
是的,SSH 真的很安全,但是我们还要继续在现有的基础上增强其安全性。首先,如果你可以禁用 SSH,那么问题就解决了。但是,如果仍然需要使用它,则需要修改 SSH 的默认配置。切换到目录 / etc / ssh,然后打开 "sshd_config" 文件。
- 将默认端口号(22)更改为另一个号码(例如 99)。
- 确保 root 用户无法通过 SSH 远程登录:
- PermitRootLogin no
- 允许某些特殊用户:
- AllowUsers [username]
如果您需要更丰富的配置,请确保您阅读 SSH 手册并了解该文件中的所有配置项。
另外,您还需要确保在 "sshd_config" 文件中配置以下配置选项:
协议 2
IgnoreRhosts 为 yes
Hostbase 验证无
PermitEmptyPasswords no
打开 X11Forwarding 没有
MaxAuthTries 5
密码 aes128-ctr,aes192-ctr,aes256-ctr
ClientAliveInterval 900
ClientAliveCountMax 0
UsePAM 是的
最后,设置文件访问权限,以确保只有 root 用户可以修改文件的内容:
- #chown root:root etc/ssh/sshd_config
- #chmod 600 /etc/ssh/sshd_config
SELinux 是支持访问控制安全策略的内核安全机制。SELinux 有三种配置模式:
禁用:关闭
允许:打印警告
执法:政策是强制执行
打开配置文件:
- #nano /etc/selinux/config
确保 SELinux 已打开:
- SELINUX=enforcing
保护 Linux 主机网络活动也非常重要,从来没有希望防火墙能够帮助您完成所有的任务。打开 / etc/sysctl.conf 文件并进行以下设置:
- 将 net.ipv4.ip_forward 参数设置为 0。
- 将 net.ipv4.conf.all.send_redirects 和 net.ipv4.conf.default.send_redirects 参数设置为 0。
- 将 net.ipv4.conf.all.accept_redirects 和 net.ipv4.conf.default.accept_redirects 参数设置为 0。
- 将 net.ipv4.icmp_ignore_bogus_error_responses 参数设置为 1。
人们通常在不同的地方使用相同的密码,这是一个非常糟糕的习惯。旧密码存储在 / etc / security / opasswd 文件中,我们需要使用 PAM 模块来管理 Linux 主机中的安全策略。在 Debian 版本中,您可以打开 / etc/pam.d/common-password 文件,并添加以下信息,以防止用户重复使用最近使用的四个密码:
- auth sufficient pam_unix. so likeauthnullok
- password sufficient pam_unix.so remember=4
另一个密码策略是强制用户使用强大的密码。PAM 模块提供了一个库(pam_cracklib),可以帮助您的服务器进行字典攻击和爆破攻击。打开 / etc/pam.d/system-auth 文件并添加以下信息:
- /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8lcredit=–1 ucredit=–2 dcredit=–2 ocredit=–1
Linux 是密码哈希,所以你想确保系统使用 SHA512 哈希算法。
另一个有趣的功能是 "五次锁定帐户后的密码输出错误"。打开 / etc/pam.d/password-auth 文件并添加以下数据:
- auth required pam_env.so
- auth required pam_faillock.so preauth audit silent deny= 5unlock_time =604800
- auth [success=1 default =bad] pam_unix.so
- auth [default=die] pam_faillock.so authfail audit deny =5unlock_time=604800
- auth sufficient pam_faillock.so authsucc audit deny=5unlock_time = 604800
- auth required pam_deny.so
然后打开 / etc/pam.d/system-auth 文件并添加以下信息:
- auth required pam_env.so
- auth required pam_faillock.so preauth audit silent deny= 5 unlock_time=604800
- auth [success=1 default =bad] pam_unix.so
- auth [default=die] pam_faillock.so authfail audit deny =5unlock_time=604800
- auth sufficient pam_faillock.so authsucc audit deny=5unlock_time = 604800
- auth required pam_deny.so
密码错误五次后,只有管理员可以解锁帐号,解锁命令如下:
- # /usr/sbin/faillock –user <userlocked> –reset
另一个好习惯就是设置 "密码到期后的 90 天"。
- 将 / etc/login.defs 中的 PASS_MAX_DAYS 参数设置为 90。
- 修改当前用户的密码到期时间:
- #chage –maxdays 90 <user>
现在,我们必须限制对 su 命令的访问。打开 / etc/pam.d/su 文件,然后设置 pam_wheel.so 参数:
- auth required pam_wheel.so use_uid
最后一步是禁止非 root 用户访问系统帐户。可以使用以下 bash 脚本完成此步骤:
- #!/bin/bash
- for user in `awk – F: '($3 < 500) {print $1 }'/etc / passwd`; do
- if [ $user != "root" ]
- then
- /usr/sbin/usermod –L $user
- if [ $user != "sync" ] && [ $user != "shutdown" ] && [ $ user != "halt" ]
- then /usr/sbin/ usermod –s /sbin/ nologin $user
- fi
- fi
- done
14 – 许可和验证
毫无疑问,如果要确保 Linux 主机的安全性,那么权限当然是最重要的。
使用以下命令为 / etc / anacrontab,/ etc / crontab 和 / etc/cron.* 设置适当的权限:
- #chown root:root /etc/anacrontab
- #chmod og-rwx /etc/anacrontab
- #chown root:root /etc/crontab
- #chmod og-rwx /etc/crontab
- #chown root:root /etc/cron.hourly
- #chmod og-rwx /etc/cron.hourly
- #chown root:root /etc/cron.daily
- #chmod og-rwx /etc/cron.daily
- #chown root:root /etc/cron.weekly
- #chmod og-rwx /etc/cron.weekly
- #chown root:root /etc/cron.monthly
- #chmod og-rwx /etc/cron.monthly
- #chown root:root /etc/cron.d
- #chmod og-rwx /etc/cron.d
为 / var / spool / cron 分配适当的权限:
- #chown root:root <crontabfile>
- #chmod og-rwx <crontabfile>
为 "passwd","group","shadow" 和 "gshadow" 文件分配适当的权限:
- #chmod 644 /etc/passwd
- #chown root:root /etc/passwd
- #chmod 644 /etc/group
- #chown root:root /etc/group
- #chmod 600 /etc/shadow
- #chown root:root /etc/shadow
- #chmod 600 /etc/gshadow
- #chown root:root /etc/gshadow
来源: http://www.tuicool.com/articles/RFvIB3f