установка и настройка sshguard
Применимость:
Слова для поиска:
Задача:
<Уберите этот раздел если он не нужен>
Решение:
CentOS 6.5+, CentOS 7
1. Подключитесь к виртуальному серверу по протоколу SSH. 2. Установите на свой VPS дополнительное программное обеспечение: компилятор gcc и утилиту make. Для этого выполните следующую команду(gcc и make могут уже быть установлены):
yum install gcc make
2. Скачайте архив с программой SSHGuard и распакуйте его, выполнив представленные ниже команды по очереди:
wget http://sourceforge.net/projects/sshguard/files/sshguard/sshguard-1.5/ sshguard-1.5.tar.bz2/download tar xjpf download cd sshguard-1.5 ./configure –with-firewall=iptables make && make install3.Теперь задайте цепочку правил в iptables командой
iptables -N sshguard4. Обязательно настройте проверку всего входящего трафика через установленную цепочку правил командой
iptables -A INPUT -j sshguard5. Настройте отслеживание активности на основных портах FTP, SSH, POP3, IMAP. (Если SSH использует нестандартный порт (42222 , 52222 либо другой , укажите его )
iptables -P INPUT ACCEPT iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguardДополнительно вы можете настроить блокировку нарушителей на портах TCP и UDP командами:
iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT6. Чтобы SSHGuard имел право доступа на динамическое изменение настроек iptables, выполните команду
chmod +s /usr/local/sbin/sshguard7. Сохраните внесенные в правила изменения командой
service iptables saveлибо
iptables-save > /etc/sysconfig/iptables8. Теперь выполните запуск SSHGuard командой
/usr/local/sbin/sshguard -l /var/log/secure
9. На этом установка SSHGuard завершена. Отныне после каждых 4 неуспешных попыток подключения к VPS IP-адрес нарушителя будет блокироваться. Однако, созданные настройки будут работать до первой перезагрузки виртуального сервера. Восстанавливать их придется командой
/sbin/service iptables restart
Чтобы не делать этого каждый раз, можно на сервере создать специальный файл и разместить в нем текст скрипта, который бы выполнял запуск программы автоматически. 10. Cоздайте файл со скриптом на VPS. Создание такого файла осуществляется командой
touch /etc/rc.d/init.d/sshguard
После того, как вы открыли файл с названием sshguard, добавьте в него все строки :
#! /bin/sh # chkconfig: 2345 90 25 ### BEGIN INIT INFO # Provides: $sshguard # Required-Start: $syslog # Default-Start: 2 3 4 5 # Short-Description: starting and stoppning SSHGuard Daemon # Description: Sshguard is a small program that monitors services running \ # on your machine from the log files. When it detects that someone is \ # doing something bad to a service, sshguard blocks the IP address of \ # the bad guy with a firewall rule.\ # Project page http://www.sshguard.net\ # Startup script by an0maly.andr@gmail.com # #Source function library. . /etc/init.d/functions D_PATH="/usr/local/sbin/sshguard" LOGFILES=(/var/log/secure) PIDFILE="/var/run/sshguard.pid" PROG="SSHGuard" OPTIONS="-a 5 -w 127.0.0.1" LOGSUCKER_OPT="" check() { status $D_PATH } start() { echo -n $"Starting $PROG: " if [ -f $PIDFILE ]; then echo -n "$PROG already started" echo_failure echo else for lfl in ${LOGFILES[@]}; do if [ ! -f $lfl ]; then echo -n "$lfl not found!" else LOGSUCKER_OPT="$LOGSUCKER_OPT -l $lfl" fi; done $D_PATH $LOGSUCKER_OPT $OPTIONS -i $PIDFILE 2>/dev/null & sleep 2 if [ -f $PIDFILE ]; then echo_success else echo_failure fi; echo return fi; } stop() { echo -n $"Stopping $PROG: " killproc -p $PIDFILE echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; status) check ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart|status}" ;; esac exit $RETVAL
11. Чтобы операционная система могла прочитать созданный файл, выполните приведенный ниже набор команд:
yum install perl perl -pi -e 's/\r\n/\n/;' /etc/rc.d/init.d/sshguard12. Дополнительно установите на свой VPS специальную утилиту для чтения логов - syslog-ng. Ее установка и запуск выполняется следующей последовательностью команд:
yum install chkconfig cd /root wget http:// dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm yum -y update rpm -Uvh /root/epel-release-6-8.noarch.rpm yum repolist yum check-update sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo yum list *syslog-ng* yum install syslog-ng syslog-ng-libdbi chkconfig rsyslog off chkconfig syslog-ng on chkconfig --list syslog-ng service rsyslog stop service syslog-ng start
13. С помощью редактора nano или vi откройте файл syslog-ng.conf:
nano /etc/syslog-ng/syslog-ng.confДобавьте в него такие строки:
# pass only entries with auth+authpriv facilities from programs other than sshguard filter f_sshguard { facility(auth, authpriv) and not program("sshguard"); }; # pass entries built with this format destination sshguard { program("/usr/local/sbin/sshguard" template("$DATE $FULLHOST $MSGHDR$MESSAGE\n") ); }; log { source(src); filter(f_sshguard); destination(sshguard); };Сохраните изменения в файле и выполните команду
killall -HUP syslog-ng
14. Остается только выполнить запуск скрипта командами:
chkconfig sshguard on service sshguard start
Debian
Для Debian процедура установки SSHGuard следующая: 1. Выполните команду
apt-get –y install sshguard2. Создайте правила в iptables, поочередно выполнив такие команды:
iptables -N sshguard iptables -A INPUT -j sshguard iptables -P INPUT ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPTУказанный выше набор правил предусматривает разрешение подключения к серверу только через порты 22, 53, 80, 443. Подключения через другие порты будут блокироваться (стоит заметить что Ваш сервер может иметь нестандартный SSH порт 42222 либо 52222)Это лишь пример цепочки правил для iptables. Вы можете задавать и свои условия проверки. Например, можно использовать и предложенное в предыдущих пунктах условие мониторинга активности на основных портах доступа к серверу:
iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
3. Сохраните заданные правила в памяти сервера командой
iptables-save4. Чтобы заданная цепочка правил имела действие после перезапуска виртуального сервера, необходимо открыть для редактирования файл 00-iptables. Предварительно установите к себе на VPS предпочитаемый редактор, например, nano:
apt-get install nano nano -w /etc/network/if-up.d/00-iptablesСодержимое файла должно быть таким:
#!/bin/sh iptables-restore < /etc/firewall.confСохраните обновления и предоставьте скрипту необходимые права для выполнения:
chmod +x /etc/network/if-up.d/00-iptables5. Передайте заданную ранее цепочку правил в firewall:
iptables-save >/etc/firewall.conf6. Теперь предоставьте SSHGuard права, чтобы была возможность перезаписывать правила в iptables:
chmod +s /usr/sbin/sshguard
iptables-save > /etc/init.d/iptables
/usr/sbin/sshguard -l /var/log/messages
Ubuntu Установка SSHGuard на Ubuntu выполняется следующим образом:
1. Скачайте и установите программу, выполнив команды
sudo apt-get update
sudo apt-get install sshguard
2. Далее установите на сервер специальную утилиту для чтения логов:
sudo apt-get autoremove rsyslog
sudo apt-get install syslog-ng
3. Укажите цепочку правил iptables и сохраните их командами:
iptables -A INPUT -j sshguard
iptables -P INPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save -c
4. Откройте конфигурационный файл syslog-ng.conf для редактирования:
sudo nano /etc/syslog-ng/syslog-ng.conf
Добавьте в него следующие строки:
(можно скрыть в разворачивающееся окно)
# pass only entries with auth+authpriv facilities from programs other than sshguard filter f_sshguard { facility(auth, authpriv) and not program(“sshguard”); }; # pass entries built with this format destination sshguard { program(“/usr/sbin/sshguard” template(“$DATE $FULLHOST $MSGHDR$MESSAGE\n”) ); }; log { source(src); filter(f_sshguard); destination(sshguard); };
Сохраните внесенные изменения в файле, после чего выполните команду:
killall -HUP syslog-ng
5. Чтобы настроенные в iptables правила действовали и после перезагрузки сервера, откройте для редактирования файл 00-iptables:
sudo nano –w /etc/network/if-up.d/00-iptables
Добавьте в него следующие строки:
#!/bin/sh iptables-restore < /etc/firewall.conf
Сохраните изменения и укажите для указанного файла права для запуска командой
<code>chmod +x /etc/network/if-up.d/00-iptables
6. Сохраните заданную цепочку правил в конфигурационный файл firewall:
<code>sudo iptables-save >/etc/firewall.conf
7. И, наконец, запустите SSHGuard командой <code> /etc/init.d/sshguard start
Теперь после 4 неудачных попыток ввода пароля при подключении к Вашему серверу IP компьютера, с которого выполнялось подключение, попадет в бан. Сначала время блокировки составляет около 10 минут. При каждых последующих попытках перебора пароля время блокировки возрастает по экспоненте.