威尼斯www.9778.com-威尼斯正版官方网站

15步打造一个安全的Linux服务器

日期:2020-01-30编辑作者:服务器&运维

可能大多数人都觉得Linux是安全的吧?但我要告诉你,这种想法绝对是错误的!假设你的笔记本电脑在没有增强安全保护的情况下被盗了,小偷首先就会尝试用“root”(用户名)和“toor”(密码)来登录你的电脑,因为这是KaliLinux的默认用户名和密码,而大多数人仍然会继续使用它们。你是否也是这样?我希望你不是!

有人说,安全不是一个产品,而是一个过程(LCTT 注:安全公司 McAfee 认为,安全风险管理是一个方法论,而不是安全产品的堆叠)。虽然 SSH 协议被设计成使用加密技术来确保安全,但如果使用不当,别人还是能够破坏你的系统:比如弱密码、密钥泄露、使用过时的 SSH 客户端等,都能引发安全问题。

在这篇文章中,我将会与大家分享一些能够让你的Linux主机更加安全的方法,其中还会包括一些渗透测试技巧。需要注意的是,目前市面上有很多不同的Linux发行版,从命令行工具的角度来看,这些版本虽然各有不同,但原理和处理逻辑是一样的。接下来,让我们开始吧!

1. 记录主机信息

在考虑 SSH 认证方案时,大家普遍认为公钥认证比密码认证更安全。然而,公钥认证技术并不是为公共环境设置的,如果你在一台公用电脑上使用公钥认证登录 SSH 服务器,你的服务器已经毫无安全可言了,公用的电脑可能会记录你的公钥,或从你的内存中读取公钥。如果你不信任本地电脑,那你最好还是使用其他方式登录服务器。现在就是“一次性密码(OTP)”派上用场的时候了,就像名字所示,一次性密码只能被使用一次。这种一次性密码非常合适在不安全的环境下发挥作用,就算它被窃取,也无法再次使用。

1-记录主机信息

每当你在对一台新的Linux主机进行安全增强工作时,你需要创建一个文档并在文档中记录下本文所列出的各种项目,而且在工作完成之后,你还要对这些项目进行核查。除此之外,在文档的开头处,你需要记录下这台Linux主机的相关信息:

设备名称

IP地址

Mac地址

进行安全增强工作的负责人(其实就是你)

日期

资产编号(如果你在为一家企业工作,那么你就需要记录下这台设备的资产编号)

每当您正在使用新的Linux主机进行安全增强时,您需要创建一个文档并记录本文档中列出的项目,工作完成后,您将需要检查这些项目。另外,在开始时该文档,您需要记录有关Linux主机的信息:

有个生成一次性密码的方法是通过谷歌认证器,但在本文中,我要介绍的是另一种 SSH 登录方案:OTPW,它是个一次性密码登录的软件包。不像谷歌认证,OTPW 不需要依赖任何第三方库。

2-BIOS保护

你需要为这台主机的BIOS设置一个密码,以确保终端用户无法修改或覆盖BIOS中的安全设置,这是非常重要的!BIOS的管理员密码设置完成之后,你需要禁止主机从外部媒体设备(USB/CD/DVD)启动。如果你忽略了这项设置,那么任何人都可以通过一个写入了启动镜像的U盘来访问这台主机中的数据。

在新版服务器的主板中内置有一个Web服务器,你可以利用它来远程访问主机中的数据。所以你要确保已经修改了服务器管理页面的默认密码,如果可以的话,请直接禁用这个功能。

  • 设备名称
  • IP地址
  • MAC地址
  • 负责安全提升工作的人(实际上是你)
  • 日期
  • 资产编号(如果您正在开展业务,则需要记录设备的资产编号)

图片 1

3-硬盘加密(机密性)

大多数Linux发行版在进行安装之前,都允许你对磁盘进行加密。磁盘加密是非常重要的,因为当你的计算机被盗之后,就算小偷将你的硬盘插入他们自己的计算机中也仍然无法读取你的数据。

在下图中,选择列表中的第三个选项:Guided-use entire disk and set up encrypted LVM(LVM代表逻辑卷管理器)。

图片 2

如果你的Linux发行版不支持加密的话,你可以选择使用类似TrueCrypt这样的加密软件。

图片 3

2. BIOS保护

 

4-磁盘保护(可用性)

