После установки CSF (ConfigServer Security & Firewall) на Centos6, запущенном в LXC-контейнере на ноде под ProxMox(Debian9) проверка наличия требуемых модулей Iptables для корректной работы CSF не проходит успешно В результате такой проверки отсутствуют некоторые модули,при этом на ноде,на которой размещен LXC-контейнер, эти модули присутствуют(загружены) Установка CSF Более полная версия с необходимы пакетами доступна здесь https://kamaok.org.ua/?p=800 […]
Архивы рубрики ‘Security’
Настройка Fail2ban для защиты WordPress
1.Настройка конфигурационного файла fail2ban
1 |
# grep -E -v '(#|^$)' /etc/fail2ban/fail2ban.conf |
1 2 3 4 5 6 7 8 |
[Definition] loglevel = INFO logtarget = /var/log/fail2ban.log syslogsocket = auto socket = /var/run/fail2ban/fail2ban.sock pidfile = /var/run/fail2ban/fail2ban.pid dbfile = /var/lib/fail2ban/fail2ban.sqlite3 dbpurgeage = 86400 |
2.Настройка Fail2ban-фильтров для мониторинга логов Защита против brutoforce админки
1 |
# nano /etc/fail2ban/filter.d/wordpress-wp-login.conf |
1 2 3 |
[Definition] failregex = .*POST /wp-login.php ignoreregex = |
Защита против атаки brutoforce XMLRPC https://blog.sucuri.net/2015/10/brute-force-amplification-attacks-against-wordpress-xmlrpc.html
1 |
# nano /etc/fail2ban/filter.d/wordpress-wp-xmlrpc.conf |
1 2 3 |
[Definition] failregex = .*POST /xmlrpc.php ignoreregex = |
Защита против проверки возможности создания WordPress-аккаунта
1 |
# nano /etc/fail2ban/filter.d/wordpress-wp-register.conf |
1 2 3 |
[Definition] failregex = ^ .* "GET /wp-login.php\?action=register HTTP/.*" .*$ ignoreregex = |
3. Настройка Fail2ban для мониторинга логов
1 |
# nano /etc/fail2ban/jail.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
[INCLUDES] before = paths-fedora.conf [DEFAULT] ignoreip = 127.0.0.1/8 159.224.XXX.YYY ignorecommand = bantime = 86400 findtime = 7200 maxretry = 5 backend = auto usedns = warn logencoding = auto enabled = false filter = %(__name__)s destemail = myname@mydomain.com sender = root@mydomain.com mta = sendmail protocol = tcp chain = INPUT port = 0:65535 banaction = iptables-multiport action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] action_mw = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"] action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"] action_xarf = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath=%(logpath)s, port="%(port)s"] action_blocklist_de = blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s"] action_badips = badips.py[category="%(name)s", banaction="%(banaction)s"] action = %(action_)s ####Этот блок касается непосредственно защиты Wordpress [wordpress-wp-login] port = http,https logpath = /var/log/nginx/*.log maxretry = 3 enabled = true filter = wordpress-wp-login action = %(action_mwl)s bantime = 86400 findtime = 7200 maxretry = 3 [wordpress-wp-xmlrpc] port = http,https logpath = /var/log/nginx/*.log maxretry = 3 enabled = true filter = wordpress-wp-xmlrpc action = %(action_mwl)s bantime = 86400 findtime = 7200 maxretry = 3 [wordpress-wp-register] port = http,https logpath = /var/log/nginx/*.log maxretry = 3 enabled = true filter = wordpress-wp-register action = %(action_mwl)s bantime = 86400 findtime = 7200 maxretry = 3 |
Перезапускаем fail2ban
1 |
# /etc/init.d/fail2ban restart |
4.Проверка работы фильтра
1 |
# fail2ban-regex /var/log/nginx/mydomain.com.log /etc/fail2ban/filter.d/wordpress-wp-login.conf |
Если необходимо посмотреть строки,которые […]
Интеграция Fail2ban c CSF для защиты WordPress от bruteforce-атак
1. Установка, остановка и удаление с автозагрузки Fail2ban
1 |
# apt-get install fail2ban |
1 |
# service fail2ban stop |
1 |
# update-rc.d -f fail2ban remove |
2.Настройка запуска fail2ban средствами CSF
1 |
# nano /etc/csf/csfpost.sh |
1 2 |
#!/bin/sh /etc/init.d/fail2ban restart |
3.Отклчючение всех фильтров в Fail2ban
1 |
# sed -i "s|enabled = true|enabled = false|g" /etc/fail2ban/jail.conf |
4. Настройка поддержки CSF в Fail2ban
1 |
# nano /etc/fail2ban/action.d/csf-ip-deny.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Definition] actionstart = actionstop = actioncheck = actionban = csf -d <ip> Added by Fail2Ban for <name> # curl https://www.cloudflare.com/api_json.html -d 'a=ban' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>' actionunban = csf -dr <ip> # curl https://www.cloudflare.com/api_json.html -d 'a=nul' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>' # [Init] ###### Default Cloudflare API token # cftoken = XXXXXXXXXXXXXXXXXXXXXXXXXX ###### Default Cloudflare username # cfuser = me@example.com |
Если используется Cloudflare, то расскоментируем все строки с одним знаком комментария 5.Замена для всех фильтров Fail2ban действия блокировки на созданный «csf-ip-deny»
1 |
# sed -i -e "s|banaction = |banaction = csf-ip-deny\n#banaction = |" /etc/fail2ban/jail.conf |
6. […]
Установка и использование Chkrootkit на Centos/Debian
1.Установка chkrootkit Centos
1 |
# yum install chkrootkit |
Просмотр списка файлов установленных пакетом
1 |
# rpm -ql chkrootkit |
Debian
1 |
# apt-get install chkrootkit |
Просмотр списка файлов установленных пакетом
1 |
# apt-file list chkrootkit |
Установка из исходников wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
1 |
# tar -xzfм chkrootkit.tar.gz |
1 |
# cd chkrootkit-* |
Собираем модули
1 |
# make sense |
Запуск shell-скрипта
1 |
# ./chkrootkit |
2.Использование chkrootkit Опции утилиты chkrotkit
1 |
-h |
– просмотр справки
1 |
-V |
– просмотр версии
1 |
-l |
– просмотр списка тестов/проверок, которые […]
Установка и настройка Config Server Firewall на Centos/Debian
1.Установка необходимых зависимостей Config Server Firewall Centos
1 |
# yum install perl-libwww-perl |
1 |
# yum install perl-Time-HiRes |
Debian
1 |
# apt-get install libwww-perl |
1 |
# apt-get install Time-HiRes |
2.Установка Config Server Firewall
1 |
# wget http://www.configserver.com/csf.tgz |
1 |
# tar xvfz csf.tgz |
1 |
# cd csf |
1 |
# sh install.sh |
3.Проверка необходимых модулей iptables
1 |
# perl /usr/local/csf/bin/csftest.pl либо perl /etc/csf/csftest.pl |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Testing ip_tables/iptable_filter...OK Testing ipt_LOG...OK Testing ipt_multiport/xt_multiport...OK Testing ipt_REJECT...OK Testing ipt_state/xt_state...OK Testing ipt_limit/xt_limit...OK Testing ipt_recent...OK Testing xt_connlimit...OK Testing ipt_owner/xt_owner...OK Testing iptable_nat/ipt_REDIRECT...OK Testing iptable_nat/ipt_DNAT...OK RESULT: csf should function on this server |
4.Удаление,если уже были установлены другие firewall, с которыми конфликтует CSF(APF/BFD)
1 |
# sh /usr/local/csf/bin/remove_apf_bfd.sh |
либо
1 |
# sh /etc/csf/remove_apf_bfd.sh |
5.Настройка Config Server Firewall
1 |
/etc/csf |
– каталог,содеражащий все конфигураионные файлы
1 |
csf.conf |
– […]
Защита wp-login.php от bruteforce-атак средствами Nginx
1.Определяем имя(requests),размер(10m) зоны и кол-во запросов в секунду(1 запрос в секунду) Также определяем тип ошибки при срабатывании правил(по умолчанию стоит 503).Изменим статус на 444. Параметр limit_req_status можно указывать как глобально в секции http {..} , так и локально для конкретного location {..}. В данном случае указано глобально.
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 5 6 |
http { ….. limit_req_zone $binary_remote_addr zone=requests:10m rate=1r/s; limit_req_log_level warn; limit_req_status 444; } |
2.В вирт.хосте Nginx для WordPress […]
Обновление самоподписного SSL-сертификата на Centos
При получении почтового сообщения типа указанного ниже необходимо продлить с помощью утилиты genkey если Ваш сертификат подписан Центром Сертификации CA (Certificate Authority) При использовании самоподписного сертифіката(self-signed) утилита genkey не поможет.Необходимо заново сгенерировать самоподписной сертификат.
1 2 3 4 5 6 7 8 9 |
################# SSL Certificate Warning ################ Certificate for hostname '<servername>', in file (or by nickname): /etc/pki/tls/certs/localhost.crt The certificate needs to be renewed; this can be done using the 'genkey' program. Browsers will not be able to correctly connect to this web site using SSL until the certificate is renewed. ########################################################## Generated by certwatch(1) |
1.Проверяем название файла и место, где находятся сертификат и ключ, используемые в Apache
1 |
# grep SSLCertificate /etc/httpd/conf.d/ssl.conf | grep -v \# |
1 2 |
SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key |
2.Проверем права […]
Установка и включение iptables на Сentos 7
Останавливаем и отключаем с автозагрузки firewalld
1 |
# systemctl stop firewalld |
1 |
# systemctl disable firewalld |
Устанавливаем iptables
1 |
# yum install iptables-services iptables |
Добавляем iptables в автозагрузку
1 |
# systemctl enable iptables |
Копируем init-скрипт для того, чтобы можно было сохранять правила командой /etc/init.d/iptables save
1 |
# cp /usr/libexec/iptables/iptables.init /etc/init.d/iptables |
Проверяем, что сохраняются правила при остановке/перезапуске iptables, а также подгружаем модуль отслеживания состояний ftp-подключений.
1 |
# nano /etc/sysconfig/iptables-config |
1 2 3 |
IPTABLES_MODULES="nf_conntrack_ftp" IPTABLES_SAVE_ON_STOP="yes" IPTABLES_SAVE_ON_RESTART="yes" |
После набора правил сохраняем правила и перезапускаем […]
Оптимизация настроек ядра для высоконагруженных серверов и защиты от DDOS-атак
На просторах Интернета нашел толковое описание sysctl настроек ядра для оптимизации большого кол-ва подключений и защиты от DDOS-атак
1 2 3 |
net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 |
Не принимать и не отправлять ICMP-пакеты перенаправления. ICMP-перенаправления могут быть использованы злоумышленником для изменения таблиц маршрутизации. Целесообразно выставить в «0». Единица имеет смысл только для хостов, использующихся в качестве маршрутизаторов.
1 |
net.ipv4.tcp_max_orphans = 65536 |
Целочисленное значение параметра tcp_max_orphans […]
Анализ и защита от DDOS-атак
Диагностика DDOS-атаки Подсчет кол-ва подключений к серверу
1 |
# cat /proc/net/ip_conntrack | wc -l |
— для Centos5
1 |
# cat /proc/net/nf_conntrack | wc -l |
— для Centos6 SYN—flood Подсчет кол-ва попыток установить соединение
1 |
# netstat -nap | grep SYN_RECV | wc -l |
Просмотр кол-ва запросов с каждого адреса на установку соединений
1 |
# netstat -nap | grep SYN_RECV | awk {'print $5'} | awk -F: {'print $1'} | sort -rn | uniq -c | sort -rn |
Проверка кол-ва полузакрытых соединений
1 |
# netstat -an | grep FIN* | wc -l |
Просмотр кол-ва и типов установленных соединений
1 |
# netstat -np | awk '{print $6}'|awk -F: '{print $1}' | sort -rn | uniq -c | sort -rn | less |
Просмотр кол-ва […]