CentOS7 на VPS

Подвернулся почти халявный VPS. Ресурсы арендованные скудны. Как использовать?
Сайт? — уже есть. А пустим-ка через него свой трафик, завёрнутый в VPN-туннель. Свежо, модно, молодёжно, так сказать. Мануалов достаточно. Посмотрим как это будет жить и узнаем зачем мне это нужно.
Хостер предлагает линухи и винду. Сервер виртуализации - OpenVZ. Фряхи нет. Ну, что ж — халявному коню в зубы не смотрят. Фряха есть дома. на Xen-е — мне хватает))
Выбираем из предлогаемых линухов, естественно, самый боевой вариант — CentOS 7.
Система развернулась быстро.
Что мы имеем:

[discipulus@discipulus74 etc]$ uname -a
Linux discipulus74 2.6.32-042stab108.5 #1 SMP Wed Jun 17 20:20:17 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux

или

[discipulus@discipulus74 etc]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

Приступим к начальной настройке системы для нормальной жизни и последующего строительства своего ЛунаПарка с блекджеком и т. д.)))

Как водится, первым делом добавляем репы, проверку версий пакетов, уведомления на почту. Закачку обнов отключаем, настраиваем менеджер пакетов и обновляемся:

[root@discipulus74 ~]# yum -y install yum-cron yum-utils
[root@discipulus74 ~]# yum -y install epel-release && yum -y update

определяем кол-во устанавливаемых версий пакетов

[root@discipulus74 ~]# mcedit /etc/yum.conf
installonly_limit=2

Далее классика:

[root@discipulus74 ~]# yum -y install mc

Добавим сразу:

[root@discipulus74 ~]# yum -y install bind-utils

SELinux отключен из коробки

[root@discipulus74 ~]# getsebool -a
getsebool: SELinux is disabled

Добавляем себя

[root@discipulus74 ~]# useradd discipulus

Придумываем красивый пароль

[root@discipulus74 ~]#passwd discipulus

Разрешаем себе sudo

[root@discipulus74 ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
discipulus ALL=(ALL) ALL

Собираем рутовую почту

[root@discipulus74 ~]# mcedit /etc/aliases
# Person who should get root's mail
root: discipulus

Немножечко поправим локализацию.

[root@discipulus74 ~]# localectl set-locale LANG="ru_RU.UTF-8" LC_NUMERIC="C" LC_TIME="POSIX" LC_MESSAGES="POSIX"

или вот так

[root@discipulus74 ~]# localectl set-locale LANG="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8"

В чём разница? в первом случае вывод будет, например, вот такой, плюс возможность вводить текст на великом и могучем:

[root@discipulus74 ~]# cal
 March 2016
Su Mo Tu We Th Fr Sa
 1 2 3 4 5
 6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

в другом, весь консольный вывод будет локализован:

[root@discipulus74 ~]# cal
 Март 2016
Пн Вт Ср Чт Пт Сб Вс
 1 2 3 4 5 6
 7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Смысл, думаю, виден и понятен. Кому как нравится. Мне нравится Midnight Commander с менюшками на русском).


Далее смотрим кто к нам нагло ломится. Удачно или неудачно.

[root@discipulus74 ~]#last

Как обычно охреневаем с вывода lastb. Да — брутфорс SSH)).

[root@discipulus74 ~]# lastb
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:24 - 00:24 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:23 - 00:23 (00:00)
root ssh:notty 183.3.202.102 Thu Mar 10 00:23 - 00:23 (00:00)

Ставим whois

[root@discipulus74 ~]# whois 183.3.202.102
-bash: whois: command not found
[root@discipulus74 ~]# yum install whois

Смотрим, кто там такой прыткий.

[root@discipulus74 ~]# whois 183.3.202.102
% [whois.apnic.net]
% Whois data copyright terms //www.apnic.net/db/dbcopyright.html
% Information related to '183.0.0.0 - 183.63.255.255'
inetnum: 183.0.0.0 - 183.63.255.255
netname: CHINANET-GD

Китаес какой-то.

Быстренько вставляем ему палку в колесо), придушив всю подсеть класса B.

[root@discipulus74 /]# iptables -I INPUT 1 -s 183.0.0.0/10 -j DROP

Позже надо будет весь чина-нет на INPUT заблокировать — благо список китайских подсетей имеется. Всё равно по-китайскe не шпрехаю вообще).


Настраиваем SSH-соединение по ключу и по паролю только с определённых IP.

Генерируем ключ в PuTTYgen, паролим его, сохраняем в уютное место. Настраиваем профиль подключения PuTTY. Закидываем публичную часть в ~/.ssh/authorized_keys. Права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет. Отключаем авторизацию по паролю.

[root@discipulus74 ~]# mcedit /etc/ssh/sshd_config
PasswordAuthentication no
[root@discipulus74 ~]# systemctl restart sshd.service

продолжение следует…