来自 服务器&运维 2020-02-08 07:22 的文章
当前位置: 澳门威尼斯人平台 > 服务器&运维 > 正文

15步塑造一个虎口脱离危险的Linux服务器

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

本文全面细致的介绍了在Linux下加固apache+php+mysql的方法,通过仔细阅读本文,你可以快速掌握安全配置apache,php,和mysql的方方面面,还有chroot这个前沿而强悍的技术,依靠这些知识,完全可以让你的WWW服务器在层出不穷的SQL注射(SQL Injection)和CSS跨站脚本攻击(Cross Site Script)中屹立不倒。

修改默认连接 22 端口

一般情况下 linux 服务器默认开启的是 22 端口,所以如多其让人想对你的服务器做什么的话,也会从 22 端口入手。那么我们可以通过修改端口,来避免这种情况。具体操作如下:
在 root 用户下执行以下命令

vi /etc/ssh/sshd_config

图片 1

image.png

执行之后找到如上图信息,取消注释,修改成 1-1024 之外的端口,保存之后,即修改了相应的端口。最后执行以下命令重启 ssh 服务。

service ssh restart

修改端口之后,通过 ssh 远程连接服务器方式如下:

ssh -p 3000 your_username@your_password

一、创建一个受限的账户,而不是使用root(拥有linux无上的权限)管理服务器

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

从动网的几个漏洞到独孤剑客的网站被黑,脚本攻击闹的沸沸扬扬,可见它在网络攻击中终于显现出他的重要性了。由于程序开发人员无意或有意的不小心,用Perl、PHP、ASP等编写的脚本就会出现这样或那样的错误,轻则导致泄露路径,重则导致整个服务器被攻陷甚至蔓延到整个网络。难道我们就非得把所用的脚本读N遍,认真的分析?我相信不是人人都有这等功力的,就算有这样的功力也不会枉费那么多的时间和精力。

禁止 root 用户登录

一般情况下,我们都会使用阿里云,或者腾讯云等大公司的云产品,那么在购买服务器之后,最高权限的用户名默认为 root ,其他别有用心的人,会首先扫描该用户下的端口,那么我们可以通过禁止 root 用户登录来避免这一点。
具体操作如下:
添加其他超级用户:
在 new_user 用户下执行以下命令

vi /etc/ssh/sshd_config

输入 new_user 的密码
在最后一行插入如下代码:

AllowUsers new_user

保存并退出

useradd username;passwd username;usermod -aG wheel username

1-记录主机信息

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

设备名称

IP地址

Mac地址

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

日期

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

你可能会问:“我既想用网上免费的程序,又不想因此受到重创。难道就没有一个两全的办法?”

配置 IP table

清空之前的 iptable:

iptables -F

编辑 iptable

vi /etc/iptables.up.rules

图片 2

image.png

图片 3

image.png

图片 4

image.png

图片 5

image.png

图片 6

执行防火墙规则

图片 7

激活防火墙

图片 8

建立防火墙启动脚本

图片 9

为上面的脚本设置执行权限

新账户登录服务器,当需要使用管理命令:sudo COMMAND

2-BIOS保护

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

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

针对windows主机,我们可以使用IISLockdown,SecureIIS之类的

fail2ban

二、使用密钥登录服务器,而不是密码

3-硬盘加密(机密性)

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

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

图片 10

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

图片 11

针对*nix主机给大家提出两个方案,一个就是给apache装上mod-security模块,另外一个办法就是把LAMP放置在一个chroot jail环境中。当然,最强的还是把两个方案结合在一起咯:)

ssh-keygen 生成密钥对;

4-磁盘保护(可用性)

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

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

/

/boot

/usr

/home

/tmp

/var

/opt

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

图片 12

下面,让我们一起来分享这两个方案

ssh-copy-id username@remote ip 将生成的公钥安装到远程计算机上

5-锁定boot目录

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

图片 13

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

图片 14

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

#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

前提:我们只需要有普通的linux操作经验,包括vi的使用等

三、ssh作为服务器的入口,加以保护吧

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

首先,我们先弄清楚几个概念

使用Fail2ban过滤无效的登录尝试,

7-系统更新

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

图片 15

图片 16

什么是Debian:一个完全自由的Linux操作系统,他最令我心仪的就是他的apt包管理工具,让你安装或者升级软件无忧!如果你是CERNET用户的话,推荐你到电子科大

yum install fail2ban;cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local;vim jail.local

8-检查已安装的package

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

图片 17

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

Telnet server

RSH server

NIS server

TFTP server

TALK server

什么是LAMP:就是Linux Apache MySQL Php的缩写,几乎是最强的架站组合

9-检查开放端口

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

图片 18

什么是chroot:是change root的缩写,就是把一个进程守护程序限制在某个特定的root环境中执行,这个被chroot了的程序几乎接近无法访问任何超出了这个root的任何文件或空间,这个root目录(也就是下面我们说到的jail)包含了执行进程守护程序所需要的所有文件,在你正确配置之后,绝大多数的入侵者是不可能跳出jail而接触到外面的文件的。这样我们就可以最大限度的限制入侵者保护自己。

10-增强SSH的安全性

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

图片 19

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

本文主要涉及到的软件

11-启用SELinux

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

Disabled: Turned-off

Permissive: Prints warnings

Enforcing: Policy is enforced

打开配置文件:

#nano /etc/selinux/config

确保SELinux已开启:

SELINUX=enforcing

图片 20

makejail

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。

是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写,他有debian和openbsd的版本

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

Zend Performance Suit

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

Zend公司开发的一套给PHP加速的东西,包括一个代码优化器(optimizer)和一个加速器(accelerator),还有cache功能,很好使的,有了他,php程序跑起来就跟飞一样!可以申请30天试用版本的,如果你觉得好用的话就买下来吧:)mod-security Injection,跨站脚本攻击,很不错的一个模块

本文由澳门威尼斯人平台发布于服务器&运维,转载请注明出处:15步塑造一个虎口脱离危险的Linux服务器

关键词: