Linux 系统新装需要做的几件事

因为我个人喜欢直接root用户操作,所以就不加sudo了

一、更新系统

apt update -y

apt upgrade -y

这里没什么好说的,直接一把梭。

 

二、安装必要软件

apt install wget -y
apt install curl -y
apt install lrzsz -y

 

三、开启密钥登录

首先就是先去生成密钥

ssh-keygen -t rsa

按照提示一步一步走就可以了,最好再加个密码

然后进入.ssh目录执行

mv id_rsa.pub authorized_keys

然后把那个私钥下载下来

sz id_rsa

接下来给它执行权限

chmod 600 authorized_keys
chmod 700 ~/.ssh

这样密钥就配置好了,接下来修改ssh配置

首先就是去 /etc/ssh/sshd_config 修改这个文件

PubkeyAuthentication yes # yes表示允许密钥登陆
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2 # 指定密钥的文件位置
PasswordAuthentication no # 不允许使用密码登陆,等测试密钥登陆成功了再修改此条,以防无法登陆

然后重启ssh服务

systemctl restart ssh

安全起见,也可以修改ssh服务端口,也就是是 sshd_config 文件的 Port

 

四、配置防火墙

先来安装防火墙软件,我使用的是ufw

apt install ufw -y

 

这样一键安装就好了,然后默认情况下,安装完肯定是关闭的,需要进行一些配置。

默认情况下,ufw 禁止一切端口,所以我们需要放行一些必要端口,比如SSH服务端口22.

ufw allow ssh

ufw allow http

ufw allow https

 

然后就可以启动防火墙了

ufw enable

 

 

因为我还需要使用docker,所以还需要进行进一步的配置。

修改ufw的配置文件 /etc/ufw/after.rules

在底部添加

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN
COMMIT
# END UFW AND DOCKER

 

然后重启服务器。

使用方法:

如果希望允许外部网络访问 Docker 容器提供的服务,比如有一个容器的服务端口是 80。那就可以用以下命令来允许外部网络访问这个服务:

ufw route allow proto tcp from any to any port 80

这个命令会允许外部网络访问所有用 Docker 发布出来的并且内部服务端口为 80 的所有服务。

请注意,这个端口 80 是容器的端口,而非使用 -p 0.0.0.0:8080:80 选项发布在服务器上的 8080 端口。

如果有多个容器的服务端口为 80,但只希望外部网络访问某个特定的容器。比如该容器的私有地址为 172.17.0.2,就用类似下面的命令:

ufw route allow proto tcp from any to 172.17.0.2 port 80

如果一个容器的服务是 UDP 协议,假如是 DNS 服务,可以用下面的命令来允许外部网络访问所有发布出来的 DNS 服务:

ufw route allow proto udp from any to any port 53

同样的,如果只针对一个特定的容器,比如 IP 地址为 172.17.0.2:

ufw route allow proto udp from any to 172.17.0.2 port 53

 

 

阅读剩余
THE END