Настройка интернет шлюза на centos

Работа с Firewalld Zones

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

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

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

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

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

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

Если вы хотите проверить настройки всех доступных зон, введите:

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

Изменение зоны интерфейса

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

   Проверьте изменения, набрав:

Изменение зоны по умолчанию

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

Например, чтобы изменить зону по умолчанию на домашнюю, вы должны выполнить следующую команду:

Проверьте изменения с помощью:

Firewalld Runtime и постоянные настройки

Firewalld использует два отдельных набора конфигурации, среду выполнения и постоянную конфигурацию.

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

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

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.

Вступление

Iptables в настоящее время является стандартом де-факто в среде современных linux дистрибутивов. Я даже сходу не могу припомнить, что еще используют в качестве фаервола. Так что любому администратору линукс приходится сталкиваться в своей работе с настройкой этого межсетевого экрана.

К этому фаерволу существуют разные обвязки, которые используются для более «удобной» настройки. В ubuntu есть ufw, в centos — firewalld, с другими не знаком. Лично я не вижу никакого удобства в использовании этих инструментов. Я привык настраивать линуксовый фаервол по-старинке, как научился в самом начале работы. Мне кажется это наиболее простым и удобным способом, которым я с вами и поделюсь. Суть его сводится к тому, что создается скрипт с правилами фаервола. Этот скрипт можно легко редактировать под свои нужды и переносить с сервера на сервер.

Пример настройки NAT (шлюза)

Включить маскарадинг:

firewall-cmd —permanent —zone=dmz —add-masquerade

* без указания зон, будет включен для public и external.

Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:

firewall-cmd —permanent —direct —add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE

* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция —direct требуется перед всеми пользовательскими правилами (—passthrough, —add-chain, —remove-chain, —query-chain, —get-chains, —add-rule, —remove-rule, —query-rule, —get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT

* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state —state RELATED,ESTABLISHED -j ACCEPT

* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).

systemctl restart firewalld

* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.

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

firewall-cmd —direct —get-all-rules

Как установить Apache (HTTPD) на CentOs 7

Я только что установил CentOS 7:

 [root @ new ~] # cat / etc / redhat-release CentOS Linux, выпуск 7.1.1503 (Core) 

Я пытаюсь настроить брандмауэр, и мне сказали, что в CentOS 7 iptables больше не используется, заменен firewalld. При попытке запустить команду для установки правила брандмауэра как такового:

 брандмауэр-cmd --add-порт = 80 / TCP 

Я получаю следующее сообщение:

 [root @ new ~] # firewall-cmd --add-port = 80 / tcp -bash: firewall-cmd: команда не найдена 

редактировать: Я тоже пробовал следующую команду:

 [root @ new ~] # firewall-offline-cmd --add-port = 80 / tcp -bash: firewall-offline-cmd: команда не найдена 

безуспешно.

Я попытался запустить следующее, чтобы убедиться, что firewalld установлен:

 [root @ new ~] # service firewalld status Перенаправление в / bin / systemctl status firewalld.service firewalld.service Загружено: не найдено (Причина: нет такого файла или каталога) Активно: неактивно (мертв) 

После этого вывода я попытался запустить firewalld:

 [root @ new ~] # service firewalld start Перенаправление на / bin / systemctl start firewalld.service Не удалось выполнить вызов метода: не удалось загрузить модуль firewalld.service: нет такого файла или каталога. 

Есть идеи, что не так с установкой CentOS 7? Это чистая установка на OpenVZ VPS, я еще не внес никаких изменений.

  • Ты пробовал установка firewalld?
  • @MichaelHampton … Самый крупный фейспалм за неделю … Я предположил, что, поскольку служебные команды не возвращают «не найден», как я видел на debian, он был установлен, но не настроен или что-то в этом роде, но вы правильно, похоже, он не установлен.
  • Шаблон CentOS по умолчанию OpenVZ нестандартен; он сильно настроен и урезан. (То же самое и со всеми другими их шаблонами.) Если чего-то не хватает, попробуйте установить это. И как можно скорее прекратите использовать провайдеров VPS на базе OpenVZ; вы только столкнетесь с другими проблемами позже …
  • @MichaelHampton Ах, это имеет смысл, спасибо, мне было интересно, почему он не был предустановлен по умолчанию.

