10. xinetd命令详解[进阶版]

10. xinetd命令详解[进阶版]

1-1. 具体可以使用xinetd的服务,存储文件位置 [这个文件正常不修改,以免端口出现冲突]

1
vi /etc/services

1-2. 查询关于”rsync” 所用的端口

1
cat /etc/services | grep rsync

2-1. xinetd总的配置文件

1
vi /etc/xinetd.conf

3-1. xinetd总的配置文件 – 使用syslog daemon进行服务登记

1
log_type = SYSLOG daemon info

3-2. xinetd总的配置文件 – 发生错误时需要记录的信息为主机(HOST)

1
log_on_failure = HOST

3-3. xinetd总的配置文件 – 成功启动或登录时的记录信息

1
log_on_success = PID HOST DURATION EXIT

3-4. xinetd总的配置文件 – 同一秒内的最大连接数为50个,若超过则暂停10秒

1
cps = 50 10

3-5. xinetd总的配置文件 – 同一服务最大同时连接进程数为50个

1
instances = 50

3-6. xinetd总的配置文件 – 同一来源的客户端的最大连接数10个

1
per_source = 10

3-7. xinetd总的配置文件 – 是否允许Ipv6?暂时不启动

1
v6only = no

4-1. xinetd具体的配置文件

1
ll /etc/xinetd.d/

5-1. xinetd具体的配置文件 – 禁用这个服务

1
disable = yes

5-2. xinetd具体的配置文件 – 服务的数据包类型为stream,这是使用了TCP连接之故

1
socket_type = stream

5-3. xinetd具体的配置文件 – 不需等待,能同时进行大量的连接功能,即服务将以多线程的方式运行

1
wait = no

5-4. xinetd具体的配置文件 – 执行此服务进程的用户是root

1
user = root

5-5. xinetd具体的配置文件 – 启动脚本的位置

1
server = /usr/bin/rsync

5-6. xinetd具体的配置文件 – 设置失败时,额外将用户ID-UID添加到系统登记表

1
log_on_failure += USERID

5-7. xinetd具体的配置文件 – 设置的日志文件FILE.1临界值为8MB,到达此值时,syslog文件会出现告警,到达15MB,系统会停止所有使用这个日志系统的服务
8388608 15728640

1
log_type FILE.1 /var/log/myservice.log 8388608 15728640

5-8. xinetd具体的配置文件 – 对服务器硬件资源占用的限制,最多可用内存为8MB

1
rlimit_as = 8M

5-9. xinetd具体的配置文件 – CPU每秒处理20个进程

1
rlimit_cpu = 20

2. 配置实例

例1:以sshd为例,把sshd拖管到xinetd下

6-1. 实战1 – 关闭ssh服务

1
systemctl stop sshd.service

6-2. 实战1 – 关闭ssh开机自启动服务

1
systemctl disable sshd.service

6-3. 实战1 – 创建ssh

1
vi /etc/xinetd.d/ssh

6-4. 实战1 – 编辑里面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
service ssh                             # 代表被托管服务的名称
{
        disable = no                    # 是否禁用托管服务,no表示开启托管服务
        log_on_failure += USERID        # 设置失败时,UID添加到系统登记表
        socket_type = stream            # socket连接方式,这个是属于本地方式,对ssh无效
        server_args = --daemon          # 设置服务启动时需要的参数      
        cps = 25 30                     # 每秒25个入站连接,如果超过限制,则等待30秒。主要用于对付拒绝服务***
        protocol = tcp                  # 代表ssh走的是tcp协议连接
        wait = no                       # 是否并发,这个参数对ssh无效
        user = root                     # 以什么用户进行启动
        server = /usr/sbin/sshd         # 被托管服务的启动脚本
        server_args = -i                # 启动脚本的参数
}

6-5. 实战1 – 重新启动xinetd服务

1
systemctl restart xinetd.service

6-6. 实战1 – 查看22端口的进程,是sshd 还是 xinetd ?

1
lsof -i:22

6-7. 实战2 – 表示允许 192.168.122.0/24 网段访问
增加如下代码

1
only_from = 192.168.122.0/24

6-8. 实战2 – 但网段里的20和200这两IP不能访问
增加如下代码

1
no_access = 192.168.122.20 192.168.122.200

6-9. 实战2 – 192.168.122.20 这台去连192.168.122.237发现已经无法连上

1
ifconfig
1
ssh root@192.168.122.237

6-10. 实战3 – 控制这个服务最多只能3个连接

1
instances = 3

6-11. 实战3 – 每个源IP只能有1个连接

1
per_source = 1

6-12. 实战3 – 只能9:00到18:00才能ssh连接

1
access_times = 9:00-18:00

6-13. 实战3 – 指定日志记录到/var/log/xinetd_ssh.log里

1
log_type = file /var/log/xinetd_ssh.log

6-14. 实战4 – 修改ssh服务的连接端口

1
port = 7722

6-15. 实战4 – 将ssh服务的端口改为7722

1
vi /etc/services
1
2
ssh 7722/tcp                          # The Secure Shell (SSH) Protocol
ssh 7722/udp                          # The Secure Shell (SSH) Protocol

6-16. 实战4 – 客户端连192.168.122.237 7722端口

1
ssh root@192.168.122.237 -p 7722

6-17. 实战5 – Xinetd 时间同步 – udp

1
vi /etc/xinetd.d/time-dgram
1
disable = no

6-18. 实战5 – Xinetd 时间同步 – tcp

1
vi /etc/xinetd.d/time-stream
1
disable = no

6-18. 实战5 – Xinetd 时间同步 – 重启xinetd服务

1
systemctl restart xinetd.service

6-18. 实战5 – Xinetd 时间同步 – 检验是否成功

1
lsof -i:37

6-19. 实战5 – Xinetd 时间同步 – 别的机器要同步这台192.168.122.237 时间

1
rdate -s 192.168.122.237

6-19. 实战5 – Xinetd 时间同步 – 如果上一步同步提示”no route to host”,并且能相互ping通.则说明端口没放行

1
2
3
firewall-cmd --permanent --zone=public --add-port=37/tcp
firewall-cmd --permanent --zone=public --add-port=37/udp
firewall-cmd --reload

Leave a Reply

Your email address will not be published. Required fields are marked *