Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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