Начальная настройка Centos 7

Проверяем, что за система у нас

uname -a

Увидим текущую версию ОС.

Обновляем ее:

yum update

Устанавливаем сетевой пакет

yum install net-tools.x86_64

Чтобы работала команда nslookup:

yum install bind-utils

Сразу для работы с текстовыми файлами (конфигами) устанавливаем Midnight Commander:

yum install mc

И сразу же для удобства, меняет расцветку синтаксиса:

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Сеть

Отключаем SELinux, для этого открываем файл на редактирование с помощью Midnight Commander:

mcedit /etc/sysconfig/selinux

И у SELINUX ставим параметр disabled.

SELINUX=disabled

После отключения SElinux необходимо перезагрузиться или выполнить команду:

setenforce 0

— тогда изменение выполнится без перезагрузки.

Firewall

Фаерволом в CentOS 7 является iptables. И для управления им в центос придумала другая утилита —  Firewalld. Я ею не пользуюсь, поэтому останавливаю ее и удаляю из автозагрузки, т.к. удобнее пользоваться самописным скриптом, который кроссплатформенный между разными линуксами:

systemctl stop firewalld
systemctl disable firewalld

Установливаем утилиты для iptables:

yum -y install iptables-services

Включаем iptables в автозагрузку:

systemctl enable iptables

Посмотреть текущие настройки можно командой:

iptables -L -v -n

Теперь создадим текстовый файл (скрипт) для iptables:

mcedit /etc/iptables_rules.sh

И заносим туда:

#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет (свой ip-адрес)
export WAN=eth0
export WAN_IP=99.99.99.99

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Рзрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для DNS
#$IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT
# Открываем порт для NTP
#$IPT -A INPUT -i $WAN -p udp --dport 123 -j ACCEPT
# Открываем порт для NGINX
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
# Открываем порт для Apache(httpd)
$IPT -A INPUT -i $WAN -p tcp --dport 8080 -j ACCEPT

# Логирование
# Все что не разрешено, но ломится отправим в цепочку undef (необходимо раскомментировать)

#$IPT -N undef_in
#$IPT -N undef_out
#$IPT -N undef_fw
#$IPT -A INPUT -j undef_in
#$IPT -A OUTPUT -j undef_out
#$IPT -A FORWARD -j undef_fw

# Логируем все из undef (необходимо раскомментировать)

#$IPT -A undef_in -j LOG --log-level info --log-prefix "-- IN -- DROP "
#$IPT -A undef_in -j DROP
#$IPT -A undef_out -j LOG --log-level info --log-prefix "-- OUT -- DROP "
#$IPT -A undef_out -j DROP
#$IPT -A undef_fw -j LOG --log-level info --log-prefix "-- FW -- DROP "
#$IPT -A undef_fw -j DROP

# Записываем все вышеперечисленные правила в основной конфиг. Эта строчка обязательно в самом конце
/sbin/iptables-save  > /etc/sysconfig/iptables

Делаем файл c правилами исполняемым:

chmod 0740 /etc/iptables_rules.sh

и запускаем его:

/etc/iptables_rules.sh

При каждом запуске скрипта, все изменения записываются в файл /etc/sysconfig/iptables и применяются при загрузке системы.

Проверить, применились ли правила можно командой:

iptables -L -v -n

SSH

По умолчанию, сервис работает на 22 порту. Для безопасности его лучше сменить на любой другой свободный. Открываем конфиг

mcedit /etc/ssh/sshd_config

Нужно раскомментировать строку Port 22 и заменить значение 22 на любое другое, например 99999. Сохраняем.

Теперь нужно добавить в настройки фаервола наш новый порт в разрешенные. Открываем скрипт для iptables

mcedit /etc/iptables_rules.sh

Находим строку

$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

И вместо 22 пишем 99999. Сохраняем и запускаем этот скрипт!

Перезапускаем службу

systemctl restart sshd

Можно проверить на каком порту висит сейчас sshd

