Отключить IPv6 на Linux

Если адреса IPv6 не используется на компьютере или сервере с Linux, то стоит отключить их функционал совсем. Это необходимо для обеспечения безопасности. Потому что можно забыть настроить правило фаервола для IPv6, сделав это для IPv4.

Отключение IPv6 на работающей системе

Для отключения поддержки IPv6 в системе необходимо перейти в файл конфигурации /etc/sysctl.conf от лица суперпользователя и прописать в конце файла следующие строки:
# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
После чего необходимо сохранить изменения в файле и можно перезапустить службу:
sudo sysctl -p
Изменения должны вступить в силу. Для проверки можно выполнить три следующие команды:
$ sysctl net.ipv6.conf.all.disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1

$ sysctl net.ipv6.conf.default.disable_ipv6
net.ipv6.conf.default.disable_ipv6 = 1

$ sysctl net.ipv6.conf.lo.disable_ipv6
net.ipv6.conf.lo.disable_ipv6 = 1
Если после каждого запроса возвращается строка с "= 1", то это означает, что для ядра ОС выставлены параметры, которые не позволяют использовать протокол IPv6.

Обратите внимание, что внесённые изменения в файл настройки будут читаться системой каждый раз во время загрузки. Поэтому IPv6 будет отключена всегда (перезагрузка не сбросит значения). Если нужно отключить IPv6 только для текущего сеанса, то необходимо не менять файл, а выполнить такие три команды:
sysctl -w net.ipv6.conf.all.disable_ipv6
sysctl -w net.ipv6.conf.default.disable_ipv6
sysctl -w net.ipv6.conf.lo.disable_ipv6
- такие изменения будут держаться до следующей загрузки системы.

Отключение ipv6 из автозагрузки

Чтобы не утруждать систему загрузкой библиотек для работы с IPv6 можно отключить их на стадии старта системы. Делается это с помощью передачи параметра загрузчику GRUB. Для этого необходимо открыть от лица суперпользователя файл /etc/default/grub и добавить параметр ipv6.disable=1 в следующие ключи:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
После чего нужно сохранить изменения в файле и обновить GRUB, выполнив команду:
sudo update-grub2

 

systemctl

 

C чего начать поиск неисправности сервера на Linux

 

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

systemctl

Для проверки состояния сервисов на большинстве дистрибутивов linux можно использовать менеджер системных служб под названием "systemd". Для обращения к нему используется несколько команд. Главная из них:
systemctl
Если выполнить эту команду, то будет выведен список всех служб и их статусы. Но для получения общего состояния системы стоит использовать слово "status": 
 
systemctl status
 
Если в системе нет сбоев, то результатом выполнения этой команде будет отчёт, в первых строках которого можно увидеть надпись State: running. Если какая-либо служба завершилась аварийно, то статус будет "деградирован": State: degraded. В таком случае первым делом надо определить, какой же именно юнит сломался. Для этого выполните команду:
systemctl --failed
В консоли будет распечатан список из всех юнитов, которые завершились аварийно: 
 
  UNIT                           LOAD   ACTIVE SUB    DESCRIPTION
● systemd-sysctl.service         loaded failed failed Apply Kernel Variables
● systemd-tmpfiles-setup.service loaded failed failed Create Files
 
Теперь необходимо разобраться с каждым неработающим юнитом отдельно. Для этого испольузется команда:
systemctl status название_сервиса
Проверим так первый нерабочий сервис из нашего списка:
systemctl status systemd-sysctl
Результатом выполнения этой команды будет описание сервиса, его стартовых параметров и некоторые строки из системного журнала.
Записывать полное название юнита не обязательно. Systemctl предполагает, что в конце названий должен быть ".service".
Именно по строкам из системного журнала чаще всего получается определить неисправность. Но порой они бывают слишком длинными, поэтому обрезаются. Чтобы такого не происходило, достаточно добавить ключ "-l" после слова "status":
systemctl status -l systemd-sysctl

journalctl

Если по этой информации не стала ясна причина выключения юнита, то стоит теперь воспользоваться системным журналом. Для этого необходимо ввести команду:
journalctl -b -u название_сервиса
Включ "-b" указывает на то, что надо отобразить только те записи журнала, которые были сделаны с момента последней загрузки. Ключ "-u" фильтрует список, чтобы в него попали сообщения только от нашего нерабочего сервиса "systemd-sysctl". В нашем случае команда получится такая:
journalctl -b -u systemd-sysctl
название_сервиса Таким образом можно получить информацию для начала поиска проблемы с сервером.

Закрываем порт в Linux с помощью iptables

 

Закрываем порт в Linux с помощью iptables

 

 

Если в Linux требуется ограничить доступ к определенному порту, например к порту ssh (22 порт) при этом оставив доступ к этому порту с одного или нескольких ip адресов с этим помогут правила iptables.

/sbin/iptables -I INPUT 1 -s 134.249.114.157 -p tcp -m tcp --dport 22 -j ACCEPT || true
/sbin/iptables -I INPUT 2 -s 185.220.3.222 -p tcp -m tcp --dport 22 -j ACCEPT || true
/sbin/iptables -I INPUT 3 -p tcp -m tcp --dport 22 -j DROP || true


Первые два правила iptables добавляют в цепочку INPUT разрешение на подключение к порту 22 с указанных ip адресов, третье правило iptables закрывает доступ к порту 22 для всех остальных ip адресов.

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

iptables -L -n --line-numbers


В итоге получим ответ по всем цепочкам с правилами:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination        
1    ACCEPT     tcp  --  134.249.114.157      0.0.0.0/0            tcp dpt:22
2    ACCEPT     tcp  --  185.220.3.222        0.0.0.0/0            tcp dpt:22
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination


Если нужно удалить определенное правило iptables, например второе правило и предоставить доступ к VPS серверу с ip адреса 185.220.3.222 выполните команду:

iptables -D INPUT 2


После чего можете повторно проверить список всех правил командой iptables -L -n --line-numbers

Для очистки всех цепочек iptables от всех правил выполните команду:

iptables -F