Press "Enter" to skip to content

作者: kiccleaf

FreeBSD升级Nginx

最新nginx版本解决了SSL漏洞,所以需要升级一下nginx版本至最新,以下是FreeBSD下用pkg升级的方法。

root@kiccleaf:~ # nginx -v
nginx version: nginx/1.12.0
root@kiccleaf:~ # pkg upgrade nginx
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01    
Fetching packagesite.txz: 100%    6 MiB  95.5kB/s    01:11    
Processing entries: 100%
FreeBSD repository update completed. 33333 packages processed.
The following 2 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
	nginx: 1.12.0_1,2 -> 1.14.0_13,2
	pcre: 8.40_1 -> 8.42

The process will require 178 KiB more space.
2 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching nginx-1.14.0_13,2.txz: 100%  416 KiB 425.5kB/s    00:01    
Fetching pcre-8.42.txz: 100%    1 MiB   1.2MB/s    00:01    
Checking integrity... done (0 conflicting)
[1/2] Upgrading pcre from 8.40_1 to 8.42...
[1/2] Extracting pcre-8.42: 100%
[2/2] Upgrading nginx from 1.12.0_1,2 to 1.14.0_13,2...
You may need to manually remove /usr/local/etc/nginx/nginx.conf if it is no longer needed.
===> Creating groups.
Using existing group 'www'.
===> Creating users
Using existing user 'www'.
[2/2] Extracting nginx-1.14.0_13,2: 100%
Message from nginx-1.14.0_13,2:
===================================================================
Recent version of the NGINX introduces dynamic modules support.  In
FreeBSD ports tree this feature was enabled by default with the DSO
knob.  Several vendor's and third-party modules have been converted
to dynamic modules.  Unset the DSO knob builds an NGINX without
dynamic modules support.

