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 |