agrep или tre-grep сделают то, что Вы спрашиваете; они - "приблизительный" regex matching/grep. Для получения дополнительной информации также см. статью Wikipedia.
% tre-agrep --help | head (05-23 16:53)
Usage: tre-agrep [OPTION]... PATTERN [FILE]...
Searches for approximate matches of PATTERN in each FILE or standard input.
Example: `tre-agrep -2 optimize foo.txt' outputs all lines in file `foo.txt' that
match "optimize" within two errors. E.g. lines which contain "optimise",
"optmise", and "opitmize" all match.
Regexp selection and interpretation:
-e, --regexp=PATTERN use PATTERN as a regular expression
-i, --ignore-case ignore case distinctions
-k, --literal PATTERN is a literal string
% agrep | head (05-23 16:53)
usage: agrep [-@#abcdehiklnoprstvwxyBDGIMSV] [-f patternfile] [-H dir] pattern [files]
summary of frequently used options:
(For a more detailed listing see 'man agrep'.)
-#: find matches with at most # errors
-c: output the number of matched records
-d: define record delimiter
-h: do not output file names
-i: case-insensitive search, e.g., 'a' = 'A'
-l: output the names of files that contain a match
-n: output record prefixed by record number
-v: output those records that have no matches
-w: pattern has to match as a word, e.g., 'win' will not match 'wind'
-B: best match mode. find the closest matches to the pattern
-G: output the files that contain a match
-H 'dir': the cast-dictionary is located in directory 'dir'
Ваша существующая конфигурация кажется очень безопасной. Однако существуют дополнительные вещи, которые можно использовать для ограничения доступа.
Стук порта может использоваться для хранения завершений порта большую часть времени. Это реализовано с помощью iptables
. Существуют демоны, которые могут использоваться, или правила могут быть реализованы полностью в iptables
как описано в документации Shorewall.
Если оболочки tcp включены. Несколько без рутения как следующее в/etc/hosts.allow уведомят Вас каждый раз, когда удаленная связь установлена с deamon
. Первое правило позволяет локальным соединениям работать тихо, скорректировать диапазон IP-адреса как соответствующий. Второе правило предотвращает доступ от адресов, которые инвертируют во многую страну TLD, и посылает сообщение по электронной почте для каждого успешного соединения. Это могло быть шумным, если Вы не используете Стук Порта.
sshd : 10.0.0.0/8 192.168.0.0/24
sshd : ALL \
EXCEPT .ar .au .br .by .cl .co .cz .do .eg .gt \
.id .il .in .jp .ma .mx .nl .pe .pk .pl .pt \
.ro .rs .ru .sa .sg .tr .tw .ua .vn .za \
.ae .at .bg .gh .hr .hu .ke .kz .lt .md \
.my .no .sk .uy .ve : \
spawn (/bin/echo "SSH connection to %N from %n[%a] allowed" | \
/usr/bin/mailx -s "SSH Allowed" you@example.com)
fail2ban
правила могут использоваться для временного помещения в черный список хостов, которые пробуют к грубой силе сервер. Я видел случайные попытки, когда у меня был ssh, выставленный Интернету.
Ваша установка SSH уже является современным состоянием с точки зрения безопасности.
Существует что-то, что Вы могли сделать, но отметить, что это может быть больше боль в шее для Вас, чем реальная защита. Вы могли изменить порт с 22 до менее известного для получения меньшего количества нападений и датчиков аутентификации.
Как другие сказали, SSH уже до задачи с точки зрения того, чтобы быть достаточно безопасным. Я думаю, что бессмысленно переместить sshd демона в другую точку. Я уподобляю это установке точки доступа Wirelss и сокрытию SSID. Это тривиально к передачей эти типы безопасности через меры по мраку.
Ограничение доступа не только для укоренения, но и только ключевым пользователям всегда является хорошей идеей, является ли это с доступом SSH или чем-либо еще в этом отношении.
Одна вещь, которую я нахожу полезными, хотя использует что-то как fail2ban
. Можно использовать его, чтобы обнаружить и взять контрмеры, чтобы замедлиться и мешать потенциальным взломщикам.
Единственный риск на стороне сервера является использованием перед аутентификацией. Не было многих (публично известны) в истории SSH.
OpenBsd имеют такой прием, можно запустить OpenSsh с ограниченными полномочиями и дополнительным входом.
Попытайтесь перенести/usr/sbin/sshd с/usr/sbin/systrace.
Каждый доступ к любому системному объекту был бы зарегистрирован systrace, любым доступом к любому файлу, каталогу, сетевым портам, памяти, системным вызовам, и т.д.
Генерируйте политику этот путь:
systrace -A -d /etc/systrace/sshd.policy/ \
-E /var/log/systrace_sshd.log /usr/sbin/sshd
Политика редактирования с Вашим любимым текстовым редактором:
vi /etc/systrace/sshd.policy/
После этого запустите sshd демона с ограничениями:
systrace -a -d /etc/systrace/sshd.policy/ \
-E /var/log/systrace_sshd.log /usr/sbin/sshd
Существует много практических руководств о systrace обертке по оболочке, но необходимо перенести sshd, если Вы интересны в безопасном из демона.
Я использую прерывание tar в iptables. Слишком много неудавшихся входов в систему пытаются, и необходимо перейти к реальной машине.
10 раз за 15 минут и Вы помещены в черный список.
9 раз за 10 минут и Вы помещены в черный список.
6 раз за 5 минут и Вы помещены в черный список.
Корректируйтесь соответственно!
#
# - Black List
#
-A BLACKLIST -m recent --name blacklist --set
-A BLACKLIST -j LOG --log-level 4 --log-prefix "TAR-TRAP: "
-A BLACKLIST -j DROP
#
# - SSH Tar Trap
#
-A FIREWALL -p tcp --dport ssh -m state --state NEW -j TAR-TRAP
#
-A TAR-TRAP -m recent --update --name blacklist --seconds 900 --hitcount 1 -j LOG --log-level 4 --log-prefix "BANNED: "
-A TAR-TRAP -m recent --update --name blacklist --seconds 900 --hitcount 1 -j DROP
-A TAR-TRAP -m recent --set --name strike1
-A TAR-TRAP -m recent --set --name strike2
-A TAR-TRAP -m recent --set --name strike3
-A TAR-TRAP -m recent --update --name strike1 --seconds 300 --hitcount 6 -j LOG --log-level 4 --log-prefix "IPT TAR1: "
-A TAR-TRAP -m recent --update --name strike1 --seconds 300 --hitcount 6 -j BLACKLIST
-A TAR-TRAP -m recent --update --name strike2 --seconds 600 --hitcount 9 -j LOG --log-level 4 --log-prefix "IPT TAR2: "
-A TAR-TRAP -m recent --update --name strike2 --seconds 600 --hitcount 9 -j BLACKLIST
-A TAR-TRAP -m recent --update --name strike3 --seconds 900 --hitcount 10 -j LOG --log-level 4 --log-prefix "IPT TAR3: "
-A TAR-TRAP -m recent --update --name strike3 --seconds 900 --hitcount 10 -j BLACKLIST
-A TAR-TRAP -j ACCEPT
#
Можно сделать правило как это к соединению SSH блока от определенных исходных IP-адресов. Диапазон IP мог быть общедоступным или частным.
$ iptables -A INPUT -p tcp -s IP_Range --dport 22 -j ACCEPT
Как пример, можно использовать этого для частной сети
$ iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT
Можно также использовать tcpwrappers для управления ssh доступом на песнях. TCPwrappers используют комбинацию для/etc/hosts.allow и/etc/hosts.deny файлов. Следующий пример ниже шоу для установки управления доступом, которые позволяют получать доступ к sshd от 10.0.0.0/24.
$ vim /etc/hosts.deny sshd: ALL $ vim /etc/hosts.allow sshd: 10.0.0.
Можно также сделать ssh демона для слушания другого порта кроме 22.
fail2ban
действительно полезно против таких датчиков. – lgeorget 05.07.2013, 06:28