netstat -tulpn | grep sshd
tcp        0      0 0.0.0.0:99999           0.0.0.0:*               LISTEN      1799/sshd
tcp6       0      0 :::99999                :::*                    LISTEN      1799/sshd

видим 99999, значит все ок.

Добавление репозиториев

Добавим популярный репозиторий EPEL

yum install epel-release -y

Настройка bash_history (по желанию)

Все подробно расписал товарищ в этой статье.

Самое основное. Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history (в начале точка).

Нам нужно отредактировать файл .bashrc, который находится в том же каталоге, что и файл с историей.

Добавляем в него следующие строки:

export HISTSIZE=10000
export HISTTIMEFORMAT="%h %d %H:%M:%S "
PROMPT_COMMAND='history -a'
export HISTIGNORE="ls:ll:history:w"

Чтобы изменения применились, нужно разлогиниться и залогиниться снова.

Отключаем флуд сообщений в /var/log/messages

cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf

Туда заносим:

if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop

Сохраняем и перезапускаем:

systemctl restart rsyslog

Мониторинг — iftop, atop, htop, lsof

iftop показывает в режиме реального времени загрузку сетевого интерфейса

yum install iftop

Диспетчеры задач:

yum -y install htop
yum -y install atop

lsof поможет узнать какие файлы используются теми или иными процессами:

yum install lsof

По идее все.

Обычно после этого требуется настроить веб-сервер, к примеру на связке nginx+apache. Статья описывающая эту связку.

Спасибо статье: https://serveradmin.ru/centos-7-nastroyka-servera

1610cookie-checkНачальная настройка Centos 7
Оцените статью
Техдокументация вебмастера
Подписаться
Уведомить о
guest
8 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Николай
Николай
4 лет назад

Всё сделал с точностью до буквы. Смена порта не получилась. Команда «netstat -tulpn | grep sshd» выводит новый номер порта, однако присоединиться через него не получается. Видно кроме этого нужно что-то ещё сделать, что в статье отсутствует.

Николай
Николай
Ответить на  goncharov
4 лет назад

Да, конечно, новый порт открыл, а старый закрыл. Причина оказалась в том, что новый порт был чем-то занят, хотя перед его открытием проверил занятые порты. Нашёл список портов в Wikipedia, в нём свободный диапазон портов и выбрал из него порт. После этого всё заработало. Я так понимаю. номер порта 99999 указан в статье для примера, как реальный, его я не рассматривал, ибо порта с номером более 65535 не существует, а диапазон 49152—65535 (цитата из Wikipedia) содержит динамически выделяемые или частные порты, которые не регистрируются IANA. Эти порты используются временными (короткоживущими) соединениями «клиент — сервер» или в определённых частных случаях. Этот… Подробнее »

Николай
Николай
Ответить на  goncharov
4 лет назад

Порт в Firewalld открыл, однако проблема была не в этом, я посмотрел, какие плоты используются и назначил пятизначный порт для SSH, однако, он по какой-то причине не работал. Тогда я нашёл в Википедии список портов, выбрал тот, который помечен, как официально свободный и через него подключил SSH. После этого всё заработало.

Николай
Николай
4 лет назад

У меня вопрос несколько не по теме, Вы не владеете ситуацией с настройкой DNS сервера bind? У меня периодически появляется проблема с доступом в домашней проводной сети. Дело в том, что я для доступа в интернет использую сотовый роутер Huawei B310 и для упрощения настроек на домашнем сервере указал в качестве сервера DNS адрес роутера, 192.168.8.1. Роутер гарантированно поддерживает работу только с Windows и в связи с этим возникают периодические проблемы с доступом к серверу. Решил установить и настроить DNS сервер bind. Вот с этим и возникли проблемы, во всех описаниях приводятся IP адреса, но авторы не поясняют откуда они… Подробнее »

Николай
Николай
Ответить на  goncharov
4 лет назад

Спасибо, буду искать решение дальше.