При настройке iptables лучше записывать отброшенные (запрещенные) пакеты в журнал.
Для этого нужно в самом конце iptables добавить строки, с помощью команд
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -A INPUT -j DROP
, где параметры для предпоследней строки
-m limit: задает наличие правил ограничения. Используется для опции –limit.
–limit 5/min: указывает максимальный предел записи в журнал. Например, подобные пакеты будут записываться 5 раз в минуту. Можно задать 2/second, 2/minute, 2/hour, 2/day. Это помогает, если не хотите замусорить журнал повторяющимися сообщениями.
-j LOG: определяет, что пакеты направляются в LOG, т.е. записан в журнал.
–log-prefix “iptables denied: ” задает префикс в журнале, который будет добавлен в сообщение, которое записывается в /var/log/messages.
–log-level 7 задает стандартный уровень для syslog. Уровень 7 это уровень debug. Можно задать число от 0 до 7. 0 это emergency и 7 это debug, а 4- warning.
Последняя строка определяет, что все пакеты будут сброшены. Возможны два вида команд для сброса пакетов
DROP - пакет просто сбрасывается
REJECT - пакет сбрасывается и отправляется сообщение, почему пакет не доставлен, например
iptables -A INPUT -j REJECT --reject-with port-unreachable
Такие ответные сообщения могут привести к переполнению при DDOS атаке.
Если компьютер находится удаленно, перед заданием правила отброса всех пакетов, надо не забыть задать хотя-бы одно правило удаленного входа, например для SSH с помощью команды
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
В результате в /var/log/messages будут накапливаться сообщения от iptables, что может замусорить системный журнал. Поэтому можно выделить эти сообщения в отдельный файл журнала, для этого в файле /etc/syslog.conf, в конце нужно задать
kern.debug /var/log/iptables.log
,что определяет, что все сообщения с уровнем debug будут записываться в файл /var/log/iptables.log.
Перезапустите службу с помощью
/etc/init.d/syslog restart (для Red Hat/Cent OS/Fedora)
или
/etc/init.d/sysklogd restart (для Debian / Ubuntu)
Чтобы файл журнала не принял гигантских размеров, нужно задать правила ротации для него. Для этого необходимо создать файл /etc/logrotate.d/iptables, и записать в него, например/var/log/iptables.log {
rotate 7
weekly
copytruncate
missingok
notifempty
compress
}
, где
rotate 7 задает количество хранимых файлов 7
weekly задает еженедельную ротацию
compress задает, что старые файлы должны упаковываться.
missingok задает, что отсутствие файла не является ошибкой
notifempty задает, чтобы не хранились пустые файлы
copytruncate задает необходимость очистки файла после создания копии.
Подобное описание нашел в
http://www.thegeekstuff.com/2012/08/iptables-log-packets/
Описание разделения журналаhttp://www.cyberciti.biz/tips/force-iptables-to-log-messages-to-a-different-log-file.html
Для этого нужно в самом конце iptables добавить строки, с помощью команд
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -A INPUT -j DROP
, где параметры для предпоследней строки
-m limit: задает наличие правил ограничения. Используется для опции –limit.
–limit 5/min: указывает максимальный предел записи в журнал. Например, подобные пакеты будут записываться 5 раз в минуту. Можно задать 2/second, 2/minute, 2/hour, 2/day. Это помогает, если не хотите замусорить журнал повторяющимися сообщениями.
-j LOG: определяет, что пакеты направляются в LOG, т.е. записан в журнал.
–log-prefix “iptables denied: ” задает префикс в журнале, который будет добавлен в сообщение, которое записывается в /var/log/messages.
–log-level 7 задает стандартный уровень для syslog. Уровень 7 это уровень debug. Можно задать число от 0 до 7. 0 это emergency и 7 это debug, а 4- warning.
Последняя строка определяет, что все пакеты будут сброшены. Возможны два вида команд для сброса пакетов
DROP - пакет просто сбрасывается
REJECT - пакет сбрасывается и отправляется сообщение, почему пакет не доставлен, например
iptables -A INPUT -j REJECT --reject-with port-unreachable
Такие ответные сообщения могут привести к переполнению при DDOS атаке.
Если компьютер находится удаленно, перед заданием правила отброса всех пакетов, надо не забыть задать хотя-бы одно правило удаленного входа, например для SSH с помощью команды
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
В результате в /var/log/messages будут накапливаться сообщения от iptables, что может замусорить системный журнал. Поэтому можно выделить эти сообщения в отдельный файл журнала, для этого в файле /etc/syslog.conf, в конце нужно задать
kern.debug /var/log/iptables.log
,что определяет, что все сообщения с уровнем debug будут записываться в файл /var/log/iptables.log.
Перезапустите службу с помощью
/etc/init.d/syslog restart (для Red Hat/Cent OS/Fedora)
или
/etc/init.d/sysklogd restart (для Debian / Ubuntu)
Чтобы файл журнала не принял гигантских размеров, нужно задать правила ротации для него. Для этого необходимо создать файл /etc/logrotate.d/iptables, и записать в него, например/var/log/iptables.log {
rotate 7
weekly
copytruncate
missingok
notifempty
compress
}
, где
rotate 7 задает количество хранимых файлов 7
weekly задает еженедельную ротацию
compress задает, что старые файлы должны упаковываться.
missingok задает, что отсутствие файла не является ошибкой
notifempty задает, чтобы не хранились пустые файлы
copytruncate задает необходимость очистки файла после создания копии.
Подобное описание нашел в
http://www.thegeekstuff.com/2012/08/iptables-log-packets/
Описание разделения журналаhttp://www.cyberciti.biz/tips/force-iptables-to-log-messages-to-a-different-log-file.html
http://blog.shadypixel.com/log-iptables-messages-to-a-separate-file-with-rsyslog/
Коментарі
Дописати коментар