Установка и настройка сервера времени в centos 7

Введение

firewalld — это инструмент управления брандмауэром для операционных систем Linux.

Он предоставляет функции брандмауэра, выступая в качестве интерфейса для платформы netfilter ядра Linux с помощью утилиты nftables
userspace (до версии v0.6.0
iptables backend),
выступая в качестве альтернативы программе командной строки nft.

То есть в CentOS 7 firewalld это интерфейс для iptables (legacy)

В Rocky Linux
или CentOS 8 это интерфейс для iptables (nf_tables), подробнее про iptables
— здесь

Имя firewalld соответствует соглашению Unix об именовании системных демонов, добавляя букву «d».

firewalld написан на

Python
.

Предполагалось, что он будет перенесен на

C++

, но проект переноса был заброшен в январе 2015 года.

Yum: установка, обновление и удаление пакетов

Полная справка по менеджеру пакетов :

yum help

Очистить кеш всех пакетов (обчычно используется при возникновении проблем при работе yum):

yum clean all

Пересоздать кеш пакетов заново:

yum makecache

Отобразить список подключенных репозиториев:

yum repolist

Вывести список всех доступных пакетов для установки:

yum list available

Список всех пакетов, которые установлены в системе:

yum list installed

Вывести список пакетов, которые относятся к ядру Linux:

yum list kernel

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

yum list installed httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.awanti.com
* epel: mirror.datacenter.by
* extras: mirrors.powernet.com.ru
* updates: mirror.axelname.ru
Installed Packages
httpd.x86_64    2.4.6-93.el7.centos    @base

Можно получить более подробную информацию о пакете:

yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.awanti.com
* epel: mirrors.glesys.net
* extras: mirrors.powernet.com.ru
* updates: mirror.axelname.ru
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 93.el7.centos
Size        : 9.4 M
Repo        : installed
From repo   : base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

Чтобы установить пакет используется команда . Для установки веб-сервера apache выполните:

yum install httpd

Перед установкой пакета можно проверить его на зависимости и необходимые пакеты с помощью команды:

yum deplist httpd

Если вы хотите установить какой-либо пакет, но забыли его полное название, можно воспользоваться подстановочным символом . Например:

yum install epel-*

Можно установить сразу несколько пакетов:

yum install wget htop yum-utils

Переустановка пакета:

yum reinstall proftpd

Удалить установленный пакет:

yum remove httpd

!Но перед удалением любого пакета, рекомендуется сначала проверить его на зависимости (бывают пакеты, удаление которых влечет за собой удаление множества других пакетов, что в следствии приводит к неработоспособности системы):

yum deplist httpd

Найти пакет по имени или описанию:

yum search httpd

С помощью опции вы можете найти пакеты, содержавшие определенный файл, например:

yum provides */squid.conf

Выполнить обновление всех установленных пакетов:

yum update

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

yum update httpd

Проверить если доступные обновления для системы можно командой:

yum check-update

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

yum updateinfo list security

Бывают случаи, когда после обновления какого-либо пакета или сервиса, возникают проблемы. Например, после обновления php, перестало работать ваше приложение или сайт. Вы можете вернуть предыдущую версию пакета, откатив установленный пакет:

yum downgrade php

Имеется возможность группой установки пакетов командой . В репозитории существуют предопределенные группы пакетов с различными наборами программ. Вы можете вывести список имеющихся групп:

yum grouplist

Рассмотрим на примере группового листа «Basic Web Server». Получить информацию о группе и пакетах в ней:

yum groupinfo "Basic Web Server"

При проверке мы видим, что будут установлены набор пакетов и сервисов для веб-сервера.

Ещё один полезный групповой лист «System Administration Tools»:

yum groupinfo "System Administration Tools"

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

Установить групповой лист можно командой:

yum groupinstall "System Administration Tools"

Настройка Firewall в CentOS 7

1. Статус брандмауэра

Первым делом необходимо посмотреть состояние брандмауэра. Для этого выполните:

Если служба Firewalld отключена, то необходимо её включить:

Теперь нужно посмотреть, запущен ли Firewalld, с помощью команды firewall-cmd:

Если программа запущена и всё хорошо, то вы получите сообщение «running».

2. Управление зонами

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

В моем случае это зона public. Вы можете изменить текущую зону с помощью опции —set-default-zone:

Чтобы посмотреть, какие зоны используются для всех сетевых интерфейсов, выполните:

В списке будут выведены зоны и интерфейсы, для которых они присвоены. Такой командой можно посмотреть конфигурацию для определённой зоны. Например, для зоны public:

3. Настройка сервисов

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

Команда выведет все доступные сервисы, вы можете добавить любой из них к зоне, чтобы его разрешить. Например, разрешим подключение к http:

А чтобы удалить этот сервис, выполните:

В обоих случаях мы использовали опцию —permanent, чтобы конфигурация сохранялась после перезагрузки. После изменений нужно обновить правила:

Затем, если вы посмотрите конфигурацию зоны, то там появится добавленный сервис:

4. Как открыть порт в Firewalld

Если для нужной вам программы нет сервиса, вы можете открыть её порт вручную. Для этого просто добавьте нужный порт к зоне. Например порт 8083:

Чтобы удалить этот порт из зоны, выполните:

Аналогично сервисам, чтобы открыть порт в firewall centos 7 надо перезагрузить брандмауэр.

5. Проброс портов Firewalld

Проборс портов в Firewalld настраивается намного проще, чем в iptables. Если вам нужно, например, перенаправить трафик с порта 2223 на порт 22, достаточно добавить к зоне перенаправление:

Здесь перенаправление выполняется только на текущей машине. Если вы хотите настроить сеть NAT и пробрасывать порт на другую машину, то вам нужно сначала включить поддержку masquerade:

Затем уже можно добавить порт:

6. Расширенные правила

Если функциональности зон вам недостаточно, вы можете использовать расширенные правила. Общий синтаксис расширенных правил такой:

rule family=»семейтво» source значение destination значение log audit действие

Вот значение основных параметров:

  • В качестве семейства протоколов можно указать ipv4 или ipv6 или ничего не указывать, тогда правило будет применяться к обоим протоколам;
  • source и destination — это отправитель и получатель пакета. В качестве этих параметров может быть использован IP-адрес (address), сервис (service name), порт (port), протокол (protocol) и так далее;
  • log — позволяет логгировать прохождение пакетов, например в syslog. В этой настройке вы можете указать префикс строчки лога и уровень подробности логгирования;
  • audit — это альтернативный способ логгирования, когда сообщения будут отправляться в службу auditd.
  • Действие — это действие, которое необходимо выполнить с совпавшим пакетом. Доступны: accept, drop, reject, mark.

Давайте рассмотрим несколько примеров. Нам необходимо заблокировать доступ к серверу для пользователя с IP 135.152.53.5:

Или нам нужно запретить для этого же пользователя только доступ к порту 22:

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

# Как настроить статический IP-адрес в CentOS 7

minimalifconfig

-bash: ifconfig: command not found

net-tools

# yum -y install net-tools.x86_64

ifconfig

# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.160 netmask 255.255.255.0 broadcast 192.168.146.255
inet6 fe80::250:56ff:fe24:ccd6 prefixlen 64 scopeid 0x20<link>
ether 00:50:56:24:cc:d6 txqueuelen 1000 (Ethernet)
RX packets 210 bytes 19072 (18.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 71 bytes 11531 (11.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 4 bytes 340 (340.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 340 (340.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ip addr:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:24:cc:d6 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.160/24 brd 192.168.146.255 scope global dynamic eno16777736
valid_lft 1672sec preferred_lft 1672sec
inet6 fe80::250:56ff:fe24:ccd6/64 scope link
valid_lft forever preferred_lft forever
# cat ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=dc1636be-5281-4a07-8681-fcdc8b161c8c
DEVICE=eno16777736
ONBOOT=no
PEERDNS=yes
PEERROUTES=yes

BOOTPROTOBOOTPROTO=none

и дописать:

Указать ДНС:
DNS1=8.8.8.8

Прописываем IP:
IPADDR0=172.16.0.30

Указываем нужную маску:
PREFIX0=24

Прописываем шлюз по умолчанию:
GATEWAY0=172.16.0.1

И чтобы у нас сетевая карта «поднималась» при запуске ОС, необходимо в этом файле найти параметр ONBOOT и прописать ему yes.

В итоге у нас должно получится что то типа этого:

Для немедленного применения изменений перезапустим сеть:

# /etc/init.d/network restart
# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.30 netmask 255.255.255.0 broadcast 172.16.0.255
ether 00:50:56:24:cc:d6 txqueuelen 1000 (Ethernet)
RX packets 5039 bytes 360189 (351.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1015 bytes 181656 (177.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Работа с Firewalld Zones

После первого включения службы FirewallD зона становится зоной по умолчанию. Вы можете просмотреть зону по умолчанию, набрав:

Чтобы получить список всех доступных зон, введите:

По умолчанию всем сетевым интерфейсам назначена зона по умолчанию. Чтобы проверить, какие зоны используются вашим сетевым интерфейсом (ами), наберите:

Вывод выше говорит нам, что оба интерфейса и назначены для публичной зоны.

Вы можете распечатать настройки конфигурации зоны с помощью:

Из вышеприведенного вывода мы видим, что публичная зона активна и установлена ​​по умолчанию, используемой как интерфейсами и . Также разрешены подключения, связанные с DHCP-клиентом и SSH.

Команда выводит огромный список с настройками всех доступных зон.

Conclusion

You should now have a fairly good understanding of how to administer the firewalld service on your CentOS system for day-to-day use.

The firewalld service allows you to configure maintainable rules and rule-sets that take into consideration your network environment. It allows you to seamlessly transition between different firewall policies through the use of zones and gives administrators the ability to abstract the port management into more friendly service definitions. Acquiring a working knowledge of this system will allow you to take advantage of the flexibility and power that this tool provides.

Основы использования Firewalld

Как я уже сказал выше, Firewalld работает не с цепочками правил, а с зонами. Каждому сетевому интерфейсу может быть присвоена определенная зона. Зона представляет из себя набор правил, ограничений и разрешений, которые применяются к этому сетевому интерфейсу. Для одного интерфейса может быть выбрана только одна зона. Разработчики создали несколько предустановленных зон:

  • drop — блокировать все входящие пакеты, разрешить только исходящие
  • block — в отличие от предыдущего варианта отправителю пакета будет отправлено сообщение по блокировке его пакета;
  • public — поддерживаются входящие соединения только для ssh и dhclient;
  • external — поддерживает NAT для скрытия внутренней сети;
  • internal — разрешены сервисы ssh, samba, mdns и dhcp;
  • dmz — используется для изолированных сервров, у которых нет доступа к сети. Разрешено только подключение по SSH;
  • work — разрешенны сервисы ssh и dhcp;
  • home — аналогично internal;
  • trusted — всё разрешено.

Таким образом, чтобы разрешить или запретить какой-либо сервис, вам достаточно добавить или удалить его из текущей зоны или сменить зону интерфейса на ту, где он разрешён. Можно провести аналогию с политикой действий по умолчанию для пакетов в iptables. Зона trusted имеет политику ACCEPT и разрешает все подключения, зона block имеет политику DENY, которая запрещает все подключения, а все остальные зоны можно считать наследниками зоны block, плюс в них уже предопределены правила разрешения сетевых подключений для некоторых сервисов.

Также у Firewalld есть два вида конфигурации:

  • runtime — действительна только до перезагрузки, все изменения, в которых явно не указано другое, применяются к этой конфигурации;
  • permanent — постоянные настройки, которые будут работать и после перезагрузки.

Теперь вы знаете всё необходимое, поэтому перейдём к утилите firewalld-cmd.

Сохранение статических маршрутов

Статические маршруты указываются в файлах /etc/sysconfig/network-scripts/route-IFNAME с добавлением имени интерфейса

Вариант 1

1
2
3
4
5

cat/etc/sysconfig/network-scripts/route-eth1

192.168.0.0/16via192.168.11.1

10.10.0.0/16via192.168.11.1

 

Вариант 2

1
2
3
4
5
6
7
8
9
10
11
12

cat/etc/sysconfig/network-scripts/route-eth1

ADDRESS0=192.168.0.0

NETMASK0=255.255.0.0

GATEWAY0=192.168.11.1

ADDRESS1=172.16.0.0

NETMASK1=255.196.0.0

GATEWAY1=192.168.11.1

ADDRESS2=10.10.0.0

NETMASK2=255.255.0.0

GATEWAY2=192.168.11.1

 

Оба варианта имеют право на существование, но первый немного лаконичней. После чего необходимо перезагрузить демон сети

Настройка аутентификации с помощью открытого ключа SSH в CentOS 7

Чтобы защитить SSH-сервер и настроить аутентификацию с открытым ключом, чтобы повысить безопасность вашего сервера с помощью закрытого ключа SSH для входа в систему, сначала сгенерируйте пару ключей SSH с помощью следующей команды.

Кстати, помимо указанных настроек, после установки сервера, Вы можете проводить мониторинг сайта и проверки uptime через специальный сервис https://www.host-tracker.com/.

Не вводите ключевую фразу, если вы хотите автоматизировать управление сервером через SSH.

После генерации пар ключей SSH скопируйте ключ на сервер, к которому вы хотите подключиться, введя команду ниже. Первоначально введите удаленный пароль пользователя SSH, чтобы скопировать открытый ключ.

После того, как открытый ключ SSH был скопирован на удаленный сервер, войдите в систему на удаленном сервере SSH с помощью следующей команды.

Наконец, чтобы защитить сервер SSH, убедитесь, что вы запрещаете удаленный доступ SSH к учетной записи root, открыв файл конфигурации SSH / etc / ssh / sshd_config с вашим текстовым редактором в качестве пользователя root и изменив его с Да на Нет.

Чтобы применить настройку, необходимо перезапустить службу SSH, чтобы она использовала новую конфигурацию.

Что такое CentOS?

CentOS — это дистрибутив Linux, главным достоинством которого является стабильность. Данная система, как и ближайший конкурент Fedora, была построена на исходном коде платного дистрибутива Red Hat Linux. Последний, в свою очередь, является идеальным инструментом для системных администраторов, в работе которых требуется предсказуемость, стабильная работа и удобное управление.

CentOS не может похвастать самыми последними версиями пакетов, в отличие от той же Fedora, но каждый системный администратор будет этому только рад, когда Fedora или другой современный дистрибутив со своими свежими пакетами «упадет», а CentOS продолжит спокойно работать независимо от обстоятельств. В данном материале вкратце описывается процесс настройки и установки CentOS 7, основные особенности системы и рабочая среда.

Почему, если я установил 64-х разрядную версию, у меня стоят пакеты i386? Как их удалить?

Как и в остальных случаях, CentOS действует в соответствии с исходным кодом Вендора ПО, поэтому, из соображений совместимости, при установке 64х разрядной версии ставятся, в том числе, 32х разрядные iX86 пакеты. Многие системные администраторы (и некоторые десктоп-пользователи) предпочитают удалять все 32х разрядные пакеты, чтобы у них была чистая 64х-разрядная операционная система. Это можно сделать следующим образом:

yum remove \*.i\?86

А для того, чтобы эти пакеты не устанавливались в дальнейшем при обновлении, необходим изменить /etc/yum.conf, добавив строчку:

exclude = *.i?86

Имейте в виду, что 32х разрядные приложения, включая плагины для браузера от стороннего (не CentOS) поставщика, которые могут быть доступны только в 32х разрядном варианте, перестанут после этого работать. После этого, возможно, вы захотите сделать следующее:

yum reinstall \*

для того, чтобы удалить элементы, являющиеся общими для обоих версий пакетов и располагающиеся в /usr/share.

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

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

iptables -L -v -n
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: