IPTables правила для MySQL

Если в iptables блокируются все входящие соединения (INPUT DROP) и чтобы открыть внешний доступ к MySQL необходимо добавить правила:

iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

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

sudo iptables -nvL

Замечу, для того чтобы открыть внешний доступ, также нужно в конфигурационном файле my.cnf закомментировать строку «bind-address = 127.0.0.1».

Если по умолчанию INPUT ACCEPT, то сначала укажем с каких IP разрешен доступ, а только последним правилом заблокируем всем остальным:

/sbin/iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port 3306 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.5 -p tcp --destination-port 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

Например используя nmap можно проверить локально и внешне фильтруется ли доступ:

nmap -p 3306 localhost
nmap -p 3306 192.168.1.5

Смотри также:
Настройка IPTables
Другие мои статьи о MySQL

Решение ошибки «md: kicking non-fresh sda1 from array»

Был когда-то случай, выпал из рейда один диск и при загрузке сервера в логах отображалось сообщение:

md: kicking non-fresh sda1 from array

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

В моем случае диск был полностью рабочий, поэтому посмотрев информацию о рейде:

cat /proc/mdstat
mdadm --detail /dev/md0

Вернул его обратно в рейд:

mdadm /dev/md0 -a /dev/sda1

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

Смотрите также:
Диагностика HDD используя smartmontools
mdadm — утилита управления программными RAID массивами
Решение проблемы с выпавшими дисками mdadm

Установка и использование jnettop

jnettop — утилита для просмотра статистики трафика в реальном времени, с сортировкой по хостам/портам.

Команда установки в Ubuntu/Debian:

sudo apt-get install jnettop

Команда установки в CentOS:

sudo yum install jnettop

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

sudo jnettop

Пример запуска с указанием сетевого интерфейса:

sudo jnettop -i eth0

Опишу возможные опции запуска:
-h (справка)
-v (просмотр версии)
-c (отключить фильтрацию контента)
-d (записывать отладочную информацию в файл)
-f (чтение конфигурации из файла, если не указано, то файл ищется по пути ~/.jnettop)
-i (захватить пакеты с указанного интерфейса)
—local-aggr [none|host|port|host+port] (установить локальное агрегирование на указанное значение)
—remote-aggr [none|host|port|host+port] (установить удаленное агрегирование на указанное значение)
-n (не преобразовывать IP в DNS имена)
-p (включение неразборчивого режима, чтобы принимать все пакеты которые приходят на сетевой интерфейс)
-s (выбирает одно из правил, определенных в файле конфигурации .jnettop (по его имени))
-x (позволяет специфицировать правило пользовательской фильтрации. это позволяет использовать синтаксис стиля tcpdump. не забудьте включить фильтр в кавычки при запуске из оболочки)

Решение предупреждения Asterisk «leave_voicemail: No more messages possible»

Заметил на одном из серверов следующую ошибку:

WARNING[21992][C-00000b27]: app_voicemail.c:6559 leave_voicemail: No more messages possible

Оказалось что почтовый ящик переполнен голосовыми сообщениями и они перестали сохранятся, в ответ звонящему сообщалось «Голосовой ящик абонента переполнен».

Чтобы решить эту проблему есть несколько вариантов:

1) Удалить сообщения в голосовом ящике, позвонив на номер голосовой почты.

2) Увеличить значение maxmsg в файле voicemail.conf, тем самым увеличив максимальное количество сообщений в почтовом ящике, но опять же он может быть переполнен. После изменений в файле voicemail.conf нужно их применить:

sudo asterisk -rvv
voicemail reload
quit

3) В контексте голосового ящика добавить delete=yes, например:

[voicemailcontext]
207 => 1111,Username,test@example.com,,attach=yes|tz=ua|delete=yes

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

Смотрите также:
Настройка голосовой почты в Asterisk

IPTables правила для FTP сервера

Чтобы открыть доступ к FTP серверу в IPTables необходимо добавить правила:

sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1024:1030 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 192.168.1.0/24:

sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 21 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1024:1030 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -D OUTPUT -p tcp --sport 20 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 1024:1030 -j ACCEPT

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

sudo iptables -nvL

1024-1030 — пример портов для пассивного режима, указываются в конфигурации FTP сервера, например для ProFTPd указываются в файле /etc/proftpd/proftpd.conf так:

PassivePorts 1024 1030

Смотри также мои статьи:
Настройка IPTables
Активный и пассивный режим работы FTP
Установка и настройка Pure-FTPd в Ubuntu
Установка и настройка ProFTPd в Ubuntu

IPTables правила для Samba

Чтобы открыть доступ к Samba в IPTables необходимо добавить сразу четыре правила:

sudo iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 192.168.1.0/24:

sudo iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -j ACCEPT

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

sudo iptables -nvL

Смотри также мои статьи:
Настройка IPTables
Установка и настройка Samba в Linux

IPTables правила для Asterisk

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

sudo iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

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

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 10000:20000 -j ACCEPT

Аналогично укажем для каждого IP либо сразу для подсети, например:

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

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

sudo iptables -nvL

Смотри также мои статьи:
IPTables правила для Asterisk AMI
Настройка IPTables

Решение ошибки «insserv: warning: script ‘script’ missing LSB tags and overrides»

Заметил однажды следующую ошибку:

insserv: warning: script ‘MyScript.sh’ missing LSB tags and overrides

Она появляется из-за того, что кто-то при написании скрипта /etc/init.d/MyScript.sh забыл написать вначале LSB тэги.

Чтобы это исправить я открыл код скрипта в текстовом редакторе (в редакторе nano Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/init.d/MyScript.sh

И добавил в начале:

### BEGIN INIT INFO
# Provides:          MyScript
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

Смотрите также:
Автозагрузка программ в Ubuntu