[命令] Linux 命令 dig (从 DNS 服务器获取主机信息)

内容一:dig 命令简介

dig 即 domain information groper,主要功能是从 DNS 服务器获取主机信息

内容二:dig 命令的使用案例

2.1 案例一:显示互联网上所有 DNS 根服务器的信息

# dig

2.2 案例二:直接通过域名获取主机信息

# dig eternalcenter.com

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

2.3 案例三:直接通过域名获取主机信息,但只显示最基础的内容

# dig eternalcenter.com +short

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

2.4 案例四:直接通过域名获取主机信息,并指定显示的内容

# dig eternalcenter.com +noall +answer

(补充:这里以通过 eternalcenter.com 域名获取主机信息,并显示 noall 和 answer 部分的内容为例)

2.5 案例五:从指定的 DNS 服务器和端口号通过域名获取主机信息

# dig @8.8.8.8 -p 53 eternalcenter.com

(补充:这里以通过 eternalcenter.com 域名从 IP 地址是 8.8.8.8 端口是 53 的 DNS 服务器获取主机信息为例)

2.6 案例六:通过 IP 地址获取主机信息

# dig -x 8.8.8.8

(补充:这里以通过 IP 地址 8.8.8.8 获取主机信息为例)

2.7 案例七:通过 IP 地址获得主机信息,但只显示最基础的内容

# dig -x 8.8.8.8  +short

(补充:这里以通过 IP 地址 8.8.8.8 获取主机信息为例)

2.8 案例八:直接通过域名获取主机信息,同时显示获取的过程

# dig eternalcenter.com +trace

(补充:这里以通过 eternalcenter.com 域名获取主机信息为例)

[排错] 解决 SFTP 登录时报错 “client_loop: send disconnect: Broken pipe ……”

报错代码

client_loop: send disconnect: Broken pipe
Connection closed.  
Connection closed

分析

SFTP 目录的所属主必须是 root,权限最高只能是 755,否则就算此目录的所属主是此 SFTP 用户也会报错

解决方法

步骤一:将 SFTP 目录的所属主设置为 root

# chown root: <sftp directory>

步骤二:将 SFTP 目录的权限设置为 755

# chmod 755 <sftp directory>

[内容] SFTP 的配置案例

案例一:SFTP 使用 2200 端口,将 SFTP 用户的家目录作为 SFTP 用户的 SFTP 目录,让 SFTP 用户通过 SFTP 登录时被限制在自己的家目录里

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......
Subsystem       sftp    internal-sftp
Match LocalPort 2200
  ForceCommand internal-sftp
  PasswordAuthentication yes
  ChrootDirectory %h
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

(补充:这里以将 /etc/ssh/sshd_config 作为 SFTP 的配置文件为例)

(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)

案例二:将根 “/” 目录下以和 SFTP 用户名同名的目录作为此 SFTP 用户的 SFTP 目录,让此 SFTP 用户通过 SFTP 登录时被限制在根 “/” 目录下以和自己用户名同名的目录里,但是此设置只适用于组是 sftpuser 的用户,并且 SFTP 上传的文件默认权限是 770

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......
Subsystem       sftp    internal-sftp
Match Group sftpuser
  ForceCommand internal-sftp -m 770
  PasswordAuthentication yes
  ChrootDirectory /%u
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no


补充:
1) 这里以将 /etc/ssh/sshd_config 作为 SFTP 的配置文件为例
2) -m 770 参数也可以使用 -u 770 替代,但是 -u 参数有时候会不起作用

(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)

案例三:SFTP 使用 2222 端口,将根 “/” 目录下以和 SFTP 用户名同名的目录作为此 SFTP 用户的 SFTP 目录,让此 SFTP 用户通过 SFTP 登录时被限制在根 “/” 目录下以和自己用户名同名的目录里,但是此设置只适用于组是 sftpuser 的用户,SFTP 用户存放的公钥的文件为 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys,SFTP 上传的文件默认权限是 770

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......
Subsystem       sftp    internal-sftp -l VERBOSE -f LOCAL3
Match LocalPort 2222
Match Group sftp
ChrootDirectory /%u
AuthorizedKeysFile /etc/ssh/authorized_keys/%u/.ssh/authorized_keys
ForceCommand    internal-sftp -m 770
AllowTcpForwarding no
X11Forwarding no


补充:
1) 这里以将 /etc/ssh/sshd_config 作为 SFTP 的配置文件为例
2) -m 770 参数也可以使用 -u 770 替代,但是 -u 参数有时候会不起作用

(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)

案例四:将根 “/” 目录下以和 SFTP 用户名同名的目录作为此 SFTP 用户的 SFTP 目录,让此 SFTP 用户通过 SFTP 登录时被限制在根 “/” 目录下以和自己用户名同名的目录里,但是此设置只适用于用户 sftpuser

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......
Subsystem       sftp    internal-sftp
Match User sftpuser
  ForceCommand internal-sftp
  PasswordAuthentication yes
  ChrootDirectory /%u
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

(补充:这里以将 /etc/ssh/sshd_config 作为 SFTP 的配置文件为例)

