特价主机
主机评测

Ubuntu VPS手把手教你配置说明

一 升级之后的变化:

Ubunt VPS安装

1完全兼容:Ubuntu 14.04 LTS.

2添加额外的SSH安全性,使用公钥和sshd_config中的一些更多调整。

3添加了常见的PHP和MySQL安装和配置。
4使用 service <COMMAND> <ACTION> Ubuntu现在有/etc/init.d的问题,它是旧方式,但我喜欢它。
5 加入最新的Ruby 2.2.2

 

二 以下是设置Ubuntu VPS安全的注释和分步教程,以及nginx,node.js,ruby,PostgreSQL,…

它适用于Ubuntu 12或13或14版本。我的VPS提供商仍然没有支持Ubuntu 15,但我不认为在Ubuntu 15中使用它会有任何问题。

它假定您了解SSH并连接到新的VPS安装。

我使用vi整个安装过程中进行编辑,你也可以使用:emacs,nano,……

这些只是我的笔记,如果有人有更好的东西或可以改进它,请做评论!

安全:

更新和安装必要的软件

sudo apt-get -y update
sudo apt-get -y install curl git-core python-software-properties software-properties-common

区域问题:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

用户 – 管理员组和SSH:

sudo groupadd admin
sudo adduser <USERNAME>
sudo usermod -a -G admin <USERNAME>
sudo dpkg-statoverride --update --add root admin 4750 /bin/su

测试具有sudo权限的新用户和测试:

su <USERNAME>

安全SSH:

sudo vi /etc/ssh/sshd_config

进行这些更改:

  • Port (Don’t use default 22)
  • PermitRootLogin no
  • X11Forwarding no
  • AllowTcpForwarding no
  • AllowUsers USERNAME USERNA

如果你的SSH设置很慢,那么在这种情况下将X11Forwarding设置为no无法真正帮助!

sudo service ssh restart

连接到VPS SSH:

ssh <USERNAME>@<VPS_DOMAIN_OR_IP> -p <PORT>

SSH额外安全性:

这个想法是不允许密码和使用SSH密钥进行身份验证,以及对SSH进行一些其他调整

mkdir ~/.ssh
vi ~/.ssh/authorized_keys

并粘贴本地计算机公钥文件的内容:.ssh / id_rsa.pub并仅为当前用户设置为rw:

chmod 600 ~/.ssh/authorized_keys

或者使用本地计算机上的ssh-copy-id(不在Mac上),可以用brew安装,但我没有运气:

brew install ssh-copy-id
ssh-copy-id "<USERNAME>@<VPS_DOMAIN_OR_IP> -p <PORT>"

尝试连接到SSH,它不应该要求您输入密码,它应该是即时登录

ssh <USERNAME>@<VPS_DOMAIN_OR_IP> -p <PORT>

打开SSH配置文件,取消注释PasswordAuthentication,默认设置为yes:

sudo vi /etc/ssh/sshd_config

将其更改为no:

PasswordAuthentication no

重新启动SSH并尝试再次连接:

sudo service ssh restart

退出VPS shell并尝试连接到VPS SSH.

防火墙:

要使ping和apt-get工作,请将以下内容添加到iptables中,因为ufw只是与它接口。

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo apt-get -y install ufw
sudo vi / etc / default / ufw

进行此更改:

IPV6 =无
允许一些端口和服务:

sudo ufw 允许<PORT_NUMBER_CHANGED_TO_SSH>
sudo ufw limit ssh
sudo ufw 允许80 / tcp
sudo ufw 允许53
sudo ufw 登录

确保您允许更改端口用于SSH,否则,您将无法进入VPS!

sudo ufw enable
检查防火墙状态:
sudo ufw status verbose

sysctl

sudo mv /etc/sysctl.conf /etc/sysctl.conf.orig
sudo vi /etc/sysctl.conf

增加到 sysctl.conf:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

 

然后运行,可能会出现一些错误,特别是在使用OpenVZ的VPS上…

sudo sysctl -p

Denyhost或Fail2Ban
在Denyhost使用之前,它似乎已不再维护,并且不再有Ubuntu软件包,因此Fail2Ban是替代方案,但由于SSH设置为仅允许SSH密钥,因此这两者都是多余的。

删除Samba文件共享
如果出于某种原因,您在VPS上默认安装了完全不必要的Samba,则可以使用以下命令将其删除:

sudo apt-get -y remove --purge samba

删除绑定DNS服务器 与Bind相同,如果您不需要它,请将其删除!

sudo apt-get -y remove --purge bind9
sudo rm -rf /var/cache/bind
sudo rm -rf /usr/share/bind9
sudo rm -rf /etc/bind

SSH密钥和GitHub
检查〜/ .ssh是否有* .pub文件,如果没有生成SSH密钥:

ssh-keygen -t rsa -C "<YOUR_EMAIL>"

使用默认位置存储:〜/ .ssh

不要使用密码,除非您每次提交GitHub时都要键入。 (或者任何人都知道更好的方式?)。

cat ~/.ssh/id_rsa.pub

将内容复制到剪贴板。转到GitHub>帐户设置> SSH密钥。点击添加SSH密钥,在剪贴板中输入标题和密钥粘贴公钥。

