服务器遭遇攻击处理

服务器遭遇攻击处理node

系统被植入rootkit之类的程序后,最安全有效的方法是直接从新安装系统。绝大多数攻击程序会依附在系统文件或者内核中,只有重装系统才能确保完全清除攻击源。nginx

1、服务容许立刻切断网络处理基本流程:apache

一、切断网络:切断感染源,防止二次感染vim

二、查找攻击源:分析系统日志、登陆日志、命令历史等,查看系统开启的端口、端口运行的进程,是否存在可疑进程等安全

三、分析入侵可能缘由和途径:系统漏洞、程序漏洞、密码泄露等;bash

四、备份并彻查用户数据(关键部分):分两部分备份,一部份是所有的系统数据,包括二进制文件和日志文件等(用于后期检查),另外一部份备份重要的数据文件。备份完成后进行总体的检查,察看是否有异常数据存在,是否隐藏着攻击源;服务器

五、重装系统:先在服务器上安装须要的套件,接着进行简单的防火墙设定后再进行联机,以APT/YUM 之类的工具进行在线更新,完成后使用第三方工具chkrootkit/rkhunter(官网下载),检验系统安全状态网络

六、修复程序或系统漏洞:系统漏洞或程序漏洞引发的,应先修复漏洞和程序bug,再从新上线服务session

七、恢复数据并链接网络:将备份的数据从新复制到新装服务器上,启动本来服务器上面的各项服务;使用第三方工具chkrootkit/rkhunter再次检验系统安全状态,开启服务器网络,从新对外提供服务。app

八、检查分析完整备份的数据:分析日志文件,尽最大可能找出入侵者是通过哪一个服务,在哪一个时间点,以哪一个IP联机进入本机的,根据入侵信息制定预防方法,并应用在新服务器上。

 

2、没法立刻切断网络链接时处理流程:

1、登陆系统查看可疑用户:w:显示目前登入系统的用户信息

[root@node1 ~]# w

 04:54:13 up  9:51,  3 users,  load average: 0.00, 0.01, 0.05

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     tty1                      19:04    9:49m  0.02s  0.02s -bash

root     pts/0    192.168.88.1     19:04    5.00s  0.26s  0.00s w

field    pts/2    192.168.88.1     20:49    1:43m  0.79s  0.04s sshd: field [priv] 

2、锁定可疑用户:“passwd -l username

[root@node1 ~]# passwd -l field

锁定用户 field 的密码 。

passwd: 操做成功

[root@node1 ~]# ps -ef |grep @pts/2

field     6443  6441  0 8月07 ?       00:00:04 sshd: field@pts/2

root     30104  1119  0 05:00 pts/0    00:00:00 grep --color=auto @pts/2

[root@node1 ~]# kill -9 6443

此时已锁住用户,并强制用户下线,用户下线后没法再次登陆。如需解锁密码,使用“passwd -u username”命令

[root@node1 ~]# passwd -u field

解锁用户 field 的密码。

passwd: 操做成功

3、使用last命令查看用户登陆事件:last命令输出来源为/var/log/wtmp

[root@node1 ~]# last

field    pts/1        192.168.88.1     Wed Aug  8 05:01   still logged in  

field    pts/2        192.168.88.1     Tue Aug  7 20:49 - 05:00  (08:11)  

...

4、查看系统日志:/var/log目录下的message、secure文件,用户目录下的.bash_history文件等

/var/log/messages:总体系统信息,其中包含系统启动期间的日志。此外,mail、cron、daemon、kern和auth等内容也记录在var/log/messages日志中。

[root@node1 ~]# tail /var/log/messages

Aug  8 05:00:28 node1 systemd-logind: Removed session 5.

Aug  8 05:00:28 node1 systemd: Removed slice User Slice of field.

Aug  8 05:00:28 node1 systemd: Stopping User Slice of field.

Aug  8 05:01:01 node1 systemd: Started Session 16 of user root.

Aug  8 05:01:01 node1 systemd: Starting Session 16 of user root.

Aug  8 05:01:13 node1 systemd: Created slice User Slice of field.

Aug  8 05:01:13 node1 systemd: Starting User Slice of field.

Aug  8 05:01:13 node1 systemd: Started Session 17 of user field.

Aug  8 05:01:13 node1 systemd-logind: New session 17 of user field.

Aug  8 05:01:13 node1 systemd: Starting Session 17 of user field.

/var/log/secure:验证和受权方面信息。例如,sshd会记录全部信息(包括失败登陆)。

[root@node1 ~]# tail /var/log/secure

Aug  8 03:03:15 node1 polkitd[530]: Unregistered Authentication Agent for unix-process:1887:2884608 (system bus name :1.52, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)

Aug  8 05:00:25 node1 sshd[6441]: pam_unix(sshd:session): session closed for user field

Aug  8 05:00:27 node1 su: pam_unix(su-l:session): session closed for user root

Aug  8 05:00:39 node1 sshd[30126]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.88.1  user=field

Aug  8 05:00:39 node1 sshd[30126]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "field"

Aug  8 05:00:41 node1 sshd[30126]: Failed password for field from 192.168.88.1 port 51373 ssh2

Aug  8 05:00:47 node1 sshd[30126]: error: Received disconnect from 192.168.88.1 port 51373:0:  [preauth]

Aug  8 05:00:47 node1 sshd[30126]: Disconnected from 192.168.88.1 port 51373 [preauth]

Aug  8 05:01:13 node1 sshd[30187]: Accepted password for field from 192.168.88.1 port 51378 ssh2

Aug  8 05:01:13 node1 sshd[30187]: pam_unix(sshd:session): session opened for user field by (uid=0)

/var/log/wtmp或/var/log/utmp:登陆信息。使用wtmp能够正在登录进入系统的用户,哪一个用户使用命令显示这个文件或信息等。

[root@node1 ~]# tail /var/log/wtmp

/var/log/dmesg:包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。

[root@node1 log]# tail /var/log/dmesg

[   20.646133] ppdev: user-space parallel port driver

[   20.983754] cryptd: max_cpu_qlen set to 100

[   21.459365] AVX version of gcm_enc/dec engaged.

[   21.459369] AES CTR mode by8 optimization enabled

[   21.469693] alg: No test for __gcm-aes-aesni (__driver-gcm-aes-aesni)

[   21.470434] alg: No test for __generic-gcm-aes-aesni (__driver-generic-gcm-aes-aesni)

[   21.587206] XFS (sda1): Mounting V5 Filesystem

[   21.638688] Adding 1049596k swap on /dev/sda2.  Priority:-1 extents:1 across:1049596k FS

[   22.417299] XFS (sda1): Ending clean mount

[   23.720713] type=1305 audit(1533639771.745:3): audit_pid=504 old=0 auid=4294967295 ses=4294967295 res=1

/var/log/boot.log:系统启动时的日志。

[root@node1 log]# tail  /var/log/boot.log

查看每一个帐户目录下的“.bash_history”文件,记录用户执行的历史命令

[root@node1 ~]# tail .bash_history

who -u am i |awk '{print $NF}'|sed -e 's/[()]//g'

who -u am i |awk '{print NF}'

hostname

${LOGNAME}

echo ${LOGNAME}

exit

vim /etc/bashrc

history

./etc/bashrc

.  /etc/bashrc

5、检测和关闭可疑进程:

