Linux安全攻防笔记

一、上传木马的过程

1、默认端口22弱口令暴力破解;

2、21端口或者3306端口弱口令暴力破解;

3、webshell进行shell反弹提权;

4、木马传入服务器的上面并且执行,通过木马的方式来控制你的服务器进行非法的操作。

二、常见操作

1、切入/tmp;

2、wget下载木马;

3、木马加载权限;

4、执行木马;

5、后门,支持木马复活。

三、清除木马

1、网络连接,过滤掉正常连接;

# netstat -nalp | grep "tcp" | grep -v "22" | grep "ESTABLISHED"

2、判断一些异常连接,通过PID找到进程名称;

# ps -ef | grep "27368"

3、通过名字,找到原文件,删除掉原文件。

四、清除后门

1、检查/etc/rc.local;

2、检查计划任务crontab -l;

3、检查/root/.bashrc和普通用户下的.bashrc;

4、检查/etc/profile文件定期进行md5校验。

五、安全加固

1、了解常见的扫描和提权端口

-22 端口暴力破解

-21端口提权

-3306 端口提权

-webshell 反弹

2、如何对linux进行安全加固

2.1进程数量监控及对比

2.1.1、进程数量

2.1.2、进程异常的名称及PID号

2.1.3、根据PID号进行查询网络连接异常

写一个脚本:

将服务器正常的进程号,导入到一个目录,取个名字叫做原始.log,提取实时进程名称>实时.log,通过diff去对比原始和实时的log区别,一旦发现对比不一样,通过名称得到PID号,然后通过PID查找网络连接和监听的端口号及IP地址。将这些信息发送告警到管理员的手机或者邮箱邮件里面,让管理员进行判断和分析。

2.2、计划任务列表监控

2.2.1、查看计划任务

2.2.2、监控/var/log/cron日志

2.3、用户登录监控

2.3.1、什么用户登录的?在什么时候登录的?

2.3.2、用户登录IP是否合法?

2.3.3、用户登录的用户名是否合法?

2.3.4、用户登录时间是否合法?

2.4、/etc/passwd、/etc/shadow  MD5

2.4.1、MD5校验防止有人更改passwd和shadow文件

2.4.2、passwd文件可以进行加锁chattr权限

2.4.3、passwd定期进行备份,进行内容diff对比

2.5、非有效用户登录shell权限

2.5.1、除了运维常用的维护账号以外,其他账户不能拥有登录系统的shell

2.5.2、针对/etc/passwd文件统计bash结尾的有多少个?将不用的改成/sbin/nologin

2.5.3、将不必要的账户删除或者锁定

2.6、安全日志分析与监控/var/log/secure

2.6.1、定期或者实时分析/var/log/secure文件,是否有暴力破解和试探

2.6.2、过滤Accepted关键字,分析对应的IP是否为运维常用IP及端口号和协议。否则视为已经被入侵。

2.6.3、定期备份/var/log/secure防止此人入侵后,更改和删除入侵目录

2.7、/etc/sudoers监控

2.7.1、防止对方通过webshell反弹的方式,增加普通用户到/etc/sudoers

2.7.2、定期备份/etc/sudoers和监控,发现特殊的用户写入此文件,视为已被入侵。

2.7.3此配置文件,普通用户可绕过root密码直接sudo到root权限

2.8、网络连接数的异常

2.8.1、经常统计TCP连接,排除正常的连接以外,分析额外的TCP长连接,找出非正常的连接进程

2.8.2、发现异常进程后,通过进程名使用top的方式,或者find命令搜索木马所在的位置

2.8.3、找到连接所监听的端口号以及IP,将此IP拉入黑名单,KILL掉进程,删除木马源文件

2.8.4、监控连接监听,防止木马复活

2.9、/etc/profile定期巡检

2.9.1、检查/etc/profile文件防止木马文件路径写入环境变量,防止木马复活

2.9.2、防止/etc/profile调用其他的命令或者脚本进行后门连接

2.9.3、此文件进行MD5校验,定期备份与diff如发现异常则视为被入侵

2.10、/root/.bashrc定期巡检

2.10.1、检查/root/.bashrc文件,防止随着root用户登录,执行用户变量,导致木马复活

2.10.2、防止/root/.bashrc通过此文件进行后门创建与连接

2.10.3、此文件进行MD5校验,定期备份与diff,如发现异常,则视为入侵

2.11、常用端口号加固及弱口令

2.11.1、修改22默认端口号

2.11.2、修改root密码为复杂口令或禁止root用户登录,使用key方式登录

2.11.3、FTP要固定chroot目录,只能在当前目录,不随意切换目录

2.11.4、mysql注意修改3306默认端口号,授权的时候不允许使用%号进行授权。

