ubuntu 16.04的boot区满了,如何删除(缩减版)

Short Version

注意:这个只针对于有经验的认识,你必须清楚你在删什么,不然有重装的风险;如果不清楚,请读Long version

  1. 首先看一下磁盘空间中,/boot分区的空间对不对。我用df -h,看到/boot分区已经100%的使用率。
  2. 然后在/boot分区中,直接删文件。但是注意同类的保持两个不删。
  3. 然后再执行apt-get install -f,安装新的kernel包。
  4. 最后执行apt-get autoremove,删除不用的包。
  5. 最终可以看到/boot分区不再是满的了。
'Filesystem      Size  Used Avail Use% Mounted on
udev            362M     0  362M   0% /dev
tmpfs            77M   13M   64M  17% /run
/dev/sda2        11G  3.0G  7.0G  30% /
tmpfs           381M     0  381M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           381M     0  381M   0% /sys/fs/cgroup
/dev/sda1       361M  151M  192M  44% /boot
tmpfs            77M     0   77M   0% /run/user/1000

参考链接

Long Version

背景

  1. 我想apt-get安装一个包,结果系统一直提醒我”Unmet dependencies. Try ‘apt-get -f install’ with no packages”
'You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 linux-image-extra-4.4.0-92-generic : Depends: linux-image-4.4.0-92-generic but it is not going to be installed
 linux-image-generic : Depends: linux-image-4.4.0-92-generic but it is not going to be installed
                       Recommends: thermald but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Trouble Shooting

  1. 于是我就按照系统提示,运行apt-get -f install,结果系统还是报错,安装不上,提示以下信息。其中重要的是 No apport report written because the error message indicates a disk full error,貌似是磁盘空间满了
Unpacking linux-image-4.4.0-93-generic (4.4.0-93.116) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-4.4.0-93-generic_4.4.0-93.116_i386.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-4.4.0-93-generic' to '/boot/vmlinuz-4.4.0-93-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error
  1. 接下来df -h,发现果然有一个分区满了,那就是/boot分区,已经100%了。
root@ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            362M     0  362M   0% /dev
tmpfs            77M   12M   65M  16% /run
/dev/sda2        11G  5.1G  4.9G  51% /
tmpfs           381M     0  381M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           381M     0  381M   0% /sys/fs/cgroup
/dev/sda1       361M  357M     0 100% /boot
tmpfs            77M     0   77M   0% /run/user/1000
  1. cd /boot之后,再ls可以得到每个文件的大小,得到以下的信息。大概有个印象是要去删除initrd.img,因为它的盘符最大。不确定哪些可以删除,于是参考了这个stackexchange链接

解决方法

接着上面,解决方法是:

  1. 根据apt-get install -f中的no longer required提示The following packages were automatically installed and are no longer required: ,删掉这个列表中对应的/boot分区的文档。
  2. 又因为initrd.img 开头的文档最大(38M),所以删除这个。另外也可以删除对应版本中的vmlinuz, System.map, abi, config等文档。
  3. 其中,至少要保证两个版本的所有类型文档都还保留着,不然等着重装系统吧。
  4. 然后空间够了,就可以重新通过apt-get install -f来安装了。

如何删除文件的英文原文如下原文在这个stackexchange链接

Freeing Up Space on the /boot File System

The Original Poster has a separate /boot partition, and that is what is full and preventing the apt system from working. It will be necessary for him to free up space there.

If there almost enough space, go to /boot and remove a config file or two:

sudo rm config-3.2.0-19-generic-pae

  1. for example, but using the name of one of the kernel versions you intend to remove anyway. This will free up a little space (about 144K apiece).
  2. If you need more space individually remove old vmlinuz initrd, abi and System.map files until you have enough space (about 22 megs for one of my i386 kernel versions).
  3. Whatever you do, don’t remove them all. You should at least keep the latest two matching versions of each kind of file, for each kind of kernel you use.

断后

