平时自己喜欢捣鼓Linux来部署一些服务,而用的最多的版本就是Ubuntu和Centos。所以在阿里云或Linode上购买服务器后第一件事就是对服务器做一个简单的加固。避免被人黑了当肉鸡使,因为以前遇到过这种情况,之后这种加固对我来说几乎是必做的。
下面我就简单的说一下当拿到一台服务器或VPS的时候需要做哪些加固。
1.更新系统
apt-update apt-upgrade
2.添加新用户,避免使用root用户
root用户的权限太大,而且作为系统的默认管理员账户很容易被暴力破解,建议新增一个用户,用sudo来执行需要管理员权限的事,这样比较安全。
adduser example_user #新建 用户 adduser example_user sudo #给新建用户添加sudo权限
3.使用ssh密匙代替密码
在用密码登录的时候如果让黑客知道你的用户名就容易被暴力破解,存在安全隐患。而密匙就比较难被暴力破解,除非你泄露密匙文件。在设置密匙登录前我们先要在客户端生成密匙。
如果你的客户端时MAC或Linux那么直接用以下命令:
ssh-keygen -t rsa
如果你用的是Windows客户端, Putty和Xshell都带有生成密匙的功能。
密匙创建后,我们可以得到两个文件, id_rsa.pub和 id_rsa。也就是公钥文件和私钥文件。然后把 id_rsa.pub 文件上传到服务器用户文件夹下.ssh/authorized_keys/文件夹内就行。Mac和Linux可以使用ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_ip快速把生成的密匙上传到服务器。
4.关闭ssh的密码登录
在执行这个操作前,请先确认你的密匙可以正常登录了。修改 /etc/ssh/sshd_config 文件中的相关内容如下所列:
sudo vi /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no
重启ssh服务
sudo service ssh restart
这个时候你再登录服务器的时候应该是自动登录,不用输密码,同时root用户也无法通过ssh登录服务器。当然你可以通过su来切换为root用户。
5.设置防火墙和 Fail2Ban
sudo iptables -F #清空规则 sudo vi /etc/iptables.up.rules #新建规则 #添加以下代码 *filter # allow all connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # allow out traffic -A OUTPUT -j ACCEPT # allow https http -A INPUT -p tcp --dport 443 -j ACCEPT -A INPUT -p tcp --dport 80 -j ACCEPT # allow ssh port login -A INPUT -p tcp -m state --state NEW --dport 49999 -j ACCEPT # allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7 # drop incoming sensitive connections (bad incoming) -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP # reject all other inbound -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT #这里结束 sudo iptables-restore < /etc/iptables.up.rules #使规则生效 sudo ufw status #查看防火墙状态 sudo ufw enable #激活防火墙 #设置开机自动启动防火墙 sudo vi /etc/network/if-up.d/iptables #写入脚本 #!/bin/sh iptables-restore /etc/iptables.up.rules sudo chmod +x /etc/network/if-up.d/iptables # 给脚本权限 sudo apt-get install fail2ban sudo vi /etc/fail2ban/jail.conf 改 bantime = 3600 .... destmail = 自己的 ... 去到 action = %(action_mw)s [ssh]部分不改动 sudo service fail2ban start