文章目录
♦ Ubuntu server的安装
- 镜像文件:ubuntu-20.04.1-live-server-amd64.iso
需要注意的要点:
- Configure proxy配置页面的Proxy address无需配置。
- Configure Ubuntu Archive mirror需要填写:
http://mirrors.aliyun.com/ubuntu
- 最好在安装界面中就完成磁盘分区和网卡静态地址配置。
- 建议在Installer update available界面中进行更新。
重启后可查看版本信息并修改root密码
cat /etc/os-release
lsb_release -a
# 修改root密码
sudo passwd root
♦ 取消ssh的登陆欢迎界面
touch $HOME/.hushlogin
或者
touch ~/.hushlogin
♦ 修改hostname
# 查看主机名
hostnamectl
# 无需重启,注销并登陆即可。
hostnamectl set-hostname host.example.com
# 修改本地域名解析
vim /etc/hosts
如果在云实例上运行Ubuntu,并且cloud-init已安装软件包,则还需要编辑该/etc/cloud/cloud.cfg文件。通常,该软件包通常默认安装在云提供商提供的映像中,并且用于处理云实例的初始化。
vim /etc/cloud/cloud.cfg
# 搜索preserve_hostname,并将值从false更改为true:
# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true
♦ 配置静态IP
cd /etc/netplan/
vim /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 192.168.74.150/24
gateway4: 192.168.74.2
nameservers:
addresses:
- 114.114.114.114
version: 2
====================================或者=====================================
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.74.150/24
gateway4: 192.168.74.2
nameservers:
addresses: [221.3.131.11, 221.3.131.12]
常用的DNS:
114.114.114.114 电信
114.114.115.115 电信
119.29.29.29 POD
182.254.116.116 POD
182.254.118.118 POD
180.76.76.76 百度
223.5.5.5 阿里
223.6.6.6 阿里
1.2.4.8 CNNIC
210.2.4.8 CNNIC
8.8.8.8 Google
8.8.4.4 Google
- netplan apply 命令可以让配置直接生效。详细可参考man netplan 或者这里
- 使用 netplan generate 可以校验配置。netplan --debug apply命令可以用于启用配置时的调错。
- 使用systemd-resolve --status | grep ‘DNS Server’ 可以查看当前的DNS。或者使用等价的命令resolvectl status,或干脆resolvectl。
- 当然networkctl status也可以综合地看IP地址和DNS。
- 静态路由等其他配置方法可以参考这里
- ip路由命令可参考:man ip-route
- 其他可参考这里
♦ 修改更新源
ll /etc/apt/sources.list
-rw-r--r-- 1 root root 2717 Jan 11 15:23 /etc/apt/sources.list
vim /etc/apt/sources.list
==============================================================
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://mirrors.aliyun.com/ubuntu focal main restricted
# deb-src http://mirrors.aliyun.com/ubuntu focal main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted
# deb-src http://mirrors.aliyun.com/ubuntu focal-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://mirrors.aliyun.com/ubuntu focal universe
# deb-src http://mirrors.aliyun.com/ubuntu focal universe
deb http://mirrors.aliyun.com/ubuntu focal-updates universe
# deb-src http://mirrors.aliyun.com/ubuntu focal-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://mirrors.aliyun.com/ubuntu focal multiverse
# deb-src http://mirrors.aliyun.com/ubuntu focal multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates multiverse
# deb-src http://mirrors.aliyun.com/ubuntu focal-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
# deb-src http://mirrors.aliyun.com/ubuntu focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu focal-security universe
# deb-src http://mirrors.aliyun.com/ubuntu focal-security universe
deb http://mirrors.aliyun.com/ubuntu focal-security multiverse
# deb-src http://mirrors.aliyun.com/ubuntu focal-security multiverse
sudo apt-get update
sudo apt-get upgrade
♦ 修改时区并同步时间
- 修改时区
# 输入数字按回车
tzselect
# 查看时区
timedatectl
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者
# 打印当前系统时区
timedatectl
# 系统时区通过链接文件/etc/localtime配置,该链接指向/usr/share/zoneinfo目录下的一个二进制时区标识文件。
ls -l /etc/localtime
# 显示当前系统时区
cat /etc/timezone
# 列出所有可用的时区
timedatectl list-timezones
# 修改时区(一条命令搞定,立即生效!)
timedatectl set-timezone Asia/Shanghai
# 查看修改后的时间和时区
$ date -R
Thu, 11 Apr 2024 15:43:03 +0800
^---东8区
- 同步时间
apt install -y ntpdate
ntpdate -u ntp.ntsc.ac.cn
timedatectl
# 开启cron同步
crontab -e
添加如下内容
*/60 * * * * /usr/sbin/ntpdate ntp.ntsc.ac.cn >/dev/null 2>&1
# 显示添加的内容
crontab -l
♦ 修改时间戳的显示格式
- 修改日志文件的时间戳显示格式
vim /etc/rsyslog.conf
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
# 下一行是原来的配置,将它注释
# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 添加下面两行
$template CustomFormat,"%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate CustomFormat
# 重启 rsyslog 服务
systemctl restart rsyslog.service
- 修改ls命令的输出日期格式
vim /etc/profile
export TIME_STYLE='+%Y/%m/%d %H:%M:%S'
source /etc/profile
ls -lrt
♦ 修改时间为24小时制
# 首先修改为东八区的时区
tzselect
4→9→1→1
rm /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 然后配置文件
vim /etc/default/locale
LANG=en_US.UTF-8
LC_TIME=en_DK.UTF-8 # 关键是添加这一行
♦ 修改系统日志
可以参考这里
日志文件对比:
操作系统 | 日志文件 | 操作系统 | 日志文件 | 用途 |
---|---|---|---|---|
CentOS | /var/log/messages | Ubuntu | /var/log/syslog | 记录系统或服务程序的日志 |
CentOS | /var/log/secure | Ubuntu | /var/log/auth.log | 登陆,安全审计日志 |
日志配置文件
# /etc/rsyslog.d下
# 50-default.conf 配置系统默认日志
# 修改系统默认日志
vim /etc/rsyslog.d/50-default.conf
因为日志在logrotate的作用下会被压缩成zip文件(扩展名.gz)。可以使用下述命令简单查看其内容:
zcat syslog.2.gz | less
或者
zless /var/log/syslog.2.gz
♦ 添加新用户并授权sudo
# 禁止用户的登陆功能 -s /sbin/nologin
useradd -r -m -s /bin/bash newuser
getent passwd
# 只有sudo组的用户才能使用sudo命令
usermod -aG sudo newuser
♦ 限制用户对su命令的使用
只允许admin组的用户newuser能使用su命令来切换登陆用户。
groupadd admin
usermod -aG admin newuser
id newuser
dpkg-statoverride --update --add root admin 4750 /bin/su
♦ 删除用户取消附加组
# 删除用户newuser(包括他的家目录及spool目录)
userdel -r newuser
# 取消newuser用户的附加组admin(把用户newuser从附加组admin中删除)
gpasswd -d newuser admin
# 查看附加组admin中有哪些用户
getent group | grep admin
或者
cat /etc/group | grep admin
# 查看用户的所有组信息
id newuser
♦ 配置ssh公钥登陆
ssh-keygen
ssh-copy-id username@remote_host
或者
# This recursively removes all “group” and “other” permissions for the ~/.ssh/ directory.
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
或者
rsync --archive --chown=username:username ~/.ssh /home/sammy
♦ 配置sshd
安装
apt-get install openssh-server openssh-client
man sshd_config
vim /etc/ssh/sshd_config
# 基本配置
Port 2202
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
Banner none
PermitRootLogin no
ChrootDirectory %h
UseDNS no
# 用户限制(HOST:address/masklen),先DenyUsers(黑名单)再AllowUsers(白名单)。AllowUsers overrides AllowGroups
DenyUsers USER USER@HOST
AllowUsers USER USER@HOST
重启sshd服务 systemctl restart ssh
♦ 安装Docker
sudo apt-get update
sudo apt-get upgrade
apt-get install docker.io
docker version
sudo gpasswd –a ${USER} docker
#修改Docker的镜像源仓库
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}
sudo systemctl restart docker
sudo docker info | grep Mirrors -A 1
sudo systemctl enable docker
可以参考这里
♦ 安装JDK
官网 https://github.com/alibaba/dragonwell8
下载 https://github.com/alibaba/dragonwell8/releases
tar xzf Alibaba_Dragonwell_8.5.5-GA_Linux_x64.tar.gz
mv jdk8u275-b1/ /usr/local/jdk
vim /etc/profile
添加如下内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
java -version
♦ 关闭不需要的服务
# 显示所有的服务
systemctl list-units --all
# 显示启动的服务
systemctl list-unit --type=service
# 关闭服务
systemctl stop xxx.service
systemctl disable xxx.service
♦ 可以删除的账号和组
可删除的账号:userdel -r ...
adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher
可删除的组:groupdel -f ...
adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers
♦ 调整history
全局生效
vim /etc/profile.d/history_conf.sh
# 指定命令写入文件(默认~/.bash_history)
#export HISTFILE="$HOME/.bash_history"
# history输出记录数
export HISTSIZE=1000
# HISTFILE文件记录数
export HISTFILESIZE=1000
# 忽略指定cmd1,cmd2...的命令不被记录到文件;(加参数时会记录)
#export HISTIGNORE="cmd1:cmd2:..."
# ignoredups 不记录“重复”的命令;连续且相同 方为“重复” ;
# ignorespace 不记录所有以空格开头的命令;
# ignoreboth 表示ignoredups:ignorespace ,效果相当于以上两种的组合;
# erasedups 删除重复命令;
# 设置每条命令执行完立即写入HISTFILE(默认等待退出会话写入)
#export HISTCONTOL=ignoreboth
#export PROMPT_COMMAND="history -a"
# 设置命令执行时间格式,记录文件增加时间戳(`whoami`用户信息)
export HISTTIMEFORMAT="[`whoami` %F %T] "
# 防止会话退出时覆盖其他会话写到HISTFILE的内容;
shopt -s histappend
♦ 加入日志审计功能
注意:需先调整history的输出格式 export HISTTIMEFORMAT="[whoami
%F %T] "。具体见“调整history”部分
将每个用户的shell命令执行历史以文件形式保存在/usr/share/.history/(可以定义得再隐蔽些)目录中。每个用户一个文件夹,并且文件夹下的每个文件以IP地址加shell命令操作时间的格式命名。
root登陆:vim + /etc/profile
#history
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]; then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]; then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]; then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null
配置完成后:source /etc/profile
日志形式:
#1613563044
ll
#1613563047
cd root
#1613563047
ll
可以如下处理日志:
cat 192.168.74.1.history.20210217_190612 | sed "s/#\([0-9]\+\)/date -d @\1 '+[%Y-%m-%d %H:%M:%S]:'/e"
处理完成后:
[2021-02-17 19:57:24]:
ll
[2021-02-17 19:57:27]:
cd root
[2021-02-17 19:57:27]:
ll
♦ 安装monit监控服务
# 基于systemd管理
apt install monit
# 查看版本
monit -V
检查配置
monit -t -c /etc/monit/monitrc
或者
monit -t
# 查看服务状态(.service可省)
systemctl status monit.service
# 查看错误日志
journalctl -u monit.service
主配置文件:/etc/monit/monitrc
单项服务配置目录:/etc/monit/conf.d/ 可以在该目录下新增监控配置文件(文件名随意,命令要用全路径)
帮助:man monit
配置案例:
- https://mmonit.com/wiki/Monit/ConfigurationExamples
- https://blog.csdn.net/nowzhangjunzhe/category_8326282.html
♦ 安装MTR工具
apt install mtr
# 不连续运行只要结果报告(-n 不带域名/主机名;-c 指定发包的数量)
mtr -r www.xxx.com
windows下的配套:
- https://cdn.ipip.net/17mon/besttrace.exe
- https://github.com/oott123/WinMTR/releases
♦ Personal Package Archives(PPA)使用
可以参考这里
PPA 是放在 Ubuntu 上的一个 Apt repository ,PPAs 允许第三方的开发者在非官方渠道分发软件包。
那么如何找到特定软件的 PPA 呢?打开页面 https://launchpad.net/ubuntu/+ppas或者直接https://launchpad.net/
使用例子
add-apt-repository ppa:chris-lea/redis-server
apt-get update
add-apt-repository 是非常重要的一个命令行工具,如果没有安装,运行下列命令:
apt install software-properties-common
添加ppa仓库
sudo add-apt-repository ppa:webapps/preview
删除指定仓库
sudo add-apt-repository --remove ppa:someppa/ppa
备注:如果使用该仓库已经安装了软件,那么即使删除仓库,软件也不受影响。
删除PPA仓库和与之相关的软件包
sudo ppa-purge ppa:webapps/preview
备注:本命令删除ppa仓库较为完整。
♦ 管理sudo的授权
sudo的授权配置文件应放在/etc/sudoers.d/目录下单独进行管理,而不是直接修改 /etc/sudoers 文件。/etc/sudoers只进行基本环境的总体配置。
vim /etc/sudoers.d/mysudo.conf
==========================================================
bee ALL = (root) NOPASSWD: /path/to/somecmd
可以在 /etc/cron.daily 目录下面创建用于删除 /etc/sudoers.d/mysudo.conf 配置文件的 rm -rf 命令,一天之后相应的sudo授权就会被撤销。这样可以解决临时授权问题。