引言
本文旨在帮助初次接触服务器的朋友们快速上手。内容虽为基础,但往往最基础的东西最容易被忽视。特此记录,以备不时之需。大佬们可以绕道,这里是为小白准备的。
基础准备
在开始之前,请确保你已经拥有以下条件:
- 一个分配给你的公网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),因此有许多第三方客户端。
- 端到端加密:保护通讯内容不被第三方窃取。
- 自毁消息:可选择发送在一定时间后自动销毁的消息。
- 文件分享:支持发送各种类型的文件。
在开始之前
检查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