清风小荷塘改名了

清风小荷塘改名了,从此不再叫清风小荷塘了。
自从07年定下这个名字,一直沿用至今。
现在的清风小荷塘,已不再是一个书生意气、单纯懵懂的少年了,变成了一个满脸胡渣的大叔。
一直想不到啥好的博客名字。就乱起一个吧。
麻烦友情链接里的朋友们,改一下我的链接名吧,谢谢。

生查子
宋·欧阳修
去年元夜时,花市灯如昼。
月上柳梢头,人约黄昏后。

今年元夜时,月与灯依旧。
不见去年人,泪湿春衫袖。

OpenLDAP进阶使用

OpenLDAP进阶使用过程,记录一下。

1,设定用户密码定期修改及过期时间
向条目中添加一个名为shadowAccount的objectClass, 设定如下属性(attributes):
shadowLastChange: 密码从1970年1月1日开始, 到最近一次修改, 一共间隔了多少天. 比如这里指定成16967就表示2016年6月15日. 也可以直接获取当天的日期,方法为:在系统里useradd一个用户,查看/etc/shadow中该用户的第三个值, 即是该值. 该值如果设置成0, 则表示下次登陆将强制修改密码, 用户修改密码成功以后, 该值将发生对应的变化;
shadowMin: 密码从shadowLastChange指定的日期开始, 到多少天以后才能再次修改密码, 防止某些人天天没事就修改密码, 此值设置成0表示不限制;
shadowMax: 密码从shadowLastChange指定的日期开始, 到多少天以后过期(即多少天后必须更改密码);
shadowInactive: 密码过期以后还可以登陆多少天(每次登陆都会要求更改密码), 如果超过此值指定的天数, 下次登陆时会提示Your account has expired; please contact your system administrator;
shadowWarning: 提前多少天开始警告用户密码将会过期;
shadowExpire: 密码从1970年1月1日开始, 多少天以后将会过期, 这里一般用不到;
shadowFlag: 暂时无用.

一组建议的值
shadowLastChange: 0
shadowMin: 0
shadowMax: 90 #每隔90天强制更换密码
shadowInactive: 7 #过期以后还有7天可以登陆,每次登陆都会提示修改密码
shadowWarning: 8 #提前8天开始提示密码即将过期

Ubuntu系统下打开Atom编辑器时提示Xlib: extension “XInputExtension” missing on display “:5”.

Ubuntu系统下打开Atom编辑器时提示Xlib: extension “XInputExtension” missing on display “:5”.的过程, 记录一下. 本文同时适用于Ubuntu 12.04和14.04.

wget https://github.com/atom/atom/releases/download/v1.7.4/atom-amd64.deb
sudo dpkg -i atom-amd64.deb

$ atom 1.txt
Xlib:  extension "XInputExtension" missing on display ":5".
Xlib:  extension "XInputExtension" missing on display ":5".
libGL error: failed to load driver: swrast
App load time: 891ms
Xlib:  extension "XInputExtension" missing on display ":5".
Xlib:  extension "XInputExtension" missing on display ":5".

解决办法

在系统里找到libxcb.so.1
sudo cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 /usr/share/atom/
cd /usr/share/atom
sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' libxcb.so.1

继续阅读Ubuntu系统下打开Atom编辑器时提示Xlib: extension “XInputExtension” missing on display “:5”.

OpenLDAP提示ldap_result: Can’t contact LDAP server (-1)

近日, 出现在频繁登陆不了LDAP服务的情况, 登陆时总提示ldap_result: Can’t contact LDAP server (-1)的错误,

检查系统日志, 出现如下错误

slapd[1044]: warning: cannot open /etc/hosts.deny: Too many open files

基本上可以判断, slapd进程的文件句柄数量达到限制了.

原因分析

$ pidof slapd | xargs lsof -a -p | wc -l    #查看slapd当前的文件句柄数量

$ cat /proc/`pidof slapd`/limits    #查看系统对slapd进程的文件句柄数量限制
Limit                     Soft Limit           Hard Limit           Units     
……
Max open files            4096                 4096                 files     
……

$ ulimit -a    #也可以通过这条命令来查看
……
open files                      (-n) 1024
……

“open files (n) 1024 “是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目). 这个值可用ulimit命令来修改, 但ulimit命令修改的数值只对当前登录用
户的目前使用环境有效, 系统重启或者用户退出后就会失效.

cat /proc/sys/fs/filemax    #查看系统总限制
cat /proc/sys/fs/file-nr    #查看系统目前使用的文件句柄数量

解决办法
不想重启的话,可以按照如下办法来解决

