笔记 - 修改SSH默认端口与Apache配置子域名

544 阅读3分钟

为啥会把这俩放一起,是因为我被centOS的防火墙制裁了,先改了SSH默认端口又改域名,结果导致所有域名都无法被访问,防火墙这边知识还没看,下次一定!

修改SSH默认端口

参考:www.liberiangeek.net/2014/11/cha…

买了个腾讯云玩,每次SSH登录都会看到提示说有多少次失败登录,分别来自于不同的IP。 端口22属于经常被扫描的那种,弱密码很容易被暴力破解。

最简单的防护方法就是找一个没什么人光顾的端口,将SSH改到这个端口。

相对来说最安全的方法应该是使用证书和非对称加密实现无密码登录,只允许拥有秘钥的计算机进行远程登录。例如,每次为新买的电脑设置GitHub时必不可少的SSH Key

另一种方法是使用服务器的防火墙,将被允许是计算机IP放在防火墙白名单内。腾讯云的安全组其实就能这么用,先前没修改端口时,我就简单粗暴的禁止了端口22,要用再登录后台打开。但这一方法的前提是IP不变。IPv4地址枯竭,国内大部分的网络都使用了NAT,我们的公网地址完全由运营商决定,很难保持一个固定的IP。

以下是修改端口操作方法:

  1. 备份SSH配置文件,出现严重错误时可由sshd_config.bak恢复配置内容
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. 修改配置文件sshd_config
sudo vi /etc/ssh/sshd_config
  1. 修改内容如下: 由于端口22是SSH默认端口,有的配置文件会出现一行# Port 22,不用管它。
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 2244
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

:wq保存文件,切记此时不能断开登录,等彻底修改完之后另开一个终端窗口实验。

  1. SELinux只允许端口22进行SSH,我们需要修改SELinux
# 查看SELinux 运行状态
sestatus

# 查看SELinux 给ssh 开放的端口
# 显示应该是是:ssh_port_t   tcp    22
semanage port -l | grep ssh

# SELinux 为ssh增加端口2244
sudo semanage port -a -t ssh_port_t -p tcp 2244

# 如需要删除端口: SELinux ssh删除端口2244
sudo semanage port -d -t ssh_port_t -p tcp 2244
  1. 检查防火墙
# 准许2244通过防火墙
sudo firewall-cmd --permanent --zone=public --add-port=2244/tcp

# 如果防火墙未开启,可以选择开启
systemctl enable firewalld
systemctl start firewalld

# 查看防火墙状态
systemctl status firewalld

# 重新加载防火墙
sudo firewall-cmd --reload

注意:如果先前没做过设置,防火墙未启动,但web服务已在运行,启动防火墙后可能导致页面无法访问,需要对防火墙另做设置。

  1. 重启SSH 服务
sudo systemctl restart sshd.service
  1. 检查SSH 新端口
# 查看 sshd 状态
systemctl status sshd.service
# 查看 ssh 是否在新端口上运行
ss -tnlp | grep ssh
  1. 试用新端口 可以退出重连,但我更推荐另外创建一个账号,开一个新的终端窗口进行测试,如果无法远程连接可以立刻修改。

  2. 禁用默认端口22 腾讯云和阿里云都有安全组设置,可以通过安全组直接禁止端口22。 其设置内容如下

::/0   TCP:22   拒绝
0.0.0.0/0   TCP:22   拒绝

Apache配置子域名

当我们有了一个二级域名后,就可以为它配置许多三级域名,用于不同的功能。

  1. mod_rewrite.so
# 编辑 /etc/httpd/conf 目录下的 httpd.conf 配置文件,检查是否被注释
# 如果httpd.conf没有这行配置,则看下一步骤
LoadModule rewrite_module modules/mod_rewrite.so

# 如果httpd.conf没有配置
# 则在/etc/httpd/conf.modules.d中新建一个 *.conf 文件
# 例如 00-rewrite.conf
LoadModule rewrite_module modules/mod_rewrite.so

  1. 修改httpd.conf,添加如下内容
# 主域名
<VirtualHost *:80>
  ServerAdmin admin@abc.com
  DocumentRoot "var/www/html"
  ServerName abc.com
  ServerAlias www.abc.com
  DirectoryIndex index.php index.html index.htm
</VirtualHost>

# 子域名
<VirtualHost *:80>
  ServerAdmin admin@abc.com
  DocumentRoot "var/www/a"
  ServerName a.abc.com
  DirectoryIndex index.php index.html index.htm
</VirtualHost>