在开发web应用的时候,经常需要对服务器进行配置。我根据阮一峰老师的Linux服务器初步配置过程编写了这篇笔记。节省以后配置服务器的时间。修改root密码。默认情况下,root帐户没有密码。为了安全起见,先初始化一个passwd,创建一个linux管理员账号?使用Linux服务器时,尽量不要使用root账号处理日常操作。让我们创建一个新的管理员帐户。首先,添加一个用户组(这里是我的自定义管理员)。addgroupadmin然后,添加一个新用户(假设是www)。useradd-d/home/www-s/bin/bash-mwww上面命令中,参数d指定用户的家目录,参数s指定用户的shell,参数m表示如果目录不存在,创建目录。接下来,为新用户设置密码。passwdwww将新用户(www)添加到用户组(admin)。usermod-a-Gadminwww接下来,为新用户设置sudo权限。sudovi/etc/sudoers找到以下行。rootALL=(ALL:ALL)ALL在此行下方,添加另一行。rootALL=(ALL:ALL)ALLwwwALL=(ALL)NOPASSWD:ALL上面的NOPASSWD表示切换sudo时,不需要密码。如果出于安全原因,密码也可能是强制性的。rootALL=(ALL:ALL)ALLwwwALL=(ALL:ALL)ALL最后注销root用户登录,再以新用户登录。配置SSH服务,将你电脑的ssh公钥保存到服务器的~/.ssh/authorized_keys文件中,直接使用以下命令ssh-copy-id-i~/.ssh/id_rsa.pubroot@123.456.78然后,进入服务器,编辑SSH配置文件/etc/ssh/sshd_config。sudocp/etc/ssh/sshd_config~(用于备份和恢复)sudovi/etc/ssh/sshd_config在配置文件中,更改SSH的默认端口22。假设你使用25000Port25000然后,检查一些设置是否设置如下,确保去掉前面的#号。选项含义Protocol2ssh协议使用新版PermitRootLoginnoallowrootloginPermitEmptyPasswordsnoallowemptypasswordloginPasswordAuthenticationnousepasswordauthorizationloginRSAAuthenticationyes使用RSA算法进行安全验证PubkeyAuthenticationyes允许公钥认证UseDNSnodisableDNS反向解析会加速SpeedSyslogFacilityAUTHPRIV记录用户登录信息。以上主要是禁止root用户登录和密码登录。保存后,退出文件编辑器。接下来,更改authorized_keys文件的权限。sudochmod600~/.ssh/authorized_keys&&chmod700~/.ssh/restartSSHDsudoservicesshrestart或sudo/etc/init.d/sshrestart运行时环境配置检查服务器区域设置。如果locale的结果不是en_US.UTF-8,建议设置为en_US.UTF-8。sudolocale-genen_USen_US.UTF-8en_CA.UTF-8sudodpkg-reconfigurelocales然后更新软件sudoapt-getupdatesudoapt-getupgrade最后根据需要做一些安全设置,比如搭建防火墙,关闭HTTP,HTTPs和SSH以外的端口,详见本文《Securing a Linux Server》。特别是阿里云服务器阿里云服务器可以在控制台设置安全组规则。什么是安全组?举个栗子吧。我已经部署了一个MongoDB数据库。我怕别人黑我的数据库,所以我可以设置安全组的规则,拒绝访问公网使用的27017端口。.只允许本地locahost访问,禁止公网访问。以下是讲解阿里云产品介绍的教科书版。请看这里。安全组安全组是一个具有状态检测和包过滤功能的虚拟防火墙。安全组用于设置单个或多个云服务器的网络访问控制。它是网络安全隔离的重要手段,用于在云端划分安全域。安全组是由同一地域(Region)内具有相同安全保护要求且相互信任的实例组成的逻辑组。每个实例至少属于一个安全组,需要在创建时指定。同一安全组内的实例之间可以通过网络互通,不同安全组内的实例默认不能通过内网互通。可以授权两个安全组之间的访问。参考Linux服务器初步配置过程