To load a module at runtime, include the new `load_module'
directive in the main context, specifying the path to the shared
object file for the module, enclosed in quotation marks.  When you
reload the configuration or restart NGINX, the module is loaded in.
It is possible to specify a path relative to the source directory,
or a full path, please see
https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/ and
http://nginx.org/en/docs/ngx_core_module.html#load_module for
details.

Default path for the NGINX dynamic modules is

/usr/local/libexec/nginx.
===================================================================
root@kiccleaf:~ # nginx -v
nginx version: nginx/1.14.0
Comments closed

FreeBSD 升级PHP版本

使用到的命令
pkg update 更新下软件库的信息,这样可以知道软件库中个套件的最新版本。
pkg upgrade 是升级你安装的套件
pkg info 显示软件包信息

第一步升级PHP版本

root@kiccleaf:~ # php -v  #查看升级前PHP版本
PHP 7.1.4 (cli) (built: Nov 25 2017 01:17:11) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.4, Copyright (c) 1999-2017, by Zend Technologies

root@kiccleaf:~ # pkg upgrade php71
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 2 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
	php71: 7.1.4 -> 7.1.12
	pcre: 8.37_4 -> 8.40_1

The process will require 84 KiB more space.
3 MiB to be downloaded.

Proceed with this action? [y/N]: y   #同意更新
Fetching php71-7.1.12.txz: 100%    2 MiB 103.2kB/s    00:21    
Fetching pcre-8.40_1.txz: 100%    1 MiB 165.7kB/s    00:07    
Checking integrity... done (0 conflicting)
[1/2] Upgrading pcre from 8.37_4 to 8.40_1...
[1/2] Extracting pcre-8.40_1: 100%
[2/2] Upgrading php71 from 7.1.4 to 7.1.12...
You may need to manually remove /usr/local/etc/php-fpm.d/www.conf if it is no longer needed.
[2/2] Extracting php71-7.1.12: 100%
root@kiccleaf:~ # php -v  #查看升级后版本
PHP 7.1.12 (cli) (built: Nov 25 2017 01:17:11) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.4, Copyright (c) 1999-2017, by Zend Technologies

第二步升级下PHP扩展

pkg upgrade -y php71-ctype php71-dom php71-filter php71-hash php71-iconv php71-json php71-mysqli php71-opcache php71-pdo php71-pdo_mysql php71-pdo_sqlite php71-phar php71-posix php71-session php71-simplexml php71-sqlite3 php71-tokenizer php71-xml php71-xmlreader php71-xmlwriter

Comments closed

发现大量的TIME_WAIT解决办法

netstat -ae|grep mysql

tcp        0      0 kiccleaf:46464      188.*.*.*:mysql    TIME_WAIT   root       0         
tcp        0      0 kiccleaf:42952      188.*.*.*:mysql    TIME_WAIT   root       0         
tcp        0      0 kiccleaf:46597      188.*.*.*:mysql    TIME_WAIT   root       0         
tcp        0      0 kiccleaf:45692      188.*.*.*:mysql    TIME_WAIT   root       0         
tcp        0      0 kiccleaf:44282      188.*.*.*:mysql    TIME_WAIT   root       0

—此处省略N行

tcp 0 0 kiccleaf:45692 188.*.*.*:mysql TIME_WAIT root 0
tcp 0 0 kiccleaf:44282 188.*.*.*:mysql TIME_WAIT root 0

发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决:
vim /etc/sysctl.conf

编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

然后执行 /sbin/sysctl -p 让参数生效。

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

修改之后,再用
netstat -ae|grep mysql

到此突然间系统的性能提升了,访问的网站程序速度也越顺畅了。

Leave a Comment

看看谁一直在猜你的Linux系统密码

首先找到/var/log/btmp 这上文件看看是否比较大这里记录了很多登录错误的信息,那么用一句话来列出到底是哪个IP经常在猜你系统的密码吧!

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

lastb | awk '{ print $3}' | sort | uniq -c | sort -n

Linux可以利用iptables 防火墙把它屏蔽掉

#封IP的命令
iptables -I INPUT -s *.*.*.* -j DROP
#保存上述规则
service iptables save

另外建议还是把ssh的22端口改成其他端口吧!

收集了一些log下文件的解释

以下介绍的是20个位于/var/log/ 目录之下的日志文件。其中一些只有特定版本采用,如dpkg.log只能在基于Debian的系统中看到。

/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log — 记录所有等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及所有打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:

/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。

Leave a Comment

linux 查看系统信息命令(比较全)

收集常用的Linux基本系统信息命令

 uname -a # 查看内核/操作系统/CPU信息
 head -n 1 /etc/issue # 查看操作系统版本
 cat /proc/cpuinfo # 查看CPU信息
 hostname # 查看计算机名
 lspci -tv # 列出所有PCI设备
 lsusb -tv # 列出所有USB设备
 lsmod # 列出加载的内核模块
 env # 查看环境变量资源
 free -m # 查看内存使用量和交换区使用量
 df -h # 查看各分区使用情况
 du -sh <目录名> # 查看指定目录的大小
 grep MemTotal /proc/meminfo # 查看内存总量
 grep MemFree /proc/meminfo # 查看空闲内存量
 uptime # 查看系统运行时间、用户数、负载
 cat /proc/loadavg # 查看系统负载磁盘和分区
 mount | column -t # 查看挂接的分区状态
 fdisk -l # 查看所有分区
 swapon -s # 查看所有交换分区
 hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
 dmesg | grep IDE # 查看启动时IDE设备检测状况网络
 ifconfig # 查看所有网络接口的属性
 iptables -L # 查看防火墙设置
 route -n # 查看路由表
 netstat -lntp # 查看所有监听端口
 netstat -antp # 查看所有已经建立的连接
 netstat -s # 查看网络统计信息进程
 ps -ef # 查看所有进程
 top # 实时显示进程状态用户
 w # 查看活动用户
 id <用户名> # 查看指定用户信息
 last # 查看用户登录日志
 cut -d: -f1 /etc/passwd # 查看系统所有用户
 cut -d: -f1 /etc/group # 查看系统所有组
 crontab -l # 查看当前用户的计划任务服务
 chkconfig –list # 列出所有系统服务
 chkconfig –list | grep on # 列出所有启动的系统服务程序
 rpm -qa # 查看所有安装的软件包
Leave a Comment

FreeBSD下更改csh为bash后root无法登录解决办法

FreeBSD下为了判断一个进程是否存在,执行了chsh -s /bin/bash命令,不巧的是刚好断线,于是再次链接时没办法su root进去管理权限了。可悲的事情,只好请机房来帮忙操作。

chsh -s /bin/bash

查看/etc/passwd内容时发现

root:*:0:0:Charlie &:/root:/bin/bash
这一句被改了
原来是
root:*:0:0:Charlie &:/root:/bin/csh

利用cat命令查看/etc/passwd

kiccleaf# cat /etc/passwd
# $FreeBSD: src/etc/master.passwd,v 1.40.22.2.2.1 2012/03/03 06:15:13 kensmith Exp $
#
root:*:0:0:Charlie &:/root:/bin/bash

原来的内容是:

kiccleaf# cat /etc/passwd
# $FreeBSD: src/etc/master.passwd,v 1.40.22.2.2.1 2012/03/03 06:15:13 kensmith Exp $
#
root:*:0:0:Charlie &:/root:/bin/csh

结果FreeBSD的/bin/目录下并没有bash这个命令存在,于是登录时错误提示:

login:/bin/bash:No such file or directory

把root的shell改成了bash,而导致进不去系统了,可以通过以下几种方式解决:

系统启动时,选择“4”,进入“单用户”模式,输入“boot -s”进入单用户的提示符“#”,依次键入如下命令:

  fsck -p
  mount -u /
  mount -a -t ufs
  swapon -a
  chsh -s /bin/csh

然后就重启系统吧,这样就可以重新登录root管理帐号了。

Leave a Comment

Linux注销其他登录用户或注销登录意外被断开用户

经常在操作Linux的时候,偶尔会发生断网或是在智能多线路环境中操作服务器时,时常被断开,但用户登录的进程又在,并没有退出。
简单的方法实现已经登录的用户注销操作

[root@kiccleaf ~]# who
root     pts/1        2014-06-04 12:07 (27.115.*.*)
root     pts/2        2014-06-04 13:31 (58.247.*.*)
root     pts/3        2014-06-04 13:42 (58.246.*.*)
root     pts/4        2014-06-04 13:56 (140.207.*.*)
root     pts/5        2014-06-04 14:01 (140.207.*.*)
#结束掉一些登录的用户
[root@kiccleaf ~]# pkill -kill -t pts/1
Leave a Comment

FreeBSD修改root密码错误passwd: pam_chauthtok(): error in service module解决办法

在FreeBSD中修改帐号密码有时候会出现一些错误,针对passwd: pam_chauthtok(): error in service module这样的错误提示,简单整理了以下解决方案:
错误提示:

kiccleaf# passwd kiccleaf
Changing local password for kiccleaf
New Password:
Retype New Password:

/: write failed, filesystem is full
passwd: pam_chauthtok(): error in service module

修改方法:
1.把/etc/passwd 文件给所有权限
2.修改好密码
3.恢复文件相应权限

kiccleaf# ll /etc/passwd 
-rw-r--r--  1 root  wheel  1509 Apr 23 14:35 /etc/passwd

kiccleaf# chmod 777 /etc/passwd
kiccleaf# passwd kiccleaf
Changing local password for kiccleaf
New Password:
Retype New Password:

kiccleaf# chmod 644 /etc/passwd
Leave a Comment

shell中的sleep命令

在Linux或Unix系统中最方便最常用的是shell 脚本,在一些脚本程序中经常需要做一些延时处理。收集和整理了一下简单的资料备用
下面来说一下 sleep 和 usleep 的区别:

sleep : 默认以秒为单位。

usleep : 默认以微秒为单位。

1s = 1000ms = 1000000us

sleep 不但可以用秒为单位,还可以指定延迟的单位,例如:

sleep 1s 表示延迟一秒

sleep 1m 表示延迟一分钟

sleep 1h 表示延迟一小时

sleep 1d 表示延迟一天

Leave a Comment

个性化Linux字符界面,登录输出显示信息

字符界面操作久了,就没有太多的新鲜感,所以加点登录时的个性化显示,让心情变的更愉快!
如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置,那就去每个帐号的目录下去配置吧。
这里提供改一个文件所有帐号都能看到的个性显示内容。

vim /etc/bashrc

在顶部添加以下内容:

c2="$(tput bold)$(tput setaf 2)"
echo "$c2  _     _            _                 ___ "
echo "$c2 | |   (_)          | |               / __)"
echo "$c2 | |  _ _  ____ ____| | _____ _____ _| |__ "
echo "$c2 | |_/ ) |/ ___) ___) || ___ (____ (_   __)"
echo "$c2 |  _ (| ( (__( (___| || ____/ ___ | | |   "
echo "$c2 |_| \_)_|\____)____)\_)_____)_____| |_|   "
echo "$(tput sgr0)"

编辑内容:
Linux01
用户登录后效果:
Linux2

Leave a Comment