数据备份是一个很好的习惯,当系统发生崩溃或系统更新出现故障时,备份的优点就突显出来了。对于某些重要的服务器来说,为了防止灾难(包括自然灾害和人为因素)带来的影响,备份数据通常需要进行离线存储。当然了,备份也需要我们花精力去管理。比如说,旧的备份文件需要保存多久?何时需要对系统进行备份?(每天?每周?还是每月?)

核心系统的磁盘需要进行多个分区:

/

/boot

/usr

/home

/tmp

/var

/opt

磁盘分区可以在系统发生故障的情况下依然保障系统的性能和安全性。在下图中,你可以看到Kali Linux在安装的过程中所提供的分区选项。

图片 4

您需要为此主机的BIOS设置密码,以确保最终用户无法修改或覆盖BIOS中的安全设置,这非常重要!设置BIOS管理员密码后,您需要从外部媒体设备(USB / CD / DVD)禁用主机启动。如果忽略此设置,任何人都可以通过写入引导映像的U盘访问此主机中的数据。

OTPW 是什么

OTPW 由一次性密码生成器和 PAM 认证规则组成。在 OTPW 中一次性密码由生成器事先生成,然后由用户以某种安全的方式获得(比如打印到纸上)。另一方面,这些密码会通过 Hash 加密保存在 SSH 服务器端。当用户使用一次性密码登录系统时,OTPW 的 PAM 模块认证这些密码,并且保证它们不能再次使用。

 

5-锁定boot目录

boot目录中包含大量的重要文件,这些文件与Linux内核有关,所以你需要通过下列步骤来确保这个目录只开放了“只读”权限。首先,打开“fstab”文件。

图片 5

接下来,将下图所示的最后一行数据添加进去。

图片 6

这一步完成之后,你需要执行下列命令来设置该文件的拥有者:

#chown root:root /etc/fstab

接下来还需要设置一些权限来保护启动设置:

-设置/etc/grub.conf的拥有者(owner)和组(group)为root用户:

#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

在内置Web服务器的新服务器主板中,您可以使用它来远程访问主机数据。因此,您需要确保已经修改了服务器管理页面的默认密码,如果可以,直接禁用此功能。

步骤1:OTPW 的安装和配置

 

6-禁用USB存储设备

根据你系统的重要程度,有时你需要禁止Linux主机使用USB存储设备。现在有很多种方法可以禁用USB存储设备,下面给大家提供的是最常用的一种:

用你最喜欢的文本编辑器打开“blacklist.conf”文件:

#nano /etc/modprobe.d/blacklist.conf

打开文件之后,将下列信息添加到文件底部,然后保存并退出:

blacklist usb_storage

然后打开rc.local文件:

 #nano /etc/rc.local

添加下面这两行数据:

 modprobe -r usb_storage

exit 0

3. 硬盘加密

在 Debian, Ubuntu 或 Linux Mint 发行版上

使用 apt-get 安装:

  1. $ sudo apt-get install libpam-otpw otpw-bin

打开针对 SSH 服务的 PAM 配置文件(/etc/pam.d/sshd),注释掉下面这行(目的是禁用 PAM 的密码认证功能):

  1. #@include common-auth

添加下面两行(用于打开一次性密码认证功能):

  1. auth required pam_otpw.so
  2. session optional pam_otpw.so

图片 7

 

7-系统更新

首次启动之后,第一件事就是更新系统,这一步应该算比较简单了。通常情况下,你可以打开终端,然后执行相应的命令即可。在Kali Linux中,你可以使用下图所示的命令进行系统更新:

图片 8

图片 9

大多数Linux发行版允许您在继续安装之前加密磁盘。磁盘加密非常重要,因为当您的电脑被盗时,即使小偷将您的硬盘驱入自己的电脑仍然无法读取您的数据。

在 Fedora 或 CentOS/RHEL 发行版上

在基于 RedHat 的发行版中没有编译好的 OTPW,所以我们需要使用源代码来安装它。

首先,安装编译环境:

  1. $ sudo yum git gcc pam-devel
  2. $ git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw
  3. $ cd otpw

打开 Makefile 文件,编辑以“PAMLIB=”开头的那行配置:

64 位系统:

  1. PAMLIB=/usr/lib64/security

32 位系统:

  1. PAMLIB=/usr/lib/security

编译安装。需要注意的是安装过程会自动重启 SSH 服务一下,所以如果你是使用 SSH 连接到服务器,做好被断开连接的准备吧(LCTT 译注:也许不会被断开连接,即便被断开连接,请使用原来的方式重新连接即可,现在还没有换成一次性口令方式。)。

  1. $ make
  2. $ sudo make install

