给ssh服务加一道更安全的锁
在远程使用Linux服务器时,使用最频繁也是最重要的服务莫过于ssh,通过ssh服务我们不仅远程登录服务器,还可以往服务器传输文件,其重要性可见一斑。如此重要的服务,入侵者当然不会放过,攻下了ssh服务,就拿到了服务器的控制权。所以,在安装完服务器操作系统并开启了ssh服务后,第一件事就是修改ssh服务,让其更安全。
PAM的妙用
- ssh服务除了修改默认端口号、使用密钥登录、限制root登录的安全设置外,还可以通过pam模块来限制登录;
- 常用于ssh服务的模块主要有2个:pam_access、pam_time,前者用来限制登录源,后者用来限制登录时间;
- pam模块限制的服务可以通过
ls /etc/pam.d
来查看;
show_pam.d - 使用pam来限制ssh登录,主要操作分为2步:在sshd服务中添加pam模块->在pam配置文件中添加限制条目;
pam_access
使用pam_access模块来限制ssh登录源,ssh服务使用的服务名为sshd,pam_access模块使用的配置文件路径为/etc/security/access.conf
- 在ssh服务中添加pam_access模块
# 切换到pam.d目录,备份远文件
cd /etc/pam.d && sudo cp sshd sshd.old
# 使用vi编辑器编辑sshd文件
sudo vi sshd
# 添加pam_access模块
account required pam_access.so
add_pam_access
- 在pam配置文件中添加限制条目,条目的格式如下:
+/-:users:origins
-
+/-
:+号表示授权访问,-号表示拒绝访问 -
users
:users表示限制的用户或用户组,多个用户或组时使用空格分隔 -
origins
:origins表示来源,可以是本地主机名、ip地址/段,域名,有几个特殊关键词:ALL表示所有,LOCAL表示本地,EXCEPT表示除了 - 当有多条规则时,执行的顺寻是自上而下
# 切换到配置文件目录,备份原文件
cd /etc/security && sudo cp access.conf access.conf.old
# 编辑配置文件
sudo vi access.conf
# 在文件最后添加一行,只允许用户kim通过192.168.0.90地址登录
+:kim:192.168.0.90
-:kim:ALL
login_from_192.168.0.90
login_from_192.168.0.99
pam_time
pam_time模块用来限制ssh登录的时间,ssh服务使用的服务名为sshd,pam_time模块使用的配置文件路径为/etc/security/time.conf
,在需要对服务器进行维护的时候,或者是在特定时间禁止用户ssh登录服务器
- 在ssh服务中添加pam_time模块
# vi打开文件
sudo vi /etc/pam.d/sshd
# 添加pam_time模块
account required pam_time.so
add_pam_time
- 在pam配置文件中添加限制条目,条目的格式如下:
services;devices;users;times
-
services
:可以使用的services都包含在/etc/pam.d目录中 -
devices
:可以使用的device有:*表示所有设备,!ttyp*表示除虚拟设别外的所有设备,ttyp*远程登录设备 -
users
:限制的用户或组,使用列表时,各元素之间使用符号|分隔 -
time
:限制的时间,由2段组成,第一段是首字母大写的星期缩写,第二段是时间段- 星期缩写:Mo、Tu、We、Th、Fr、Sa、Su
- 特殊缩写:Wk工作日、Wd周末、Al每周的每天、WdSa周日、WdSu周六、WkMo除周一外的工作日
# 切换到配置文件目录,并备份原文件
cd /etc/security/ && sudo cp time.conf time.conf.old
# 编辑配置文件
sudo vi time.conf
# 在文件末尾添加一行,允许用户kim在每周凌晨0点到4点外的时间登录
sshd;*;kim;!A10000-0400
# 我们使用当前时间测试
sshd;*;kim;!A11600-1700
login_from_192.168.0.90
login_from_console
总结
通过pam_access模块可以限制ssh登录的设备,通过pam_time模块可以限制ssh登录的时间段,这样就可以限制特定用户从特定的设备在指定的时间ssh登录到服务器,双管齐下最大程度保证ssh服务的安全。
网友评论