Centos6.10服务器入侵->重装->恢复记录
头些天在centos6.10服务器创建了一个git账户用来搭建私有Git仓库,账户和密码均为git,并且支持ssh密码远程连接,很快被黑客扫描到,通过ssh弱口令进到我的git账户,并操纵我的服务器扫描其他持续扫描其他服务器,被购买服务器的主机商的防火墙发现,锁定了我的服务器。也是在与客服的沟通中,他问我的服务器ssh密码是否过于简单,正是弱口令使我的服务器沦陷。病毒已经植入到我的系统中,为了彻底解决,客服建议我重装系统,尽管服务器上面的数据比较多,我还是硬着头皮备份、重装了一次系统,搞了整整一天,服务器上的功能基本恢复。
上一次配置服务器还是在2年前,当时安全意识较差,认为防火墙是多余的,把防火墙直接关闭,使得服务器上可以任意向外发送数据、服务器上的任何端口都向外开放;很多程序都放到root账户下运行;为了省事,设置及其简单的密码,每当看到网络安全相关资料讲解“弱口令”时,感觉弱口令离我非常遥远,不以为然。这些做法都是极其危险的,也是一步一步使我服务器沦陷的最终原因。
一、备份WEB站点(root账户)
1 2 3 4 cd /home/ftp zip -r ftp.zip ftpcd /vhs/kangle/etc/ zip -r etc.zip etc
二、备份MySQL数据库(root账户)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mysql -uroot -p use mysql; SELECT `Host`,`User` FROM user; UPDATE user SET `Host` = '%' WHERE `User` = '用户名' LIMIT 1; flush privileges;exit ;
三、备份tomcat9、gitea(git账户)
git账户下运行着tomcat和gitea(开源git仓库面板,轻量级),将这两个相关的文件全部压缩,下载。
四、备份root账户下的frp内网穿透软件(root)
第三步忘记了备份内网穿透,再次切换到root用户,找到frp的安装位置,压缩,下载:
1 2 cd /usr/local zip -r frp.zip frp
五、重装系统
仍然选择centos6.10,并仅格式化系统盘,手机验证码确认,重装。大概5分钟,系统重装完成.(实际这里第一次重装系统时我选的centos7,但是装完之后发现centos7与centos6之间的操作还是存在一定差异的,用着不顺手,就又重装了一次,装回了centos6)
六、恢复服务器环境及功能
由于重装系统时保留了数据盘,因此重装完毕之后。/home目录下的文件夹并没有清空。众所周知,Linux一般是一个账户对应一个/home目录下的文件夹,我们应先把这些目录清理干净,防止造成冲突。
1 mysqldump -u root -p mysql > /backup/20200222.sql
卸载旧版本git
安装依赖库 1 2 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker
下载安装libiconv 1 2 3 4 5 cd /usr/local wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz tar -zxvf libiconv-1.15.tar.gzcd libiconv-1.15 ./configure --prefix=/usr/local /libiconv && make && make install
下载安装Git 1 2 3 4 5 6 cd /usr/local wget https://www.kernel.org/pub/software/scm/git/git-2.11.0.tar.gz tar -zxvf git-2.11.0.tar.gzcd git-2.11.0 ./configure --prefix=/usr/local /git-2.11.0 --with-iconv=/usr/local /libiconv make && make install
检查版本号
安装jdk1.8。我安装的系统位centos6.10 x64,安装jdk1.8。具体版本号为:jdk-8u201-linux-x64.tar.gz。由于已经在本地存过jdk,直接通过SSH上传到/usr/local中:
1 2 tar -zxvf jdk-8u201-linux-x64.tar.gz vi /etc/profile
1 2 3 4 5 JAVA_HOME=/usr/local /dev/jdk1.8.0_201 CLASSPATH=.:$JAVA_HOME /lib PATH=$PATH :$JAVA_HOME /binexport PATH JAVA_HOME CLASSPATH
查看当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)
1 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
1 rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
安装 kernel-lt(lt=long-term)
1 yum --enablerepo=elrepo-kernel install kernel-lt -y
再次查看内核版本,已经升级成4.4.214-1.el6.elrepo.x86_64
1 2 filename=`date +%Y%m%d` mysqldump -uroot -p密码 --all-databases >/home/backup/$filename .sql
1 2 crontab -e 0 1 * * * /home/backup/autobackupmysql.sh
七、服务器安全性增强设置
禁止使用ssh密码方式连接,改为ssh证书连接。
配置安全策略较强的iptables策略,将iptables的INPUT,FORWARD,OUTPUT策略全部设置为DROP,即出现在所有进出站服务都要在iptables的INPUT和OUTPUT上添加记录,否则无法访问服务。
1.修改ssh连接方式,由于我有root和git两个账户,因此需要分别生成私钥。
1 2 3 su root ssh-keygen -t rsa cd ~/.ssh
1 mv id_rsa.pub authorized_keys
修改PasswordAuthentication 改为 no,然后重启sshd服务
再次连接使用ssh私钥即可直接登陆。其他账户的操作方法同root账户。
2.iptable安全策略,首先将INPUT,FORWARD,OUTPUT策略全部设置为DROP(即白名单模式,不设置默认黑名单)
1 2 3 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
1 2 3 4 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT service iptables save service iptables status
1 2 3 4 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT service iptables save service iptables status
添加完毕后,我的服务器还需要陆续开放WEB服务所需的80、443s端口、3306数据库端口、允许ICMP包通过(ping)等等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo -request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo -reply -j ACCEPT service iptables save service iptables status
1 service iptables restart
我的服务器上运行的tomcat、gitea等服务,使用Kangle服务器提供的反向代理进行使用,即代理到127.0.0.1:port,这样更加安全,避免没必要的端口暴露。
到这里,服务器重装及环境的恢复总算基本完成,下一步就是进行各项功能的测试。这一次的攻击事件也使我加强了对网络安全的认识,计算机网络中无时无刻都在进行这各种扫描、嗅探、入侵,只有我们防护好自己的服务器,滴水不漏,才能保证服务器和数据服务的安全可靠。
常用路径及命令
redis官方下载地址:http://download.redis.io/releases/
redis安装——进入到安装目录,直接运行make,然后启动即可
redis安装目录:/usr/local/dev/redis-3.0.5
redis启动 nohup /usr/local/dev/redis-3.0.5/bin/redis-server /usr/local/dev/redis-3.0.5/redis.conf &
redis测试 /usr/local/dev/redis-3.0.5/bin/redis-cli
centos6.10添加开机自启,vi /etc/rc.d/rc.local
环境变量文件vi /etc/profile
,source /etc/profile
如果上面的环境变量文件配置了不生效,则配置vi /etc/bashrc
,source /etc/bashrc
jdk环境配置,下载压缩包,解压到某一路径,配置profile,保存,使profile生效
springboot部署命令:java -jar -Dspring.profiles.active=test demo-0.0.1-SNAPSHOT.jar