最后可以做一个apt-get autoremove做cleanup。我竟然删除了1.9G的文件,看来老版本很耗存储空间呢。

GB 22239-2008(等保)阅读笔记

每一个等级的页数:

G1A1S1:4

2:8

3:14

4:15

5:1

可以看到三级和四级的页数最多。

如何进行等级保护分级是GB 17859-1999制定的。

本标准规定了计算机系统安全保护能力的五个等级,即:

第一级:用户自主保护级;

第二级:系统审计保护级;

第三级:安全标记保护级;

第四级:结构化保护级;

第五级:访问验证保护级。

具体可以参考链接

分类

S:保护数据在存储、传输、处理过程中不被泄露、破坏和免受未授权的修改信息安全类要求。

A:保护系统连续正常的运行,免受对系统的未授权修改、破坏而导致系统不可用服务保证类要求。

G(General): 通用安全保护类要求

如何阅读主要条目:

  1. 注意每一个高等级(Lvl 3)的条目,都是在低等级(Lvl 2)条目上附加的。即高等级有的条目,其对应低等级一定有。
  2. 高等级条目中,相对于低等级的新增的新条目,会用加黑的方式表示。

  1. 以下的每一级均已那一级的基准来描述,例如第二级就是S2A2G2,第三级是S3A3G3。实际定级情况下,可能会有不同组合,例如

    第二级组合可能为S1A2G2, S2A2G2, S2A1G2;

    第三级的定级可能S1A3G3, S2A3G3, S3A3G3, S3A2G3, S3A1G3

    . 根据信息系统的定级结果对基本安全要求进行调整。根据系统服务保证性等级选择相应等级的系统服务保证类(A 类)基本安全要求;根据业务信息安全性等级选择相应等级的业务信息安全类(S 类)基本安全要求。 G与定级本身相同,A和S必须有一个等于G。

第一级

技术要求

物理安全

物理访问控制 G1
防盗窃和防破坏 G1
防雷击 G1
防火 G1
防水和防潮 G1
温湿度控制 G1
电力供应 A1
物理位置选择(G2), 电磁防护(S2),防静电(G2)

网络安全

结构安全 G1
访问控制 G1
网络设备防护 G1
安全审计(G2), 边界完整性检查(S2), 入侵防范(G2),
恶意代码防范(G3)

主机安全

身份鉴别 S1
访问控制 S1
入侵防范 G1
恶意代码防范 G1
安全审计(G2), 资源控制(A2)
剩余信息保护(S3)
可信路径(S4)

应用安全

身份鉴别 S1
访问控制 S1
通信完整性 S1
软件容错 A1
安全审计 G2, 通信保密性 S2, 资源控制 A2(会话资源等)
剩余信息保护 S3, 抗抵赖 G3
安全标记 S4,可信路径 S4

数据安全及备份恢复

