开通了Linode账号,部署完操作系统后,下面还有一件很重要的事要做,那就是linode的安全设置,以防止外部的攻击。以下命令以ubuntu为例。
增加一个新用户
Root用户是linux系统中具有最大权限的用户,root用户秘密泄露或者被黑客得到,那么后果可能十分严重,因为root用户可以做任何事情,让你的vps毁于一旦。基于这个原因,linode推荐创建一个新用户,代替root用户操作,实际上利用sudo命令,普通用户也可以运行只有root用户可以运行的命令。
1. 首先打开终端,例如putty,链接到你的linode账号。
2. 用一下命令创建一个新用户,用你希望创建的用户名代替命令中的example_user
adduser example_user
3. 将新增的用户加入管理员组
usermod -a -G sudo example_user
4. 退出root登陆
logout
就算添加好用户laoyi了,将来你ssh登录系统就可以ssh example_user@106.187.xxx.xxx 登录系统。
2、客户端生产ssh公钥私钥,配对连接,操作成功以后客户端访问服务器端,将不需要输入密码,这样可以减少暴力破解密码工具的可能性。当然您要将您的私钥保护好。
在客户端,执行:ssh-keygen,产生公钥密钥,
将公钥传至服务器端,scp ~/.ssh/id_rsa.pub laoyi@106.187.xx.xx,
在服务器端,
mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys
chown -R laoyi:laoyi .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
3、修改ssh配置,端口。禁止root管理员直接登录linux服务器。root帐号就是玉皇大帝,掌管着linux服务器的生杀大权,如果一不小心误操作,那后果是很严重的,建议添加个普通的linux用户帐号,如果需要用root帐号的时候,su或者sudo可以获得root的管理员权限。另外更重要的是,现在总有些无聊的人猜密码,如果你的root密码设置的过于简单,那被他人用软件猜出root密码的概率较高,不幸中弹,基本你的linux服务器就毁了。。
vi /etc/ssh/sshd_config,将端口默认的22改成其他端口;
将密码认证设置成NO:PasswordAuthentication no;
同时将root直接登录系统取消:PermitRootLogin no
重启ssh服务:/etc/init.d/ssh restart
4、chattr +i /etc/passwd; chattr +i /etc/shadow,避免root密码被篡改。
5、chattr +a /var/log/messages,让系统日志只能增加数据,而不能删除也不能修改数据。
6、建立脚本做好重要数据的md5校验指纹比对(初期可不考虑)。
7、设置简易iptables防火墙,开启iptables防火墙进行软防。很多vps厂家为了减少成本,比如linode是裸机,本身是没有任何硬件防护的,此时iptables软防就特别重要,建议把不用的端口服务都禁掉。
看看iptables是否开启,默认防火墙规则都是空的,也就是不管事的。
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
需要我们自己建立防火墙规则:
vi /etc/iptables.firewall.rules
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn’t use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT# Accept all established inbound connections
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT# Allow all outbound traffic – you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT# Allow SSH connections
#
# The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state –state NEW –dport 22 -j ACCEPT# Allow ping
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT# Log iptables denied calls
-A INPUT -m limit –limit 5/min -j LOG –log-prefix “iptables denied: ” –log-level 7# Reject all other inbound – default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECTCOMMIT
以上防火墙规则只开启了http(80端口),https(443端口),ssh(22端口),根据您的服务器开启服务情况,请自己修改防火墙规则。
让防火墙规则生效:iptables-restore < /etc/iptables.firewall.rules
然后再查看防火墙是否生效:iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere
REJECT all – anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp – anywhere anywhere tcp dpt:www
ACCEPT tcp – anywhere anywhere tcp dpt:https
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp – anywhere anywhere icmp echo-request
LOG all – anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ‘
REJECT all – anywhere anywhere reject-with icmp-port-unreachableChain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all – anywhere anywhere reject-with icmp-port-unreachableChain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere
接下来我们需要设置下只要开机防火墙就开启服务:
cd /usr/local
mkdir virus
vi firewall
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules
chmod +x firewall
vi /etc/rc.d/rc.local
/usr/local/virus/firewall
8、安装配置Fail2Ban,
Fail2Ban可以阻挡字典攻击您的服务器,当Fail2Ban检测到同一个ip企图攻击您的服务器,他将创建临时的防火墙规则来阻挡这些ip地址,Fail2Ban可以监控SSH,HTTP,SMTP等,默认情况下,Fail2Ban只监控SSH。具体安装Fail2Ban,以及配置,将在下篇专门讲解。