下文的操作均在ubuntu上进行.
背景
最近刚把腾讯云服务器搭建好,就发现访问时间异常的长,觉得不应该呀,意识到可能是服务器遭受到攻击.
于是登录服务器打开/var/log/auth.log
下的访问日志,果然有大量的非法ip访问
- …
- May 25 13:57:49 localhost sshd[27673]: Invalid user test9 from 128.199.30.172 port 51386
- May 25 13:57:49 localhost sshd[27673]: pam_unix(sshd:auth): check pass; user unknown
- May 25 13:57:49 localhost sshd[27673]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=128.199.30.172
- May 25 13:57:51 localhost sshd[27673]: Failed password for invalid user test9 from 128.199.30.172 port 51386 ssh2
- May 25 13:57:51 localhost sshd[27673]: Received disconnect from 128.199.30.172 port 51386:11: Bye Bye [preauth]
- May 25 13:57:51 localhost sshd[27673]: Disconnected from invalid user test9 128.199.30.172 port 51386 [preauth]
- May 25 13:58:01 localhost CRON[27700]: pam_unix(cron:session): session opened for user root by (uid=0)
- May 25 13:58:01 localhost CRON[27700]: pam_unix(cron:session): session closed for user root
- May 25 13:58:06 localhost sshd[27651]: Connection closed by 20.194.166.160 port 54602 [preauth]
- May 25 13:58:24 localhost sshd[27787]: Invalid user ec2-user from 117.79.132.166 port 38400
- …
这是才想到服务器自从搭建后,系统的配置都是默认的包括SSH(安全外壳协议),也难怪遭受到了攻击.
于是想到了对SSH配置
1.修改SSH配置
(1).禁止root账号远程登录
root账号是系统默认的账号,且拥有最高的权限,攻击者在攻击的时候,也会首先选择root进行攻击,
才看日志也发现user root的最多
首先我们进入到/etc/ssh
目录面,打开sshd_config
文件,将PermitRootLogin设置为no
关于ubuntu账户的创建可以查看
(2).修改端口
服务器默认的的端口Port是22,建议不定时修改一下.
:端口最大只能修改到65536,注意不要超过
修改SSH配置后,重启SSHsudo service sshd restart
2.配置IP访问黑白名单
进入/etc
文件下有hosts.allow
和hosts.deny
两个文件,分别是填写允许和禁止IP的
(1).允许某一个IP
允许shh远程协议的:hosts.allow
中填写sshd:192.168.0.1
允许telnet远程协议的:hosts.allow
中填写in.telnetd:192.168.0.1
允许所有远程协议的:hosts.allow
中填写ALL:192.168.0.1
(2).允许某一个IP段
允许shh远程协议的:hosts.allow
中填写sshd:192.168.0
允许telnet远程协议的:hosts.allow
中填写in.telnetd:192.168.0
允许所有远程协议的:hosts.allow
中填写ALL:192.168.0
(3).禁止所有IP
允许shh远程协议的:hosts.deny
中填写sshd:ALL
允许telnet远程协议的:hosts.deny
中填写in.telnetd:ALL
允许所有远程协议的:hosts.deny
中填写ALL:ALL
(4).禁止某一个ip
允许shh远程协议的:hosts.deny
中填写sshd:192.168.0.1
允许telnet远程协议的:hosts.deny
中填写in.telnetd:192.168.0.1
允许所有远程协议的:hosts.deny
中填写ALL:192.168.0.1
(4).禁止某一个ip段
允许shh远程协议的:hosts.deny
中填写sshd:192.168.0
允许telnet远程协议的:hosts.deny
中填写in.telnetd:192.168.0
允许所有远程协议的:hosts.deny
中填写ALL:192.168.0
另外还可以使用
sshd : ALL EXCEPT 111.111.111.0/255.255.255.0 222.222.222.222 333.333.333.0/255.255.255.0
就是允许222.222.222.222固定IP和111.111.111.0和333.333.333.0 IP段访问
重启 service sshd restart
和 service xinetd restart
:hosts.allow和hosts.deny冲突时候,以hosts.allow为准
3.netfilter/iptables封禁IP
`sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP `封禁多次恶意访问的IP