Два возможных варианта

  • Ваш PATH не содержит / usr / bin
  • firewall-cmd не установлен

Как было сказано выше @MichaelHampton, шаблон CentOS 7 OpenVZ урезан и по умолчанию не включает firewalld. Ответ, конечно же, установить firewalld.

Мне кажется, что у вас он не установлен / не включен.

  • По сути, это то же самое, что и предыдущий ответ.
  • 9 Этот ответ добавляет ценности, показывая команды для включения и запуска службы. Я поддержал оба ответа.
  • Хотя я только что обнаружил, что услуга по умолчанию.

Попробуйте вместо этого инструмент с графическим интерфейсом, эта утилита по умолчанию поставляется с centos 6/7. firewalld устарел после centos5

или

  • 2 Это наоборот. В CentOS 7 firewalld используется по умолчанию, а system-config-firewall устарел.
  • В моем случае решением было установить firewalld, он не поставляется с образом OpenVZ. Кроме того, инструмент с графическим интерфейсом недоступен (по крайней мере, легко) на автономном сервере.

Tweet
Share
Link
Plus
Send
Send
Pin

Настройка и запуск агента

Настроим запуск агента в качестве сервиса. Для этого мы создадим юнит в systemd.

Создаем учетную запись, от которой будет работать агент:

useradd -r -c ‘Consul Agent’ consul

* в данном примере мы создадим системную (-r) учетную запись consul. Для удобства восприятия мы также добавим комментарий (-c).

Создаем каталоги для приложения консул:

mkdir -p /var/lib/consul /etc/consul.d

И выставим на них соответствующие права:

chown consul:consul /var/lib/consul /etc/consul.d

chmod 775 /var/lib/consul /etc/consul.d

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

Создаем конфигурационный файл:

vi /etc/consul.d/config.json

{
  «server»: false,
  «datacenter»: «dc1»,
  «node_name»: «agent01»,
  «data_dir»: «/var/lib/consul»,
  «bind_addr»: «192.168.0.100»,
  «client_addr»: «127.0.0.1»,
  «retry_join»: ,
  «encrypt»: «zpjf5a4reDbJFpT6FeaF0LGxD0zBRPSRbIoUkLBt0ps=»,
  «log_level»: «warn»,
  «enable_syslog»: true,
  «telemetry»: {
    «disable_compat_1.9»: true
  }
}

* где:

  • server — указывает на использование серверного режима. При значении false используется режим клиента.
  • datacenter — датацентр, к которому будет присоединяться участник кластера. dc1 — датацентр по умолчанию.
  • node_name — имя, которым будет представлен узел в кластере.
  • data_dir — каталог на компьютере, который будет использоваться консулом для хранения своей информации.
  • bind_addr — IP-адрес, на котором будет слушать сервис.
  • client_addr — адрес, к которому будут привязаны клиентские интерфейсы. На практике, были проблемы при указании нескольких адресов. Проблема не наблюдается при использовании 127.0.0.1 для client_addr и внешнего сетевого адреса для bind_addr.
  • retry_join — список серверов консула, к которым должен присоединиться агент.
  • encrypt — ключ, который был сформирован для серверов консул и используется в качестве значения параметра encrypt (его можно посмотреть в конфигурационном файле на сервере consul).
  • log_level — уровень логирования. Возможны варианты trace, debug, info, warn, err. По умолчанию используется info.
  • enable_syslog — вести ли системный лог.
  • disable_compat_1.9 — запрещает все метрики, которые объявлены устаревшими, начиная с версии 1.9.

Проверяем корректность настройки:

consul validate /etc/consul.d/

Мы должны увидеть:

Configuration is valid!

Продолжаем. Создаем юнит в systemd:

vi /etc/systemd/system/consul.service

Description=Consul client agent
Requires=network-online.target
After=network-online.target

User=consul
Group=consul
PIDFile=/var/run/consul/consul.pid
RuntimeDirectory=consul
ExecStart=/usr/bin/consul agent \
    -config-dir=/etc/consul.d \
    -pid-file=/var/run/consul/consul.pid
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
RestartSec=42s

WantedBy=multi-user.target

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем автозапуск сервиса, стартуем его и проверяем статус:

systemctl enable consul

systemctl start consul

systemctl status consul

На любом из узлов кластера выполним:

consul members

