目的:提升系统安全,区分客户及管理员。
偶然在做https加密的时候看到有关于如何openwrt系统安全加固的教程,以https方式进入openwrt管理页面属于其中一种。
Secure your router's access
http://wiki.openwrt.org/doc/howto/secure.access
根据wiki教程(英语一般的人都能看懂)
1.安装所需要的包+创建新用户+为新用户设置密码:
opkg update && opkg install shadow-useradd && useradd USER && passwd USER
*tips:若是觉得opkg update 太慢,可以修改/etc/opkg.conf,只更新shadow-useradd 所在的packages,其他的链接注释掉,现在快多了。
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/packages
# src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/management
++++++++++++++++++++++++++++++++++++++++++
你或许会觉得这很麻烦亦或是内存空间略显紧张,wiki中也有手动创建用户的方法:
Or add the user by hand (Take care that uid/gid (e.g.=1000) are not already in use!)
USER为新用户名,自己写,别傻傻跟过来!
直接编辑以下三个文件:
/etc/passwd: USER:x:1000:1000:GROUP:/mnt/usb:/bin/false
/etc/group: GROUP:x:1000:
/etc/shaddow:USER:RANDOMSTUFWillBeUpdatedWithPasswd:16666:0:99999:7:::
还不忘给新用户(USER)添加密码 passwd USER
++++++++++++++++++++++++++++++++++++++++++
以下这段话很重要:
However, you can’t ssh to this user yet. To enable ssh access, you should make a password for that user, create his home folder and most importantly indicate the shell of that user:
mkdir /home
mkdir /home/USER
chown USER /home/USER
#更改文件所有者为USER,新用户有了自己的一片小天地
#不忘去passwd那里注册登记(有没有觉得像买房子去登记?)
nicolaus:x:1000:1000:nicolaus:/home/nicolaus:/bin/ash
#/bin/ash
#用的是ash的shell
3.新用户权限sudo
Allow temporary privileged access using sudo
wiki中提供了三种配置方式,注意小标题,自选,不翻译。
4.对原文的进一步提升,开启ssh密匙登录,禁用登录密码
使用非对称加密来提升用户安全(root用户都用了,普通用户也不放过)。
鸣谢:https://forum.openwrt.org/
(逛了一上午,运气还可以)
4.1准备:用puttygen生成公钥私钥对,
并将公钥粘贴至/hone/USER/.ssh/authorized_keys文件夹中,保存,
*注意:authorized_keys文件名不可改动
4.2OpenWRT默认使用的是dropbear,一个轻量级ssh服务;
当用户发起登录请求后,dropbear会进入用户目录下一个名为.ssh的隐藏文件夹,读取事先准备好的authorized_keys公钥文件。
4.3最大的问题:权限,dropbear 对用户目录权限要求较高,不合理的权限配置将导致服务器拒绝私匙。
经过多次试错,权限配置如下:
/home/USER:740 USER root
/home/USER/.ssh:640 USER root
/home/USER/.ssh/authorized_keys : 640 USER USER
4.4最后禁止使用密码登录/etc/config/dropbear:
option PasswordAuth 'off'
至此大功告成,多用户+ssh公钥验证(免密码登录)