(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)

案例五:给不同的 SFTP 分配不同的 SFTP 目录,让 SFTP 用户通过 SFTP 登录时被限制在自己的家目录里

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......
Subsystem       sftp    internal-sftp
Match User eternalcenter
  ChrootDirectory /eternalcenter
Match User mingyuzhu
  ChrootDirectory /mingyuzhu
Match User zhumingyu
  ChrootDirectory /zhumingyu


补充:这里以将
1) /etc/ssh/sshd_config 作为 SFTP 的配置文件为例
2) 将 /eternalcenter 作为 eternalcenter 的 SFTP 目录
3) 将 /mingyuzhu 作为 mingyuzhu 的 SFTP 目录
4) 将 /mingyuzhu 作为 mingyuzhu 的 SFTP 目录
为例

(注意:SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错)

案例六:SFTP 使用 1100 端口,将 SFTP 用户的家目录作为 SFTP 用户的 SFTP 目录,让 SFTP 用户通过 SFTP 登录时被限制在自己的家目录里,使用指定的 Ciphers、MACs 和 KexAlgorithms 参数

# vim /etc/ssh/sshd_config

将以下内容:

......
Subsystem       sftp ......
......

修改为:

......
# Subsystem       sftp ......
......

并添加以下内容:

......

Subsystem       sftp    internal-sftp

Ciphers aes128-ctr,aes256-ctr
MACs hmac-sha2-256
KexAlgorithms diffie-hellman-group-exchange-sha256

Match LocalPort 1000
        ChrootDirectory %h
        AllowTcpForwarding no
        X11Forwarding no

# This enables accepting locale enviroment variables LC_* LANG, see sshd_config(5).
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL


补充:这里以使用:
1) aes128-ctr 和 aes256-ctr SSH 加密方式 (cipher)
2) hmac-sha2-256 SSH 信息验证代码 (message authentication code)
3) diffie-hellman-group-exchange-sha256 SSH 算法 (algorithm)
为例


注意:
1) SFTP 目录以及所有 SFTP 目录的父目录的所属主必须是 root,权限最高只能是 755 或者 750,否则就算此目录的所属主是此 SFTP 用户,此用户在登录时也会报错
2) RHEL 8 使用 crypto policies 来管理 Ciphers、MACs 和 KexAlgorithms 参数,如果要使这里的这些参数生效,则需要

[步骤] auditd 的设置 (日志保存时间)

方法一:通过 auditd 配置文件设置

1.1 设置 auditd 日志的保存时间

# vim /etc/audit/auditd.conf

确保部分内容如下:

......
local_events = yes
......
write_logs = yes
......
log_file = /var/log/audit/audit.log
......
max_log_file = 8
......
num_logs =5
......
max_log_file_action = ROTATE
......


补充:这里以
1) 开启 auditd 日志 (local_events = yes) (write_logs = yes)
2) 将 auditd 日志写入 /var/log/audit/audit.log 文件 (log_file = /var/log/audit/audit.log)
3) auditd 日志每达到 8M 大小就将旧的 auditd 日志进行备份并创建新的 auditd 日志 (max_log_file = 8) (max_log_file_action = ROTATE),也可以修改成: max_log_file_action = keep_logs
4) 旧的 auditd 日志保存 5 份 (num_logs =5)
为例

1.2 让设置的 auditd 时间生效

# service auditd restart

方法二:通过 logrotate 配置文件设置

2.1 设置 auditd 日志的保存时间

# vim /etc/logrotate.d/auditd

创建以下内容:

/var/log/audit/*
{
rotate 30
daily
missingok
compress
delaycompress
postrotate
touch /var/log/audit/audit.log ||:
chmod 0600 /var/log/audit/audit.log ||:
service auditd restart
endscript
}


补充:这里以:
1) 备份的日志文件保留 30 份 (rotate 30)
2) 每天将现在的日志文件进行备份并生成新的日志文件 (dayly)

2.2 让设置的 auditd 时间生效

# systemctl restart logrotate.service

[排错] 解决 Red Hat Satellite 发布新版本 Content Views 时报错 “Unable to find content with the ID “……””

报错代码

Unable to find content with the ID "......"

分析

当 Content Views 里包含有问题的软件源时,发布新版本 Content View 时就会报此类错误

解决方法

步骤一:根据报错时出现的 ID 显示出问题的软件名称

# su - postgres -c "psql candlepin -c \"select uuid, content_id, contentUrl, label, type, vendor from cp2_content where content_id = '9210'\""

(补充:这里以显示 ID 9210 的软件名称为例)

步骤二:给服务器系统打一个快照

(步骤略)

步骤三:强制停止出问题的任务

Monitor –> Tasks –> Paused –> “select the task which publish a new Content View version” –> Cancel

(注意:操作前需要确保左上角的组织是否正确)

或者:

步骤三:将出问题的软件源从要布新版本的 Content Views 里删除

Content –> Content Views –> “select the Content View which whill publish a new version” –> Yum Content –> Repository –> “select the repository which is error” –> Remove Repositories

步骤四:重新发布新版本的 Content Views

(步骤略)