当前位置首页 > Debian知识

debian10

阅读次数:703 次  来源:admin  发布时间:

一、安装系统

分区设置(如果不想自动分区,请选择手动)

1、选择使用整个磁盘并配置lvm

debian10

2、选择第三个。

debian10

二、配置网络源

1、debian10对应ubuntu 18.04,UOS 20企业版对应debian10.3(即apt源可通用)

debian10

debian10和UOS大体很像,UOS有个大坑

/home/和/data/home/下文件是完全一致的

删除/data/home/的同时/home/也将被删除

mountpoint /home可以看出来关系

清华源

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

2、Debian的镜像源URL字段理解

第一字段,指示包类型。

deb:二进制包 deb-src:源码包

第二字段,指示镜像站点,即源! URL 定位到某个目录,该目录下必有 dists 和 pool 两个子目录。如:

debian10

第三字段,指示包的版本号,姑且称为仓库。 打开某源,进入dists子目录可见该源中有哪些仓库,即其下诸子目录。命名形式为「系统发行版名-仓库名」,如 Debian 的「jessie-backports」「stretch-updates」,Ubuntu 的「vivid-updates」「wily-proposed」,无仓库名的即为主仓库。

Debian 的仓库自 squeeze 起与 Ubuntu 基本相同。除主仓库外,有:

ecurity:Ubuntu 用于指安全性更新。即影响系统安全的 bug 修补。Debian 特殊一些,见下文。 updates:非安全性更新。即不影响到系统安全的 bug 修补。 proposed-updates:预更新。小 beta 版。过后会进入「updates」或「security」。Ubuntu 仅用proposed」,无后缀「updates」。 backports:后备。Debian stable 发布后,Ubuntu 某版本正式发布后,其所有软件版本号便已被冻结,所有软件只修 bug,不增加任何特性。但有人可能需要新特性,甚至某些较新的软件原来根本就没有。该仓库正因此而设,但欠官方维护,且可能在系统正式发布之后过一段时间才有内容。此仓库处于第二优先顺序,而上述几个仓库处于第一优先顺序。安装第二优先顺序的包必须特别指明,见 apt-get(8) aptitude(8) 的 --target-release 选项。 提示:并非所有版本都设有上述全部仓库,请打开源中 dists 目录查看。

后续字段,指示包许可类型。 后续字段排名不分先后,最终结果取其并集。按包本身的许可及所直接依赖的包的许可划分。打开某仓库,可见几个子目录。 Debian 最多有三种

main:本身是自由软件,且所有依赖的包也都是自由软件,此类可称纯自由软件,见 https://www.debian.org/distrib/packages《Debian自由软件指导方针》。

contrib:本身是自由软件,但依赖不纯,即依赖中至少有一例 contrib 或 non-free 者。

on-free:本身并非自由软件,无论依赖如何。当然,该软件是可免费使用或试用的。免费一例 https://packages.debian.org/jessie/unrar,试用xx天一例 https://packages.debian.org/jessie/rar。

Ubuntu 最多有四种

main:官方维护的自由软件。

universe:社区维护的自由软件。

restricted:设备专有驱动。

multiverse:同 Debian 的「non-free」。某些另类的第三方源,未必遵循上述惯例。

不要同时启用多个源,同一仓库的源启用一个即可,否则容易引起混乱。以下实例便是列有多套而仅启用一套。

即:用华为源就不要再使用阿里源

3、debain10 root没法本地登录问题

vi /etc/gdm3/daemon.conf
在[security]下,输入“ AllowRoot = true”。因此,文件中的[security]部分应如下所示:
[security]
AllowRoot=true
保存退出。

vi /etc/pam.d/gdm-password
注释掉如下一行,而不是取消注释
auth required pam_succeed_if.so user != root quiet_success
注释后如下所示:
#auth required pam_succeed_if.so user != root quiet_success
保存退出。

三、设置IP地址、网关、DNS

1、vim 和 ll 使用问题

vim命令的使用

vim /etc/vim/vimrc.tiny
将“compatible”改成“nocompatible”非兼容模式;
并添加一句:set backspace=2

ll命令的使用

sudo vim ~/.bashrc
找到alias ll=’ls -l’将前面的’#'去掉就可以了

2、设置ip地址、网关

ano /etc/network/interfaces #编辑网卡配置文件

auto ens33 #开机自动连接网络
allow-hotplug ens33
iface ens33 inet static 
address 192.168.21.109
netmask 255.255.255.0
gateway 192.168.21.2 

ctrl+o #保存配置

ctrl+x #退出

3、设置DNS

nano /etc/resolv.conf #编辑配置文件

nameserver 8.8.8.8 #设置首选dns

nameserver 8.8.4.4 #设置备用dns

ctrl+o #保存配置

ctrl+x #退出

ervice networking restart #重启网络

