Linux服务器加固方案

 

加固方案

前言:本人在几家小厂做开发,主java,因人手问题,前端/安卓/服务器等都有涉猎。这里我结合网上各位大佬的经验和自己收获总结。对linux服务器安全 和 防火墙的配置 和 服务器加固方案 进行简单的讲解,防止初级黑客的攻击,文章主要是针对小白,和运维新手,写的不好,可能有些出入,欢迎各位大佬指点。

   一、适用 Linux 操作系统版本

   1.Red Hat 

   2.centos

   二、Linux操作系统简介

   1.国内外大部分服务器都装了Linux操作系统,各大超算的操作系统,大部分也是用Linux内核重新定制开发的操作系统,因为Linux操作系统相对其他操作系统来说,是比较安全的。

   2.首先因为Linux操作系统是开源免费的,管理员可以根据需求更改源码和设置。任何漏洞都会被大家很快发现,发布漏洞到社区,然后重新打上补丁,这个周期相当短,给黑客作乱的时间很少。

   3.Linux的权限管理比较严格,黑客就算想修改系统文件和日志,必须要管理员密码,重要的文件和日志不会被删除。

   4.大家都有过用windows系统安装软件被捆绑安装一些广告程序的痛苦,一些软件卸载了,过了段时间又自动复活了,Linux的程序管理基本都是利用程序管理软件,比如ubuntu、debian下的软件中心、centos,fedora和红帽的yum,都是从程序开发者官网上或者是相应的发行版社区直接下载安装,不会有被恶意篡改的软件被安装到使用者的电脑上,原理有的类似 Maven。

   三、简单Linux服务器加固方案 (修改配置文件之前请备份!谨记!)

   1.安装Linux系统后会有很多默认的账号和组,黑客扫描服务器这些默认账号默认密码进行测试登陆,从而得到使用权限,需要使用一定不能使用默认密码(从新设置8位以上的密码),如果不使用的话,就删除这些么系统默认不使用的帐号,包括:lp、mail、games、ftp、nobody、postfix等。删除系统默认不使用的组,包括:mail、games、ftp、nobody、postfix等

   2.启动密码策略,修改 /etc/login.defs来实现

    PASS_MAX_DAYS 60  #密码60天过期      PASS_MIN_DAYS 1   #修改密码最小间隔为1天      PASS_MIN_LEN 8    #最短密码要求8位      PASS_WARN_AGE 7   #密码过期前7天内通知用户

   修改密码的命令:   passwd  root 需要输入两次密码,普通用户需要输入一次旧密码,在输入两次确认密码

3.启用证书登录,或者4A登录,安全性高 (非专业运维不建议使用证书登录和4A登录,设置这个比较麻烦)

证书登录详细操作参考网站:https://www.linuxidc.com/Linux/2015-12/126648.htm

4A登录相对比较麻烦,安全性高,4A简介:https://baike.baidu.com/item/4A/1825?fr=aladdin

   4.连续3次输入密码错误,锁定5分钟,主要防黑客爆破,修改配置文件/etc/pam.d/system-auth

    auth required pam_env.so      auth required pam_tally2.so deny=3 unlock_time=300

   5.SSH安全设置,你切换到root权限,使用 last 命令查看登录记录,你会发现有不同ip用root登录失败的记录,显然很多朋友想来你服务器做客,防止这类指定ip段扫描的朋友,简历采取一下措施:

5.1 只使用协议版本2,禁止root登录,禁止空口令登录。

使用root权限  vi /etc/ssh/sshd_config,具体配置自己找下面三句,有#注释就把#注释去掉,然后eq保存:

Protocol 2         #只使用协议版本2 permitrootlogin no #禁止root登录 PermitemptyPasswords no  #禁止空口令登录

5.2 新建一个用户 useradd testuser  ,设置该用户的密码  passwd testuser 密码设置8位以上,使用testuser 登录服务器,再su 到 root 用户。

5.3 重启sshd服务才能生效

service sshd restart 

    6.五分钟无操作的不活动用户自动断开ssh链接

vi /etc/profile,在末尾加入以下内容

TMOUT=300    # 单位/秒

   7.清除系统别名

cp /etc/aliases /etc/aliases_$( date "+%Y%m%d%H%M%S")  #备份 cat /dev/null>&/etc/aliases                            #M清除系统别名 

   8.定期更新系统

Centos系统如果要检查系统更新的话,直接输入

yum -y update  #升级所有包同时也升级软件和系统内核 yum -y upgrade #只升级所有包,不升级软件和系统内核

   9.安装补丁

你要经常检查更新以修复某些缺陷或系统稳定性的改进

否则你存在漏洞的系统将会不时的遭受新的攻击

方法:

列出可用更新:           up2date -l

安装未排除的更新:     up2date -u

安装包括排除的更新  up2date -uf

   10. root 权限用户登录,邮件通知管理员,让您24小时知道是否有陌生朋友来你服务器做客。