Среди членов кластера мы должны увидеть свой компьютер, например:


agent01                 192.168.0.100:8301  alive   client  1.10.2  2         dc1  <default>

С агентом завершили.

Преимущества firewalld

Основное преимущество — вы немного абстрагируетесь от цепочек iptables.Для включения перенаправления портов не придется думать про PREROUTING или POSTROUTING в дополнение к FORWARD. Вам дается «API от iptables от производителя», что-то в этом роде

Если вы включили nat, то неважно, где конкретно (под каким порядковым номером текущих правил) размещено правило. Вы просто указываете — включи nat на eth0

И без глупостей ;) Это может быть удобно, если надо организовать web интерфейс управления брандмауэром.

Есть возможность проверить статус (например, включен nat или нет!). И также использовать это в своих скриптах, в логике вашего приложения, например. Я не знаю, как в iptables создать именно запрос статуса (вкл/выкл). Можно, конечно, что-то в роде iptables -L -t nat | grep ‘…’, но согласитесь, это немного не то же самое, что выполнить ‘firewall-cmd —zone=external —query-masquerade’. Есть, к примеру, сотни VM с CentOS, в которых могут немного отличаться названия wan интерфейсов или еще что-то в этом роде. А так вы имеете универсальный командлет, который даст ожидаемый результат на разных машинах.

Задание зон для сетевых интерфейсов

Изначально все интерфейсы расположены в зоне по умолчанию.

Изменение зоны интерфейса

Можно перевести интерфейс в другую зону с помощью комбинации параметров и . Как и во всех командах для изменения настроек брандмауэра, используйте sudo.

Например, чтобы переместить интерфейс в зону home, введите:

sudo firewall-cmd --zone=home --change-interface=eth0

Ответ:

success

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

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

firewall-cmd --get-active-zones

Ответ:

home
  interfaces: eth0
public
  interfaces: eth1

Изменение зоны по умолчанию

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

Для этого используется параметр . Тогда все интерфейсы зоны по умолчанию будут привязаны к новой зоне:

sudo firewall-cmd --set-default-zone=home

Ответ:

success

ERROR: WAL level not sufficient for making an online backup

Вы хотите настроить онлайн бэкап, например с помощью команды

-bash-4.2$ psql -c «SELECT pg_start_backup(‘replbackup’);»

Но получаете ошибку

ERROR: WAL level not sufficient for making an online backup

HINT: wal_level must be set to «archive» or «hot_standby» at server start.

Нужно узнать расположение конфигурационного файла

postgresql.conf

-bash-4.2$ su — postgres -c «psql -c ‘SHOW config_file;'»

Password:
config_file
————————————-
/var/lib/pgsql/data/postgresql.conf
(1 row)

vi /var/lib/pgsql/data/postgresql.conf

Нужно установить wal_level = hot_standby

ERROR: date/time field value out of range

Если вы пытаетесь прочитать из .csv файла, а получаете

ERROR: date/time field value out of range: «» HINT: Perhaps you need a different «datestyle» setting. CONTEXT: «» SQL state: 22008

Скорее всего ваш текущий datestyle не совпадает с тем, который используется в .csv файле.

datestyle — это порядок записи даты. Может быть День — Месяц — Год (DDMMYYYY), Год — Месяц — День (YYYYMMDD) или,
например американский стиль Месяц — День — Год (MMDDYYYY)

Это всё актуально если тип столбца указан как дата date. Можно изменить тип на char тогда datestyle уже не нужно настраивать.

Стилей много и если они не совпадают — получается что месяц принимает значение больше 12.

Как вариант — можно перед выполнение скрипта временно изменить свой datestyle.

Например, если нужно импортировать данные из .csv с американским стилем — перед импортом добавьте

set datestyle to «US»;

9 ответов

Лучший ответ

В разрешении отказано

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

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

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

… который будет перечислять разрешения READ, WRITE и EXECUTE для владельца файла, владельца группы и всех остальных, кто не является владельцем файла или членом группы, к которой принадлежит файл (эта последняя группа разрешений иногда упоминается как «мир» или «другое»)

Вот краткое описание того, как устранить ошибку Permission Denied в вашем случае.

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

Команда исправляет это. (Группа и другие имеют разрешение только на чтение для файла, они не могут писать в него или выполнять его)

Foo.sh теперь является исполняемым для Linux.

Использование sudo приводит к тому, что команда не найдена

Когда вы запускаете команду с помощью sudo , вы фактически запускаете ее как суперпользователь или root.

Причина того, что пользователь root не находит вашу команду, вероятно, состоит в том, что переменная среды для root не включает каталог, в котором находится . Следовательно, команда не найдена.

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

Вот пример вывода вышеупомянутой команды сначала от имени обычного пользователя, а затем от имени пользователя root с помощью sudo

Обратите внимание, что, хотя и похоже, в этом случае каталоги, содержащиеся в PATH для непривилегированного пользователя (rkielty) и суперпользователя, не совпадают. Каталог, в котором находится , отсутствует в переменной PATH пользователя root, поэтому ошибка команда не найдена

Каталог, в котором находится , отсутствует в переменной PATH пользователя root, поэтому ошибка команда не найдена .

173

Rob Kielty
7 Дек 2013 в 01:57

Кажется, команда не найдена

Чтобы проверить, установлен ли пакет sudo в вашей системе, введите и нажмите Enter. Если вы установили , система отобразит короткое справочное сообщение, в противном случае вы увидите что-то вроде

Чтобы установить sudo, выполните одну из следующих команд, используя учетную запись root:

# Если ваша система основана на подходящем диспетчере пакетов

# Если ваша система основана на менеджере пакетов yum

-2

Khaled Eid
15 Сен 2020 в 21:50

Хорошо, это мое решение: в ~ / .bash_aliases просто добавьте следующее:

Вуаля! Теперь вы можете выполнять свои собственные сценарии с помощью sudo или устанавливать как ROOT, не выполняя каждый раз экспорт PATH = $ PATH: / home / your_user / bin.

Обратите внимание, что мне нужно указывать явно при добавлении моего PATH, поскольку HOME для суперпользователя — / root

1

Fernando D Jaime
1 Июн 2016 в 03:56

Попробуйте вместо , если у вас возникли проблемы с указанными выше руководствами. Это сработало для меня, когда другие решения не работали.

3

Peter David Carter
13 Июл 2017 в 15:09

Кажется, что linux скажет «команда не найдена», даже если вы явно укажете путь к файлу.

Это несколько вводящая в заблуждение ошибка, но, вероятно, технически правильная. Файл не является командой до тех пор, пока не будет исполнен, и поэтому не может быть найден.

3

Jeff MacDonald
28 Июл 2015 в 13:56

Вы также можете создать мягкую ссылку на свой сценарий в одном из каталогов (например, ) в PATH суперпользователя. Затем он будет доступен для sudo.

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

6

Rob Kielty
18 Май 2017 в 00:16

  1. Убедитесь, что у вас есть разрешение на выполнение сценария. т.е.
  2. Убедитесь, что первая строка этого сценария — или что-то в этом роде.
  3. Для sudo вы находитесь в неправильном каталоге. уточняйте у

7

Ed Heal
21 Окт 2012 в 09:08

Проверьте secure_path в sudo

Если переопределяется, используйте и отредактируйте

26

codemonkee
25 Сен 2013 в 03:11

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

Фактически, из него можно сделать псевдоним:

(Также возможно назвать сам псевдоним , заменив исходный .)

116

Tom
1 Апр 2015 в 20:53

Установка и подключение брандмауэра для запуска при загрузке

На некоторых дистрибутивах Linux, включая многие образы CentOS 7, FirewallD установлен по умолчанию. Однако, если необходимо установить FirewallD, выполните следующую команду:

sudo yum install -y firewalld

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

sudo systemctl enable firewalld 
sudo reboot

При перезапуске сервера брандмауэр будет запущен и поместит сетевые интерфейсы в сконфигурированные зонаы (или переключится на зону по умолчанию), любые правила, связанные с зоной/зонами, будут применены к соответствующим интерфейсам.

Проверить, что сервис запущен и доступен можно с помощью:

sudo firewall-cmd --state

Ответ:

running

Теперь брандмауэр запущен и работает согласно конфигурации по умолчанию.

Настройка 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:

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

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

В дефолтной установке системы CentOS 7, весь ваш системный лог /var/log/messages через некоторое время работы сервера будет забит следующими записями.