注意:Debian系统,ip a看到的已有ip地址,网卡文件就不能在配置该ip了,否则重启会报错。

4、安装ssh服务(默认需要开启root远程登录)

OpenSSh 分为客户端openssh-client 与服务端 openssh-server.一般情况下,我们的linux系统都会自带 client端的。

apt-get install openssh-client
apt-get install openssh-server

配置文件sshd_config

Port 22  #设置ssh监听的端口号,默认22端口
ListenAddress ::
ListenAddress 0.0.0.0  #指定监听的地址,默认监听所有;
Protocol 2,1   #指定支持的SSH协议的版本号。'1'和'2'表示仅仅支持SSH-1和SSH-2协议。
#"2,1"表示同时支持SSH-1和SSH-2协议。#
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key    #HostKey是主机私钥文件的存放位置; 
#SSH-1默认是 /etc/ssh/ssh_host_key 。SSH-2默认是 /etc/ssh/ssh_host_rsa_key和
#/etc/ssh/ssh_host_dsa_key 。一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,
#"dsa"和"rsa"仅用于SSH-2。
UsePrivilegeSeparation yes     #是否通过创建非特权子进程处理接入请求的方法来进行权
#限分 离。默认值是"yes"。 认证成功后,将以该认证用户的身份创另一个子进程。这样做的目的是
#为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
KeyRegenerationInterval 3600   #在SSH-1协议下,短命的服务器密钥将以此指令设置的时
#间为周期(秒),不断重新生成;这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。设为 0 
#表示永不重新生成为 3600(秒)。
ServerKeyBits 1024    #指定服务器密钥的位数
SyslogFacility AUTH   #指定 将日志消息通过哪个日志子系统(facility)发送。有效值是:
#DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3,LOCAL4, LOCAL5, 
#LOCAL6, LOCAL7
LogLevel INFO     #指定日志等级(详细程度)。可用值如下:QUIET, FATAL, ERROR, INFO
#(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3,DEBUG 与 DEBUG1 等价;DEBUG2
# 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。比 DEBUG 更详细的日志可能会泄漏用户
# 的敏感信息,因此反对使用。
LoginGraceTime 120  #限制用户必须在指定的时限(单位秒)内认证成功,0 表示无限制。默认
#值是 120 秒;如果用户不能成功登录,在用户切断连接之前服务器需要等待120秒。
PermitRootLogin yes  #是否允许 root 登录。可用值如下:"yes"(默认) 表示允许。
#"no"表示禁止。"without-password"表示禁止使用密码认证登录。"forced-commands-only"
#表示只有在指定了 command 选项的情况下才允许使用公钥认证登录,同时其它认证方法全部被禁止。
#这个值常用于做远程备份之类的事情。
StrictModes yes       #指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配
#置文件 进行宿主和权限检查。强烈建议使用默认值"yes"来预防可能出现的低级错误。
RSAAuthentication yes  #是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。
PubkeyAuthentication yes  #是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。
IgnoreRhosts yes    #是否取消使用 ~/.ssh/.rhosts 来做为认证。推荐设为yes。
RhostsRSAAuthentication no  #这个选项是专门给 version 1 用的,使用 rhosts 档案在                  
#/etc/hosts.equiv配合 RSA 演算方式来进行认证!推荐no。
HostbasedAuthentication no    #这个与上面的项目类似,不过是给 version 2 使用的
IgnoreUserKnownHosts no          #是否在 RhostsRSAAuthentication 或 
#HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。默认值是"no"。
#为了提高安全性,可以设为"yes"。
PermitEmptyPasswords no         #是否允许密码为空的用户远程登录。默认为"no"。
ChallengeResponseAuthentication no   #是否允许质疑-应答(challenge-response)认         
#证。默认值是"yes",所有 login.conf中允许的认证方式都被支持。
PasswordAuthentication yes      # 是否允许使用基于密码的认证。默认为"yes"。
KerberosAuthentication no    #是否要求用户为 PasswordAuthentication 提供的密码
#必须通 过 Kerberos KDC 认证,也就是是否使用Kerberos认证。使用Kerberos认证,服务器
#需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。
KerberosGetAFSToken no       #如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,
#那么开   启该指令后,将会在访问用户的家目录前尝试获取一个 AFS  token 。默认为"no"。
KerberosOrLocalPasswd yes   #如果 Kerberos 密码认证失败,那么该密码还将要通过其它
#的 认证机制(比如 /etc/passwd)。默认值为"yes"。
KerberosTicketCleanup yes    #是否在用户退出登录后自动销毁用户的 ticket 。默认
#"yes"。
GSSAPIAuthentication no      #是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。
#仅用 于SSH-2。
GSSAPICleanupCredentials yes   #是否在用户退出登录后自动销毁用户凭证缓存。默认值      
#是"yes"。仅用于SSH-2。
X11Forwarding no    #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果
#允许X11转发并且sshd代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
#那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需
#要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如
#果启用了 UseLogin ,那么X11转发将被自动禁止。
X11DisplayOffset 10    #指定X11 转发的第一个可用的显示区(display)数字。默认值                   
#是 10 。这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。
PrintMotd no                #登入后是否显示出一些信息呢?例如上次登入的时间、地点等
#等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
PrintLastLog yes           #指定是否显示最后一位用户的登录时间。默认值是"yes"
TCPKeepAlive yes       #指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"
#。这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。可以设为"no"关闭这个特性。
UseLogin no               #是否在交互式会话的登录过程中使用 login。默认值是"no"。
#如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login 不知道如何处理 xauth 
#cookies 。需要注意的是,login是禁止用于远程执行命令的。如果指定了 
#UsePrivilegeSeparation ,那么它将在认证完成后被禁用。
MaxStartups 10        #最大允许保持多少个未认证的连接。默认值是 10 。到达限制后,
#将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
MaxAuthTries 6     #指定每个连接最大允许的认证次数。默认值是 6 。如果失败认证的次数超
#过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。
UseDNS no          #指定是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP
#地址真实对应。
Banner /etc/issue.net   #将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
#这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。
Subsystem sftp /usr/lib/openssh/sftp-server   #配置一个外部子系统(例如,一个文件
#传输守   护进程)。仅用于SSH-2协议。值是一个子系统的名字和对应的命令行(含选项和参数)。
UsePAM yes     #是否使用PAM模块认证