现在你需要更新 SELinux 策略,因为 /usr/sbin/sshd 会往你的 home 目录写数据,而 SELinux 默认是不允许这么做的。如果没有使用 SELinux 服务(LCTT 注:使用 getenforce 命令查看结果,如果是 enforcing,就是打开了 SELinux 服务),请跳过这一步。

  1. $ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol
  2. $ sudo semodule -i mypol.pp

接下来打开 PAM 配置文件(/etc/pam.d/sshd),注释下面这行(为了禁用密码认证):

  1. #auth substack password-auth

添加下面两行(用于打开一次性密码认证功能):

  1. auth required pam_otpw.so
  2. session optional pam_otpw.so

 

8-检查已安装的package

列出你Linux系统中所有已安装的package,然后删除那些你不需要的。如果你正在操作的是一台服务器的话,那么你就要非常仔细了,因为服务器中一般只用安装必须使用的应用程序和服务。你可以通过下图所示的命令列出Kali Linux中安装的package:

图片 10

请记住,禁用那些你不需要的服务可以降低服务器的攻击面。如果你在自己的Linux服务器中发现了下面这些遗留服务的话,请赶紧删除它们:

Telnet server

RSH server

NIS server

TFTP server

TALK server

在下图中,选择列表中的第三个选项:引导使用整个磁盘并设置加密的LVM(LVM代表逻辑卷管理器)。

步骤2:配置 SSH 服务器,使用一次性密码

打开 /etc/ssh/sshd_config 文件,设置下面三个参数。你要确保下面的参数不会重复存在,否则 SSH 服务器可能会出现异常。

  1. UsePrivilegeSeparation yes
  2. ChallengeResponseAuthentication yes
  3. UsePAM yes

你还需要禁用默认的密码认证功能。另外可以选择开启公钥认证功能,那样的话你就可以在没有一次性密码的时候使用公钥进行认证。

  1. PubkeyAuthentication yes
  2. PasswordAuthenticationno

重启 SSH 服务器。

Debian, Ubuntu 或 Linux Mint 发行版:

  1. $ sudo service ssh restart

Fedora 或 CentOS/RHEL 7 发行版:

  1. $ sudo systemctl restart sshd

(LCTT 译注:虽然这里重启了 sshd 服务,但是你当前的 ssh 连接应该不受影响,只是在你完成下述步骤之前,无法按照原有方式建立新的连接了。因此,保险起见,要么多开一个 ssh 连接,避免误退出当前连接;要么将重启 sshd 服务器步骤放到步骤3完成之后。)

 

9-检查开放端口

识别面向互联网的开放连接是一项非常重要的任务。在Kali Linux中,我们可以使用下图所示的命令来发现隐藏的开放端口:

图片 11

图片 12

步骤3:使用 OTPW 产生一次性密码

之前提到过,你需要事先创建一次性密码,并保存起来。使用 otpw-gen 命令创建密码:

  1. $ cd ~
  2. $ otpw-gen > temporary_password.txt

图片 13

这个命令会让你输入密码前缀,当你以后登录的时候,你需要同时输入这个前缀以及一次性密码。密码前缀是另外一层保护,就算你的一次性密码表被泄漏,别人也无法通过暴力破解你的 SSH 密码。

设置好密码前缀后,这个命令会产生 280 个一次性密码(LCTT 译注:保存到 ~/.otpw 下),并将它们导出到一个文本文件中(如 temporary_password.txt)。每个密码(默认是 8 个字符)由一个 3 位十进制数索引。你需要将这个密码表打印出来,并随身携带。

图片 14

查看 ./.otpw 文件,它存放了一次性密码的 HASH 值。头 3 位十进制数与你随身携带的密码表的索引一一对应,在你登录 SSH 服务器的时候会被用到。

  1. $ more ~/.otpw

  1. OTPW1
  2. 2803128
  3. 191ai+:ENwmMqwn
  4. 218tYRZc%PIY27a
  5. 241ve8ns%NsHFmf
  6. 055W4/YCauQJkr:
  7. 102ZnJ4VWLFrk5N
  8. 2273Xww55hteJ8Y
  9. 1509d4b5=A64jBT
  10. 168FWBXY%ztm9j%
  11. 000rWUSdBYr%8UE
  12. 037NvyryzcI+YRX
  13. 122rEwA3GXvOk=z

 

