CentOS7服务器基本安全防护篇

标签: centos7 服务器 安全 | 发表时间:2016-06-30 12:20 | 作者:H小阿飞
出处:http://www.iteye.com

一. 前言:

这个只是个人笔记,方便日后查阅,若有错误,欢迎同行帮忙纠正
1.最近买的腾讯云和阿里云服务器均受到攻击,以前不懂这方面,所以也没在意。由于这次查看腾讯云上面的一个java web项目日志发现,有很多请求php文件的日志,都被springmvc的拦截器给拦截了,当时看到这么多请求php文件的消息,心里倒没咋慌,因为那台只是测试服务器,心里倒是欣喜了一下,这下可以就地的实际解决一下这种问题,学习一下,刚开始以为服务器已被攻破呢,后来仔细分析了一下日志,其实它只是在扫文件,看看我服务器上有没有一样的php文件,可惜哥哥的服务器是java web的。
接着便着手了解这方面的知识,经过网上查阅和向同行请教,现在基本上对服务器的基本防护算是入门了。
1.通过查看项目里面的日志  cat catalina.out:

<!--StartFragment -->

 见附件1

 这是初步接触到攻击日志,网上查阅,说这类属于DOS攻击,到底属于不属于DOS攻击没有仔细研究

 


2.再查看项目请求的日志  cat  localhost_access_log.2016-06-29.txt

  见附件2


3.再查看系统级的日志   cat /var/log/secure

  见附件3

看到这边,刚开始还想着把这些攻击的IP一个个加到防火墙里面,禁止它再次访问,同时通过IP查询,发现这些IP都属于国外的,譬如印度、俄罗斯、巴西等,加了一两个进去,发现并没有实际性的作用,因为它好像是生成的伪IP,你加进去一个,它又有新的IP来攻击,那它必定是通过工具进行自动攻击的,我这边一个个加根本不是一解决办法。

 

二.进入主题:

遂上网查询防护的基本知识:

基本上形成了如下思路:

1.首先禁用root登录,创建普通用户来登录服务器,然后再通过su root切换到root用户

这样增加了攻击难度,首先它得猜到我的普通用户登录名,直接通过root登录已经没有用了。

1. 修改SSH的端口,通常都是22,我把端口改成23456,这样它扫端口也够他扫上一段时间了

2. 通过工具来拦截获取攻击的IP,生成黑名单,防止再次攻击,这个我选用的DenyHosts,好用不好用,用过才知道。

 

三. 操作

1禁用root登录

参考: http://www.2cto.com/os/201102/84178.html

#先创建一个普通用户test,同时给test用户设置密码

adduser test

passwd test

#接着禁用root登录

vi /etc/ssh/sshd_config

PermitRootLogin no

Systemctl restart sshd.service

 

测试看看,是不是通过root用户无法直接登录了,只能通过普通用户登录,然后再su root

 

2.修改SSH的端口

参考: http://blog.csdn.net/jasper_success/article/details/38537049

注意!这里的Centos版本是7

 

step1 修改/etc/ssh/sshd_config

vi /etc/ssh/sshd_config

#Port 22         //这行去掉#号

Port 51866      //下面添加这一行

为什么不先删除22,以防其他端口没配置成功,而又把22的删除了,无法再次进入服务器

 

 

step2 修改SELinux

使用以下命令查看当前SElinux 允许的ssh端口:

semanage port -l | grep ssh

 

添加51866端口到 SELinux

semanage port -a -t ssh_port_t -p tcp 51866

 

然后确认一下是否添加进去

semanage port -l | grep ssh

如果成功会输出

ssh_port_t                    tcp    51866, 22

 

step3 重启ssh

systemctl restart sshd.service

 

Step4 防火墙开放51866端口

firewall-cmd --permanent --zone=public --add-port=51866/tcp

 

然后测试试试,能不能通过51866登录,若能登录进来,说明成功,接着删除22端口

vi /etc/ssh/sshd_config

删除22端口  wq

systemctl restart sshd.service

同时防火墙也关闭22端口

firewall-cmd --permanent --zone=public --remove-port=22/tcp

 

然后再进行测试,看看22端口是不是不可以登录了

 

登录的时候,ssh  test@ip -p 51866

 

 

3.安装DenyHosts

参考: http://blog.chinaunix.net/uid-280772-id-2135429.html

http://www.cnblogs.com/xia/archive/2011/02/11/1951257.html

