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