详细操作参考我另一篇文章:http://blog.csdn.net/qq_33168577/article/details/79552566

  四、防火墙配置      

CentOS 7.0默认使用的是firewall作为防火墙,需要关闭firewall,安装iptables,详细操作请看:

https://www.linuxidc.com/Linux/2015-05/117473.htm

   1.首先切换成root用户,备份防火墙配置

cp /etc/sysconfig/iptables /etc/sysconfig/iptablesbak

   2.修改防火墙配置

vi /etc/sysconfig/iptables

   3.加入以下规则示例:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT 允许访问指定端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 允许访问通过指定端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 允许访问通过指定端口

你的web端口,和数据库端口可能不是我写的默认端口,自行开放你需要的端口

   4.只允许指定ip访问ssh 默认22端口 和 数据库3306 默认端口:

-A INPUT -s 112.25.xx.xx -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 允许指定ip访问tcp22端口 -A INPUT -s 112.25.xx.xx -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 允许指定ip访问tcp22端口 -A INPUT -s 121.201.xx.xx -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 允许指定ip访问tcp22端口 -A INPUT -s 58.222.xx.xxx -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 允许指定ip访问tcp22端口 -A INPUT -s 112.25.xx.xx -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口 -A INPUT -s 112.25.xx.xx -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口 -A INPUT -s 121.201.xx.xx -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口 -A INPUT -s 58.222.xx.xx -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 允许指定ip访问数据库3366端口

这里可以租一个或两个服务器长期当跳板机使用,或者你自己家里或者公司常用的ip。建议设置2个ip以上,否则一个跳板服务器挂了,就无法远程链接ssh端口了,只能去机房重置防火墙。

   5.防止外网用内网欺骗

#防止外网用内网ip欺骗 #iptables -t nat -A PREROUTING -i eth0 -s 10.10.0.0/8 -j DROP #iptables -t nat -A PREROUTING -i eth0 -s 172.16.10.0/12 -j DROP #iptables -t nat -A PREROUTING -i eth0 -s 192.168.10.0/16 -j DROP

   6.eq保存后,请登录跳板机,备份并编辑跳板机的防火墙

cp /etc/sysconfig/iptables /etc/sysconfig/iptablesbak
vi /etc/sysconfig/iptables

    7.在跳板机的防火墙配置添加*nat规则,连接跳板服务器的xxxx端口,转发到应用服务器的ssh 22端口上

    *nat      :PREROUTING ACCEPT [0:0]      :POSTROUTING ACCEPT [0:0]      :OUTPUT ACCEPT [0:0]      -A PREROUTING -p tcp -i eth0 -d 跳板服务器的ip --dport 跳板服务器的无用端口 -j DNAT --to 应用服务器ip:应用服务器ssh 22端口      COMMIT

示例:

    *nat      :PREROUTING ACCEPT [0:0]      :POSTROUTING ACCEPT [0:0]      :OUTPUT ACCEPT [0:0]      -A PREROUTING -p tcp -i eth0 -d 192.168.2.34 --dport 8321 -j DNAT --to 192.168.2.35:22      COMMIT

修改后eq保存

   8.跳板服务器和应用服务器都重启防火墙 使以上配置生效

service iptables restart

   9.原理图

10.Linux防火墙 详细介绍和教程请参考:https://www.cnblogs.com/alimac/p/5848372.html

   五、服务器监控/异常邮箱告警 (不建议非专业运维安装这类监控软件)

   1.Linux常见监控软件 有 NagiOS、Cacti、Zabbix、Monit 等,都是有服务器端 和 客户端[多] (监控端 和 被监控端[多])

   2.这类软件都是监控服务器集群的,所以用来监控3台以下服务器有点杀鸡用牛刀了。

   3.可以监控服务器安装了Tomcat/mysql/oracle/  等等软件 占用cpu的大小,占用内存大小等

   4.也可以监控CPU/内存/硬盘空间/MySQL使用率/等所有硬件

   5.软件 或 硬件指数 超过指定阀值,设置邮箱告警。

   6.小编在运维朋友的协助下 只安装成功过 zabbix,下面是示例图片:

详细Zabbix安装配置操作请参考我另一篇文章:http://blog.csdn.net/qq_33168577/article/details/73294083

6.1:仪表盘

6.2 Mysql 使用率

6.3 CPU 使用率

6.4 硬盘空间使用率

相关阅读

Android中的Apk的加固(加壳)原理解析和实现

一、前言今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理。现阶段。我们知道Android中的

惠普Envy 4-1008tx可以加固态硬盘吗

问题:惠普Envy 4-1007tx带固态硬盘,但没有黑银色的,惠普Envy 4-1008tx有黑银色的但没有固态硬盘,我想要黑银色的,问一下Envy 4-1008tx

惠普HP Pavilion g4怎么添加固态硬盘?

电脑型号惠普 HP Pavilion g4 Notebook PC 笔记本电脑 ,操作系统Windows 8.1 专业版 64位 ( DirectX 11 )。1、拆箱光驱位硬盘托架

发表评论