CentOS 7 环境配置

一、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 root@example.cn

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  

image.png

错误处理

当 SELINUX 配置为禁用状态时,使用 semanage 会报错提示无法读取 policy 文件:

semanage 报错

修改 /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,无法删除。

semange 不能禁用 ssh 的 22 端口

二、新建组和用户

【组的操作】

1、新建组 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

2、删除组 example

  • 使用 groupdel 命令删除组
    用法:groupdel [选项] 组
    选项:
    -h, --help                    显示此帮助信息并推出
    -R, --root CHROOT_DIR         chroot 到的目录

example:

# groupdel [组名]
$ groupdel example
  1. 删除组 example
  • 使用 groupdel 命令删除组
    用法:groupdel [选项] 组
    选项:
    -h, --help                    显示此帮助信息并推出
    -R, --root CHROOT_DIR         chroot 到的目录

example:

# groupdel [组名]
$ groupdel example

3、修改组信息 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

【用户的操作】

1、新建用户 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)

2、为新建的用户设置密码 passwd [新建用户名]

  • 使用passwd [新建用户名] 命令来设置新用户密码

直接输入passwd,回车,修改的是当前用户的密码

example:

$ passwd example
更改用户 example 的密码 。
新的 密码:
无效的密码: 密码包含用户名在某些地方
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

在设置密码的时候,会进行验证密码是否包含用户名,是否含有特殊字符,大小写字母和数字,会有相应的提示,但是继续输入,也是可以设置成功的。

3、删除用户 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

4、修改用户 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)