$ vim /etc/init.d/slapd
function start() {          #找到start()函数
……
        harg="$SLAPD_URLS"
        ulimit -HSn 4096    #添加这一行
……

$ /etc/init.d/slapd restart

然后可以切换到一个普通用户, 执行ulimit -a看看是否发生了变化.

建议采取的办法

$ vim /etc/security/limits.conf    #添加如下两行
*		soft	nofile		4096
*		hard	nofile		4096

然后重启即可.

参考文档:
Troubleshooting slapd error: too many open files

Linux内核参数设置sysctl命令详解

sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能. 用sysctl可以读取设置超过五百个系统变量. 基于这点, sysctl提供两个功能:读取和修改系统设置.

常用参数

-w 临时改变某个指定参数的值,如sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

以下是实例

$ sysctl -a     #查看所有可读变量

$ sysctl net.ipv4.ip_forward    #查看某个变量
net.ipv4.ip_forward = 1

$ sysctl -n net.ipv4.ip_forward    #获取某个变量的值
1

$ sysctl -w kernel.yama.ptrace_scope=0   #临时修改某个变量的当前值,即虚拟文件系统/proc下的值,重启失效
kernel.yama.ptrace_scope = 0

$ echo 1 > /proc/sys/net/ipv4/ip_forward  #临时修改某个变量的当前值,效果同上

#使用sed命令永久修改某值
#把kernel.yama.ptrace_scope开头的行修改为后面的值,注意第2个/后面有个c表示change
$ sudo sed -i "/^kernel.yama.ptrace_scope/ckernel.yama.ptrace_scope = 0" /etc/sysctl.d/10-ptrace.conf
$ sysctl -p    #将sysctl.conf文件中的修改读取到系统中,即虚拟文件系统/proc下的值

继续阅读Linux内核参数设置sysctl命令详解

配置Xmanager连接Ubuntu 14.04远程桌面

Xmanager默认使用XDMCP协议连接远程桌面, 因此这里我们需要启用XDMCP协议.

$ sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
[SeatDefaults]
user-session=mate     #将其改为mate, 并添加如下几行
allow-guest=false
greeter-show-manual-login=true
greeter-hide-users=true

[XDMCPServer]
enabled=true


$ sudo service lightdm restart

$ netstat -anp  |grep :177     #确保UDP的177端口启动成功(XDMCP使用UDP 177端口)
udp        0      0 0.0.0.0:177             0.0.0.0:*                           -               
udp6       0      0 :::177                  :::* 

接下来是安装mate桌面

$ sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
$ sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
$ sudo apt-get update

mate官方WIKI针对Ubuntu 14.04给出了三种安装方式

$ sudo apt-get install mate-desktop-environment-core   #安装一个最小化的mate桌面
$ sudo apt-get install mate-desktop-environment        #安装一个完整的mate桌面
$ sudo apt-get install mate-desktop-environment-extras #安装一个完整的mate桌面(包含推荐的软件包)

本文这里使用了第一种方式安装.

然后就可以在Xmanager里输入IP地址, 方法选择”XDMCP Query”即可连接.

Linux系统安装obfuscated-openssh

1,安装obfuscated-openssh server

obfuscated-openssh可以代替系统的OpenSSH服务,如果在安装过程中不指定–prefix选项,它将替换系统openssh-server的二进制程序和配置文件. 本文指定了安装目录,并不会与系统自带的openssh服务冲突.

yum install zlib openssl                     #适用Redhat/CentOS系统
sudo apt-get install zlib1g-dev libssl-dev   #适用Ubuntu系统

wget -O ofcssh.tar.gz https://github.com/brl/obfuscated-openssh/tarball/master

tar zxvf ofcssh.tar.gz

cd brl-obfuscated-openssh-ca93a2c/

./configure --prefix=/usr/local/obfus
make
make install

sed -i "s/Port /#Port /g" /usr/local/obfus/etc/sshd_config      #22端口被正常的SSH服务使用,这里不需要
sed -i "s/UsePAM /#UsePAM /g" /usr/local/obfus/etc/sshd_config  #obfuscated-openssh不支持UsePAM选项
echo "ObfuscatedPort 32" >> /usr/local/obfus/etc/sshd_config              #指定监听端口
echo "ObfuscateKeyword fuckthegfw" >>  /usr/local/obfus/etc/sshd_config   #指定混淆密钥

运行:
/usr/local/obfus/sbin/sshd -f /usr/local/obfus/etc/sshd_config &


设置开机自启(写入/etc/rc.local)
echo 'nohup /usr/local/obfus/sbin/sshd -f /usr/local/obfus/etc/sshd_config >> /var/log/obfus.log 2>&1 &' >> /etc/rc.local

继续阅读Linux系统安装obfuscated-openssh

获取China大陆IP段的范围

这里有几个网站提供了大陆的IP段范围。别问我要这个列表干什么,我也不知道。

http://www.ip2location.com/blockvisitorsbycountry.aspx
老牌网站,国内很多人应该都知道,可以选择任意一个国家的IP段,然后可以输出多种格式。

https://www.countryipblocks.net/country_selection.php
跟上面的那个一样,多一个备份。

http://www.ipdeny.com/ipblocks/
一样是列出了所有国家的IP段文件,提供下载。