Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Запрет SSH к серверам, кроме как с определённых IP. (http://forum.oszone.net/showthread.php?t=331889)

glukin 14-12-2017 19:46 2784345

Запрет SSH к серверам, кроме как с определённых IP.
 
Можно каким скриптом сделать? Серверы разные, в основном, CentOS и Ubuntu разных версий. IP должны браться из файла.
ПС: сам не линуксоид, так, на уровне пользователя.

Jula0071 14-12-2017 20:37 2784355

Это называется настройка брандмауэра. В любом линуксе он есть - iptables, да, синтакс непонятен для новичка, но есть обёртки, упрощающие настройку. Например в убунте - ufw.
Лично я предпочитаю обёртку FireHOL.
Цитата:

Цитата glukin
IP должны браться из файла. »

ipset лучше.

glukin 14-12-2017 20:40 2784357

Jula0071, Я понимаю, но требуется централизованно на нескольких сотнях серверов это распространить с помощью скрипта.

Jula0071 14-12-2017 20:46 2784359

Распространяйте себе на здоровье. Кстати, чем, puppet?

glukin 14-12-2017 20:49 2784360

Jula0071, Пока не суть чем. Сначала скрипт надо придумать, а я в линуксовое программирование ни в зуб ногой. Возможно, с виндового сервера plink'ом из vbs-скрипта.

Jula0071 14-12-2017 20:54 2784362

Цитата:

Цитата glukin
Пока не суть чем. »

Ой как всё плохо. Я правильно понял, что как
Цитата:

Цитата glukin
централизованно на нескольких сотнях серверов это распространить »

вы ещё даже не думали?
Цитата:

Цитата glukin
а я в линуксовое программирование ни в зуб ногой »

Программирование от платформы не зависит. Да и вопрос не о программировании, а тупо применить на сотнях серверов определённые настройки.
Цитата:

Цитата glukin
Возможно, с виндового сервера plink'ом из vbs-скрипта. »

Божечки...

glukin 14-12-2017 21:04 2784363

Jula0071, "вы ещё даже не думали? "
Это второй вопрос. ))
Пока мне бы придумать какой-нить перловый или баш-скрипт, который делал это хотя бы для одного сервера.
Возможно, у кого-то есть готовые решения, которые я смогу переделать под себя, в программировании ВООБЩЕ разбираюсь, понять код скрипта на незнакомом языке смогу.
"Божечки..."
А что не так? ))
Еще раз говорю - я не линуксоид ни разу.

Jula0071 14-12-2017 21:13 2784367

Цитата:

Цитата glukin
Еще раз говорю - я не линуксоид ни разу. »

Ещё раз, то, про что вы говорите - применение настроек на сотнях серверов - универсально. Не сильно зависит от ОС.
Для этого есть инструменты, относящиеся к Software configuration management, один из них - Puppet. Есть ещё Rex, Foreman, короче, десятки их. Изучите хоть тот же паппет и вам станет хорошо.

glukin 14-12-2017 21:21 2784369

Jula0071, ОК. Переформулирую вопрос. Есть 1 (ОДИН) сервер с убунтой или центос. Нужен скрипт или командный сценарий, который брал бы из текстового файла список IP-адресов (порядка 100 штук) и разрешал бы коннект на 22 порт только с этих адресов, с других запрещал бы.

Jula0071 14-12-2017 22:04 2784377

Предполагая, что policy ACCEPT:

for i in $( cat /tmp/allowed_ssh_ip.txt ) ; do ipset -A ALLOWED_SSH $i ; done
iptables -I INPUT -p tcp -m multiport ––dport 22 -m set ––match-set ALLOWED_SSH src -j ACCEPT
iptables -I INPUT -p tcp -m multiport ––dport 22 -m set ! ––match-set ALLOWED_SSH src -j DROP

Учтите, тут нет никаких проверок от автозабана, лучше пользоваться обвязками. Правила не проверял, они только для примера.

glukin 14-12-2017 22:12 2784380

Jula0071, принцип понятен, спасибо. Поясните, что такое автозабан и обвязки, плз.

Jula0071 14-12-2017 22:36 2784381

Всё же решил проверить, поднял лабу.

Код:

root@lv70002:/home/test# cat /tmp/allowed_ssh_ip.txt
10.40.8.2/32
root@lv70002:/home/test# cat ./fw.sh
#!/bin/bash
ipset create ALLOWED_SSH hash:ip
for i in $( cat /tmp/allowed_ssh_ip.txt ) ; do ipset -A ALLOWED_SSH $i ; done
iptables -A INPUT -p tcp  --dport 22 -m set --match-set ALLOWED_SSH src -j ACCEPT
iptables -A INPUT -p tcp  --dport 22 -m set ! --match-set ALLOWED_SSH src -j DROP

root@lv70002:/home/test# ipset list

Name: ALLOWED_SSH
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 176
References: 2
Members:
10.40.8.2

root@lv70002:/home/test# iptables -nvL
Chain INPUT (policy ACCEPT 3 packets, 397 bytes)
 pkts bytes target    prot opt in    out    source              destination
  212 14756 ACCEPT    tcp  --  *      *      0.0.0.0/0            0.0.0.0/0            tcp dpt:22 match-set ALLOWED_SSH src
    2  120 DROP      tcp  --  *      *      0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ! match-set ALLOWED_SSH src

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target    prot opt in    out    source              destination

Chain OUTPUT (policy ACCEPT 117 packets, 13900 bytes)
 pkts bytes target    prot opt in    out    source              destination

Автозабан - это когда вы по ошибке включаете запрещающее правило, которое отключает вас от машины. Про обвязки я уже говорил выше.

glukin 14-12-2017 22:44 2784383

Jula0071, вроде все понятно, буду пробовать.

Jula0071 14-12-2017 22:48 2784384

glukin, не забывайте, что это только пример, если у вас уже есть на серверах правила iptables, то скрипт всё поломает.

glukin 14-12-2017 22:54 2784386

Jula0071, А нельзя сделать так, чтобы он добавлял правила, а не перезаписывал?

Jula0071 14-12-2017 23:02 2784387

glukin, ну тут он как раз добавляет. Но мало ли что там у вас. Нужно подходить творчески. Ещё раз про обвязки - есть скрипты обвязки для iptables, уже называл выше, я пользуюсь FireHOL. В чём плюс - синтакс гораздо более human readable, во-первых, во-вторых есть защита от дурака с автозабаном. Отредактировал я конфиг, сказал firehol try, всё заглохло - автозабанился. Но не беда, он через 30 секунд откатится на предыдущую версию конфига. Ну и 2000+ правил ручками рисовать синтаксом iptables увольте...

glukin 14-12-2017 23:07 2784388

Jula0071, автозабан, я думаю, не проблема, есть доступ к консоли вмвари. Там же не забанится локалхост?

Jula0071 14-12-2017 23:09 2784390

Цитата:

Цитата glukin
автозабан, я думаю, не проблема, есть доступ к консоли вмвари. Там же не забанится локалхост? »

Не локалхост, но не забанится. :)

glukin 15-12-2017 10:24 2784440

Jula0071, ну да-да, это я пошутить попытался. ))


Время: 22:57.

Время: 22:57.
© OSzone.net 2001-