5、ufw防火墙

ufw(简单防火墙Uncomplicated FireWall)真正地简化了 iptables。

1、当ufw和iptables同时开启时,只有ufw的规则生效,iptabes会被忽略。

2、iptables流量转发规则适用ufw

安装、开机自启

apt-get install ufw  &&  ufw enable 

默认关闭外部访问

ufw  default deny

一般可以使用 allow 和 deny 选项来允许或者禁止连接,后接端口号或者协议名称都行,用斜杠“/”分割,然后可以显式追加 TCP 还是 UDP,不追加则默认两者都算。

一般更倾向于配置 input 条目,如果你要控制output 条目,则可以在 allow 或者 deny 与端口号之间显式的强调 in 或者 out,当然默认肯定是 in。

ufw allow|deny [in|out] PORT [/tcp|udp]
// 允许或者阻止  进入或者流出 端口 协议

查看规则

ufw enable // 启用防火墙
 
ufw disable // 禁用防火墙
 
ufw reload //重新加载防火墙
 
ufw status // 显示防火墙状态
 
ufw status verbose // 查看防火墙详细状态

放行ip网段+端口:只允许40网段的访问80

ufw allow  from  192.168.40.0   to  any  port  80
Rules updated

放行端口

ufw allow  port

删除控制

ufw show raw
//以 iptables 格式输出当前的规则

ufw status [verbose|numbered]
//显示详细的状态,如果要删除条目,你可能需要用到 numbered

ufw delete NUM
//删除某个条目,号码参考上一条命令

ufw delete allow 53/udp
//也可以在之前的命令当中直接添加 delete 参数来删除条目

与 allow、deny 选项对应的,其实还有 limit 和 reject,前者用于限制30秒内连接次数,超过6次则自动 deny 掉 IP;后者和 deny 功能相同,但不会返回“你被拒绝”的消息。

如果你有多个网卡,那么在强调 in 和 out 后追加 on 选项,可以针对某一个网卡做策略。

ufw allow in on eth0 to any port 80 proto tcp

用协议名字方式来添加规则

ufw allow smtp

清除所有的配置

ufw  reset

四、使用 ufw 来开启nat 伪装和端口转发

1、更改 ufw 默认转发策略

找到文件“ /etc/default/ufw” 修改其中的内容:

DEFAULT_FORWARD_POLICY="ACCEPT"   将 DROP 改为 ACCEPT

2、开启转发

编辑 “/etc/ufw/sysctl.conf” 文件,将里边的转发选项去掉注释(如果你要开启 ipv6转发,那么就把 ipv6的注释也去掉)

net/ipv4/ip_forward=1
#net/ipv6/conf/default/forwarding=1
#net/ipv6/conf/all/forwarding=1

3、添加转发条目

编辑 “/etc/ufw/before.rules” 文件来添加转发条目,语法和 iptables 语法完全相同,在文件末尾为 “COMMIT”

添加NAT到/etc/ufw/before.rules的配置。将以下内容添加到过滤器规则(*filter)之前

注意 *nat,以COMMIT结尾才会生效。*filter一个COMMIT,*nat一个COMMIT,不要只用一个COMMIT。

udo ufw disable && sudo ufw enable (重启生效)