http://www.cnblogs.com/suihui/p/3899381.html

 

DenyHosts(项目主页:http://denyhosts.sourceforge.net/)是运行于Linux上的一款预防SSH暴力破解的软件,可以从

 

http://sourceforge.net/projects/denyhosts/files/进行下载,然后将下载回来的DenyHosts-2.6.tar.gz源码包上传到Linux系统中。

 

下面是安装过程

****************************************************************

tar zxvf DenyHosts-2.6.tar.gz                                           #解压源码包

cd DenyHosts-2.6                                                            #进入安装解压目录

python setup.py install                                                    #安装DenyHosts

cd /usr/share/denyhosts/                                                #默认安装路径

cp denyhosts.cfg-dist denyhosts.cfg                                #denyhosts.cfg为配置文件

cp daemon-control-dist daemon-control                        #daemon-control为启动程序

chown root daemon-control                                           #添加root权限

chmod 700 daemon-control                                            #修改为可执行文件

ln -s /usr/share/denyhosts/daemon-control /etc/init.d     #对daemon-control进行软连接,方便管理

 

安装到这一步就完成了。

/etc/init.d/daemon-control start          #启动denyhosts

chkconfig daemon-control on             #将denghosts设成开机启动

******************************************************************

 

vi /usr/share/denyhosts/denyhosts.cfg       #编辑配置文件,另外关于配置文件一些参数,通过grep -v "^#" denyhosts.cfg查看

SECURE_LOG = /var/log/secure                  #ssh 日志文件,redhat系列根据/var/log/secure文件来判断;Mandrake、FreeBSD根

 

据 /var/log/auth.log来判断

                                                                  #SUSE则是用/var/log/messages来判断,这些在配置文件里面都

 

有很详细的解释。

HOSTS_DENY = /etc/hosts.deny                 #控制用户登陆的文件

PURGE_DENY = 2h                                  #过多久后清除已经禁止的,设置为30分钟;

# ‘m’ = minutes

# ‘h’ = hours

# ‘d’ = days

# ‘w’ = weeks

# ‘y’ = years

BLOCK_SERVICE = sshd                           #禁止的服务名,当然DenyHost不仅仅用于SSH服务

DENY_THRESHOLD_INVALID = 1             #允许无效用户失败的次数

DENY_THRESHOLD_VALID = 3                 #允许普通用户登陆失败的次数

DENY_THRESHOLD_ROOT = 3                 #允许root登陆失败的次数

DAEMON_LOG = /var/log/denyhosts      #DenyHosts日志文件存放的路径,默认

 

更改DenyHosts的默认配置之后,重启DenyHosts服务即可生效:

/etc/init.d/daemon-control restart         #重启denyhosts

 

 

如果想删除一个已经禁止的主机IP,并加入到允许主机例表,只在 /etc/hosts.deny 删除是没用的。需要进入 /usr/share/denyhosts 目

 

录,进入以下操作:

 

1、停止DenyHosts服务:$ /etc/init.d/daemon-control stop

 

2、在 /etc/hosts.deny 中删除你想取消的主机IP

 

3、编辑 DenyHosts 工作目录的所有文件,通过

$ grep 127.0.0.1 /usr/share/denyhosts/data/*   #这行没明白

 

然后一个个删除文件中你想取消的主机IP所在的行:

*/usr/share/denyhosts/data/hosts

*/usr/share/denyhosts/data/hosts-restricted

*/usr/share/denyhosts/data/hosts-root

*/usr/share/denyhosts/data/hosts-valid

*/usr/share/denyhosts/data/users-hosts

4、添加你想允许的主机IP地址到

/var/lib/denyhosts/allowed-hosts     #这行没明白

 

vi /usr/share/denyhosts/data/allowed-hostsps

# We mustn't block localhost

127.0.0.1

192.168.1.*

 

5、启动DenyHosts服务: /etc/init.d/daemon-control restart

 

firewall-cmd --reload

 

firewall-cmd --state

 

firewall-cmd --permanent --zone=public --query-port=8025/tcp 查询端口是否开着

 

netstat -nupl (UDP类型的端口)

netstat -ntpl (TCP类型的端口)

 

 

 

 

<!--EndFragment-->



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [centos7 服务器 安全] 推荐:

CentOS7服务器基本安全防护篇

- - 企业架构 - ITeye博客
这个只是个人笔记,方便日后查阅,若有错误,欢迎同行帮忙纠正. 1.最近买的腾讯云和阿里云服务器均受到攻击,以前不懂这方面,所以也没在意. 接着便着手了解这方面的知识,经过网上查阅和向同行请教,现在基本上对服务器的基本防护算是入门了. 1.通过查看项目里面的日志  cat catalina.out:.

centos7作为web服务器优化

- - 操作系统 - ITeye博客
centos7作为web服务器优化. 1、关闭firewalld:. systemctl stop firewalld.service #停止firewall. systemctl disable firewalld.service #禁止firewall开机启动. 2、安装iptables防火墙.

CentOS7 安装 K8S

- - 企业架构 - ITeye博客
前提:VirtualBox CentOS7. 物理机IP   192.168.18.8. 虚拟机1IP:192.168.18.100(VMaster master). 虚拟机2IP:192.168.18.101(VServer1 node1). 虚拟机3IP:192.168.18.102(VServer2 node2).

centos linux 服务器安全

- - 操作系统 - ITeye博客
我们必须明白:最小的权限+最少的服务=最大的安全. 所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全. 下面是CentOS服务器安全设置,供大家参考. 一、注释掉系统不需要的用户和用户组. 注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦.

云服务器安全设计

- - WooYun知识库
目前越来越多的初创企业把自己的业务系统架设在公有云上,包含:阿里云、Ucloud、青云、华为云和AWS. 在云上的安全怎么保证,是目前摆在我们面前的最大问题,因为,互联网公司业务系统在不断迭代,迭代周期最少的有3天,而且架构也不断在改变. 在这种频繁改变的过程中,云安全应该怎么保证. ,云主机安全服务平台(Cloud security as a service),为多租户提供云主机安全服务的产品,减少用户业务系统攻击面,防止恶意的定向攻击(APT).

JAVA安全之JAVA服务器安全漫谈

- - WooYun知识库
本文主要针对JAVA服务器常见的危害较大的安全问题的成因与防护进行分析,主要为了交流和抛砖引玉. 以下为任意文件下载漏洞的示例. DownloadAction为用于下载文件的servlet. 在对应的download.DownloadAction类中,将HTTP请求中的filename参数作为待下载的文件名,从web应用根目录的download目录读取文件内容并返回,代码如下.

小措施提高Linux服务器安全

- - 博客 - 伯乐在线
挂着扫描器,漫无目的的寻找不设防的主机,植入后门,控制,卖给需要的人. 所以,一些基本的安全措施可以避免太过容易成为目标,下面就小小的介绍一些. 作为默认系统管理账号root是最容易攻击的目标. 禁止通过ssh远程登录是绝对必须的. 编辑 /etc/ssh/sshd_config. 同时,请为管理员建立个人账户,并分配到sudoers用户组(默认为%admin).

移动客户端与服务器端安全通信方案

- - CSDN博客移动开发推荐文章
    手机移动端与服务器端安全通信一直是个问题,让人比较头疼,最近在网上查了一些资料,总结了一下得出了一个自我感觉还好的方案,分享一下,也希望得到大家的批评斧正.     CS,C客户端,S服务器端.     在客户端软件发布前,客户端保存一个公钥,服务器保存一个私钥.     C1:客户端随机生成一个对称密钥K,使用公钥加密内容(K+账户+密码).

服务器安全检查指引——日常维护说明 - AllEmpty

- - 博客园_首页
  文档写好有一段时间了,可一直不敢上传,对服务器安全了解得越多,就越觉得自己很肤浅,很多都还没入门,发上来在这么多大神面前搬门弄斧,一不小心可能就会给劈得渣都不剩了.   在编写的过程中,有不少地方心里明白是怎么回事,要怎么去分析和处理,但就是不知道怎么用文字表述出来(真是书到用时方狠少啊),文笔有限也请大家见谅.

BitTorrent 开发出摆脱服务器的安全通信技术!

- - TECH2IPO创见
自从斯诺登揭露了美国国家安全局的监听项目后,如何使得线上的通信变得更加安全,就变成了当务之急. BitTorrent ,这种点对点的文件分享,多年来依赖于服务器处理,环节尽管易被攻击和侵入,但是就这么磕磕绊绊沿用下来了. 但是,现在基于 BitTorrent 开发出的技术,出现了更加先进的不依赖于服务器的通信方式:BitTorrent Chat.