10-增强SSH的安全性

没错,SSH确实是安全的,但是我们仍然要在现有的基础上继续增强它的安全性。首先,如果你可以禁用SSH的话,那么问题就解决了。但是,如果你仍然需要使用它,那么你就需要修改SSH的默认配置了。切换到目录/etc/ssh,然后打开“sshd_config”文件。

图片 15

-将默认端口号(22)修改为其他的数字(例如99)。

-确保root用户无法通过SSH进行远程登录:

PermitRootLogin no

-允许某些特殊的用户:

AllowUsers [username]

如果你需要进行更加丰富的配置,请确保在阅读了SSH手册并了解文件中全部配置项的情况下进行操作。【参考资料】

除此之外,你还需要确保在“sshd_config”文件中配置下面这些额外的配置选项:

Protocol2

IgnoreRhosts to yes

HostbasedAuthentication no

PermitEmptyPasswords no

X11Forwarding no

MaxAuthTries 5

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

ClientAliveInterval 900

ClientAliveCountMax 0

UsePAM yes

最后,设置该文件的访问权限,确保只有root用户可以修改该文件的内容:

#chown root:root etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

如果您的Linux发行版不支持加密,则可以选择使用TrueCrypt等加密软件。

测试一次性密码登录 SSH 服务器

使用普通的方式登录 SSH 服务器:

  1. $ ssh user@remote_host

如果 OTPW 成功运行,你会看到一点与平时登录不同的地方:

  1. Password191:

现在打开你的密码表,找到索引号为 191 的密码。

  1. 023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB191 fOO+PeiD247 vAnZ EgUt

从上表可知,191 号密码是“fOO+PeiD”。你需要加上密码前缀,比如你设置的前缀是“000”,则你实际需要输入的密码是“000fOO+PeiD”。

成功登录后,你这次输入的密码自动失效。查看 ~/.otpw 文件,你会发现第一行变成“---------------”,这表示 191 号密码失效了。

  1. OTPW1
  2. 2803128
  3. ---------------
  4. 218tYRZc%PIY27a
  5. 241ve8ns%NsHFmf
  6. 055W4/YCauQJkr:
  7. 102ZnJ4VWLFrk5N
  8. 2273Xww55hteJ8Y
  9. 1509d4b5=A64jBT
  10. 168FWBXY%ztm9j%
  11. 000rWUSdBYr%8UE
  12. 037NvyryzcI+YRX
  13. 122rEwA3GXvOk=z

 

11-启用SELinux

SELinux是一种支持访问控制安全策略的内核安全机制。SELinux有三种配置模式:

Disabled: Turned-off

Permissive: Prints warnings

Enforcing: Policy is enforced

打开配置文件:

#nano /etc/selinux/config

确保SELinux已开启:

SELINUX=enforcing

图片 16

图片 17

总结

在这个教程中,我介绍了如何使用 OTPW 工具来设置一次性登录密码。你也许意识到了在这种双因子的认证方式中,打印一张密码表让人感觉好 low,但是这种方式是最简单的,并且不用依赖任何第三方软件。无论你用哪种方式创建一次性密码,在你需要在一个不可信任的环境登录 SSH 服务器的时候,它们都很有用。你可以就这个主题来分享你的经验和观点。

提高Ubuntu的SSH登陆认证速度的办法 http://www.linuxidc.com/Linux/2014-09/106810.htm

开启SSH服务让Android手机远程访问 Ubuntu 14.04  http://www.linuxidc.com/Linux/2014-09/106809.htm

如何为Linux系统中的SSH添加双重认证 http://www.linuxidc.com/Linux/2014-08/105998.htm

在 Linux 中为非 SSH 用户配置 SFTP 环境 http://www.linuxidc.com/Linux/2014-08/105865.htm

Linux 上SSH 服务的配置和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm

SSH入门学习基础教程 http://www.linuxidc.com/Linux/2014-06/103008.htm

SSH免密码登录详解  http://www.linuxidc.com/Linux/2015-03/114709.htm


via:

作者:Dan Nanni 译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/117871.htm

图片 18

12-网络参数

保护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。

4. 磁盘保护

13-密码策略

人们通常会在不同的地方使用相同的密码,这是一个非常不好的习惯。旧的密码保存在/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

另一个好习惯就是设置“密码九十天后过期”。

-将/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

核心系统磁盘需要分区:

15-额外的操作