1)、根据服务名查找进程完整信息:pidof命令肯定进程pid,再查看内存目录/proc/[pid]/*相关文件

/proc/[pid]/*部分文件说明:

/proc/[pid]/exe为实际运行程序的符号连接

/proc/[pid]/fd是一个目录,包含进程打开文件的状况

/proc/[pid]/limits显示当前进程的资源限制。

/proc/[pid]/cmdline是一个只读文件,包含进程的完整命令行信息。若是这个进程是zombie进程,则这个文件没有任何内容。

/proc/[pid]/environ显示进程的环境变量

/proc/[pid]/limits显示当前进程的资源限制。

/proc/[pid]/maps显示进程的内存区域映射信息。

/proc/[pid]/syscall显示当前进程正在执行的系统调用。

示例:查看sshd、crond进程完整信息

[root@node1 log]# pidof sshd

30189 30187 1117 763

[root@node1 log]# ls -al /proc/30189/exe

lrwxrwxrwx 1 root root 0 8月   8 05:17 /proc/30189/exe -> /usr/sbin/sshd

[root@node1 log]# pidof crond

559

[root@node1 log]# ls -al /proc/559/exe

lrwxrwxrwx 1 root root 0 8月   8 02:59 /proc/559/exe -> /usr/sbin/crond

[root@node1 log]# ls -al /proc/559/fd

总用量 0

dr-x------ 2 root root  0 8月   8 05:31 .

dr-xr-xr-x 9 root root  0 8月   8 01:20 ..

lr-x------ 1 root root 64 8月   8 05:31 0 -> /dev/null

lrwx------ 1 root root 64 8月   8 05:31 1 -> socket:[16851]

lrwx------ 1 root root 64 8月   8 05:31 2 -> socket:[16851]

lrwx------ 1 root root 64 8月   8 05:31 3 -> /run/crond.pid

lrwx------ 1 root root 64 8月   8 05:31 4 -> socket:[16922]

lr-x------ 1 root root 64 8月   8 05:31 5 -> anon_inode:inotify

2)、根据端口查找进程

[root@node1 log]# fuser -n tcp 80

80/tcp:                765   885   886   887   888   889

[root@node1 log]# fuser -n tcp 25

25/tcp:                646

[root@node1 log]# ps -ef | grep 765

root       765     1  0 8月07 ?       00:00:03 /usr/sbin/httpd -DFOREGROUND

apache     885   765  0 8月07 ?       00:00:00 /usr/sbin/httpd -DFOREGROUND

apache     886   765  0 8月07 ?       00:00:00 /usr/sbin/httpd -DFOREGROUND

apache     887   765  0 8月07 ?       00:00:00 /usr/sbin/httpd -DFOREGROUND

apache     888   765  0 8月07 ?       00:00:00 /usr/sbin/httpd -DFOREGROUND

apache     889   765  0 8月07 ?       00:00:00 /usr/sbin/httpd -DFOREGROUND

root     32468  1119  0 05:34 pts/0    00:00:00 grep --color=auto 765

[root@node1 log]# ps -ef | grep 646

root       646     1  0 02:46 ?        00:00:00 sendmail: accepting connections

root     32478  1119  0 05:34 pts/0    00:00:00 grep --color=auto 646

3)、系统命令(ps,top,netstat等)可能被修改时借助第三方工具:chkrootkit、rkhunter

6、检测文件系统完整性

1)、rpm验证:rpm -Va 列出目前系统上全部可能被改动的文件

参数说明:

S:文件容量大小发生改变

M:文件的类型或文件的属性发生改变(rwx) -->重点关注项-->不利改变时重装rpm

5MD5校验和发生改变

D:设备节点属性发生改变

L:文件符号连接发生改变

U:文件/子目录/设备节点的全部者发生改变

G:文件/子目录/设备节点的所属组发生改变

T:文件最后一次修改时间发生改变

[root@node1 log]# rpm -Va

.M.......  c /etc/audit/rules.d/audit.rules

S.5....T.  c /etc/nginx/nginx.conf

S.5....T.  c /etc/crontab

S.5....T.  c /etc/sysconfig/authconfig

2)、借助第三方工具:chkrootkit、rkhunter

7、确认受到攻击时只能切断网络,备份数据,重装系统

1)、切断网络;

2)、安装稳定版本系统、删除默认且不须要的用户,禁止非必需直接登陆用户系统登陆功能;

[root@node1 ~]# awk -F : '{print $1}'  /etc/passwd

[root@node1 ~]# userdel games

[root@node1 ~]# groupdel games

[root@node1 ~]# usermod -s /sbin/nologin hacluster

3)、采用公钥认证方式登陆,规避密码认证风险;

4)、根据官网(如apache/nginx)同步更新服务程序为最新稳定版,避免旧版本漏洞;

5)、开启tcp_wrappers防火墙,限制sshd等服务登陆的源地址;

6)、安装官网下载的第三方工具chkrootkit、rkhunter等检查服务器安全状态;

7)、彻查备份的数据,无误后恢复数据,再次使用第三方工具检查服务器安全状态;

8)、开启网络、服务,从新对外开放;