Настройка CentOS 7 для сервера 1С 8. 3
Настройка CentOS 7 для сервера 1С 8.3
После установки CentOS 7 приступим к ее настройке.
Для настройки системы воспользуемся подключением по SSH используя клиент PuTTy или другой SSH клиент.
Начальная настройка CentOS 7
Так как CentOS 7 у нас гостевая ОС ESXi 6.5, то нужно установить VMware tools:
Для дальнейшего удобства установим файловый менеджер Midnight Commander:
В CentOS 7 minimal все утилиты, такие как dig, host, nslookup, теперь включены в пакет bind-utils, поэтому установим этот пакет:
меняем значение SELINUX=enforcing на SELINUX=disabled . Сохраняем и выходим.
Для вступления изменений в силу перезагрузим ОС:
Настройка сетевого интерфейса сервера
Сервер 1С:Предприятие будет находится в пределах локальной сети и его вполне можно использовать с отключенным файрволом без большой угрозы безопасности.
Отключаем firewalld:
В файле /etc/hosts не должно быть записей формата localhost.localdomian или относящихся к IPv6, в случае отсутствия DNS-сервера, в нем должно быть прописано четкое соответствие IP-адрес сервера – FQDN имя – короткое имя. Пример правильного файла hosts:
127.0.0.1 localhost
192.168.xxx.yyy SERVER_NAME.DOMAIN.LOCAL SERVER_NAME
Что бы новые параметры вступили в силу нужно перезагрузить сервер.
После перезагрузки имя сервера должно разрешаться в IP-адрес.
Подключение репозиториев
Для инсталляции различных пакетов ПО необходимо подключить репозитории в CentOS. Добавим популярный EPEL:
Настройка и синхронизация времени
Настроим время сервера. Узнать, какое время на сервере можно с помощью команды date:
Чтобы сменить часовой пояс на +3, воспользуемся специальной утилитой, которая входит в комплект CentOS 7:
Установим утилиту для синхронизации времени chrony:
Запускаем chrony и добавляем в автозагрузку:
Установка дополнительных пакетов
Добавим несколько полезных утилит, которые могут пригодиться в процессе эксплуатации сервера.
iftop показывает в режиме реального времени загрузку сетевого интерфейса:
Диспетчер задач htop:
Установим также необходимые пакеты отсутствующие в поставке:
Скачиваем необходимые шрифты и устанавливаем их:
Публикация общей папки
Для удобства установим Samba и добавим в автозагрузку:
Далее создадим папку, к которую дадим общий доступ и настроим Samba:
Настроим Samba внеся в smb.conf следующий текст:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = Server1C
security = user
map to guest = bad user
dns proxy = no
guest account = nobody
browseable = yeslog file = /var/log/samba/log.%m
max log size = 50
[public]
comment = FS
path = /home/public
readonly = no
guest ok = yes
public = yes
guest only = yes
writable = yes
Добавляем Samba в автозагрузку:
Если не отключать Firewall, то нужно добавить следующие правила:
Установка веб сервера
Для работы сервисов, имеющих веб интерфейс, установим веб сервер Apache:
Добавляем apache в автозагрузку:
Запускаем apache в CentOS 7:
Проверяем, запустился ли сервер:
Установим популярные модули для php:
Выполним перезапуск apache:
Базовая настройка CentOS 7 закончена
Поделиться ссылкой:
Похожее
Настройка CentOS 7 для сервера 1С 8.3: 13 комментариев
Скажите. Вы когда-нибудь пробовали на такой связке формировать этикетки со штрих кодами. Интересуют управляемые формы. Суть в том, что на сервере нужна компонента, которая «нарисует» штрих код и отправит его клиенту. Такой компоненты там нет, и при попытке распечатать любой ШК клиенту выйдет сообщение об ошибке «Ошибка подключения компоненты».
В случае сервера на винде там все понятно, а вот под центом не могу найти где взять эту компоненту и как ее поставить.
Нет, не пробовал. У меня на данный момент похожая проблема с криптопровайдером. Под линуксом криптопровайдер не цепляется, тоже вываливается ошибка подключения динамической библиотеки. Я не уверен, но в Вашем случае скорее всего проблема подключения COM объектов, которые, как я понял, не поддерживаются в Linux. Возможно надо найти обработчик под CentOS.
День добрый.
Решили проблему с криптопровайдером?
Нет, забил. В итоге из-за ЭДО пришлось сервер 1с выносить отдельно на виртуальную машину с windows 10 с более частотным процессором
А что конкретно не работало? 1С отчетность для сдачи в ФНС ФСС и прочее или что-то свое?
Да, 1С отчетность. Мне нужно было чтобы сервер раздавал эцп, чтобы сотрудники не имели физ доступа к ней, но не сложилось
Добрый день.
Для чего служат пакеты из команды
yum install policycoreutils-python wget bzip2 ntp net-tools unixODBC ImageMagick fontconfig-devel ?
Как определили их необходимость?
policycoreutils-python — инструменты для работы с selinux, но selinux обычно отрубают;
wget — консольный менеджер загрузок, в статье используется для скачивания файла;
bzip2 — консольный архиватор;
ntp — сервер времени, думаю не нужен так как установлен chrony;
net-tools — сетевые утилиты например ifconfig;
unixODBC — компоненты для доступа к данным на основе ODBC, если нужно выгрузить/загрузить данные в сторонние базы не обязательно 1С;
ImageMagick — набор инструментов для работы с изображениями, нужен в тонком клиенте и наверно в web тоже;
fontconfig-devel — для работы со шрифтами, в данном случае с майкрософтовскими.
В целом статья полезна, сам настраиваю таким способом.
Да, 1С отчетность. Мне нужно было чтобы сервер раздавал эцп, чтобы сотрудники не имели физ доступа к ней, но не сложилось
Создаётся впечатление, что все авторы, описывающие установку CentOS в качестве сервера, не владеют ситуацией. Первое, что они предлагают, отключить SELinux и Firewall. А слабо, настроить SELinux? А где открытие портов? Для работы в с ОС Windows, коих подавляющее большинство в сетях, нужна Samba, а для её работы необходимо открыть порты 137, 138, 139, 443 и 445. Для возможности соединения с сервером, через Web интерфейс, необходимо открыть порт 80. Для удалённого управления сервером необходимо настроить SSH, а для исключения возможности несанкционированного доступа к серверу, поменять порт SSH, или на худой коней открыть порт по умолчанию и сформировать надёжный пароль, или доступ по публичному ключу. Где все это. Я даже на домашнем сервере всё это проделал и не отключал SELinux, а настроил её, включил разрешения для работы Samba и SSH, но только те, которые используются в домашней сети.
Спасибо за комментарий. Вы правы, мне этот «блог» нужен для того что бы инфа, которую я собрал в инете была под рукой и эти инструкции делал прежде всего для себя, естественно после успешного внедрения, и если здесь нет инфы о настройке защиты, значит я не нашёл нормальную инструкцию, а сам я ни разу не линуксоид. Да и в моем случае это работает в закрытом контуре сети, поэтому не стал разбираться с защитой. Если дополните будет очень хорошо!
Соглашусь. Если сервер работает только внутри сети и не смотрит наружу, то смысла настраивать все порты и SE не вижу. Больше мороки.
По моему я где-то написал, что не настраивал защиту по причине работы сервера в закрытой сети
Управление брандмауэром CentOS | Утилита system-config-firewall
Для конфигурирования межсетевого экрана в CentOS используют утилиту system-config-firewall, которая заменят текущий FirewallD.
Для этого уберем FirewallD из автозагрузочного сектора ОС:
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
Теперь установим утилиту для дальнейшей настройки:
sudo yum install system-config-firewall-tui
Конфигурирование брандмауэра
После инсталляции запустим первичную настройку:
На экране появится меню для выбора дальнейших действий:
Скриншот №1. Меню для выбора дальнейших действий
Сначала включаем режим брандмауэра, а потом выбираем пункт «Настройка».
На втором шаге выбираем из перечня службы, которым открывается доступ во внешнюю сеть:
Скриншот №2. Открываем доступ во внешнюю сеть
В нашем примере активируем DNS и FTP. Нажимаем «Вперед».
Следующий пункт предлагает добавить дополнительные порты, которые не относятся к стандартным:
Скриншот №3. Выбор дополнительных портов
Первый пункт добавляет порт «с нуля», т.е. пользователь самостоятельно прописывает параметры. Второй предназначен для правки существующих, а третий удаляет порт из перечня.
Например, создадим порт 8080 для протокола TCP следующим образом:
Скриншот №4. Порт 8080 для протокола TCP
На третьем шаге представлен список сетевых интерфейсов на серверной платформе. Отмечаем только те пункты, для которых необходимо предоставить полный доступ во внешнюю сеть:
Скриншот №5. Список сетевых интерфейсов
Следующее меню отвечает за предоставление функции NAT для сетевых интерфейсов. В терминологии CentOS она называется «Маскарад». Отмечаем пункт, для которого необходим данный режим:
Скриншот №6. Функция NAT для сетевых интерфейсов
Теперь настроим проброс портов. Конфигурирование аналогично пункту с добавлением новых портов.
Далее — фильтрация ICMP. Стандартная настройка не блокирует трафик. Если требуется запретить, выбираем пункт:
Скриншот №7. Фильтрация ICMP
Последний шаг – создание правил. Добавляем собственные шаблоны, по которым файрвол будет обрабатывать трафик:
Скриншот №8. Добавление шаблонов
Для создания нового выбираем пункт один, в котором прописываем необходимые условия. Второй пункт это редактирование текущего шаблона, а третий — удаление выбранного правила. Нажимаем Закрыть для возврата в первоначальное меню.
Теперь выбираем «ОК» для активации внесенных изменений. Утилита покажет предупреждающее сообщение. Если все верно, то соглашаемся:
Скриншот №9. Активация внесенных изменений
Установка и настройка VPN сервера на CentOS 7
В этой статье я рассмотрю на практике полный алгоритм настройки VPN сервера на примере CentOS 7.6. Мы одновременно включим и L2TP и PPTP сервер.
Для работы VPN в Linux необходимо настроить 3 слоя: IPsec, L2TP и PPP. Причем, PPP будет общий для L2TP и PPTP серверов. Настройка L2TP сложнее, чем PPTP. В ней:
- IPsec обеспечивает конфиденциальность сетевого соединения и авторизации клиента (системы)
- С L2TP туннель настроен так, что VPN трафик прозрачно проходит через IPsec
- PPP (протокол точка-точка) контролирует авторизацию пользователей
Настройка VPN PPTP
Перед началом установки непосредственно сервера я рекомендую обновить пакеты и установить Midnight Commander (mc) и VestaCP для удобства. Вместе с VestaCP поставится большая часть пакетов, поэтому часть команд ниже будут излишними, не пугайтесь. В mc удобнее редактировать конфиг файлы.
yum install -y epel-release yum install -y mc yum install -y net-tools
Далее необходимо отключить Selinux.
Система принудительного контроля Selinux отключается правкой конфигурационного файла /etc/sysconfig/selinux.
или заменяем значение командой sed:
sed -i ‘s/(^SELINUX=).*/SELINUX=disabled/’ /etc/sysconfig/selinux sed -i ‘s/(^SELINUX=).*/SELINUX=disabled/’ /etc/selinux/config
После перезагрузки проверьте статус SELinux командой « sestatus », Вы должны увидеть следующий вывод:
Переходим к установке PPTP VPN сервера и добавлении его в автозагрузку:
yum install -y ppp pptp pptpd pptp-setup chkconfig pptpd on
Далее настройка конфигов из консоли (копируем, вставляем и жмём «Enter»). Перед началом редактирования бэкапим каждый файл.
Файл /etc/pptpd.conf
cp /etc/pptpd.conf /etc/pptpd.conf.bak
- localip — ip адрес из выбранной вами подсети, который будет являться локальным шлюзом для клиентов VPN.
- remoteip — пул ip адресов для раздачи клиентам VPN.
Если на вашей машине несколько внешних IP адресов, то вы можете указать конкретный IP, по которому будет доступно подключение к VPN серверу. В конце файла добавьте:
ms-dns 8.8.8.8 ms-dns 8.8.4.4
Также добавляем метод mschap2: require-mschap-v2
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
В примере ниже «user» и «pass» можно заменить на свои.
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
chmod 600 /etc/ppp/chap-secrets
Редактирование данного файла преследует собою цель — изменение значения «0» на «1» net.ipv4.ip_forward = 1.
cp /etc/sysctl.conf /etc/sysctl.conf.bak
На этом установка и настройка VPN PPTP сервера закончена.
Осталось только «разобраться» с файерволом.
Удаляем firewalld (если не удален или не отключен):
systemctl stop firewalld systemctl disable firewalld
и вместо него ставим IPTABLES:
yum install iptables-services iptables
Включим автозапуск iptables:
systemctl enable iptables chmod +x /etc/rc.d/rc.local
Теперь процесс настройки IPTABLES подошёл к ответственному моменту — настройке конфигурации таблиц, включению маршрутизации и открытию TCP портов 1723 и 22. Необходимо добавить следующие строки в файл iptables:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [853:222169] -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT #-A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp —dport 1723 -j ACCEPT -A INPUT -i eth0 -p gre -j ACCEPT -A INPUT -j REJECT —reject-with icmp-host-prohibited -A INPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp —dport 1723 -j ACCEPT -A FORWARD -i ppp+ -o eth0 -j ACCEPT -A FORWARD -i eth0 -o ppp+ -j ACCEPT -A FORWARD -j REJECT —reject-with icmp-host-prohibited COMMIT
Cохраняем и перезапускаем всё: файерволл и сервер PPTP VPN.
service iptables save service iptables restart systemctl start pptpd
Обратите внимание, если при редактировании конфигурационного файла iptables не сохраняются настройки, а после перезагрузки файл принимает своё первоначальное значение, то для того, чтобы после редактирования файла изменения вступили в силу, необходимо перед редактированием отключить файервол iptables:
systemctl stop iptables
Затем отредактировать файл /etc/sysconfig/iptables, сохранить изменения
service iptables save
И, наконец, запустить сервиc
systemctl start iptables
Обратите внимание, что eth0 — имя вашего сетевого интерфейса. Вы можете узнать его с помощью команды ifconfig. Если вам необходимо, чтобы была локальная сеть между клиентами, подключенными к VPN, добавьте следующие правила в iptables путем выполнения следующих команд из консоли или непосредственно редактируя iptables файл (кому как нравится):
iptables —table nat —append POSTROUTING —out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 172.16.0.0/24 -i ppp0 -j ACCEPT iptables —append FORWARD —in-interface eth0 -j ACCEPT
firewall-cmd —permanent —add-service=pptpd firewall-cmd —permanent —add-port=1723/tcp firewall-cmd —permanent —add-port=22/tcp firewall-cmd —permanent —add-service=ipsec firewall-cmd —permanent —add-service=l2tpd firewall-cmd —permanent —add-port=1701/udp firewall-cmd —permanent —add-port=4500/udp firewall-cmd —permanent —add-masquerade firewall-cmd —reload
ps ax | grep pptpd
Проверяем, слушается ли наш порт:
netstat -an | grep -i listen
Дополнительная команда для проверки статуса pptpd:
systemctl status pptpd
Настройка L2TP VPN
Второй уровень, протокол туннелирования второго уровня (L2TP), настраивается намного проще, чем IPsec, поэтому начнем с него. L2TP абсолютно небезопасен и не должен быть доступен вне соединения IPsec. При использовании iptables, примените следующие правила, чтобы заблокировать все соединения L2TP вне ipsec:
iptables -t filter -A INPUT -p udp -m policy —dir in —pol ipsec -m udp —dport l2tp -j ACCEPT iptables -t filter -A INPUT -p udp -m udp —dport l2tp -j REJECT —reject-with icmp-port-unreachable iptables -t filter -A OUTPUT -p udp -m policy —dir out —pol ipsec -m udp —sport l2tp -j ACCEPT iptables -t filter -A OUTPUT -p udp -m udp —sport l2tp -j REJECT —reject-with icmp-port-unreachable
yum install -y xl2tpd libreswan lsof
Бэкапим дефолтный конфиг:
cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.orig
Правим /etc/xl2tpd/xl2tpd.conf, указывая свои IP. В отличие от других серверов L2TP, xl2tpd может поддерживать пул IP-адресов без серверов DHCP или RADIUS.
В секцию [global] добавим (это обязательно для CentOS 6, не в 7.6 мне не потребовалось):
[global] ipsec saref = yes force userspace = yes [lns default] ip range = 172.21.118.2-172.21.118.254 local ip = 172.21.118.1 require authentication = yes name = LinuxVPN pppoptfile = /etc/ppp/options.xl2tpd
Для использования сервера RADIUS или DHCP, оставьте отключенными опции ip range и local ip . Если соединение нестабильно, попробуйте добавить length bit = yes в раздел lns default . Чтобы не использовать PPP аутентификацию, замените require authentication = yes на refuse authentication = yes .
Создаем новый файл options.xl2tpd опций с таким содержимым:
ipcp-accept-local ipcp-accept-remote ms-dns 8.8.8.8 ms-dns 8.8.4.4 auth idle 1800 mtu 1410 mru 1410 nodefaultroute debug proxyarp connect-delay 5000 name xl2tpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 persist logfile /var/log/xl2tpd.log
Настройка IPsec
Есть несколько вариантов и пакетов для настройки IPsec: ipsec-tools, LibreSwan (OpenSwan) и strongSwan. ipsec-tools (racoon) наименее функционален, но для тех, кто пришёл из *BSD, он может быть более близок. Однако, в отличие от *BSD, Linux не использует отдельный интерфейс для IPsec. strongSwan – это ответвление от FreeS/WAN. LibreSwan – ответвление от Openswan (который сам является ответвлением от FreeS/WAN) с сохранением его оригинальных разработчиков. Мы будем использовать именно LibreSwan, который мы уже ранее установили. Обход NAT установлен по умолчанию в файле конфигурации LibreSwan, таким образом никаких особых этапов настройки не требуется.
Желательно иметь каждую настройку VPN в своём собственном файле, что может быть сделано раскомментированием последней строки в /etc/ipsec.conf:
Основные конфигурационные файлы для LibreSwan это:
- /etc/ipsec.conf – определяет параметры IPSEC-соединений и параметры подключений в целом;
- /etc/ipsec.secrets – ключи и пароли для шифрования
Файл /etc/ipsec.conf разбит на разделы:
- config setup – глобальные параметры и опции
- conn %default – параметры ipsec-соединений по-умолчанию. Если в отдельных параметрах соединений не указан параметр, то используются параметры отсюда.
Например: conn SomeTunnel – раздел с параметрами соединения SomeTunnel
Файл /etc/ipsec.secrets содержит неограниченное количество типов ключей (паролей).
Основные параметры команды ipsec, которая управляет подключениями LibreSwan :
- start|restart|stop;
- ipsec status|statusall — для просмотра состояния IPSEC-соединений;
- up|down|route|unroute — для управления IPSEC-соединений.
Логи хранятся в /var/log/auth.log и /var/log/daemon.log.
Создаем файл настроек с таким содержимым:
conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 dpddelay=10 dpdtimeout=20 dpdaction=clear forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=1.1.1.1 leftprotoport=17/1701 right=%any rightprotoport=17/%any
- conn L2TP-PSK-NAT – служебное слово conn означает название соединения. После него будут параметры, которые характеризуют соединение.
- left= и right= – адреса хостов. Слова символизируют то, что хосты находятся с разных сторон. Не имеет значения, в какой из них вы впишете свой адрес, система автоматически определит, какой из адресов относится к ее интерфейсу. Поэтому на разных хостах вполне можно использовать одинаковый конфиг. Вместо адреса можно использовать ключевое слово %any в виде right=%any. Тогда можно будет подключаться с любого адреса. Так выглядит общая конфигурация, которую можно использовать:
left=%defaultroute
leftprotoport=udp/l2tp
leftid=@vpn.example.com
right=%any
rightprotoport=udp/%any - type=tunnel – тип соединения. Может принимать значения tunnel, transport или passthrough.
- authby=secret – что будет использоваться в качестве ключа: PSK (парольное слово) или RSA (ключ)
- auto=start – опция определяет, когда включать соединение. Может принимать значения: start (автоматически стартовать), add (стартовать в ответ на инициацию от другого хоста), ignore (игнорировать соединение), manual (стартовать вручную), route (назначение мне осталось непонятно, используется крайне редко).
Ну и так как мы задали тип авторизации с помощью PSK , то давайте запишем секретное слово в файл ipsec . secrets .
Ключ может быть задан строкой в кавычках или шестнадцатеричным числом. В следующем примере PUT_VPN_SERVER_IP должен быть заменён на IP-адрес сервера. Можно использовать доменное имя, но оно не рекомендовано разработчиками LibreSwan. Опция %any позволяет любым клиентам использовать этот PSK. Также можно IP не указывать как в нашей конфигурации выше.
Настройка Firewall CentOS 7
Основной брандмауэр в операционных системах Linux — это iptables. Но команды iptables сложны, и многим пользователям тяжело запомнить все опции и случаи, в которых их надо использовать. Поэтому разработчики дистрибутивов создают свои надстройки над iptables, которые помогают упростить управление фаерволом. У CentOS надстройка для управления iptables называется Firewalld.
У Firewalld есть несколько важных отличий, по сравнению с iptables. Здесь управление доступом к сети выполняется на уровне зон и сервисов, а не цепочек и правил. А также правила обновляются динамически, не прерывая запущенных сессий. В этой статье будет рассмотрена настройка Firewall CentOS 7 на примере Firewalld.
Основы использования 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.
Синтаксис и опции firewall-cmd
Управлять настройками Firewalld можно как с помощью консольной утилиты firewall-cmd, так и в графическом интерфейсе. CentOS чаще всего используется на серверах, поэтому вам придётся работать в терминале. Давайте рассмотрим синтаксис утилиты:
firewall-cmd опции
Для управления зонами используется такой синтаксис:
firewall-cmd —конфигурация —zone=зона опции
В качестве конфигурации нужно указать опцию —permanent, чтобы сохранить изменения после перезагрузки или ничего не указывать, тогда изменения будут действительны только до перезагрузки. В качестве зоны используйте имя нужной зоны. Давайте рассмотрим опции утилиты:
- —state — вывести состояние брандмауэра;
- —reload — перезагрузить правила из постоянной конфигурации;
- —complete-reload — жёсткая перезагрузка правил с разрывом всех соединений;
- —runtime-to-permanent — перенести настройки конфигурации runtime в постоянную конфигурацию;
- —permanent — использовать постоянную конфигурацию;
- —get-default-zone — отобразить зону, используемую по умолчанию;
- —set-default-zone — установить зону по умолчанию;
- —get-active-zones — отобразить активные зоны;
- —get-zones — отобразить все доступные зоны;
- —get-services — вывести предопределенные сервисы;
- —list-all-zones — вывести конфигурацию всех зон;
- —new-zone — создать новую зону;
- —delete-zone — удалить зону;
- —list-all — вывести всё, что добавлено, из выбранной зоны;
- —list-services — вывести все сервисы, добавленные к зоне;
- —add-service — добавить сервис к зоне;
- —remove-service — удалить сервис из зоны;
- —list-ports — отобразить порты, добавленные к зоне;
- —add-port — добавить порт к зоне;
- —remove-port — удалить порт из зоны;
- —query-port — показать, добавлен ли порт к зоне;
- —list-protocols — вывести протоколы, добавленные к зоне;
- —add-protocol — добавить протокол к зоне;
- —remove-protocol — удалить протокол из зоны;
- —list-source-ports — вывести порты источника, добавленные к зоне;
- —add-source-port — добавить порт-источник к зоне;
- —remove-source-port — удалить порт-источник из зоны;
- —list-icmp-blocks — вывести список блокировок icmp;
- —add-icmp-block — добавить блокировку icmp;
- —add-icmp-block — удалить блокировку icmp;
- —add-forward-port — добавить порт для перенаправления в NAT;
- —remove-forward-port — удалить порт для перенаправления в NAT;
- —add-masquerade — включить NAT;
- —remove-masquerade — удалить NAT.
Это далеко не все опции утилиты, но для этой статьи нам будет их достаточно.
Настройка Firewall в CentOS 7
1. Статус брандмауэра
Первым делом необходимо посмотреть состояние брандмауэра. Для этого выполните:
sudo systemctl status firewalld
Если служба Firewalld отключена, то необходимо её включить:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Теперь нужно посмотреть, запущен ли Firewalld, с помощью команды firewall-cmd:
sudo firewall-cmd —state
Если программа запущена и всё хорошо, то вы получите сообщение «running».
2. Управление зонами
Как вы уже поняли, зоны — это основной инструмент для управления сетевыми подключениями. Чтобы посмотреть зону по умолчанию, выполните:
sudo firewall-cmd —get-default-zone
В моем случае это зона public. Вы можете изменить текущую зону с помощью опции —set-default-zone:
sudo firewall-cmd —set-default-zone=public
Чтобы посмотреть, какие зоны используются для всех сетевых интерфейсов, выполните:
sudo firewall-cmd —get-active-zones
В списке будут выведены зоны и интерфейсы, для которых они присвоены. Такой командой можно посмотреть конфигурацию для определённой зоны. Например, для зоны public:
sudo firewall-cmd —zone=public —list-all
3. Настройка сервисов
Вы можете посмотреть все предопределенные сервисы командой:
sudo firewall-cmd —get-services
Команда выведет все доступные сервисы, вы можете добавить любой из них к зоне, чтобы его разрешить. Например, разрешим подключение к http:
sudo firewall-cmd —zone=public —add-service=http —permanent
А чтобы удалить этот сервис, выполните:
sudo firewall-cmd —zone=public —remove-service=http —permanent
В обоих случаях мы использовали опцию —permanent, чтобы конфигурация сохранялась после перезагрузки. После изменений нужно обновить правила:
sudo firewall-cmd —reload
Затем, если вы посмотрите конфигурацию зоны, то там появится добавленный сервис:
sudo firewall-cmd —zone=public —list-all
4. Как открыть порт в Firewalld
Если для нужной вам программы нет сервиса, вы можете открыть её порт вручную. Для этого просто добавьте нужный порт к зоне. Например порт 8083:
sudo firewall-cmd —zone=public —add-port=8083/tcp —permanent
Чтобы удалить этот порт из зоны, выполните:
sudo firewall-cmd —zone=public —remove-port=8083/tcp —permanent
Аналогично сервисам, чтобы открыть порт в firewall centos 7 надо перезагрузить брандмауэр.
sudo firewall-cmd —reload
5. Проброс портов Firewalld
Проборс портов в Firewalld настраивается намного проще, чем в iptables. Если вам нужно, например, перенаправить трафик с порта 2223 на порт 22, достаточно добавить к зоне перенаправление:
sudo firewall-cmd —zone=public —add-forward-port=port=2223:proto=tcp:toport=22
Здесь перенаправление выполняется только на текущей машине. Если вы хотите настроить сеть NAT и пробрасывать порт на другую машину, то вам нужно сначала включить поддержку masquerade:
sudo firewall-cmd —zone=public —add-masquerade
Затем уже можно добавить порт:
sudo firewall-cmd —zone=publiс —add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4
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:
sudo firewall-cmd —zone=public —add-rich-rule ‘rule family=»ipv4″ source address=135.152.53.5 reject’
Или нам нужно запретить для этого же пользователя только доступ к порту 22:
sudo firewall-cmd —zone=public —add-rich-rule ‘rule family=»ipv4″ source address=135.152.53.5 port port=22 protocol=tcp reject’
Посмотреть все расширенные правила можно командой:
sudo firewall-cmd —list-rich-rules
Выводы
В этой статье мы разобрали, как выполняется настройка firewall в CentOS 7 и какие задачи можно с помощью него выполнить. Программой намного проще пользоваться, чем iptables, но по моему мнению надстройка фаервола от Ubuntu — ufw ещё проще в использовании.
Первичная настройка VDS на CentOS
Конфигурация сервера на CentOS зависит от задач, которые будет решать администратор. Однако есть базовые настройки, которые приходится выполнять вне зависимости от того, как будет в дальнейшем использоваться VDS. Речь идет об установке обновлений и региональных параметров, а также защите сервера.
В качестве примера настроим VDS с CentOS на Timeweb. Провайдер предоставляет удобную панель с консолью, которая поможет установить все необходимые параметры работы сервера.
Обновление системы CentOS
Сразу после установки обновляем систему. Открываем панель управления сервера, переходим на вкладку «Консоль» и авторизируемся под теми данными, которые хостер прислал в письме при создании сервера. Выполняем команду для обновления:
Важно: yum — пакетный менеджер, который используется в CentOS 7. В CentOS 8 вместо него уже dnf, но можно писать и yum — поддержка осталась.
Настройка автоматического обновления CentOS
Чтобы безопасность сервера была на высоком уровне, необходимо постоянно обновлять ядро с системными утилитами и сторонние пакеты. Необязательно ставить обновления в автоматическом режиме, достаточно просто проверять их наличие.
Автоматическая проверка обновления настраивается по-разному в зависимости от версии ОС. В CentsOS 7 используется утилита yum-cron. Устанавливается она из стандартного репозитория.
После установки создается задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly. По умолчанию yum-cron скачивает обнаруженные обновления, но не устанавливает их. Администратор получает на локальный почтовый ящик письмо с информацией о наличии апдейтов. Дальше он сам решает, стоит ли их ставить.
Работа yum-cron настраивается через конфигурационные файлы, расположенные по адресу /etc/yum/yum-cron.conf и /etc/yum/yum-cron-hourly.conf. Например, можно указать параметры отправки сообщения, в том числе настроить использование стороннего почтового сервера.
На CentOS 8 для настройки обновлений используется утилита dnf-automatic. Первым делом ее нужно установить из стандартного репозитория:
Управляет запуском проверки обновлений по расписанию уже утилита systemd, у которой есть встроенный планировщик. Посмотрим таймеры автоматического запуска:
Если заданий нет, добавим таймер вручную:
По умолчанию таймер настроен на запуск dnf-automatic через час после загрузки VDS и ежедневное повторение процедуры. Конфигурационный файл таймера расположен по адресу /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.
Посмотреть и отредактировать конфигурационный файл dnf-automatic можно в /etc/dnf/automatic.conf. По умолчанию утилита только скачивает обновления, но не применяет их. Конфиги можно настроить так, как вам удобно.
Настройка времени
Сначала узнаем, какое время настроено на сервере по умолчанию. Для этого выполняем команду
Изменить часовой пояс можно с помощью специальной утилиты, которая входит в состав systemd
Следующий шаг — проверка статуса службы обновления времени. Для этого выполняем команду
В CentOS для синхронизации времени с интернетом есть утилита chrony. В стандартной сборке она установлена по умолчанию, в минимальной конфигурации ОС ее нет.
Как видно из скриншота выше, на этом сервере время не синхронизируется. Установим утилиту chrony вручную:
Затем запускаем chrony и добавляем ее в список автозагрузки.
Проверяем статус утилиты.
Обращаем внимание на следующие строки:
System clock synchronized — должно быть значение «yes».
NTP service — должно быть значение «active».
После запуска утилиты chrony часы будут автоматически синхронизироваться с сервером времени в интернете.
VDS с бесплатным администрированием и поддержкой 24/7. Дарим 200 рублей на тест
Протестируй VDS Timeweb бесплатно: закажи сервер, сообщи поддержке промокод community200 и получи 200 рублей на баланс.
Настройка файрвола
Для защиты сервера от внешних угроз нужно настроить разрешения для входящего и исходящего трафика. Используем для этого iptables. Он запущен по умолчанию. Проверим текущие правила командой
Важно: прежде чем настраивать файрвол, проверяем наличие доступа к консоли сервера. В противном случае ошибка может привести к тому, что вы не сможете подключиться к VDS, так как межсетевой экран закроет порты.
В CentOS 7 для управления межсетевым экраном появилась новая утилита — firewalld. По сути, это надстройка над iptables. Ее можно отключить и воспользоваться файлом с правилами.
Ставим утилиты для iptables:
Создаем новый файл /etc/iptables.sh и добавляем в него следующие правила:
Это один из вариантов самописного скрипта для файрвола CentOS, который сделает использование системы на сервере более безопасным.
Затем делаем файл со скриптом исполняемым:
Проверяем, что правила теперь применяются:
Настройка SSH
Настраивать SSH нужно не только для безопасности, но и для удобства. По умолчанию SSH работает на 22 порту. Если его не поменять, то на сервере будет зафиксированы многочисленные попытки авторизации — это боты сканируют интернет и пытаются подобрать пароли к серверам. В реальности это не так опасно, но все равно отнимает ресурсы VDS, пусть и мизерные. Избавиться от подобной активности помогает простая смена номера порта.
Открываем файл /etc/ssh/sshd_config для редактирования:
В строке Port 22 убираем комментарий и меняем значение — с 22 на 51452 или другое.
Теперь нужно разрешить доступ к этому порту в файрволе. Открываем файл /etc/iptables.sh, находим строку $IPT -A INPUT -i $WAN -p tcp —dport 22 -j ACCEPT и вместо «22» вписываем «51452» или другой номер, который ранее назначили в конфиге SSH.
Для применения изменений перезапускаем sshd:
Подключение репозиториев в CentOS
В стандартной сборке есть не весь софт, который может понадобиться при разработке проекта. Чтобы инсталлировать дополнительное ПО, нужно предварительно подключить репозитории. Самый популярный вариант для CentOS — EPEL. Добавить его можно из стандартного репозитория одной командой
На CentOS 7 также полезным будет репозиторий REMI, который позволяет установить более свежие версии PHP по сравнению с теми, что есть в стандартном репозитории. Выполняем команду
Этих двух репозиториев хватает для выполнения стандартных задач. Другие подключаются уже под конкретные нужды, которые возникают при работе с сервером.
Настройка хранения истории
В стандартных настройках хранения истории команд есть ряд ограничений, которые делают ее использование неудобным:
сохраняется только последняя тысяча команд;
нет дат, только список в порядке выполнения;
файл со списком обновляется после завершения сессии, при параллельных сессиях часть команд может оказаться утерянной;
сохраняются все команды, хотя в хранении некоторых из них нет никакого смысла.
Список выполненных команд хранится в домашней директории в файле .bash_history. Его можно посмотреть через любой редактор. Для вывода списка можно выполнить в консоли следующую команду:
На экране появится пронумерованный список. Быстро перейти к конкретной команде можно с помощью фильтрации, например, так:
Этот запрос выделит все запуски команды yum, которые доступны в истории.
На этом базовую настройку VDS с CentOS на борту можно считать завершенной.