除了上述配置之外,下面这些因素也应该纳入我们的考虑范围内。

第一:

-在/etc/security/limits.conf文件中添加“hardcore 0”;

-在/etc/sysctl.conf文件中添加“fs.suid_dumpable= 0”;

第二:

-在/etc/sysctl.conf文件中添加“kernel.exec-shield= 1”

第三:

-在/etc/sysctl.conf文件中添加“kernel.randomize_va_space= 2”;
  • /
  • / boot
  • / usr
  • /家
  • / tmp
  • / var
  • /选择

结束语

在这篇文章中,我给大家介绍了几个能够增强Linux系统安全性的重要配置。但是,这只是冰山一角,还有很多复杂且有效的设置项还没来得及与大家分享。如果你还想了解更多关于增强Linux安全性的内容,请参考我在Pluralsight上的课程。

磁盘分区可能在系统故障的情况下仍然保护系统的性能和安全性。在下图中,您可以在安装过程中看到由Kali Linux提供的分区选项。

图片 19

5. 锁定引导目录

引导目录包含大量与Linux内核相关的重要文件,因此您需要确保目录仅通过以下步骤“只读”才能打开。首先打开“fstab”文件。

图片 20

接下来,添加下图所示的最后一行数据。

图片 21

完成此步骤后,您需要执行以下命令来设置文件的所有者:

#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 

6. 禁用USB存储设备

根据您系统的重要性,有时您需要禁用Linux主机使用USB存储设备。有很多方法来禁用USB存储设备,以下是为您提供最常用的设备:

用你最喜欢的文本编辑器打开“blacklist.conf”文件:

#nano /etc/modprobe.d/blacklist.conf 

打开文件后,将以下信息添加到文件底部并保存并退出:

blacklist usb_storage 

然后打开rc.local文件,添加以下两行数据:

modprobe –r usb_storage  exit 0 

7. 系统更新

第一次启动后,首先要更新系统,这个步骤应该被认为比较简单。通常,您可以打开终端,然后执行相应的命令。在Kali Linux中,您可以使用以下命令更新系统:

apt-get update & apt-get upgrade 

8. 检查已安装的软件包

列出您的Linux系统中的所有已安装的软件包,然后删除不需要的软件包。如果您正在服务器上工作,那么您必须非常小心,因为服务器通常仅用于安装应用程序和服务。您可以按照以下命令列出在Kali Linux中安装的软件包:

图片 22

记住要禁用那些不需要减少服务器攻击面的服务。如果您在自己的Linux服务器中发现以下遗留服务,请快速删除它们:

  • Telnet服务器
  • RSH服务器
  • NIS服务器
  • TFTP服务器
  • TALK服务器

9. 检查打开的端口

识别与互联网的开放连接是非常重要的任务。在Kali Linux中,我们可以使用以下命令查找隐藏的开放端口:

图片 23

10. 增强SSH的安全性

是的,SSH真的很安全,但是我们还要继续在现有的基础上增强其安全性。首先,如果你可以禁用SSH,那么问题就解决了。但是,如果仍然需要使用它,则需要修改SSH的默认配置。切换到目录/ etc / ssh,然后打开“sshd_config”文件。

图片 24

-将默认端口号(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 

11 – 启用SELinux

SELinux是支持访问控制安全策略的内核安全机制。SELinux有三种配置模式:

  • 禁用:关闭
  • 允许:打印警告
  • 执法:政策是强制执行

打开配置文件:

#nano /etc/selinux/config  

确保SELinux已打开:

SELINUX=enforcing 

12. 网络参数

保护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。

13. 密码政策

人们通常在不同的地方使用相同的密码,这是一个非常糟糕的习惯。旧密码存储在/ 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 

【编辑推荐】

本文由威尼斯www.9778.com发布于服务器&运维,转载请注明出处:15步打造一个安全的Linux服务器

关键词:

每天一个 Linux 命令:cd 命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。所以,...

详细>>

有趣!10个你不得不知的Linux终端游戏

Linux终端在多数人眼中,是一个非常单调和无聊的工作环境,一个纯黑色背景的输入框,一串串让人记哭的命令,仿佛...

详细>>

最详细的 Linux 服务器性能参数指标

一个基于Linux操作系统的服务器运行的同时,也会表征出各种各样参数信息。通常来说运维人员、系统管理员会对这些...

详细>>

每天一个 Linux 命令:pwd 命令

Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工...

详细>>