此为自己通过centos7系统搭建typecho博客的心得分享,全文目前6部分,这是第五节
点此参看下一节:
Friewalld防火墙安全设置
视频分享地址:
接下来差不多就可以开启防火墙搞起了
咱们centos 7默认是安装了firewall的,如果你是centos6,喜欢iptables的请继续
firewall-cmd --state
查看状态,
没安装的直接安
yum install firewalld
安装的更新下:
yum update firewalld
先更新下firewalld到最新
- firewalld的基本使用
启动: systemctl start firewalld
请注意,firewalld防火墙默认只启动22端口的ssh,你如果之前改了端口的,请务必改回默认再启动,
如果你没开启开机自动加载firewalld,那就重启vps,否则重装vps吧
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
firewall-cmd --add-service=ssh --timeout 15m
此命令可以让你测试设置是否ok,万一出错,15分钟后还能回滚,测试好了
加入 --permanent作用于永久生效模式
firewall-cmd --add-service=ssh --permanent
默认修改只生效于当前状态,想修改当前状态和永久状态,有两种方法
firewall-cmd --runtime-to-permanent
或者
firewall-cmd --permanent
firewall-cmd --reload
我们来演示下开启指定端口
防火墙的设置:
firewall-cmd --permanent --add-port=12345/tcp
firewall-cmd --permanent --add-port=12345/udp
firewall-cmd --zone=public --add-port=80/tcp --permanent
查看防火墙规则
firewall-cmd --list-all
会发现,在咱们默认的public公共zone内,默认仅开启了
services: ssh dhcpv6-client
ssh和dhcpv6-client两个服务,网站服务http 80端口
https 443端口都不可用,
更别提ftp了,
打开咱们的网站:
steamoe.com
果然502错误,无法访问了
别慌
接下来一个个设置
先看下,开放了哪些端口
firewall-cmd --zone=public --list-ports
发现啥指定端口都没开放,因为刚才我们只设置了permanent生效12345端口
ssh是开启的服务,对应占用22端口不归ports设置里管理,属于
services里面对应规则管理的
我们再添加几个服务,等会一齐重启看看是否生效吧!
添加建站服务(端口对应80,443,但是重启后只会在services里面生效,对应端口开放状态,不在ports里显示)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
我们可以通过
firewall-cmd --list-all
查看,服务里面并没有启动http 和 https ,尝试用刚才讲解的方式,
作用到当前状态
firewall-cmd --reload
firewall-cmd --list-all
我们可以愉悦地发现 ,刚才开放的12345tcp/udp端口出现了
咱们的 http https 服务也出现在services 里面了
打开网站看看,能访问了
我们再看看,能永久生效的服务清单
firewall-cmd --get-services --permanent
嗯,不错,咱们加个ftp服务吧:
firewall-cmd --add-service=ftp --permanent
重启防火墙
firewall-cmd --reload
很好,xftp也能登陆了
禁止root用户登陆ssh
useradd test
取个你容易记住,别人不容易猜到的用户名用来登陆ssh,这里简单演示下,
passwd test
自己就别取这么简单的用户名了
su test
当前是root用户,切换到test用户直接su就ok
切回来
su root
则需要输入root用户的密码
不需要的话,删掉test用户
userdel -r test
如果test用户有进程在运行,提示
userdel: user test is currently used by process 681
咱们就查看下对应进程是啥
ps -ef | grep 681
没啥要紧的话,就终止对应进程
kill -9 681
提示killed成功了
咱们再删除用户应该就没问题了
尝试test用户能登陆ssh后
咱们设置一下,禁止root用户直接登陆ssh,防止爆破
find / -name sshd_config
找到sshd配置文件
vi /etc/ssh/sshd_config
/PermitRootLogin
找到,去掉注释,yes改成no
保存,重启sshd服务
systemctl restart sshd
好了,我们发现无法使用root用户登陆了,不错
接下来修改
修改默认SSH端口
默认ssh端口是22
咱们改一改
vi /etc/ssh/sshd_config
找到#Port 22
去掉注释
再加一行,新端口
结果:
Port 22
Port 12345
解释一下,默认22端口,没开启新的端口情况下,注不注释掉22,都会通过22端口连接
现在去掉注释,启用22和12345两个端口,我们测试12345能成功访问后
再注释掉22端口,此刻,系统就会只通过12345端口访问,如果你贸然新增
12345新端口,又没设置正确,ssh一断,那么22端口也无法连接,就等着重装系统吧
systemctl restart sshd
我们通过xftp客户端,修改端口号为12345登陆试试,ok成功
我们愉悦地进来了
进入sshd_config,注释掉22端口,这时候千万注意了
vi /etc/ssh/sshd_config
systemctl restart sshd
当前登陆着的ssh页面别手贱关掉了。
重新开一个ssh页面测试12345端口是否能成功登陆!
重新开一个ssh页面测试12345端口是否能成功登陆!
重新开一个ssh页面测试12345端口是否能成功登陆!
因为总有一些人刚才做测试的时候还是22端口进去,以为自己改了
如果这时候发现无法登陆了,还有救,当前这个ssh页面还没关闭
你还可以挣扎一下,再把22端口去掉#,重新检查一下哪里手抖设置错了
好了,操作认真的话,现在我们只能通过唯一一个test用户,唯一一个端口12345
登陆咱们的服务器了
你还可以设置只能密钥登陆,或者弄个fail2ban 让连续指定错误几次的ip被封禁想要的时间
这怎么说呢,其实一般扫机器搞爆破的人,自动化脚本不会弄65535全端口扫,也不怎么会爆破除
root用户以外的用户,一个辣鸡小博客,有这安全措施已经足够了
对于自己来说,也比较方便,自己喜欢的用户名,自己熟悉的端口数字,嗯
一切都不错了,弄证书密钥登陆的话,手机端软件还要一台设备拷贝一份密钥
没有密码登陆来的自在,万一电脑烧了,密码登陆不会影响,你密钥掉了就等着重装vps吧
放网上备份的话,话说回来就一个小博客,不折腾那么安全了。
改端口禁root用户登陆,这足够玩了
最后提醒一下,禁止root登陆ssh后,root用户还想通过sftp访问ftp服务,也不可用了
你只能通过刚才设置的专用用户steamoe登陆ftp了
这边通过test用户登陆ssh,su root转root用户,再cp steamoe上传的指定目录下的文件到需要的地方
再搭配下面的修改ftp默认端口,效果更佳,我们继续看:
修改ftp端口
一、修改vsftp的配置文件
先测试下
///
以下为测试内容,可以跳过不看
vi /etc/vsftpd/vsftpd.conf
在原来的基础上加上:
listen_port=6666
再去服务里面改掉默认21端口为6666
vi /etc/services
ftp 21/tcp
ftp 21/udp
这两行改成
ftp 6666/tcp
ftp 6666/udp
很好,重启下vsftpd服务
service vsftpd restart
我们再 reload 一下防火墙:
firewall-cmd --reload
咦,6666端口还不行,看来要单独开端口了
firewall-cmd --permanent --add-port=6666/tcp
firewall-cmd --permanent --add-port=6666/udp
firewall-cmd --reload
咦,能连接6666端口但是无法显示远程文件夹???
这什么鬼
netstat -utlpn | grep vsftp
看了下vsftp确实在6666端口运行了呀
既然能登陆6666端口,那说明防火墙应该放行了,但是打不开文件夹,是什么原因?
突然想到,我这还是测试,还没开启被动模式,那数据传输应该是N-1端口,也就是
6666-1=6665端口啊!
两个方法
开放6665端口防火墙
去/etc/services改默认20数据传输端口为6665
vi /etc/services
firewall-cmd --permanent --add-port=6665/tcp
firewall-cmd --permanent --add-port=6665/udp
service vsftpd restart
firewall-cmd --reload
妈的还不行,我先关闭防火墙看看
systemctl disable firewalld
service vsftpd restart
还不能显示文件夹
看来是ftp改端口改错了?
改回去先看看
改services,改vsftpd.conf
嗯,又正常了
再开启firewall看看
systemctl start firewalld
看来 ftp正常
网上查了下资料,发现似乎ftp默认就是走被动模式传输,
那我应该直接把被动模式端口范围提前设置ok吧?
vi /etc/vsftpd/vsftpd.conf
按2次大写GG到达末尾
在原来的基础上加上:
listen_port=6666
pasv_enable=YES
pasv_min_port=26666
pasv_max_port=27777
pasv_promiscuous=YES
开启被动模式,方便客户端可以从服务器的26666-27777端口
端口数字弄高点,减少被截获的概率,一般扫描监听高端口的比较少,端口总数是65535,
监听端口建议高于1024,低位端口常用服务预留,以免以后安装其他工具,端口冲突。
别超过这个数字
被动模式是
在端口范围内随机一个端口,请求进服务器拿数据
相比主动模式,服务器得到客户端申请数据服务请求
会主动开启N-1端口,比方说,默认指令传输端口是21
客户端连上后,请求传输数据,服务器会主动开启N-1端口,也就是
20端口,主动下发(上门送货)数据
再去服务里面改掉默认21端口为6666
vi /etc/services
ftp 21/tcp
ftp 21/udp
这两行改成
ftp 6666/tcp
ftp 6666/udp
因为开启了被动模式,所以数据传输会随机从26666-27777端口开放,不需要管默认的20端口了
查看指定端口占用情况,请用这个指令:
netstat -lnp|grep xxxx
l 只显示在监听listening的服务,未活动的不显示
n指显示数字地址numerical adress,不显示别名
p指显示相关联的程序名program
重启vsftpd
service vsftpd restart
添加ftp端口放行:
firewall-cmd --zone=public --add-port=6666/tcp --permanent
firewall-cmd --zone=public --add-port=26666-27777/tcp --permanent
firewall-cmd --zone=public --add-port=6666/udp --permanent
firewall-cmd --zone=public --add-port=26666-27777/udp --permanent
重启防火墙:
firewall-cmd --reload
发现一切ok了
然后去 /etc/services/改回 ftp端口为21,也没问题。
service vsftpd restart
发现21端口照样无法登陆,只能通过6666端口放行ftp,被辣鸡教程坑了
测试内容结束
之所以写这么长的测试历程,就想说一句,网上你们天天刷流量搞仿站走抄袭弄排名的js,以后自己要学东西了,
苦不堪言的时候,回头想想,知道是报应就好
好了,最后整理下ftp修改一这块
和ssh修改端口一样,ssh改的是
vi /etc/ssh/sshd_config
ftp改的是
vi /etc/vsftpd/vsftpd.conf
然后一个知识点,ftp默认是走被动模式的,所以要改端口的话,提前把被动端口范围也给自定义好了
同时firewall放行对应端口和指定的被动端口范围
原理应该是改指令端口21到新端口的话,firewall系统就不会从默认的ftp services配置里面
通过20端口发送数据到客户端,或者是采用被动模式动态放行随机被动端口。
此刻,我们一来没有指定被动端口范围,二来firewall 的port段也没有加入放行
自然无法放行随机指定的数据传输端口,
也就是造成无法显示远程文件夹的结果,所以直接把被动端口范围和21端口同时都改好
一切就这样,操作很简单,但是要摸索起来,真是日了狗了
接下来测定重启friewall
firewall-cmd --complete-reload
检查一下端口和服务状态:
ftp检测:
root用户无法通过22端口登陆,
root用户无法通过6666端口登陆,
steamoe无法通过22端口登陆
steamoe可以通过6666端口登陆
ftp检测ok
ssh检测:
root用户无法通过22端口登陆
root用户无法通过12345端口登陆
test用户可以通过22端口登陆
test用户可以通过12345端口登陆
很好,发现一个问题,咱们应该是忘记给ssh的22端口注释掉了
vi /etc/ssh/sshd_config
systemctl restart sshd
至此,咱们vps后台安全措施基本上足够满足一个辣鸡typecho站点安心运作了
剩下的工作,就是typecho后台地址暴露问题,不过这个即使被爆破,也就站毁了,咱们vps还能活蹦乱跳的
话说一般人来说,站点比vps更重要吧,哈哈
typecho自己取个不是admin的登录名,搞个长点的密码,凑合先用着吧,根据我多日观察
爆破前台网站的,都是通过脚本自动爆破phpmyadmin默认路径
10个中有7,8个都是爆phpmyadmin
咱们没安装这个网页可视化数据库工具,就是这个原因
好了,网站整体搭建告一段落,你现在已经可以自己行动了,接下来我们讲解的是typecho站点搬家相关操作,不用搬家的暂时可以不看了
点此参看下一节: