logo头像
Snippet 博客主题

VPS 安全措施

一个部署在公网的VPS, 面临不断的网络扫描和攻击, 可以参考如下步骤.

1. 配置SSH安全访问密钥,关闭密码登录

a.参考SecureCRT密钥连接Linux,使用SecureCRT在本机生成公私密钥
b.在VPS对应的用户目录下,新建.ssh文件夹,并上传公钥,然后更名为authorized_keys,并修改权限,如下

1
2
3
4
5
6
mkdir ~/.ssh #如果当前用户目录下没有 .ssh 目录,就先创建目录
chmod 700 ~/.ssh
mv id_rsa.pub ~/.ssh
cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys

c.关闭ssh密码登录

1
2
vim /etc/ssh/sshd_config
PasswordAuthentication no #此处改为no

d.【可选】添加普通用户

1
2
useradd roubin
passwd roubin

e.【可选】禁止root登陆

1
2
vim /etc/ssh/sshd_config
PermitRootLogin no #此处改为no

f.重启ssh服务

1
service sshd restart
2.更改SSH端口及设置
1
2
3
4
5
6
7
vim /etc/ssh/sshd_config
Port 22222 #更改默认端口号
MaxAuthTries 5
PermitEmptyPasswords no #不允许空密码
service sshd reload
iptables -I INPUT -p tcp --dport 22222 -j ACCEPT #CentOS 6 中防火墙开启对应端口
firewall-cmd --zone=public --add-port=22222/tcp --permanent #CentOS 7 中防火墙开启对应端口
3.锁定口令文件
1
2
3
4
[root@localhost /]# chattr +i /etc/passwd
[root@localhost /]# chattr +i /etc/shadow
[root@localhost /]# chattr +i /etc/group
[root@localhost /]# chattr +i /etc/gshadow
4.安装fail2ban防止暴力破解
1
2
3
4
5
6
7
8
9
10
11
12
apt install -y fail2ban
cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

[sshd]
enabled = trueport = 22222
logpath = %(sshd_log)s
backend = %(sshd_backend)s
filter = sshd
action = iptables[name=SSH, port=22222, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 3
5.启用iptables
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 清除已有iptables规则
iptables -F
# 允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22222(SSH)端口,以下几条相同,分别是22222,80,443端口的访问
iptables -A INPUT -p tcp --dport 22222 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#允许ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#禁止其他未允许的规则访问(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
#保存防火墙规则
service iptables save
#设置防火墙开机启动
chkconfig --level 345 iptables on
6.禁用ipv6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#编辑/etc/sysconfig/network添加行:
NETWORKING_IPV6=no
#修改/etc/hosts,把ipv6本地主机名解析的注释掉(可选):

#::1 localhost localhost6 localhost6.localdomain6

#禁止系统加载ipv6相关模块,创建modprobe关于禁用ipv6的设定文件/etc/modprobe.d/disable_ipv6.conf(名字随便起)(RHEL6.0之后没有/etc/modprobe.conf这个文件),内容如下,三选其一(本次使用的第一种):
alias net-pf-10 off
options ipv6 disable=1
#禁止开机启动
chkconfig ip6tables off
#查看ipv6是否被禁用
lsmod | grep -i ipv6
ifconfig | grep -i inet6
7.阻止百度收录真实位置

恩,免得上门查水表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/hosts

0.0.0.0 api.map.baidu.com
0.0.0.0 ps.map.baidu.com
0.0.0.0 sv.map.baidu.com
0.0.0.0 offnavi.map.baidu.com
0.0.0.0 newvector.map.baidu.com
0.0.0.0 ulog.imap.baidu.com
0.0.0.0 newloc.map.n.shifen.com

:: api.map.baidu.com
:: ps.map.baidu.com
:: sv.map.baidu.com
:: offnavi.map.baidu.com
:: newvector.map.baidu.com
:: ulog.imap.baidu.com
:: newloc.map.n.shifen.com

评论系统未开启,无法评论!