2019年8月

其实之前也看过相关文章,说要修改ssh默认端口22以提高安全性,但也有文章指出,如果对方有意爆破的话,他也可以扫描你所有端口。

我个人比较认同后面的说法,觉得高强度的长密码才是王道。当然也有懒的原因。

但是还是决定要修改端口号了。

原因是看了这篇文章《虚拟主机和VPS的几个区别》http://www.auiou.com/relevant/00001444.jsp
提到“尤其是Linux主机下的/var/log/btmp文件的增长速度特别快”。

笛声大佬评论说:

你怎么总是纠结 /var/log/btmp 这个文件,这个文件你用 lastb -f /var/log/btmp
看看,里面全是记录了失败的登录,就是说有人一直在爆破你的密码,你把sshd的端口改一下,一般就没人来爆破了,我登录了好几台机器去看了,这个文件大小一直是0。

所以虽然目前我的vps没有被破,但是为了节约磁盘空间,还是说干就干。

第一、修改 /etc/ssh/sshd_config
找到#Port 22,再插入一行设置成你想要的端口号,注意不要跟现有端口号重复。建议一万以上的,当然要小于65535。
第二、重启ssh: systemctl restart sshd
第三、用你刚才的端口登录进去,如果成功了,就注释掉port 22,继续重启ssh。
第四、用端口22登录,发现登不了了,再用新端口,能用,那么就恭喜啦!

另附:清空文件的方法

: > filename
> filename  #最简单,推荐
echo "" > filename
echo > filename

1和2两种方式是0字节,3和4两种方式是1字节。

清空多个文件,比如清空多个log:
ls *.log | awk 'NR>1 {print "echo > " $NF }' |sh

为什么要清空文件,而不是删除文件呢?其实还可以写一篇文章,但我还是一并写在这里了。有一次按照网上的文章,删除了许多log文件,但是nginx等却启动不了了,要手动启动。我感觉linux下的软件简直是白莲花,就不能像windows下面的软件一样,自己再生成文件吗?比如Windows下某某软件,我删了他的缓存,启动该软件后,它又重新生成了一堆缓存。感觉自己是习惯了这些流氓行为,而对linux下的白莲花行为不习惯呢!(晕……)

附上勇哥的脚本:

port='3635'; a=''; a2='/etc/ssh/sshd_config'; a1=`cat $a2`; if [[ $a1=~ '#Port 22' ]]; then sed -i "s/#Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port 22' ]]; then sed -i "s/Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port ' ]]; then a=''; else sed -i '$a\'"\nPort $port" $a2; fi; reboot;

请修改上述的 port='3635'; 的值.

递归修改目录权限为755,文件权限为644

linux的原则是最小权限够用就行,不相关的文件只需要只读权限即可。

实现方法:递归修改权限方法是通过 find命令 根据文件参数查找到对应的类型之后执行指定权限。

说明:以下**path**为你需要修改的目录的路径。

1.修改所有者:
chown -R root.root path (递归修改指定路径的所有文件为root用户组所有)
如果是网站目录建议修改所有者为:www-data:www-data

2.递归修改目录权限、文件权限:
find -type d|xargs chmod 755
find -type f|xargs chmod 644
方法二:
#find 路径 -type d -exec chmod 755 {} \;
#find 路径 -type f -exec chmod 644 {} \;

Let's encrypt Wildcard(Wildcard其实是通配符的意思,但是网友们喜欢称“野卡”)

网上的代码,我试过很多都不行,下面这个代码是我从certbot官网以及经过本人一些改动得来,在Debian 8 nginx下通过。

apt-get remove certbot
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

sudo /usr/local/bin/certbot-auto certonly --manual
解释:certonly 表示只要申请证书,不需要它自动配置nginx,--manual表示手动的意思。
接下来,会有几个yes or no,自己看清楚来选,然后有一个是添加dns解析的,请按提示操作即可。
/usr/local/bin/certbot-auto renew #这个代码是用来更新证书的,其实有一个是加入任务列表,自动更新的,但运行不了,不知道怎么回事。