Linux初装脚本
在网站上面开通了一台Linux机器以后,独立ipv4的附加,直接让小鸡面向全世界。这个时候,看着空荡荡的root命令行,需要做什么呢?
1.安全
重中之重的第一件事,就是安全了。要知道,拥有独立ip的机器,不可避免被众多扫描脚本扫来扫去。
apt update
apt upgrade
apt install vim wget curl git
# 新建用户
adduser $USER
# 给新用户 sudo权限
usermod -aG sudo $USER
# ps->!! sudo时 出现 unable to resolve host解决办法
# 修改 /etc/hosts,把主机名添加进去即可
# 在新用户目录下添加key,以后key登录
cd ~
mkdir .ssh
cd .ssh
touch authorized_keys
sudo chmod 600 authorized_keys
vi authorized_keys # 打开的界面里,将自己的证书pub,插入进来
# 先测试,看能否key登录,后续再进行修改ssh登录端口
# 修改ssh登录端口、在打开的sshd_config中,逐行扫一遍,修改ssh端口、关闭root登录、关闭空密码、开放key登录
sudo vi /etc/ssh/sshd_config
# 重启ssh服务,sshd_config修改的会生效,下次连接的时候,要注意了
sudo systemctl restart sshd.service
2.安装docker
在Linux中部署服务的时候,总会因为不同程序版本,导致失败,使用docker容器,一劳永逸!
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $(whoami)
OK,安装docker,并且将当前用户添加到了docker用户组,这样就不需要每次sudo来执行docker了
3.增加swap缓存
可以先使用free -m 来查看,如果已经存在,也可以不用安装了。
cd /opt
sudo mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=1000000 #1G大小
sudo mkswap /opt/swap/swapfile # 把文件转换为swap文件
sudo swapon /opt/swap/swapfile #激活
# 若需要开机自动挂载,需要修改/etc/fstab文件,在最后添加(sudo vi /etc/fstab)
/opt/swap/swapfile swap swap defaults 0 0
# 最后配置Swappiness值---定义使用交换空间的频率,0-100,默认60
cat /proc/sys/vm/swappiness # 查看当前swap使用频率
sudo vi /etc/sysctl.conf
# 在打开的文件的最后一行加上
vm.swappiness=40 # 数字越小,用的机会越少
完成,下面再带一些有关swap的删除操作
# 删除交换空间文件
sudo swapoff -v /opt/swap/swapfile
# 从/etc/fstab中去掉增加的自动挂载
# 最后删除实际的交换文件
sudo rm /opt/swap/swapfile
4.开启bbr
国际网络总会因为这样或那样的问题,抽风。所以,开启bbr算法,来优化一下。
# 查看内核
uname -a
# BBR内核要求为4.9,ubuntu18.04直接4.15
# 1.修改系统变量
sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 2.保存生效
sysctl -p
# 3.查看内核是否已开启BBR
sysctl net.ipv4.tcp_available_congestion_control
显示如下:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
# 4.查看BBR是否启动
lsmod | grep bbr
5.使用ufw防火墙
方便、但是差点意思,所以,后来,笔者改成了iptables原生。毕竟ufw也是控制iptables的一种。这里仅留作记录,证明曾经拥有这份知识!
# 安装
apt update && apt install ufw
# 查看状态
sudo ufw status
# 启用/禁用
sudo ufw enable
sudo ufw disable
# 查看规则
sudo ufw status numbered
# 添加规则
sudo ufw default deny #默认进站全禁
sudo ufw allow ssh # 添加22端口
sudo ufw allow http # 添加80端口
sudo ufw allow 80/tcp # 添加80端口 tcp协议
sudo ufw allow 33333/udp # 添加33333端口 udp协议
sudo ufw allow 8888:9999 # 添加8888到9999之间的接口
sudo ufw deny 11111 # 禁止11111端口
# 删除规则
sudo ufw delete allow 2222/tcp
sudo ufw delete <序号> # ufw status numbered 查回来的序号
# 禁ping
# 1.编辑配置文件
sudo vim /etc/ufw/before.rules
# 2.允许ping
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
# 3.禁止ping
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# 4.让配置生效
sudo ufw reload
# 禁止ip
sudo ufw insert 1 deny from 1.1.1.1/16 to any
# 因为ufw的匹配机制,所以,后面拦截ip的时候,需要使用insert 1,表示插入第一
# 封禁ip
sudo vi /etc/ufw/before.rules
# 在 # End required lines 后面添加
-A ufw-before-input -s 162.243.0.0/16 -j DROP
-A ufw-before-input -s 59.83.0.0/16 -j DROP
# 之后
sudo ufw reload
6.fail2ban使用
占个坑,还没研究过。
7.Debian系统中的一些补充设置
在debian系统中,普通用户,无法输出类似ifconfig之类的命令
在用户的~/.profile文件里增加下面的配置
\# set PATH /usr/sbin
if [ -d "/usr/sbin" ] ; then
PATH="/usr/sbin:$PATH"
fi
这样,每次ssh上来的时候,就能够自动加载了
在有的debian或ubuntu系统中,apt install 有时候无法补全相关命令
sudo apt install bash-completion
\# 之后在~/.bashrc文件中,添加—已有则不需要添加下面内容
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi