版本维护周期
周期表查询:ubuntun版本维护周期表
1.Ubuntu网络配置
ubuntu 17版本开始已经废弃了网络配置文件: /etc/network/interface, 目前选用的是/etc/netplan/网卡名称
并且网卡配置文件已经改成最新的yml格式
network:
ethernets:
enp0s3:
dhcp4: true
version: 2
多网卡复制此文件修改为对应的网卡名称即可
$ sudo vim /etc/netplan/00-install-config.yaml
network:
ethernets:
enp0s8:
dhcp4: true
version: 2
# 加载最新配置
$ sudo netplan apply
2.镜像源配置
默认进行源配置路径在/etc/apt/resource.list文件,此文件中记录了,软件源地址,可以根据需求进行添加或者修改,ubuntu有一个特殊的地方: 不同版本有一个命名
Release Desktop Server Installation Guide
Ubuntu 22.04 LTS (Jammy Jellyfish) HTML HTML and PDF unpublished
Ubuntu 21.10 (Impish Indri) HTML unpublished unpublished
Ubuntu 20.04 LTS (Focal Fossa) HTML HTML and PDF per architecture
Ubuntu 18.04 LTS (Bionic Beaver) HTML HTML and PDF per architecture
更新源
$ sudo vim /etc/apt/resource.list # 写入或追加如下镜像源 更新即可
$ sudo apt-get update
$ sudo apt-get upgrade
其他几份国内源如下:
阿里源
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
网易163源
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
3.防火墙与安全配置
ubuntu默认不允许root登录,此配置基于sshd服务进行,配置文件/etc/ssh/sshd_config
# 建议优化项
$ sudo vim /etc/ssh/sshd_config
UseDNS on
# ssh安全日志
# 登录日志
$ cat /var/log/auth.log
# 系统启动停止日志
$ sudo last -f /var/log/wtmp
# 登录尝试日志
$ sudo last -f /var/log/btmp
# 当前登录日志
$ sudo last -f /var/log/utmp
iptables和selinux
# 基于四表五链的内核管理方式
表名包括:
raw :高级功能,如:网址过滤。
mangle :数据包修改(QOS),用于实现服务质量。
nat :地址转换,用于网关路由器。
filter :包过滤,用于防火墙规则。
动作包括:
ACCEPT :接收数据包。
DROP :丢弃数据包。
REDIRECT :重定向、映射、透明代理。
SNAT :源地址转换。
DNAT :目标地址转换。
MASQUERADE :IP伪装(NAT),用于ADSL。
LOG :日志记录。
SEMARK : 添加SEMARK标记以供网域内强制访问控制(MAC)
规则链名包括(也被称为五个钩子函数(hook functions)):
INPUT链 :处理输入数据包。
OUTPUT链 :处理输出数据包。
FORWARD链 :处理转发数据包。
PREROUTING链 :用于目标地址转换(DNAT)。
POSTOUTING链 :用于源地址转换(SNAT)。
# iptables 基本参数
参数 作用
-P 设置默认策略:iptables -P INPUT (DROP
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport num 匹配目标端口号
--sport num 匹配来源端口号
# 查看规则,运行22端口连接
$ iptables -L
$ iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
# 允许本地回环地址可以正常使用
$ iptables -A INPUT -i lo -j ACCEPT
# 本地圆环地址就是那个127.0.0.1,是本机上使用的,它进与出都设置为允许
$ iptables -A OUTPUT -o lo -j ACCEPT
# 设置默认的规则
$ iptables -P INPUT DROP # 配置默认的不让进
$ iptables -P FORWARD DROP # 默认的不允许转发
$ iptables -P OUTPUT ACCEPT # 默认的可以出去
# 配置白名单
$ iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT # 允许机房内网机器可以访问
$ iptables -A INPUT -p all -s 192.168.140.0/24 -j ACCEPT # 允许机房内网机器可以访问
$ iptables -A INPUT -p tcp -s 183.121.3.7 --dport 3380 -j ACCEPT # 允许183.121.3.7访问本机的3380端口
# 开启相应的服务端口
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开启80端口,因为web对外都是这个端口
$ iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立的连接得让它进来
# 改动同步至配置文件中
$ cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份,请保持这一优秀的习惯
$ iptables-save > /etc/sysconfig/iptables
$ cat /etc/sysconfig/iptables
# 开放指定的端口
$ iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
$ iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
$ iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
$ iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
$ iptables -A INPUT -j reject #禁止其他未允许的规则访问
$ iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
# 屏蔽IP
$ iptables -A INPUT -p tcp -m tcp -s 192.168.0.8 -j DROP # 屏蔽恶意主机(比如,192.168.0.8
$ iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
$ iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
$ iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
$ iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
# 指定数据包出去的网络接口
# 只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。
$ iptables -A FORWARD -o eth0
# 查看已添加的规则
$ iptables -L -n -v
# 启动网络转发规则
# 公网210.14.67.7让内网192.168.188.0/24上网
$ iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.127
# 端口映射
# 本机的 2222 端口映射到内网 虚拟机的22 端口
$ iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22
# 字符串匹配
# 比如,我们要过滤所有TCP连接中的字符串test,一旦出现它我们就终止这个连接,我们可以这么做:
# iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject-with tcp-reset
# iptables -L
iptables 安全配置
# 阻止Windows蠕虫的攻击
$ iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
# 防止SYN洪水攻击
$ iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
# 防CC攻击
$ iptables -L -F -A -D # list flush append delete
# 场景一
$ iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 允许 tcp 80 端口
$ iptables -I INPUT -p tcp --dport 10:22 -j ACCEPT # 允许 tcp 10-22 端口
$ iptables -I INPUT -p icmp -j ACCEPT # 允许 icmp
$ iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有
# 优化场景一
$ iptables -I INPUT -i lo -j ACCEPT # 允许本机访问
$ iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网
$ iptables -I INPUT -p tcp --dport 80 -s 10.10.188.233 -j ACCEPT # 只允许固定ip访问80
# 还可以使用 iptables 模块追踪来自动开发对应的端口
# 场景三
$ iptables -I INPUT -i lo -j ACCEPT # 允许本机访问
$ iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网
$ iptables -I INPUT -s 10.10.155.0/24 -j ACCEPT # 允许内网访问
$ iptables -I INPUT -p tcp -m multiport --dports 80,1723 -j ACCEPT # 允许端口, 80 -> http, 1723 -> vpn
$ iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有
$ iptables-save # 保存设置到配置文件
# 场景四
$ iptables -t nat -L # 查看 nat 配置
$ iptables -t nat -A POST_ROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232 # SNAT
$ sudo vim /etc/sysconfig/network # 配置网关
$ iptables -t nat -A POST_ROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.232:80 # DNAT
#场景五
$ iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT # 限制并发连接访问数
$ iptables -I INPUT -m limit --limit 3/hour --limit-burst 10 -j ACCEPT # limit模块; --limit-burst 默认为5