GnuPG или GPG — конкретная открытая (GPLv3) реализация OpenPGP(стандарт шифрования, описанный в RFC 4880 и RFC 6637) GnuPG шифрует сообщения, используя асимметричные пары ключей(либо симметричный ключ), генерируемые пользователями GnuPG. Открытыми ключами можно обмениваться с другими пользователями различными путями, в том числе и через Интернет с помощью серверов ключей. Также GnuPG позволяет добавлять криптографическую цифровую подпись […]
Архивы рубрики ‘Security’
Усиление безопасности WordPress с помощью .htaccess
Как правило, изменения необходимо вносить в корневой файл .htaccces за исключением случаев, когда необходимо защитить отдельные каталоги(например, wp-content/uploads) По умолчанию корневой .htaccess в WordPress имеет вид
1 2 3 4 5 6 7 8 9 10 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
Между строками, указанными ниже, никаких изменений не вносим # BEGIN WordPress # END WordPress Например, все строки будем добавлять после строки # END WordPress 1.Запрет доступа к […]
OpenSSL: работа с сертификатами и приватными ключами
Генерация приватного ключа Генерация приватного ключа без пароля
1 |
# openssl genrsa -out kamaok.org.ua.key 2048 |
Генерация приватного ключа с паролем
1 |
# openssl genrsa -des3 -out kamaok.org.ua.key 2048 |
Удаление пароля с приватного ключа
1 |
# openssl rsa -in kamaok.org.ua.key -out new.kamaok.org.ua.key |
Генерация CSR-запроса Генерация CSR-запроса на основе существующего приватного ключа
1 |
# openssl req -new -key kamaok.org.ua.key -out kamaok.org.ua.csr -sha512 |
Генерация CSR-запроса на основе существующего сертификата
1 |
# openssl x509 -x509toreq -in kamaok.org.ua.crt -out kamaok.org.ua.csr -signkey kamaok.org.ua.key -sha512 |
Генерация СSR-запроса и приватного ключа Генерация СSR-запроса и приватного ключа в интерактивном […]
Настройка 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. […]
Полезные команды для определения взлома сервера
1 |
# last |
– просмотр списка пользователей, IP-адресов и времени входа в систему
1 |
# ls -lart / |
— отсортированный по времени список измененных/добавленных/удаленных папок и файлов в системе
1 |
# netstat –na |
– спсиок текущих сокетов, подключений
1 |
# ps –wauxef |
– просмотр запущенных процессов
1 |
# cat .bash_history |
– просмотр истории команд(как для root, та ки для всех пользов с корректной оболочкой в /etc/passwd)
1 |
# top |
– проверка процессов, […]
Защита 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 […]
Оптимизация настроек ядра для высоконагруженных серверов и защиты от 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 |
Просмотр кол-ва […]
Поиск malware/вирусов на сайте
Использование внешних ресурсов 1.Проверка на сайтах http://antivirus-alarm.ru/ http://online.drweb.com/?url=1 http://xseo.in/viruscan http://2ip.ru/site-virus-scaner/ Проверка Google
1 |
http://www.google.com/safebrowsing/diagnostic?site=mysite.com |
Проверка ссылок/редиректов
1 |
http://www.websiteplanet.com/webtools/redirected |
2. Проверка утилитой ai-bolit http://www.revisium.com/ai/ 3. Проверка с помощью Linux Malware Detect https://www.rfxn.com/projects/linux-malware-detect/
1 |
# maldet -scan-all /home/sites/mysite.com |
4. WordPress-плагины Antivirus https://wordpress.org/plugins/antivirus/ Sucuri Security https://wordpress.org/plugins/sucuri-scanner/ Использование командной строки 1.Поиск файлов измененных за последнее время(например, за последние […]