服务器爆满:cannot create temp file for here-document: No space left on device

1 概述

  • 服务器的磁盘空间被占满导致TAB补全指令失效(TAB会创建临时文件)
cannot create temp file for here-document: No space left on device
  • 真正服务器的信息不能暴露,所以下面都是用自己的VPS的例子

2 Linux磁盘管理相关操作

# 显示文件系统的磁盘使用情况统计
[root@vultr home]# df -h
Filesystem      Size  Used   Avail Use% Mounted on 
/dev/sda6       29G   4.2G   23G   16%     / 
udev            1.5G  4.0K   1.5G   1%     /dev 
tmpfs           604M  892K   603M   1%     /run 
none            5.0M     0   5.0M   0%     /run/lock 
none            1.5G  156K   1.5G   1%     /run/shm 

# du显示文件或者目录的大小
[root@vultr home]# du -bsh /*
229M    /boot
8.9K    /dev
24M     /etc
4.0K    /home
7       /lib
9       /lib64
......

# 查找大于10M的文件
find / -type f -size +10000000c -exec du -sh {} \;

3 发现btmp日志文件太大

(1)查看恶意ip试图登录次数:

[root@vultr log]# lastb|awk '{ print $3}'|sort|uniq -c| sort -n
392 43.225.180.10
463 pool-71-187-181-
600 128.199.231.254
673 162.105.87.199
799 5.188.10.76
863 42.7.27.165
1284 218.5.77.196
1415 185.143.221.2
1648 185.143.222.6
1832 116.31.116.36
2198 vmi86304.contabo
2254 129.213.88.157
3664 42.7.27.166
7229 116.31.116.35
14790 116.31.116.34
......

(2)处理措施

  • 修改SSH端口
# 修改 /etc/ssh/sshd_config 
[root@vultr /]# vi /etc/ssh/sshd_config
Port 22 -> 修改为需要的值

# SSH服务重新启动
[root@vultr /]# service ssh restart

# 修改完查看是否生效
[root@vultr /]# netstat -nlap|grep sshd|grep tcp|grep LISTEN
  • 禁止root账户登录(禁止之前记得创建普通用户账号和设定sudo密码)
# 修改 /etc/ssh/sshd_config 
[root@vultr /]# vi /etc/ssh/sshd_config
添加 PermitRootLogin no

# SSH服务重新启动
[root@vultr /]# service ssh restart
  • 封恶意IP地址:定时执行脚本读取登录失败IP,并添加到/etc/hosts.deny文件
# 1 secure_ssh.sh脚本
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
for i in `cat  /usr/local/bin/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ ${#NUM} -gt 1 ]; then
    grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

# 2 将secure_ssh.sh脚本放入cron计划任务,每1分钟执行一次。
# crontab -e
*/1 * * * *  sh /usr/local/bin/secure_ssh.sh

4 总结

  • 服务器磁盘空间比较小时,简单的日志文件都可能导致磁盘空间不足
  • 应用的日志应该到达一定量级(如:100M)就压缩归档

5 参考博客

posted @ 2018-10-17 16:59  月下小魔王  阅读(2709)  评论(0编辑  收藏  举报