Linux VPS主机安全

2013-2014 from—https://www.freehao123.com/linux-vps-root/—https://www.freehao123.com/vps-ssh/

增强VPS 安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

 

VPS 账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要。以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门,导致好几个有名的站点信息泄露,损失惨重。

如何知道自己的VPS账号正在遭受坏人的扫描和暴力破解呢?简单的方法就是查看日志:cat /var/log/auth.log。如何来增强VPS 账号的安全性呢?除了养成使用正规软件的好习惯外,还要从VPS本身来加强VPS 账号的安全性。

默认的SSH端口都是22,通过修改自己的VPS的端口先为扫描者增加一道端口门槛,VPS默认的账号是Root,如果我们禁用了Root,那么要攻破账号又得先暴力猜测VPS的账号,难度又增加几分。如果还不放心,我们可以直接禁用密码登录验证VPS的方式,改用密钥登录,这样安全系数是相当高了。

Linux还有一个自动统计VPS登录错误工具:Denyhosts,一旦登录VPS账号错误次数超过了Denyhosts安全设置,Denyhosts就会将该IP记录下来,同时将其放入黑名单当中,禁止该IP在某一段时间内继续访问VPS,通过Denyhosts可以实现自动封锁恶意IP。

VPS主机和网站安全优化是一个持久的问题,没有一劳永逸的“安全设置”,道高一尺,魔高一丈,我们只有不断地发现问题,才能最大限度地保护自己网站和VPS安全

增强VPS 账号安全:改端口,禁止Root,密钥登录,Denyhosts防暴力攻击

一、增强VPS 账号安全方法一:修改SSH登录端口

1、用下面命令进入配置文件。


 vi /etc/ssh/sshd_config

2、找到#port 22,将前面的#去掉,然后修改端口 port 123(自己设定)。

3、然后重启ssh服务。


/etc/init.d/ssh restart

二、增强VPS 账号安全方法二:使用密钥登录SSH

1、SSH登录方式有账号+密码和密钥两种形式,为了阻止暴力破解VPS的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。

2、执行以下命令在VPS上生成密钥文件。


ssh-keygen -t rsa

3、生成密钥时会询问你密钥保存的位置,默认即可,还有你可以为你的密钥还设置一个密码,默认为空。

VPS安全生成密钥

4、密钥生成后,进入密钥存放的目录中,执行以下命令,将公钥生成一个新的文件。


cat id_rsa.pub >> authorized_keys

VPS安全生成新文件

5、将id-rsa这个私钥文件下载到本地,打开PuTTYGen软件,执行Conversions->Import Key,导入这个私钥文件。

VPS安全导入私钥文件

6、Putty使用密钥登录SSH方法:如果你要使用Putty,在PuTTYGen中选择Save private key,这时会在本地生成一个PPK文件。

VPS安全保存本地文件

7、然后在Putty中填入服务器名,在SSH授权方式中选择密钥,导入刚刚保存的PPK文件。

VPS安全Putty授权方式

8、使用Xshell通过密钥登录VPS方法:如果要使用Xshell,请在PuTTYGen的Conversions中选择Export Open#SSH Key,设置一个名称保存。

VPS安全新的格式

9、然后启用Xshell,填入服务器IP,在用户身份验证中选择“Public Key”,然后浏览导入刚刚你保存的Key文件。

VPS安全Xshell导入密钥

10、导入了Key后,你就可以直接打开登录VPS了,不需要输入密码,即可进入VPS。

VPS安全直接进入

11、有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:vim /etc/ssh/sshd_config,添加一行:PasswordAuthentication no,如果有了这一行,请把yes改成no,保存,重启SSH服务,生效。

VPS安全不用密码了

三、增强VPS 账号安全方法三:禁用Root账号

1、如果你已经设置SSH密钥登录的方式,就可以禁用Root账号了,或者你可以新建一个VPS账号。执行以下命令:


useradd freehao123 #添加用户名
passwd freehao123 #为freehao123用户名设置密码

VPS安全增加新的用户

2、然后编辑进入配置:vim /etc/ssh/sshd_config,找到PermitRootLogin yes,然后后面的Yes改no,如果没有这一行命令,直接将:PermitRootLogin no 加进去。

VPS安全不用Root

3、保存后,重启SSH服务,生效。

四、增强VPS 账号安全方法四:Denyhosts防暴力攻击

1、Linux各平台现在基本上都可以直接安装Denyhosts了,执行以下命令:


Debian/Ubuntu:
sudo apt-get install 
 
RedHat/CentOS
yum install 
 
Archlinux
yaourt 
 
Gentoo
emerge -av 

2、安装好了Denyhosts,默认的配置基本上就可以防御一定的暴力攻击了,/etc/hosts.deny 文件里保存了被屏蔽的记录。