# NAT Table rules #2017/10/11
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Port Forwardings 
-A PREROUTING -p tcp --dport 10010 -j DNAT --to-destination 103.79.78.76
-A POSTROUTING -p tcp -d 103.79.78.76 --dport 10010 -j SNAT --to-source 183.60.100.8

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
# Port Forwardings 写你的端口转发条目即可 -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.10

五、更改网卡名称为eth*模式

默认安装完成之后,服务器网卡为ens模式,这台服务器是ens33,我们修改为eth模式。

cp /etc/default/grub /etc/default/grub-bak #备份配置文件

sed -i '/GRUB_CMDLINE_LINUX=/s/"$/net.ifnames=0 biosdevname=0"/' /etc/default/grub #修改文件

其实就是修改 /etc/default/grub文件里面的参数

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

update-grub #使配置文件生效

cp /etc/network/interfaces  /etc/network/interfaces-bak #备份配置文件
sed -i 's/ens33/eth0/' /etc/network/interfaces  #替换ens33为eth0

reboot #重启系统

下载指定版本的docker

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/dists/buster/pool/stable/amd64/

apt-cache policy xxx的作用

显示该软件包是否已经安装,在哪个版本的仓库中可用,以及它的优先级。

默认情况下,每个已安装的软件包版本的优先级为 100,未安装的软件包的优先级为 500

 apt-cache policy docker-ce
docker-ce:
  已安装:5:20.10.8~3-0~debian-buster
  候选: 5:20.10.8~3-0~debian-buster
  版本列表:
 *** 5:20.10.8~3-0~debian-buster 500
        500 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster/stable amd64 Packages
        500 https://mirrors.aliyun.com/docker-ce/linux/debian buster/stable amd64 Packages
        100 /var/lib/dpkg/status
     5:20.10.7~3-0~debian-buster 500
        500 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster/stable amd64 Packages
        500 https://mirrors.aliyun.com/docker-ce/linux/debian buster/stable amd64 Packages
     5:20.10.6~3-0~debian-buster 500
        500 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster/stable amd64 Packages
        500 https://mirrors.aliyun.com/docker-ce/linux/debian buster/stable amd64 Packages
     5:20.10.5~3-0~debian-buster 500
        500 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster/stable amd64 Packages
        500 https://mirrors.aliyun.com/docker-ce/linux/debian buster/stable amd64 Packages

六、新增用户

1、useradd与adduser的区别

在debian系统中,使用useradd时,如果后面不添加任何参数选项

例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无家目录,二无密码,三无Shell。

使用useradd新增用户:(-m 默认 /home)

useradd -m -s /bin/bash -G docker op_admin

使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户。

使用adduser新增用户:

adduser  user_name  ##根据提示来操作  

七、系统参数优化

1、nano /etc/security/limits.conf #编辑添加以下优化信息

#root

root soft core unlimited

root hard core unlimited

root soft nproc 1000000

root hard nproc 1000000

root soft nofile 1000000

root hard nofile 1000000

root soft memlock 32000

root hard memlock 32000

root soft msgqueue 8192000

root hard msgqueue 8192000

#*

* soft core unlimited

     * hard core unlimited

* soft nproc 1000000

* hard nproc 1000000

* soft nofile 1000000

* hard nofile 1000000

* soft memlock 32000

* hard memlock 32000

* soft msgqueue 8192000

* hard msgqueue 8192000

ctrl+o #保存配置

ctrl+x #退出

2、nano /etc/sysctl.conf #编辑添加以下优化参数

net.ipv4.conf.default.rp_filter = 1

net.ipv4.ip_nonlocal_bind = 1

      net.ipv4.ip_forward = 1

# Do not accept source routing

net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.

# Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536

# # Controls the maximum size of a message, in bytes

kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes

kernel.shmmax = 68719476736

# # Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296

# TCP kernel paramater

net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_sack = 1

# socket buffer

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 20480

net.core.optmem_max = 81920

# TCP conn

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_syn_retries = 3

net.ipv4.tcp_retries1 = 3

net.ipv4.tcp_retries2 = 15

# tcp conn reuse

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_tw_reuse = 0

      net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_max_tw_buckets = 20000

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syncookies = 1

# keepalive conn

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.ip_local_port_range = 10001 65000

# swap

vm.overcommit_memory = 0

 vm.swappiness = 10

#net.ipv4.conf.eth1.rp_filter = 0

#net.ipv4.conf.lo.arp_ignore = 1

#net.ipv4.conf.lo.arp_announce = 2

#net.ipv4.conf.all.arp_ignore = 1

#net.ipv4.conf.all.arp_announce = 2

ctrl+o #保存配置

ctrl+x #退出

/sbin/sysctl -p #使配置立即生效
 
上一篇:MonoGame终于支持Linux了
下一篇:在Ubuntu/Debian下安装PHP7.3教程-剩余价值