Ubuntu服务器需要做哪些安全设置?
平时自己喜欢捣鼓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