最近帮实验室装了两台服务器,计算用的服务器放在内网,通过一台堡垒机与外界相连。碰到很多小问题,在这里记录一下。

组建内网

这一部分没有太多好说的,堡垒机需要有两块网卡,一块对外一块对内,内网服务器一块就够了。组网的时候根据情况可以手工指定IP也可以DHCP。如果内网只有一台机器的话可以找一根网线直连两台机器,如果机器多的话还是买个路由器吧,最好找高级一点的,可定制的功能多一点,否则会很坑。

端口转发

从外面访问内网服务器的时候有三种方法:

  1. 最简单的办法是先ssh到堡垒机,再ssh到内网的服务器。这样做的问题是需要同时在堡垒机和内网服务器上创建账号,而有的时候我们并不希望用户访问堡垒机,堡垒机对用户应该是透明的。
  2. 第二种办法是ssh隧道,我们可以通过堡垒机建立隧道,把外面的请求转发到内网。但建立隧道本身也比较麻烦。这篇博客对于ssh隧道讲得非常清楚。
  3. 最方便解决办法就是端口转发:将堡垒机上的端口与内网服务器需要访问的端口建立映射关系,例如将堡垒机的1234端口映射到内网服务器的22端口,这时ssh -p 1234 <bastion server IP>实际登录到的就是内网服务器。端口转发的本质是把堡垒机当成了路由器。这篇博客对于端口映射讲得非常清楚。

时间校准

一个与世隔绝的服务器时间往往不准,有时候是设置问题,有时候是BIOS上的时钟本来就不准。想要校准的话,最方便的当然是手工设置,但这样无法保证精度,而且过一段时间可能又会产生偏差。比较好的办法是用NTP在线校准时间,但是内网无法访问公共NTP服务器。这时可以把堡垒机配置成一个NTP server,然后让内网的服务器都跟堡垒机校准。

当然我们也可以给内网服务器指定一个网关(堡垒机),然后打开堡垒机的转发功能,这样内网服务器就可以直接上网了。但有时候我们并不想这么做。

用户管理

用户管理涉及到批量添加/删除用户,用户分组,权限控制,磁盘限额,限时登录等等。

批量添加/删除用户

下面是我写的一个小脚本,需要读取一个记载了用户名和登录密码的文本文件,然后依次创建每一个用户。

#!/bin/bash                                                                     

filename=$1                                                                     cat $filename | while read line
do                                                                              # cut string                                                                arr=($line)                                                                 username=${arr[0]}                                                          password=${arr[1]}                                                          # add user                                                                  useradd -g student -p `openssl passwd -crypt $password` $username           chmod 700 /home/${username}                                                 # copy certain files to setup develop environment                                     cp -r -f /home/vasys/home/students/example/* /home/${username}/             cp -f /home/vasys/.bashrc /home/${username}/                                # change owner                                                              chown -R ${username}:student /home/${username}                              # disk quota                                                                xfs_quota -x -c "limit bsoft=40G bhard=50G ${username}" /home
done

需要注意,通过useradd-p参数指定密码时候一定要给出crypt加密后的密码,不是原始密码。在CentOS 7上,crypt加密后的密码可以由openssl passwd -crypt $password生成,$password代表原始密码。mkpasswd这个命令似乎也可以。

限制用户磁盘空间

在前面的脚本里也看到了,可以通过quota命令限制每个用户(或每个用户组)使用的磁盘空间。但如果你的文件系统是xfs,就需要用xfs_quota。为了支持磁盘限额,首先内核要足够新(Linux 2.4以上),其次分区挂载的时候需要加上usrquotagrpquota两个参数(在/etc/fstab里)。

限制用户登录时间

我们的服务器是教学用的,学生可以通过预约获得使用权限。我们需要控制学生只能在预约的时间段登录,这个时间段之外,不仅不能登录,如果有这个用户的进程还要杀掉。限制用户登录时间有很多办法,例如写一个crontab,预约时间结束就用passwd或者usermod把用户账户置为锁定状态,到下一次预约时间再解锁。但这样相当于一次预约要写两行crontab,对于我这种懒人很不友好。

我选择的办法是用PAM里的时间模块,这种办法首先要编辑/etc/security/time.conf,在里面写入允许(或禁止)用户登录的时间,然后再编辑/etc/pam.d/loginauth条目后加入account required pam_time.so。这种办法有一个局限,只能指定周几,不能指定具体的日期。不过我们的预约正好也是以周为单位,所以无所谓了。

杀死某个用户的所有进程