数据完整性 S1
备份和恢复 A1
数据保密性(S2

管理要求(G1)

安全管理制度

管理制度;制定和发布。

评审和修订(G2)

安全管理机构

岗位设置;人员配备;授权和审批;沟通和合作。

审核和检查(G2)

人员安全管理

人员录用;人员离岗;安全意识教育和培训;外部人员访问管理。

人员考核(G2);

系统建设管理

系统定级;安全方案设计;产品采购和使用;自行软件开发;外包软件开发;工程实施;测试验收;系统交付;安全服务商选择。

系统备案(G3);等级测评(G3)

系统运维管理

环境管理;资产管理;介质管理;设备管理;网络安全管理;系统安全管理;恶意代码防范管理;备份与恢复管理;安全事件处置。

密码管理(G2);变更管理(G2);应急预案管理(G2)

监控管理和安全管理中心(G3)

第二级(只看在前两个基础上新增的控制小类)

技术要求

主要会增加安全审计资源控制XX保密性

物理安全

物理位置选择 G2
防静电 G2
电磁防护 S2

网络安全

安全审计 G2
边界完整性检查 S2
入侵防范 G2

主机安全

安全审计 G2
资源控制 A2

应用安全

安全审计 G2
通信保密性 S2
资源控制 A2

数据安全及备份恢复

数据保密性 S2

管理要求(G2)

系统建设管理

其中系统定级中,明确要求应该明确信息系统的边界和安全保护等级,并以书面形式说明信息系统确定为某个安全保护等级的方法和理由;且结果经过相关部门的批准。

第三级

Google voice是什么

Google Voice其实是google提供的一个VoIP服务,这个服务在很多年前就有,只是因为当时大家还没有掌握如何拥有美国IP的方法,所以没有申请。目前,很多人都掌握了拥有美国IP的方法,并且目前又有使用美国电话的诉求。比如某套路云的美国节点要求美国IP注册,然后那个套路云又比AWS便宜。

其实对于运营商来说,google voice是一个很有潜力的竞争对手(在欧美等喜欢用voicemail的国家)。优点:voicemail和文字邮件互换;cheap international call; easy conference call。

可以通过以下链接看到google voice宣传的功能:

https://www.google.com/googlevoice/about.html#tab=overview

缺点:这个在中国用不了,所以大家很多也是用来申请一个做备份的。

macOS上网速变慢原因排查及解决方案

 

起因

在之前跟家人聊天,通过apple的photos软件翻了一下原来的老照片,共享了其中的一些照片给家人看。

聊天之后开始下载一部美剧,发现速度奇慢,只有30KB/s,遂觉得不对劲,一定有什么后台进程。

工具

macOS上的命令行工具:nettop

一看这个名称,就知道这个是跟linux的top equivalent的工具。以下是使用概要。

  1. 直接在终端输入:nettop
  2. 注意nettop有以下选项,均可以通过在nettop界面中通过点击的方式:
    • p:换成人类易读模式。即通过KB, MB来表示,而不是全部是bytes。
    • d:delta。即切换为显示当前的增量,这样能够找到在这一秒内下载最多的程序。
  3. 另外,以下命令可以看到流量在网络TCP/IP层是怎么走的,相当于网络的traceroute。

nettop -m route

macOS上的图形工具:Activity Manager

Activity Manager里面的网络tab,也能够看到每个进程的网络占比。但缺点是没有delta选项,即不容易通过增量单独来看。

元凶:nsurlsessiond。苹果的Photos同步进程

找到一个占了200KB/s的线程:nsurlsessiond

查google得知这个是macOS的photos应用的云同步进程。

只要知道怎么关闭这个云同步就行。

解决方案

  1. 打开photos应用,点击Preference
  2. 打开icloud页签,能够找到iCloud Photo Library,发现其中有N百张照片在下载。
  3. 点击暂停一天即可。
  4. 然后我的下载器的速度就恢复了。

Linux的文件系统层次结构标准(浓缩版)

由于经常使用linux,想要系统看看linux的各个distribution的文件层次结构是什么样的,所以去linux找了一个3.0的FHS(Filesystem Hierarchy Standard)来看,并且把其中重要的部分翻译成了中文,适合快速了解linux的文件系统。以下:

1.这个章节包含了根目录的层级结构,以及/usr目录的层级结构。

https://c4fun.gitbooks.io/linux-unix/content/FHS101.html

2.这个章节包含了/var的目录层级结构。

https://c4fun.gitbooks.io/linux-unix/content/fhs201var.html

 

 

HTTP 基础概念&常用的命令

基本概念

定义

HTTP是OSI的应用层(7层)的一个response-request协议。一个HTTP服务器会监听某个指定端口来的client request,然后server根据Request做出反馈。默认端口80.

握手

  1. 另外HTTP建立连接有三次握手,分别是:客户端发起SYN, 服务器发起SYN+ACK, 客户端发起ACK。
  2. HTTP断开连接有四次握手:客户端发起FIN,服务器发起ACK,服务器发起FIN, 客户端发起FIN。

返回状态码

2XX:good

3XX:重定向

4XX:客户端错误

5XX:服务器端错误

linux中常用命令

telnet

这是一个不安全的协议,但是可以用来测试连接有效性。

$ telnet www.opsschool.org 80
GET /en/latest/http_101.html HTTP/1.1
Host: www.opsschool.org

Trying 162.209.114.75...
Connected to ops-school.readthedocs.org.

cURL

cURL是一个使用URL语法来传输数据的工具。比Telnet强大的点是:cURL可以创建HTTP Request(即可以指定GET, POST, HEAD等方法),

  1. 例如以下:
  • –request 指定方法为GET
  • -I 即只输出header
$ curl -I --request GET  http://www.opsschool.org/en/latest/http_101.html
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 23 Jun 2015 20:42:25 GMT
Content-Type: text/html
Content-Length: 140673
Last-Modified: Wed, 27 May 2015 12:16:25 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5565b599-22581"
X-Served: Nginx
X-Subdomain-TryFiles: True
X-Deity: chimera-lts
Accept-Ranges: bytes

2. 对于大文件,可以使用-O选项来显示进度

然后会显示以下的进度:


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  4  467M    4 20.2M    0     0   116k      0  1:08:15  0:02:57  1:05:18 71532
3. 如果curl碰到重定向,而你想把这个重定向继续跟踪下去,使用-L选项
$ curl -IL www.opsschool.org
HTTP/1.1 302 FOUND
Server: nginx/1.4.6 (Ubuntu)
......

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
.......

netcat

Netcat是一个可以建立HTTP连接,并且实现读写数据的工具。netcat可以作为服务器端或者客户端。

在很多地方,直接用nc这个简称指代netcat。

做一个简单的client/server

  1. 可以通过-L选项告诉netcat监听某个端口,造一个服务器端。
$ nc -l 192.168.0.1 1234 > output.log

以上命令告诉某台机器通过1234监听消息,听到的消息传递给output.log。注意IP地址改为该机器的IP地址。

2. 用客户端连接服务器,并且输入信息

$ echo "I'm connected as client" | nc 192.168.0.1 1234

3. 然后在服务器端可以看到输出:

$ cat output.log
I'm connected as client

可以做一个简单的聊天器

上面的命令如果不输出到文件,可以做及时聊天,只要:

  1. 服务器端
$ nc -l -p 1234

2. 客户端

$ nc 192.168.0.1 1234

然后就可以愉快的聊天了

作简单的HTTP服务器(比较危险,如果不懂网络安全,不要轻易尝试)

Netcat连接建立之后,可以执行命令或者脚本

netcat有一个traditional的版本,其中有DGAPING_SECURITY_HOLE这个选项,可以使用-e <program/shell_script.sh>来执行命令。

那么如何建立这个简单的HTTP服务器呢?

  1. 定义一个文件httpd.sh
  2. 然后在服务器端,通过这个命令来launch
$ while true; do netcat -lp 1234 -e ./httpd.sh; done

然后服务器端就已经在1234端口监听了。

3. 在客户端通过不同的HTTP命令连接,可以看到反馈

$ curl 192.168.0.1:1234/
<html>Hello there world!</html>

$ nc 192.168.0.1 1234
GET /notexisting.html HTTP/1.1

最后注意:一定要在服务器端把服务关闭

以上文章来源:opsschool

rsync, scp远程机器的文件拷贝到本地+部分拷贝+指定端口

记得还是VPS小白的时候,只懂得怎么按照教程一步步建立ss。

后来发现用VPS进行torrent下载很快,不用一直占用我的电脑,只要在空闲的时候再拷贝回自己的电脑就行。

那么,

如何把VPS上的文件拷贝到本地电脑呢?

rsync命令

  1. rsync可以实现保存部分文件,通过-P选项。所以比较适合大文件的下载。
  2. rsync的-e选项可以调用另外的remote shell,所以可以实现用ssh安全下载,并且还可以使用ssh命令的-p指定端口,所以可以应对VPS改了端口的场景。

综上所述,针对于我的使用命令

rsync -P -e "ssh -p 2234" my_username@my_ip_addr:/home/remote_files /local/path

scp命令

命令很简单,scp顾名思义就是使用了ssh的cp(copy命令),所以可以从远程拷贝文件。

由于使用了ssh,所以有以下两点需要满足:

  1. 远端主机的端口号需要正确。
  2. 需要输入对应用户名以及密码。或者已经对这个用户名建立了一个公私钥配对。

具体就不举例了,详见这个链接中的描述

使用crontab自动备份mysql中的数据库,例如wordpress数据库

使用命令:mysqldump

reference doc

可以使用mysql专用的mysqldump,下面这个语句即可创建一个

mysqldump -u root -p [DB NAME] > backup.sql
  • 这里-p后面也可以接password明码,然而容易暴露密码,并不好。如何解决这个问题见下一节
  • 另外,可以不用mysql的root来dump WP的数据库,WP数据库是可以用当初建立的单独的用户来dump的,所以降低了mysql的root密码暴露的风险。
  • 上面命令的[DB NAME]处,通过 ps aux|grep mysql,找到正在运行的mysql进程,其中–datadir对应的位置即当前数据库的位置,备份该位置的对应数据库即可。

自动化的crontab备份方案

参考megamorf答复

这里-p后面也必须接password才能够进行备份;然而直接在命令行容易暴露密码,并不好。

上面的问题,通过在对应用户的根目录创造一个文件./my.cnf,该文件的权限改为600权限,这样就只有这个用户能够看到了。

另外地,调试一下命令看效果,diff发现文件没有差别,就可以写到crontab中了。通过以下语句编辑:

crontab -e

下一步优化:

  1. 服务器定期压缩备份。
  2. 用pc机,隔一段时间从服务器的backup文件夹中拷贝相应的备份文件。
  3. 定时备份到移动硬盘(timemachine已经做了这一步了)

linux中的/var/log/auth.log

这个是管理鉴权的日志,可以看到网络上相应的登陆attempt。

感觉是不看不知道,一看吓一跳。有各种各样登陆的attempt:用户名为root的,mysql的,hadoop,ubuntu, oracle, tom。。。。。。

下面就把log里面最常见的两种说一下。

0. 时间 机器名 sshd[sshd_id]: input_userauth_request: invalid user XXX [preauth]

这是最常见的log。

其实就是IP在公网上被弱口令攻击。换句话说,就是有黑客写了脚本,for循环该网域上的主机,并且用弱用户名+弱口令暴力尝试。

防范方法:

  1. 禁止root用户直接远程登陆
  2. 禁用密码登陆,启用公私钥登陆。
  3. 设置fail2ban,以缓和攻击频率(但是也没有什么卵用,一般都是几十上百个机器攻击)configuration guide

1. “POSSIBLE BREAK-IN ATTEMPT” error message

次常见的log。

Stack Exchange解释:一个普遍现象

那没什么有”reverse mapping checking getaddrinfo failed”这句话呢?而且并不是全部的sshd的log都有这句话

首先,我们注意到log中,与POSSIBLE BREAK-IN ATTEMPT成对出现的log:reverse mapping checking getaddrinfo for sender3p4.nosoffresdumois.fr IP地址 failed

也就是说,我们的主机想要进行reverse mapping checking,但是通过PTR record(pointer record)没有找到该地址,所以linux主机认为受到了BREAK-IN ATTEMPT。

那么,再究其原因,是因为:

  1. 攻击者没有update其静态IP的PTR record。
  2. ISP没有为它的动态用户配置好 reverse records。 an ISP does not setup proper reverse records for its dynamic IP customers. This is very common, even for large ISPs.