Oct 16 14:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 14:01:01 xs-files systemd: Started Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Starting Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 15:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 15:01:01 xs-files systemd: Started Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Started Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 16:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 16:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 16:01:01 xs-files systemd: Started Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Starting Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Removed slice user-0.slice.

Никакой практической пользы они не несут, поэтому отключим их. Для этого создадим отдельное правило для rsyslog, где перечислим все шаблоны сообщений, которые будем вырезать. Разместим это правило в отдельном файле /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# 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

Сохраняем файл и перезапускаем rsyslog для применения настроек.

# systemctl restart rsyslog

Необходимо понимать, что в данном случае мы отключаем флуд в лог файл только на локальном сервере. Если вы храните логи на удаленном syslog сервере, то данное правило нужно будет настраивать именно на нем.

Создание набора правил с помощью FirewallD

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

  1. Измените зону по умолчанию на dmz

    Мы будем использовать зону dmz (demilitarized), потому что по умолчанию она разрешает только SSH-трафик. Чтобы изменить зону по умолчанию на dmz и назначить ее интерфейсу , выполните следующие команды:

    Откройте порты HTTP и HTTPS:

    Чтобы открыть порты HTTP и HTTPS, добавьте правила постоянного обслуживания в зону dmz:

    Чтобы изменения вступили в силу немедленно, перезагрузите брандмауэр:

    Проверьте изменения

    Чтобы проверить параметры конфигурации зоны dmz, введите:

    Вывод выше говорит нам, что dmz является зоной по умолчанию, применяется к интерфейсу и порты ssh (22) http (80) и https (443) открыты.

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

Дальше внесем некоторые изменения в работу ssh для увеличения безопасности. По-умолчанию, сервис работает на 22 порту и если все оставить как есть, то мы получим огромное количество попыток авторизоваться. Боты сканят непрерывно интернет и подбирают пароли к ssh. Чтобы обезопасить себя от сканов простых ботов, изменим порт, на котором работает ssh. Можно выбрать любой пятизначный номер, это не принципиально. От автоматического сканирования это защитит. Повесим демон ssh на 25333 порт. Для этого редактируем файл /etc/ssh/sshd_config

# mcedit /etc/ssh/sshd_config

Раскомментируем строку Port 22 и заменим значение 22 на 25333. Так же я обычно разрешаю подключаться по ssh пользователю root. Мне так удобнее. Проблем с этим у меня никогда не возникало. Если вы считаете, что это не безопасно, не трогайте эту настройку. Чтобы разрешить пользователю root подключаться по ssh, раскомментируйте строку PermitRootLogin yes.

Сохраняем файл. Теперь обязательно изменяем настройки iptables, добавляем в разрешенные подключения вместо 22 порта 25333. Если этого не сделать, то после перезапуска sshd мы потеряем удаленный доступ к серверу. Итак, открываем /etc/iptables_rules.sh и меняем в строке

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

22 на 25333 и исполняем файл. Наше текущее соединение не оборвется, так как оно уже установлено, но заново подключиться по ssh к 22 порту уже н получится.

Перезапускаем sshd:

# systemctl restart sshd

Проверяем какой порт слушает sshd:

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

Если вывод такой же как у меня, то все в порядке, теперь к ssh можно подключаться по 25333 порту.

Добавим еще одну небольшую настройку. Иногда, когда возникают проблемы с dns сервером, логин по ssh подвисает на 30-60 секунд. Вы просто ждете после ввода логина, когда появится возможность ввести пароль. Чтобы избежать этого замедления, укажем ssh не использовать dns в своей работе. Для этого в конфиге раскомментируем строку с параметром UseDNS и отключим его. По-умолчанию он включен.

UseDNS no

Для применения изменений нужно перезапустить ssh службу, как мы уже делали ранее.

Общие команды для управления firewalld

Посмотреть состояние:

firewall-cmd —state

Мягко перечитать правила (применить настройки):

firewall-cmd —reload

Перечитать правила и сбросить текущие подключения:

firewall-cmd —complete-reload

* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld.

Посмотреть созданные правила:

firewall-cmd —list-all

Остановить службу:

systemctl stop firewalld

Запустить сервис:

systemctl start firewalld

Запретить автозапуск:

systemctl disable firewalld

Разрешить автозапуск:

systemctl enable firewalld

Сохранить текущие правила, сделав их постоянными (permanent):

firewall-cmd —runtime-to-permanent

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

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