суббота, 20 сентября 2014 г.

Олимпиада по администрированию Linux (Симферополь 20.09.2014)

Задания 2-го (очного) тура Олимпиады в номинации Администрирование Linux:
0. В каталоге /var/olymp создать текстовый файл с именем user.txt, содержащий две строки в кодировке utf8:
Ф.И.О. участника (полностью)
Название учебного заведения (полностью, без сокращений)

воскресенье, 14 сентября 2014 г.

Блокировка пользователей с TOR

Задача: блокировать всех пользователей, которые обращаются к сайтам сервера через TOR.

Тут есть два способа (по крайней мере я нашёл):
1. С помощью ipset (предпочтительно)
2. С помощью скрипта, найденного тут: https://github.com/ddasilva/block-tor-iptables

1. С помощью ipset
# apt-get install ipset
# ipset -N tor iphash

# vim /root/tor_check.sh
#!/bin/bash
wget -q https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=ваш_ip_адрес -O -|sed '/^#/d' | while read IP
do
   ipset -q -A tor $IP
done

# chmod +x /root/tor_check.sh
# /root/tor_check.sh

# iptables -A INPUT -m set --match-set tor src -j DROP
# crontab -e
* */5 * * * /root/tor_check.sh
Проверка:
# ipset -L

2. С помощью скрипта
# iptables -N TOR
# iptables -I INPUT 1 -j TOR

# vim /root/cron-service.sh
Тут содержимое скрипта: https://github.com/ddasilva/block-tor-iptables/blob/master/cron-service.sh

# chmod +x cron-service.sh
# crontab -e
30 02 * * * /root/cron-service.sh 80 6667

воскресенье, 7 сентября 2014 г.

Выявление "плохих" запросов в БД MySQL

Основную часть ресурсов на веб-сервере (apache+nginx+php+mysql) использует MySQL.
Иногда бывает так, что MySQL не хватает по каким-либо причинам ресурсов, забивается полностью память, система уходит в swap. В этом виноваты длинные запросы, которые очегь сильно нагружают MySQL. Так случилось и со мной. Дальше я расскажу, как обнаружить проблему и как ей противостоять.

Ограничение на загрузку файлов на FTP по расширению файлов

Позволим анонимам загружать на ftp-сервер только файлы с расширением pdf, djvu и txt:
# vim /etc/protftpd/proftpd.conf
...
<Anonymous /srv/ftp.amet13.name/>
...
<Directory incoming/*>
   Umask 022  022
   <Limit STOR MKD>
      Order deny, allow
      AllowFilter "\\.(pdf|djvu|txt)$"
   </Limit>
</Directory>
...
</Anonymous>