2.11.5、mysql用户及IP授权请严格进行授权,除了DBA,其他开发人员不应该知道JDBC文件对应的用户名和密码

2.12、/tmp目录的监控

2.12.1、由于/tmp目录的特殊性,很多上传木马的第一目标就是/tmp

2.12.2、/tmp进行文件和目录监控,发现变动及时警告

2.13、WEB层面的防护

所有WEB层的安全成为首要,要定期进行WEB程序漏洞扫描,发现之后及时通知开人员修补,对于金融行业的有必要邀请第三方定期进行渗透测试。

六、常见的安全网站

乌云漏洞:http://www.wooyun.org

盒子漏洞:https://www.vulbox.com

国家信息安全漏洞平台:http://www.cnvd.org.cn

Freebuf:http://www.freebuf.com

STACKOVERFLOW:http://stackoverflow.com

CVE漏洞:http://cve.mitre.org

360BLOG:http://blogs.360.cn

OSR:http://www.osronline.com

漏洞库:https://www.exploit-db.com

CODEPROJECT:http://www.codeproject.com

七、运维安全审计

1、环境安全

2、物理链路的安全

3、网络安全

4、前端程序的安全

5、系统的安全

6、数据的安全

7、内部人员的安全

时间: 2024-11-05 18:38:26

Linux安全攻防笔记的相关文章

Python MySQLdb Linux下安装笔记

本文介绍了Python MySQLdb Linux下安装笔记,本文分别讲解了快速安装和手动编译安装两种方法,并分别讲解了操作步骤,需要的朋友可以参考下 主要针对centos6.5 64位系统 默认python版本为2.6 编码安装python2.7和python3.4      一.yum快速安装 yum install MySQL-python yum install python-setuptools 经常接触Python的同学可能会注意到,当需要安装第三方python包时,可能会用到eas

Linux程序设计学习笔记----网络通信编程API及其示例应用

转载请注明出处, http://blog.csdn.net/suool/article/details/38702855. BSD Socket 网络通信编程 BSD TCP 通信编程流程 图为面向连接的Socket通信的双方执行函数流程.使用TCP协议的通信双方实现数据通信的基本流程如下 建立连接的步骤 1.首先服务器端需要以下工作: (1)调用socket()函数,建立Socket对象,指定通信协议. (2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Linux 程序设计学习笔记----POSIX 文件及目录管理

转载请注明:http://blog.csdn.net/suool/article/details/38141047 问题引入 文件流和文件描述符的区别 上节讲到ANSI C 库函数的实现在用户态,流的相应资源也在用户空间,但无论如何实现最终都需要通过内核实现对文件的读写控制.因此fopen函数必然调用了对OS的系统调用.这一调用在LINUX下即为open, close, read, write等函数.这些都遵循POSIX标准. so,在linux系统中是如何通过POSIX标准实现对文件的操作和目

LINUX设备驱动程序笔记(一)设备驱动程序简介

<一>:设备驱动程序的作用 从一个角度看,设备驱动程序的作用在于提供机制,而不是策略.在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何特定策略.因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序. 从另一个角度来看驱动程序,它还可以看作是应用程序和实际设备之间的一个软件层. 总的来说,驱动程序设计主要还是综合考虑下面三个方面的因素:提供给用户尽量多的选项.编写驱动程序要占用的时间以及尽量保持

LINUX设备驱动程序笔记(二)构造和运行模块

         <一>:设置测试系统 首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中.           <二>:HelloWorld模块 #include <linux/init.h> //定义了驱动的初始化和退出相关的函数 #include <linux/module.h> //定义了内核模块相关的函数.变量及宏 MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块采用自由许可

LINUX设备驱动程序笔记(三)字符设备驱动程序

      <一>.主设备号和次设备号        对字符设备的访问时通过文件系统内的设备名称进行的.那些设备名称简单称之为文件系统树的节点,它们通常位于/dev目录.字符设备驱动程序的设备文件可通过ls -l命令输出的第一列中的'c'来识别.块设备同样位于/dev下,由字符'b'标识 crw-rw----  1 root root    253,   0 2013-09-11 20:33 usbmon0 crw-rw----  1 root root    253,   1 2013-09

LINUX设备驱动程序笔记(四)并发和竞态

       <一>.并发及其管理 大部分竞态可通过使用内核的并发控制原语,并应用几个基本的原理来避免.第一个规则是,只要可能,就应该避免资源的共享,这种思想的明显应用就是避免使用全局变量.但硬件资源本质上就是共享的,软件资源经常需要对其他执行线程可用.全局变量并不是共享数据的唯一途径,只要我们的代码将一个指针传递给了内核的其他部分,一个新的共享就可能建立.在单个执行线程之外共享硬件或软件资源的任何时候,因为另外一个线程可能产生对该资源的不一致观察,因此必须显示地管理对该资源的访问.访问管理的