从内核到网络,40个Linux服务器安全加固小技巧(上)

a0agdX0 2019-03-20

大多数人认为Linux是安全的,其实这是一个错误的假设。想象一下,你的笔记本电脑在没有安全加固的情况下被盗。小偷可能会认为你的用户名是“root”而你的密码是“toor”,因为这是Kali设置的默认密码,很多人一直使用从未修改。

每个Linux系统都将受益于更高的安全性,特别是如果它包含敏感数据。下面跟大家分享40个实用的Linux服务器安全加固的小技巧,希望可以帮助大家更好的保护咱们的Linux服务器安全。

从内核到网络,40个Linux服务器安全加固小技巧(上)

1. 加密Linux服务器的数据通信

通过网络传输的所有数据都可以被监控到。尽可能使用密码或使用密钥/证书加密传输数据。

  • 使用scp,ssh,rsync或sftp进行文件传输。你还可以使用一些特殊的工具如:sshfs和fuse,安装远程服务器文件系统或自己的主目录。
  • GnuPG支持对数据、通信进行加密和签名,具有通用密钥管理系统以及各种公钥目录的访问模块。
  • 使用OpenVPN,经济高效的轻量级SSL VPN。
  • 配置和安装 Lighttpd SSL(安全服务器层)Https。
  • 配置和安装Apache SSL(安全服务器层)Https(mod_ssl)。

2.避免在Linux上使用FTP、Telnet和Rlogin / Rsh服务

在大多数网络配置下,使用数据包嗅探器的同一网络上的任何人都可以捕获用户名,密码,FTP / telnet / rsh命令和传输的文件。

常见解决方案:

使用OpenSSH,SFTP或FTPS(FTP over SSL),将FTP或TLS加密添加到FTP。输入以下yum命令删除NIS、rsh和其他过时服务:

# yum erase xinetd ypserv tftp-server telnet-server rsh-server

3.最小化程序包达到减少Linux中的漏洞

避免安装不必要的软件从而避免软件漏洞。使用RPM包管理器(如yum或apt-get和/或dpkg)查看系统上所有已安装的软件包集。删除所有不需要的包。

# yum list installed
# yum list packageName
# yum remove packageName
# dpkg --list
# dpkg --info packageName
# apt-get remove packageName

4.保证每个系统或VM实例单独一个网络服务

在单独的服务器或VM实例上运行不同的网络服务。这限制了可能受到危害的其他服务的数量。例如:如果黑客能够成功利用Apache等软件流,他将获得对整个服务器的访问权限,包括其他服务,如MySQL、PgSQL、电子邮件服务器等。

5.保持使的Linux内核和软件是最新的

应用安全补丁是维护Linux服务器的重要部分。在补丁发布后尽快完成安全的更新。

使用RPM包管理器(如yum和/或apt-get和/或dpkg)来启动所有安全更新。

# yum update
或者
# apt-get update && apt-get upgrade

6.使用Linux安全扩展

Linux附带了各种各样的安全补丁,用于防止错误配置或受损程序。条件允许,可以使用SELinux或者其他Linux安全扩展来强制限制网络和其他程序。

7.SELinux

SELinux提供灵活的强制访问控制(MAC),运行MAC内核可保护系统免受可能损坏或破坏系统的恶意应用程序的影响。

从内核到网络,40个Linux服务器安全加固小技巧(上)

8.Linux root 帐户使用强密码策略

使用useradd / usermod命令可以创建和维护root 帐户。确保拥有强密码策略。例如:一个强密码包括至少8个字符长,以及字母,数字,特殊字符,上下字母等混合。

9.为Linux用户设置密码的时效以提高安全性

chage命令显示密码到期详细信息以及上次密码更改日期。系统使用这些详细信息来确定用户何时必须更改其密码。

禁用密码时效

# chage -M 99999 userName

获取密码到期信息

# chage -l userName

更改任何用户的密码时效

#chage -M 60 -m 7 -W 7 userName

10.限制在Linux上使用旧密码

你可以阻止所有用户在Linux下使用或重复使用相同的旧密码。在pam_unix模块中的参数可以记录不能再用的旧密码的数量。

11.登录失败后锁定root帐户

在Linux下,可以使用faillog命令显示faillog记录、设置登录失败限制,可用于维护故障计数器和限制。

查看失败的登录

faillog

在登录失败后解锁帐户

faillog -r -u userName

注意:可以使用passwd命令锁定和解锁帐户:

# lock account
passwd -l userName
# unlocak account
passwd -u userName

12.验证帐户是否存在空密码

输入以下命令

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

锁定所有空密码帐户:

# passwd -l accountName

13.确认除ROOT 之外的用户,UID值 为0

确保只有root帐户具有UID 0且具有访问系统的完全权限。

输入以下命令以显示UID设置为0的所有帐户:

# awk -F: '($3 == "0") {print}' /etc/passwd

14.禁用root登录

不要直接以root用户身份登录。在需要时使用sudo执行根级别命令。sudo极大地增强了系统的安全性,同时提供简单的审计和跟踪功能。

从内核到网络,40个Linux服务器安全加固小技巧(上)

15.物理服务器安全性

保护Linux服务器物理控制台访问。配置BIOS并禁用从外部设备(如DVD / CD / USB笔)启动。设置BIOS和grub 引导加载程序密码来保护这些设置。

16.禁用不需要的Linux服务

禁用所有不必要的服务和守护程序。从系统启动中删除所有不需要的服务。

输入以下命令以列出在运行级别#3启动时启动的所有服务:

# chkconfig --list | grep '3:on'

禁用服务,输入:

# service serviceName stop
# chkconfig serviceName off

17.查找侦听网络端口

使用netstat命令列出所有打开的端口和关联的程序:

netstat -tulpn

使用chkconfig命令停止所有不需要的网络服务。

18.删除X Window系统(X11)

不要在基于Linux的专用邮件和Apache / Nginx Web服务器上运行X11。可以禁用和删除X Windows以提高服务器安全性和性能。

编辑/ etc / inittab 并将运行级别设置为3。最后,删除X Windows系统,输入:

在CentOS 7 / RHEL 7服务器上使用以下命令

# yum groupremove "X Window System"
# yum group remove "GNOME Desktop"
# yum group remove "KDE Plasma Workspaces"
# yum group remove "Server with GUI"
# yum group remove "MATE Desktop"

19.在Linux上配置基于防火墙的Iptables和TCPWrappers

强烈建议启用Linux内核防火墙以保护对服务器的未授权访问,过滤流量并仅允许必要的流量。使用TCPWrappers,基于主机的网络ACL系统来过滤对Internet的网络访问。

20.Linux内核/etc/sysctl.conf优化

/etc/sysctl.conf文件用于配置在运行时的内核参数,在Linux启动时从/etc/sysctl.conf读取并应用设置。

示例/etc/sysctl.conf:

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1
# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1

内容译自:https://www.cyberciti.biz/tips/linux-security.html

后20条请见下期详解~

从内核到网络,40个Linux服务器安全加固小技巧(上)

相关推荐