前言
由于在工作中经常使用Linux系统,尝试过Ubuntu , 尝试过CentOS,最终还是决定使用Debian。Ubuntu 也是Debian的延伸版,但是它的版本管理太过于激进了,生产的第一要素还是稳定的好,至于CentOS,同样是一个稳定的发行版,基于Redhat,不过它的内核版本,软件库来说,就显得过于缓慢,这也是我为什么使用Debian的原因。说到底,真正在操作系统影响软件运行的情况还真少,所以不必纠结,选一个合适的就好。现在Debian已经更新到9.8了。以往来说,每次安装都需要做各种设置,每次相关到操作都是一步步再次搜索,因此根据自身到情况,汇总成一个详细到教程,避免每次都需要再次进行重新开始。
说明
- 系统版本: Debian 9.8 相关软件都安装到最新版本了
- 最小安装,其他的组建都没有安装。
- 基于x64位的系统
一些软件推荐
日常使用
以下是实际工作中一些常用的软件:
apt install ufw vim supervisor fail2ban screen nload iftop htop
# ufw: debian系的防火墙工具吧,省的编写复杂的iptable,会单独博客进行说
# vim: 常用的编辑工具
# supervisor:进程管理工具,会单独博客进行编写
# fail2ban: 一款加强系统安全的设置工具,非常有用
# screen:防止会话丢失的工具
# nload,iftop: 查看当前网络连接的状况
# htop: 更好用的top
开发必备
首先是开发环境,为了节省麻烦,通常使用以下的命令进行安装:
apt install build-essential
安全设置
安装sudo
debian最小化安装是没有sudo的但是我们可以通过命令apt install sudo
安装。
假设你的自建账号为 user 那么你可以将自己加入到sudo中去,具体命令为: visudo
,当然你可以编辑 /etc/sudoers
文件,文件的主要格式为:
<用户名> 主机名 = (用户名:组名) 命令列表
下面对这个设置进行特别说明:
– 主机名必须是主机名,如当前主机不能使用localhost
– 命令必须使用绝对路径,多个命令以逗号 , 分开
– 用户和组可以只设定一个,可以全设定,但是在运行命令时,可以只指定用户或组,也可以全部指定。
参考的内容为:user ALL = (ALL:ALL) ALL
,
此时用户user就有能力执行root权限下的命令了。例如执行一个需要root权限的 reboot,那么只需要 sudo reboot 即可,当然这是需要输入密码才能继续执行。
如果你不想每次都输入密码,可以配置为:user ALL = (ALL:ALL) NOPASSWD:ALL
启用fail2ban
上文已说明安装fail2ban,这里将对其设置进行补充。
编辑 /etc/fail2ban/jail.local
, 这个配置位置会覆盖原有的配置/etc/fail2ban/jail.conf
,这样的话,可以在不必修改原始配置的情况下,增加自己的个性化配置,我常用的配置如下:
[DEFAULT]
ignoreip = 127.0.0.1 10.10.0.0/24 # 配置不被记录的IP或网段
bantime = 86400 # 配置最大的封锁时间,单位秒,这里设置了一天
maxretry = 3 # 配置多少次失败后,纳入封锁列表
findtime=600 # 配置查找时间
[sshd]
maxretry = 3
findtime = 60
bantime = 360000
[sshd-ddos]
enabled = true
编辑完成之后,使用命令systemctl restart fail2ban
, 可以是上述配置生效
禁用密码登陆,改用密钥登陆
密码登陆主要的问题在于客户端使用暴力猜谜的方式就可以攻破,如果没有fail2ban的保护,被攻击登陆只是时间的问题。
那么通常的设置如下:
编辑文件 /etc/ssh/sshd_config
, 对于其中的某些选项进行设置,
– 禁用密码登陆:PasswordAuthentication no
– 禁用root用户登陆: PermitRootLogin no
请注意,在上述配置生效之前,请一定确保你能够使用密钥登陆: 一定要在服务器上配置好 授权,我们还是以user用户为例,那么在user的HOME目录下,通常为 /home/user的.ssh/authorized_keys 中增加你的公钥即可。在完成配置后,你可以尝试使用 ssh user@IP
进行测试,如果可以免密码登陆,那么你可以方向的重启ssh服务了
systemctl restart ssh
待续。。。。