其实这是个流水账。
注:全文以Ubuntu 16.04 为例
1 用户
- 赶紧新建个用户,别用你的root登陆啊喂!root登陆之后:
$ sudo adduser tom #交互式创建用户,你要做的基本只是设置一个强度高一点儿的密码
$ sudo vim /etc/sudoers #为这个新用户也增加root权限
最后一行添加 tom ALL=(ALL) ALL
,保存退出。
- 换个好用的shell吧!
$ su tom
$ cd ~ && vim .bashrc
到这儿拷贝所有内容,复制到你的.bashrc
文件最后,保存,$ source .bashrc
看看效果吧!
2 SSH
- 先把root 登陆关掉,把默认22端口改掉。
$ sudo vim /etc/ssh/sshd_config
,找到下面两行,修改为:PermitRootLogin no #禁用root登陆 Port 2345 #修改默认端口,你可随机指定其他1024~65535
- 配置公钥验证
选择你本机(非远程vps)的密钥对 ,目录为~/.ssh/
。
如果没有,使用ssh-keygen
命令生成一对。生成完后,在上面目录可以找到id_rsa
id_rsa.pub
两个文件。- 将id_rsa.pub 文件拷贝至vps的
/home/tom/.ssh/
目录下 - 在vps上tom用户下,执行:
$ cd ~/.ssh $ cat id_rsa.pub >> authorized_keys #部署登陆公钥 $ chmod 600 authorized_keys #权限 $ chmod 700 ~/.ssh #权限
- 编辑
/etc/ssh/sshd_config
文件,确保字段如下:RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 此项视情况,如果设置了这个安全性更高,但就无法通过密码ssh进来了,测试阶段先不要设置,等ssh免密登陆成功了可以再设置此项
- 重启sshd
sudo service ssh restart
配置完成后,在你本机的ssh工具选择公钥验证,然后选择你本地的id_rsa
导入,之后就可以免密码登陆了!注意备份好这个私钥,否则丢了的话,就登不进去了亲!!
- 将id_rsa.pub 文件拷贝至vps的
3 ufw防火墙
ufw是一个主机端的iptables类防火墙配置工具,比较容易上手。相比反人类的iptables简直不要太简单!
-
安装:
sudo apt-get install ufw
-
查看状态
sudo ufw status
# 启用 sudo ufw enable sudo ufw default deny #停用 sudo ufw disable # 应用举例 sudo ufw allow 22 # 一定先把你的ssh端口allow啊!!! sudo ufw allow 53 # dns sudo ufw allow 80 #允许外部访问80端口 sudo ufw delete allow 80 #禁止外部访问80端口 sudo ufw allow from 192.168.1.1 #允许此IP访问所有的本机端口 sudo ufw deny smtp #禁止外部访问smtp服务 sudo ufw delete allow smtp #删除上面建立的某条规则 ...
-
ufw规则简单明了,可以根据自己需求开发,默认全部deny。
-
请注意: ufw和docker存在兼容性问题,可能导致ufw的策略失效或混乱,如果你有在vps上使用docker,请务必留意,目前这儿有一个解决方案
create the file
/etc/docker/daemon.json
and put the following in:{ "iptables": false }
then issued
sudo service docker stop
thensudo service docker start
FINALLY docker is simply following the appropriate rules in UFW.Additional data: Docker overrules UFW!
4 ShadowSocksR
不多说了,懂得自然懂,到这儿来看,不保证链接永久有效,自求多福吧:-)
多说一句,如果你已经成功安装SSR,那么推荐你开启BBR,这是Google主导的一套拥塞控制算法,能够很大程度上提高你的科学速度,参见一键安装最新内核并开启 BBR 脚本
5 fail2ban
fail2ban 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如:/var/log/auth.log 或者 /var/log/secure)并根据检测到的任何可疑的行为自动触发不同的防御动作。事实上,fail2ban 在防御对SSH服务器的暴力密码破解上非常有用。
-
安装
$ sudo apt-get install fail2ban
-
ssh保护。fail2ban 功能强大,配置也比较复杂,不过好在它自带了许多默认的监控项,例如针对ssh的(所有默认监控项可以在
/etc/fail2ban/jail.conf
找到)。所以如果我们只针对ssh进行保护的话,非常简单,只需要编辑/etc/fail2ban/jail.d/defaults-debian.conf
,增加如下字段即可:[sshd] enabled = true bantime = 36000
-
重启
sudo service fail2ban restart
-
nginx示例。因为我的vps中用到了nginx ,所以在这儿也附一个nginx保护的例子
#/etc/fail2ban/filter.d 文件夹下新增文件 nginx.conf,内容如下 [Definition] failregex = <HOST> -.*- .*HTTP/1.* 404 .*$ #404相关的 ignoreregex = #/etc/fail2ban/jail.local 文件尾新增如下内容 [nginx-get-dos] enabled = true filter = nginx # 指定filter,就是上面文件中定义的内容 logpath = /var/log/nginx/access.log #log路径指定 maxretry = 10 #最多10次,就ban掉 findtime = 600 #次数统计时间段 bantime = 36000 #ban 10h
-
常用命令
$ sudo service fail2ban restart #重启 $ sudo fail2ban-client ping #验证服务是否正常 Server replied: pong $ sudo fail2ban-client status #显示出当前活动的监狱列表 $ sudo fail2ban-client status nginx-get-dos #检验一个特定监狱的状态
The end ,欢迎留言讨论,以后如有新内容会持续补充
网友评论