VPS安全自定义设置

3、如果你要自定义Denyhosts的相关配置,执行:vim /etc/denyhosts.conf,以下是相关参数的说明:



SECURE_LOG = /var/log/auth.log #ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件
PURGE_DENY = #过多久后清除已经禁止的,空表示永远不解禁
BLOCK_SERVICE = sshd #禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可
DENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1 #允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts #运行目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES #是否进行域名反解析
LOCK_FILE = /var/run/denyhosts.pid #程序的进程ID
ADMIN_EMAIL = root@localhost #管理员邮件地址,它会给管理员发邮件
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts 
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d #用户的登录失败计数会在多久以后重置为0,(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0

五、增强VPS 账号小结

1、上面讲到了四个方法来增强VPS 账号的安全性,那么如何得知自己的VPS曾经或正在遭受账号暴力破解登录呢?执行以下命令,查询出来的结果中包含了“ip地址=数量”就是攻击者信息。


cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

VPS是不是安全了

2、目前在Putty官网上没有看到中文版本的Putty,所以网上流行的一些汉化版本的Putty很有可能被植入了后门,大家在使用时一定要特别留心。Xshell官网直接提供了多国语言,包括中文在内。

 

Linux VPS主机安全-禁止Root登录,密钥授权,Fail2ban,DDoS deflate

使用VPS主机虽然比使用虚拟主机有着非常多的好处,但是有一个最大的问题就是站长自己需要了解一定的VPS主机使用知识,尤其是在数据备份和网络方面需要给予高度的重视,否则一旦VPS主机出现崩溃或者被入侵,造成的损失将是不可估量的。

前几天部落的Linode VPS主机被官方给停止了,原因就是VPS主机在持续不断地向外发送数据包,被怀疑为攻击源。登录到VPS管理后台仔细分析后,确认是VPS主机被入侵了,不得已赶紧查找解决的办法。初步分析就是某VPS主机面板的漏洞或者是Linux漏洞导致的。

为了防范于未然,我们还是要提前做好Linux VPS的安全防范措施,本篇文章就来分享一下强化Linux主机安全的多种方法:为VPS增加新的用户,禁止Root用户登录;不使用密码登录,改用SSH密钥授权登录;安装Fail2ban和DDoS deflate,阻止暴力破解VPS登录密码和流量攻击。

更多的有关VPS主机优化和使用技巧有:

Linux VPS主机安全-禁止Root登录,SSH密钥授权,,

一、Linux VPS主机安全:如何及时察觉VPS有异常?

1、最直接的办法自然是查看你的VPS主机控制面板的流量统计,一定的时间内流量超出平常的几倍,肯定是有问题了。

VPS主机流量异常

2、有些小规模的攻击可能无法直接从流量异常中得知,这时我们可以使用命令:netstat -ant ,查看当前VPS的网络连接情况,单个IP地址连接数量过多肯定是有问题的。

VPS主机查看网络连接

3、使用命令:more /var/log/secure 可以查看到最近有多少次VPS登录失败的记录。

VPS主机登录失败记录

4、命令:who /var/log/wtmp 可以看到每个用户的登录次数和持续时间等信息。

VPS主机每个用户连接数

5、使用以下命令检测短时间内大量IP发起请求:


netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
netstat -alnt | awk '{print $5}' |awk -F ":" '{print $1}’ | sort | uniq -c |sort -n

二、Linux VPS主机安全:新增用户,禁止Root登录

1、为什么要禁止Root用户登录?Root用户拥有服务器的最大控制权,一旦Root用户被攻破,入侵者基本上完全掌控了整台VPS,删除数据等将是轻而易举的事情。

VPS主机禁止root登录

2、而换用非Root用户,我们可以赋予Root部分权限给它,这样在保证了VPS正常运行的前提下,又可以在一定的程度上防范因Root用户的泄露而对主机产生的致命危害。

3、新增用户方法(把freeehao123换成你自己的用户名):


#Debian/Ubuntu
adduser freehao123
usermod -a -G sudo freehao123
apt-get install sudo #没有sudo 可直接安装
#CentOS/Fedora
adduser freehao123
passwd freehao123
visudo 
freehao123        ALL=(ALL)       ALL

4、visudo执行后,输入“i”编辑,找到root那一行,给你的用户赋予权限。然后输入::wq 退出。

VPS主机赋予用户权限

5、使用上面的操作后,你就可以使用你的新的用户登录VPS了,使用sudo可以临时获取到Root权限,部分程序安装时需要使用root权限。

6、接下来就是禁止Root登录了,执行:sudo nano /etc/ssh/sshd_config,然后找到PermitRootLogin这一行,把Yes改成no,保存。

7、最后重启SSH服务就成功了:


sudo service ssh restart #Debian/Ubuntu
sudo systemctl restart sshd #Fedora/CentOS

三、Linux VPS主机安全:使用SSH密钥授权登录,禁用密码登录

1、SSH登录方式有账号+密码和密钥两种形式,为了阻止暴力破解VPS的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。这样除非入侵者得到你的Key,否则无法使用密码登录的方式进入你的VPS.

VPS主机使用密钥登录

2、有关Linux使用密钥登录的详细操作方法,部落在增强VPS 账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击已经分享过,有兴趣的朋友可以参考一下。

3、有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:vim /etc/ssh/sshd_config,添加一行:PasswordAuthentication no,如果有了这一行,请把yes改成no,保存,重启SSH服务,生效。

四、Linux VPS主机安全:合理配置防火墙

1、合理配置Linux VPS的防火墙规则,可以在一定的程度上阻止基本攻击。首先是被动式防御—允许指定的端口被访问:22,80,21,443等。


#配置,禁止进,允许出,允许回环网卡
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#允许ssh
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#允许ftp
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
#允许ftp被动接口范围,在ftp配置文件里可以设置
iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT
#允许DNS
iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
#允许http和https
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

2、主动式防御—拒绝超过一定连接数的IP,请根据自己的访问量来决定,该方法有可能会导致正常的IP也被封掉。


iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'DDOS:' --log-ip-options
#60秒10个新连接,超过记录日志。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
#60秒10个新连接,超过丢弃数据包。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
#范围内允许通过。
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# 记录攻击IP
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
#允许状态检测
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
# 除非允许的IP和端口,否则全部拒绝
iptables -A INPUT -p icmp -j ACCEPT
#允许ping,不允许删了就行

3、执行命令:iptables-save > /etc/iptables 或者 service iptables save 用来保存刚刚设置的iptables规则。

4、让VPS重启后iptables依然生效,使用以下命令保存:


#Debian/Ubuntu
sudo nano /etc/network/if-pre-up.d/firewall
#将以下文件保存在/etc/network/if-pre-up.d/firewall中
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules
#按下Control-X 再输入 Y 保存以上脚本,接着给脚本赋予执行权限
sudo chmod +x /etc/network/if-pre-up.d/firewall

#CentOS/Fedora
/sbin/service iptables save #适用CentOS 6.2 或 6.5
#如果是CentOS 7 或者 Fedora 20,需要先安装再保存
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
/usr/libexec/iptables/iptables.init save

五、Fail2ban:阻止SSH、SMTP、FTP密码扫描

1、Fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)。

2、当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员

VPS主机安装Fail2ban

3、安装Fail2ban方法:


#Debian/Ubuntu 
sudo apt-get install fail2ban 
#Fedora 
sudo yum install fail2ban 
#CentOS 
sudo yum install epel-release 
sudo yum install fail2ban
#程序说明 
/etc/fail2ban/action.d                #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf           #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d                #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf               #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
/etc/rc.d/init.d/fail2ban             #启动脚本文件

4、/etc/fail2ban/jail.conf 是Fail2ban的配置文件,在这里你可以修改IP白名单、屏蔽时间、最大尝试次数、是否发邮件提醒等等,说明如下图:(点击放大)

Fail2ban详细说明

5、Fail2ban可以监视SSH、SMTP、FTP、pop、http等服务,这些你都可以在配置中开启它。

六、DDoS deflate:阻止小规模的DDoS攻击

1、DDoS deflate的原理是通过netstat命令找出 发出过量连接的单个IP,并使用iptables防火墙将这些IP进行拒绝。DDoS deflate也可以设置采用APF(高级防火墙)进行IP阻止。

2、DDoS deflate安装和卸载方法:


#安装
wget https://www.inetbase.com/scripts/ddos/install.sh
chmod +x install.sh
./install.sh
#卸载
wget https://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod +x uninstall.ddos
./uninstall.ddos

3、DDoS deflate的配置文件在/usr/local/ddos/ddos.conf,详细说明如下:(点击放大)

DDoS deflate详细说明

4、/usr/local/ddos/ignore.ip.list是白名单,如果安装了APF防火墙,则可以在配置中开启它。

七、Linux VPS主机安全小结

1、影响Linux VPS主机安全主要有两个因素:一是Linux系统本身的漏洞,另一个是VPS上的控制面板。后者出现的问题可能性更大,所以为保证VPS的安全请不要安装没有技术支持的Linux VPS主机面板。

2、Fail2ban和DDoS deflate也只能是在一定的程度上可以阻止攻击,本身也是一种消耗自身资源的防御行为,大家在使用防火墙规则封锁IP时一定要注意辨别正常的IP地址,尤其是百度Spider的IP,最好将其加入白名单。

上一篇
下一篇