CentOS服务器新手折腾笔记

引言

本文旨在帮助初次接触服务器的朋友们快速上手。内容虽为基础,但往往最基础的东西最容易被忽视。特此记录,以备不时之需。大佬们可以绕道,这里是为小白准备的。


基础准备

在开始之前,请确保你已经拥有以下条件:

  • 一个分配给你的公网IP
  • 服务器系统已设置为CentOS 7
  • 你已经为root用户设置了密码

第一步:保护你的服务器

在这个数字化的世界里,安全性总是第一位的。在你开始部署应用之前,首先需要确保你的服务器不会成为攻击者的目标。

安装客户端并登录

建议使用Putty来通过你的IP和root密码登录服务器。

更新系统

(可选)换源


这是一个折叠菜单,点击可以打开

如果您的服务器在国内,建议更换为清华源或阿里源

第一步,备份原有源配置

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

第二步,下载镜像配置(二选一)

  • 清华源:
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/help/centos/
  • 阿里源:
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

第三步,清除缓存

sudo yum clean all

第四步,更新缓存

sudo yum makecache

以上步骤完成后,就可以使用新的yum源进行软件的安装和更新了。


通常,服务器的软件包镜像会比较旧,因此需要立即更新。

sudo  yum  update

然后设置时区为亚洲/上海,并查看当前时间。

sudo  timedatectl  set-timezone  Asia/Shanghai
date

添加普通用户

日常操作应使用普通用户而非root用户。

sudo  useradd  -m  -G  users  your_name
sudo  passwd  your_name
sudo  chown  -R  your_name:users  /home/your_name
sudo  chmod  750  /home/your_name

提升权限免输密码(慎用):

sudo  visudo

添加以下行:

your_name    ALL=(ALL)  NOPASSWD:  ALL

切换到普通用户:

su  your_name

切换回超级用户:

su  root

保持SSH连接

为了避免SSH连接在后台长时间无操作被断开,可以设置以下参数。

vi  /etc/ssh/sshd_config

添加或修改以下行:

ClientAliveInterval  60
ClientAliveCountMax  3

重启SSH服务:

systemctl  restart  sshd

对于Windows客户端,在用户根目录下创建或修改.ssh/config文件:

Host  *
      ServerAliveInterval  60

修改默认SSH端口

为了提高安全性,可以更改SSH的默认端口。

vi  /etc/ssh/sshd_config

更改端口:

Port  12222

添加端口到SELinux:

semanage  port  -a  -t  ssh_port_t  -p  tcp  12222

更新防火墙规则:

sudo  firewall-cmd  --zone=public  --add-port=12222/tcp  --permanent
sudo  firewall-cmd  --zone=public  --remove-port=22/tcp  --permanent
sudo  firewall-cmd  --reload

重启SSH和防火墙服务:

systemctl  restart  sshd
systemctl  restart  firewalld

检查防火墙状态:

sudo  firewall-cmd  --list-all

尝试新端口连接:

ssh  -p  12222  your_name@ip

使用密钥登录

使用SSH密钥登录比使用密码更安全。

ssh-keygen  -t  ed25519  -C  "[email protected]"
ssh-copy-id  -p12222  username@ip

禁止密码和root登录:

sudo  vi  /etc/ssh/sshd_config

添加或修改以下行:

PubkeyAuthentication  yes
PasswordAuthentication  no
PermitRootLogin  no

重新加载SSH服务:

sudo  systemctl  reload  sshd

查看日志

定期检查日志可以帮助你了解服务器的安全状况。

sudo  lastb  -a
sudo vi  /var/log/secure

进阶指南一:fail2ban和邮件提醒配置指南

什么是fail2ban

fail2ban是一个用于防止暴力破解的日志监控工具,它会自动封禁尝试多次异常登录的IP地址。以下指南将指导你如何配置fail2ban,并通过邮件获得提醒。

安装

首先,安装所需的软件包:

sudo  yum  install  postfix
sudo  yum  install  epel-release
sudo  yum  install  fail2ban

配置fail2ban

编辑/etc/fail2ban/jail.local文件:

sudo  vi  /etc/fail2ban/jail.local

在文件中添加或修改以下配置:

[DEFAULT]
bantime  =  86400
findtime  =  86400
maxretry  =  10
backend  =  auto
destemail  =  [email protected]
sender  =  [email protected]
action  =  %(action_mw)s

[sshd]
enabled  =  true
port  =  12222

配置postfix

编辑/etc/postfix/main.cf文件:

sudo  vi  /etc/postfix/main.cf

在文件中添加以下配置:

relayhost  =  [smtp.qq.com]:587
smtp_use_tls  =  yes
smtp_sasl_auth_enable  =  yes
smtp_sasl_password_maps  =  hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options  =  noanonymous
smtp_tls_CAfile  =  /etc/ssl/certs/ca-bundle.crt

接下来,设置你的邮箱SMTP验证:

sudo  vi  /etc/postfix/sasl_passwd

在文件中添加以下行:

[smtp.qq.com]:587  [email protected]:your_smtp_code

赋予正确的权限并更新配置:

sudo  chmod  600  /etc/postfix/sasl_passwd
sudo  postmap  /etc/postfix/sasl_passwd

重启服务

重启fail2ban和postfix服务,并设置它们为开机自启:

sudo  systemctl  restart  fail2ban
sudo  systemctl  restart  postfix

sudo  systemctl  enable  fail2ban
sudo  systemctl  enable  postfix

解封IP

如果需要解封某个IP,可以使用以下命令:

sudo  fail2ban-client  set  ssh  unbanip  ip_need_unban

进阶指南二:SSH登录原来也可以二次验证

为什么使用二次验证

使用二次验证的好处是即使知道了你的密码,仍然需要通过第二步验证才能登录,这提供了额外的防护。要启用二次验证,你需要先在手机上下载Google Authenticator。 如果你已经启用了密钥登录,建议先关闭,因为同时使用密钥验证和二次验证,前后需要验证三次,较为麻烦。

安装软件包

sudo yum install google-authenticator

配置 ssh

sudo  vi  /etc/ssh/sshd_config

找到以下两行并将其设置为no:

PubkeyAuthentication no
ChallengeResponseAuthentication no

重启SSH服务:

sudo systemctl restart ssh

配置PAM

sudo vi /etc/pam.d/sshd

添加行:

auth required pam_google_authenticator.so

配置Google Authenticator

google-authenticator

按照提示进行设置,若条形码显示不全,可直接输授权码。

重新启动SSH服务

sudo systemctl restart sshd

第二步:定义你的第一个服务

在确保服务器安全之后,我们可以开始安装一个在论坛上广受欢迎的Telegram翻译服务。

什么是Telegram

Telegram (非正式简称: TG电报纸飞机) 是一款跨平台的即时通信软件,其客户端是自由及开放源代码软件,服务端是专有软件。用户可以交换加密与自毁消息,发送照片、视频等文件。

简介

  • 创立时间:Telegram 于2013年由两位俄罗斯兄弟创立。
  • 目的:提供一个更安全和私密的通讯平台。
  • 安全性:因其端到端加密而受到广泛赞誉。

客户端

Telegram 提供了多平台的客户端:

  • 手机版:支持Android、iOS、Windows Phone。
  • 桌面版:支持Windows、macOS、Linux。
  • 网页版:可通过浏览器访问。

扩展功能

官方开放了应用程序接口(API),因此有许多第三方客户端。

  • 端到端加密:保护通讯内容不被第三方窃取。
  • 自毁消息:可选择发送在一定时间后自动销毁的消息。
  • 文件分享:支持发送各种类型的文件。

在开始之前

  • 注册 Telegram账号
  • 申请 App,保存好你的API ID和API Hash
  • 加入 本论坛官方群组

检查Python版本

python  --version

如果您的版本是2.x.x,您需要安装Python 3:

sudo  yum  install  python3

配置文件

在您的家目录下创建目录:

cd  ~  &&  mkdir  ttr  &&  cd  ttr

创建主程序文件:

vi  main.py

添加始皇的代码

创建配置文件:

vi  config.py

并添加以下内容(替换为您的API ID和API Hash):

{
    "api_id":  your_api_id,
    "api_hash":  your_api_hash
}

首次登录

请按提示操作,注意输入号码要以+86开头,验证码在您登录的设备上接收

python3 main.py

创建服务

编辑以下文件:

sudo  vi  /etc/systemd/system/translate.service

并添加以下内容(将your_name替换为您的用户名):

[Unit]
Description=Telegram  Translation  Service

[Service]
WorkingDirectory=/home/your_name/ttr
ExecStart=/usr/bin/python3  main.py
StandardOutput=inherit
StandardError=inherit
Restart=always
User=your_name

[Install]
WantedBy=multi-user.target

重新加载

sudo  systemctl  daemon-reload

启动服务

sudo  systemctl  start  translate

查看服务状态

sudo  systemctl  status  translate

开机自启

sudo  systemctl  enable  translate

开始翻译

进入群组,发送:

.tt-on,zh,zh|en

关闭翻译

进入群组,发送:

.tt-off

第三步,通过ftp连接服务器

安装vsftpd

sudo  yum  update  &&  sudo  yum  install  vsftpd

创建用户

创建一个新用户并将其添加到vsftpd组:

sudo  useradd  -m  username  -G  vsftpd

用实际用户名替换username

将用户添加到chroot_list

sudo  vi  /etc/vsftpd/chroot_list

写入用户名。

创建用户黑名单:

sudo  vi  /etc/vsftpd/userlist

生成SSL证书

生成SSL证书和私钥:

sudo  openssl  req  -x509  -nodes  -days  365  -newkey  rsa:2048  -keyout  /etc/ssl/certs/vsftpd.pem  -out  /etc/ssl/certs/vsftpd.pem

配置vsftpd

备份原始的配置文件:

sudo  mv  /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.example

编辑配置文件:

sudo  vi  /etc/vsftpd/vsftpd.conf

写入以下配置:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome  to  FTP  service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES

#  安全相关配置
pasv_min_port=40000
pasv_max_port=40100
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=YES
ssl_ciphers=HIGH

#  SSL证书和私钥路径
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem

#  自定义端口
listen_port=2121

防火墙配置

sudo  semanage  port  -a  -t  http_port_t  -p  tcp  2121
sudo  firewall-cmd  --zone=public  --add-port=2121/tcp  --permanent
sudo  firewall-cmd  --zone=public  --add-service=ftps  --permanent
sudo  firewall-cmd  --reload

重启服务

sudo  systemctl  restart vsftpd

查看服务状态

sudo  systemctl  status vsftpd

开机自启

sudo  systemctl  enable  vsftpd

37 个赞

加油!

1 个赞

不知道啥bug 编辑了保存不了…

1 个赞

我之前也遇到过这个 BUG,有一个地方编辑不了,往其他地方修改就可以

22 个赞

ssh的时候尽量把root禁止ssh
而且尽量公私钥ssh 而不是密码

1 个赞

你说的这部分 我在编辑 但是不知道为什么一直403 保存不上 :joy:

1 个赞

把始皇摇过来修bug(狗头)

1 个赞

我去反馈一下

1 个赞

403 error
这是权限不足的报错 我没记错的话

1 个赞

我反馈的帖子秒没…

1 个赞

centos7终结了

1 个赞

嘤嘤嘤

1 个赞

当你有了一台centOs后
1,准备在linux.do上秀一把
2,结果发帖总失败
3,一怒之下自己复刻linux.do
4

1 个赞

正确的 )
被你发现了我的小心思呢

1 个赞

学习了 root用户关闭了

1 个赞

谢谢支持! :heart:
俺更新了fail2ban 可以看看

1 个赞

谢谢各位点赞的靓仔 :smiling_face_with_three_hearts:
俺更新了始皇的翻译服务教程

2 个赞

托卡马克

1 个赞

Mark Twain

1 个赞

新手入门

1 个赞