1 开启防火墙
注: RedHat RHEL7 系统后已经用 firewalld 服务代替了 iptables 服务,新的防火墙服务管理命令为 firewall-cmd
(图形化管理工具 firewall-config
)。
(1)启动防火墙
1 | $ sudo systemctl start firewalld.service |
(2)开机自启动防火墙
1 | $ sudo systemctl enable firewalld.service |
(3)检查防火墙状态
1 | $ sudo systemctl status firewalld.service |
未启动:
启动后:
拒绝一切端口后开启相应端口(iptables 先拒绝然后开启对应端口,如 80for http,443for https)
检查防火墙是否开启
(4)重启防火墙
1 | $ sudo systemctl restart firewalld.service |
(5)【重要】只放行需对外开放的端口
当防火墙开启后,检查当前可直接被访问的端口:
1 | $ firewall-cmd --zone=public --list-port |
只放行需要对外开放的端口(如 HTTP
的 80,HTTPS
的 443…)。
永久开放 80 端口:
1 | $ firewall-cmd --zone=public --add-port=80/tcp --permanent |
Note: --zone=public
这里涉及防火墙的网络区域概念
示例,开放 36582 端口作为 ssh 服务:
1 | $ firewall-cmd --zone=public --add-port=36582/tcp --permanent |
以上设置完成后,重启防火墙以使设置立即生效:
1 | $ firewall-cmd --reload |
2 配置 ssh
a 修改默认的 ssh 端口
默认的 ssh 端口为 22,建议修改为一个未被其他服务占用的随机端口,如 12315,25126…。
1 | $ sudo vim /etc/ssh/sshd_config |
Port 26942
:设置 ssh 的端口为 26942
b 禁止 Root 通过 SSH 远程登录
1 | $ sudo vim /etc/ssh/sshd_config |
将 PermitRootLogin yes
修改为 PermitRootLogin no
。
c 重启 sshd 服务
重启 sshd 服务,已使以上设置生效
1 | $ sudo systemctl restart sshd |
2 使用一个普通权限的用户
进行 ssh 远程管理时,使用普通用户 userSW
登录。登陆后,当需要 root 权限以执行命令时, su root
切换到 root 用户。
添加一个拥有普通权限的新用户
1 | $ useradd userSW |
为该新用户设置密码
1 | $ passwd userSW |
3【可选】限制可使用 SSH 登录的 IP
a 设置禁止所有 IP 连接服务器的 SSH
1 | $ vim /etc/hosts.deny |
设置 sshd:all:deny
。
b 设置允许指定 IP 连接服务器的 SSH
1 | $ vim /etc/hosts.allow |
设置 sshd:192.168.1.106:allow
(192.168.1.106 为允许访问的 IP)。
c 重启 SSH 服务
重启 SSH 服务,并通过登录进行验证
1 | $ sudo systemctl restart sshd.service |