ssh git@github.com
eval `ssh-agent -s`
ssh-add -k

软件安装
安装nginx

sudo add-apt-repository ppa:nginx/stable
sudo apt-get -y update
sudo apt-get -y install nginx
sudo service start nginx

如果错误是nginx:[emerg] bind()到[::]:80失败(98:地址已经在使用中)那么可能事先安装了Apache:

sudo apt-get remove apache2-mpm-prefork
sudo apt-get remove apache2-mpm-worker
sudo apt-get remove apache2
sudo dpkg --get-selections | grep  apache
# Purge others that are given as result from above command
sudo dpkg --purge apache2
sudo service nginx start

如果出现问题,请查找nginx日志:

sudo vi /var/log/nginx/error.log

安装和配置PostgreSQL,创建DB和DB User:

sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get -y update
sudo apt-get install -y postgresql libpq-dev

登录postgres更改主密码,使用密码创建db用户并使用以前创建的用户作为所有者创建新数据库:

sudo -u postgres psql
\password  "<PASSWORD>"
create user <USERNAME> with password '<USER_PASSWORD>';
create database <DB_NAME> owner <USERNAME>;
\q

安装MySQL,创建DB和DB User:

sudo apt-get install mysql-server

安装将提示您输入需要重新输入的root用户密码,明智地选择密码并尝试记住它!安装登录MySQL后:

mysql -u root -p # After enter there is need to write password and hit enter again

使用mysql命令行应用程序与MySQL交互,让我们创建用户和数据库,并在此数据库上授予用户权限:

mysql> CREATE DATABASE <DB_NAME>;
mysql> SHOW DATABASES;  # The new db should be listed.
mysql> CREATE USER '<DB_USERNAME>'@'localhost';
mysql> SELECT User,Host FROM mysql.user; # The new user should be listed on host localhost.
mysql> GRANT ALL ON <DB_NAME>.* to '<DB_USERNAME>'@'localhost' identified by '<DB_PASSWORD>'; # It will grant all on this DB by this user.
mysql> exit # Or new command \q

如果需要为数据库运行SQL脚本,请在命令行中使用此脚本:

mysql -u <DB_USERNAME> -p <DB_NAME> < <SCRIPT_NAME>.sql

使用rbenv和rbenv-installer安装Ruby:

cd
curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash
vi .bashrc
export RBENV_ROOT="${HOME}/.rbenv"

if [ -d "${RBENV_ROOT}" ]; then
  export P
  ATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi

Reset .bashrc:

. ~/.bashrc

请注意,bootstrap-ubuntu-12-04适用于Ubuntu 13和14(也可能是15):

rbenv bootstrap-ubuntu-12-04

首先列出rbenv可用的Ruby版本并选择一个安装:

rbenv install -l
rbenv install 2.2.2

将选择的Ruby版本设置为“全局”,并测试它:

rbenv global 2.2.2
ruby -v

安装PHP和朋友
包含Imagemagick,MySQL,bcrypt,…的PHP包的长列表:

sudo apt-get install imagemagick php5-fpm php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache

更改php.ini属性的usaul嫌疑人:

sudo vi /etc/php5/fpm/php.ini
  • upload_max_filesize = (SOME_NUMBER)M (Default 2Mb – safe to use 25M)
  • post_max_size = (SOME_NUMBER)M (Default 8Mb – safe to use 25M)
  • memory_limit = (SOME_NUMBER)M (Default 128Mb – safe to use 512M)

重启PHP-FPM and Nginx:

sudo pkill php5-fpm; service php5-fpm start
sudo service nginx restart

安装node.js:

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get -y update
sudo apt-get install -y nodejs

安装和配置redis:

sudo apt-get -y install redis-server
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.default
  • pidfile /var/run/redis-server.pid
  • logfile /var/log/redis-server.log

安装Erlang:

sudo apt-get -y install erlang-nox

安装和配置riak:

curl http://apt.basho.com/gpg/basho.apt.key | sudo apt-key add -
sudo bash -c "echo deb http://apt.basho.com $(lsb_release -sc) main > /etc/apt/sources.list.d/basho.list"

如果Ubuntu不是LTS而不是lsb_release -sc,请使用LTS的名称,例如。 Ubuntu 14.10(Utopic)不代表LTS使用14.04代号。使用此Wikipedia表来帮助处理特定Ubuntu版本的名称

sudo apt-get -y update
sudo apt-get -y install riak

为riak更改基于PAM的限制:

sudo vi /etc/pam.d/common-session

在文件末尾添加:

session required    pam_limits.so

Update limits.conf:

sudo vi /etc/security/limits.conf

# Add this to limits.conf
*               soft     nofile          65536
*               hard     nofile          65536

如果通过SSH访问riak节点:

sudo vi /etc/ssh/sshd_config
UseLogin yes

重启机器并测试打开文件的限制为65536:

ulimit -a
> open files                      (-n) 65536
ulimit -n

希望它有所帮助,请对这个Ubunt VPS安装中的任何缺失/错误部分提供反馈和评论,因为我不是Linux大师,但欣赏安全稳定的Linux机器!

赞(0) 打赏
未经允许不得转载:特价主机 » Ubuntu VPS手把手教你配置说明

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