有两个方便的命令killallpkill。当然也可以用psgrepkill等命令组合起来,实现更复杂的功能。

我的Linux运维笔记相关推荐

  1. linux运维笔记:动态网页资源

    linux运维笔记:动态网页资源 1.动态网页资源介绍 所谓的动态网页是与静态网页相对而言,也就是说,动态网页的URL后缀 不是.htm..html..shtml..xml..js..css等静态网页 ...

  2. linux运维笔记:DNS解析IP地址的过程(dns解析的原理 )

    linux运维笔记:DNS解析IP地址的过程(dns解析的原理 ) 1.首先:说一下dns解析的流程,大家都知道,计算机之间只能通过ip相互通信,因为ip不好记,于是才使用dns服务器把域名解析为相应 ...

  3. linux运维笔记:ssh服务认证类型

    linux运维笔记:ssh服务认证类型 从SSH客户端来看,SSH服务主要提供两种级别的安全验证,具体级别如下: 1-基于口令的安全验证: 基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务 ...

  4. 老男孩的linux运维笔记-初级部分内容(一)

    ############################################################ # # USER          YYYY-MM-DD – ACTION # ...

  5. linux运维笔记:Rsync数据同步工具

    linux运维笔记:Rsync数据同步工具 1-Rsync简介 Rsync英文全称是Remote synchronization,Rsync具有可以使本地和远程两台主机之间的数据快速复制和同步镜像.远 ...

  6. 【干货】美团点评架构师私藏的内部Linux运维笔记!

    最近不少小伙伴后台联系,希望能弄一些大厂的学习资料,我这边费了很大劲,联系到老朋友,原美团点评架构师张sir,问他要了些美团点评架构的内部资料. 这份资料含金量非常高,包含整个美团点评架构架构图,Li ...

  7. Linux运维笔记-日常操作命令总结(1)

    在linux日常运维中,我们平时会用到很多常规的操作命令. 查看服务器的外网ip [root@redis-new01 ~]# curl ifconfig.me [root@redis-new01 ~] ...

  8. 【linux运维笔记】 第一章 Linux发展史与安装

    第一章 Linux发展史与安装 一.Linux发展史 1.Linux前身-Unix (1)1968年 Multics项目 MIT.Bell实验室.美国通用电气有限公司走到了一起,致力于开发Multic ...

  9. linux运维笔记:epel源简介

    EPEL是一个由特别兴趣小组创建.维护并管理的,针对红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS.Scientific Linux.Oracle Enterprise Linu ...

最新文章

  1. 如何让项目一步步走向灭亡
  2. Spring启动执行流程梳理
  3. 几个使用linux内核的系统,[科普] Linux 的内核与 Linux 系统之间的关系
  4. asp登录页面跳转到注册页面_Java 添加页面跳转按钮到PDF文档
  5. json 在后天怎么接_长相显老怎么办?以同岁的马伊琍和刘敏涛为例,解析显年轻的技巧...
  6. java top.dialog控件,java – 如何只为他的父级创建JDialog onTop?
  7. mybatis学习(33):动态sql if
  8. Linux输入子系统:事件的编码 -- event-codes.txt
  9. 解决Error: could not open ‘……\jre7\lib\i386\jvm.cfg‘问题
  10. Leetcode 32.最长有效括号
  11. c语言实现全排列并存储,C语言实现全排列和回溯法总结
  12. qgis导出shp_使用QGIS将文本坐标转换为矢量文件
  13. QT的Q3DScatter使用(三维可视图)
  14. 数据包络分析--综合的双目标数据包络分析模型
  15. 2021新版CISSP考试大纲解析
  16. Doc2Vec 模型参数
  17. HTML计算平均成绩,成绩平均分怎么算
  18. spring使用之旅 ---- bean的装配
  19. 数据库服务器如何备份详细教程!
  20. MySQL 在线一键安装

热门文章

  1. 卡特尔世界杯“比赛用球”公布
  2. 计算机辐射测试,网传台式电脑辐射测试结果靠谱吗
  3. 基于matlab的圆偏振光/两相交流电模拟-导出gif
  4. recaptcha v2_reCAPTCHA v2 vs v3 – reCAPTCHA v2和v3之间的区别
  5. 边缘计算,为什么一定会迎来大爆发?
  6. Unity FairyGUI 自适应扩展
  7. hdf5 文件生成 C++
  8. 基于stc89c51单片机的温控风扇(程序代码+原理图)
  9. BDA的技能体系有点太滞后了
  10. C++面试技巧 大厂 某讯 面试试题