一、Centos7如何修改ssh默认端口22
1. 修改 sshd_config 端口
- 编辑sshd_config 配置文件
$ vi /etc/ssh/sshd_config
- 取消 #Port 22 的注释,在下一行添加你需要修改的新端口 Port
10022。(这里不删除 22 端口是为了防止修改后新端口无法访问,造成无法用 ssh 连接服务器。)
Port 22
Port 10022
修改保存 sshd_config 文件
按下esc 退出编辑模式,输入 :wq,保存修改并退出重启 sshd 服务
$ systemctl restart sshd
2. 配置防火墙 firewalld
- 启用防火墙:
$ systemctl enable firewalld
$ systemctl start firewalld
- 查看防火墙状态
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2016-12-20 02:12:59 CST; 1 day 13h ago
Main PID: 10379 (firewalld)
CGroup: /system.slice/firewalld.service
└─10379 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
$ firewall-cmd --state
running
- 查看防火墙当前「默认」和「激活」zone(区域):
$ firewall-cmd --get-default-zone
public
$ firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
若没有激活区域的话,要执行下面的命令。
- 激活 public 区域,增加网卡接口:
$ firewall-cmd --set-default-zone=public
$ firewall-cmd --zone=public --add-interface=eth0
success
$ firewall-cmd --zone=public --add-interface=eth1
success
*新增防火墙规则,开放 10022/TCP 端口:
# 以防新端口不生效,先把 22 端口暴露
$ firewall-cmd --permanent --zone=public --add-port=22/tcp
$ firewall-cmd --permanent --zone=public --add-port=10022/tcp
success
# 重载防火墙
$ firewall-cmd --reload
# 查看暴露端口规则
$ firewall-cmd --permanent --list-port
443/tcp 80/tcp 22/tcp 10022/tcp
$ firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp 22/tcp 10022/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
- 退出 ssh 会话后,再用新的端口连接:
$ ssh -p 10022 [email protected]
3. 打开 SELinux 端口
SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。
对于 ssh,SELinux 默认只允许 22 端口,我们可以用 SELinux 管理配置工具 semanage,来修改 ssh 可访问的端口。
安装 semanage 工具
$ yum provides semanage
$ yum -y install policycoreutils-python
** 打开ssh 10022 端口**
# 为 ssh 添加新的允许端口
$ semanage port -a -t ssh_port_t -p tcp 10022
# 查看当前 SELinux 允许的端口
$ semanage port -l | grep ssh
ssh_port_t tcp 10022, 22
错误处理
当 SELINUX 配置为禁用状态时,使用 semanage 会报错提示无法读取 policy 文件:
修改 /etc/selinux/config 配置,启用 SELinux:
$ vi /etc/selinux/config
SELINUX=permissive
# 重启服务器
$ init 6
# 重启后查看 SELinux 状态
$ sestatus
# if it shows disable, you can run
$ load_policy -qi
检查SELINUX配置
$ semanage port -a -t ssh_port_t -p tcp 10022
$ semanage port -l | grep ssh
ssh_port_t tcp 10022, 22
# 重启 ssh 服务
systemctl restart sshd
*注:semange 不能禁用 ssh 的 22 端口:
$ semanage port -d -t ssh_port_t -p tcp 22
ValueError: 在策略中定义了端口 tcp/22,无法删除。
二、新建组和用户
【组的操作】
- 新建组 example
- 使用groupadd 命令添加组
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
example:
# groupadd -g [组的ID] [组名]
$ groupadd -g 10005 example
- 删除组 example
- 使用 groupdel 命令删除组
用法:groupdel [选项] 组
选项:
-h, --help 显示此帮助信息并推出
-R, --root CHROOT_DIR chroot 到的目录
example:
# groupdel [组名]
$ groupdel example
- 删除组 example
- 使用 groupdel 命令删除组
用法:groupdel [选项] 组
选项:
-h, --help 显示此帮助信息并推出
-R, --root CHROOT_DIR chroot 到的目录
example:
# groupdel [组名]
$ groupdel example
- 修改组信息 example ,将组example 的id 更改为 10006 ,名称更改为 exampleGroup
- 使用 groupmod 来修改组信息
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
example:
# groupmod -g [组ID] [组名]
$ groupmod -g 10006 example
# groupmod -n [新组名] [组名]
groupmod -n exampleGroup example
【用户的操作】
- 新建用户 example
- 使用adduser 命令来新建用户
用法:adduser [选项] 登录
adduser -D
adduser -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
example: 新建用户 example ,指定用户id 为10010
# adduser -u [用户ID] [用户名]
$ adduser -u 10010 example
# 查看新创建的用户
$ id example
uid=10010(example) gid=10010(example) 组=10010(example)
- 为新建的用户设置密码 passwd [新建用户名]
- 使用passwd [新建用户名] 命令来设置新用户密码
直接输入passwd,回车,修改的是当前用户的密码
example:
$ passwd example
更改用户 example 的密码 。
新的 密码:
无效的密码: 密码包含用户名在某些地方
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
在设置密码的时候,会进行验证密码是否包含用户名,是否含有特殊字符,大小写字母和数字,会有相应的提示,但是继续输入,也是可以设置成功的。
- 删除用户 example
- 使用 userdel 命令来删除用户
用法:userdel [选项] 登录
选项:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
-R, --root CHROOT_DIR chroot 到的目录
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射
example: 删除用户 example
# userdel [用户名]
$ userdel example
# 查看用户example
$ id example
id: example: no such user
- 修改用户 example 为 exampleUser
- 使用 usermod 命令来修改用户信息
用法:usermod [选项] 登录
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
example: 修改用户 example 为 exampleUser ,更改组为 exampleGroup
# usermod -u [用户ID] [用户名]
$ usermod -u 10006 example
# 查看用户example
$ id example
uid=10006(example) gid=10010(example) 组=10010(example)
# usermod -g [组ID] [用户名]
$ usermod -u 10006 example
# 查看用户example
$ id example
uid=10006(example) gid=10006(exampleGroup) 组=10006(exampleGroup)
# usermod -l [新用户名] [用户名]
$ usermod -l exampleUser example
# 查看用户exampleUser
$ id exampleUser
uid=10006(exampleUser) gid=10006(exampleGroup) 组=10006(exampleGroup)