LinuxForum.Fans
Тема

Настройка iptables по ssh

Автор: u__________12 31 сообщений 12537 просмотров
#270086

Тема подобная здесь уже была, но мне не всё ясно. С iptables опыта не имел вообще, посему страшновато.

http://www.opennet.ru/docs/RUS/iptables/ читал и продолжаю.

Вот вывод nmap

text

Starting Nmap 5.00 ( http://nmap.org ) at 2012-08-16 17:18 MSK
Interesting ports on 192.168.1.15:
Not shown: 988 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
110/tcp  open  pop3
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
143/tcp  open  imap
445/tcp  open  microsoft-ds
901/tcp  open  samba-swat
993/tcp  open  imaps
1723/tcp open  pptp
2049/tcp open  nfs

Хочу оставить открытими только несколько портов. Сделать надо по принципу "запрещено всё кроме явно указанного"

-A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 901 -j ACCEPT
-A INPUT -i -j DROP

Вот так мне сказали должно работать, но я не пойму, если команды исполняются последовательно, то не получится ли, что я сначала открою 22 порт, а потом сразу закрою? Доступ по ssh и потерять его совсем не в тему :)

#270088

создавайте файл с правилами и делайте следующее

text
# iptables-restore < /путь к файлу 

или же записывайте все правила в скрипт, после чего выполнить его

#270207

Это знаю. Запись сама верна? Порты не закроются все и сразу?

#270233
"Сергей В." написал:
Хочу оставить открытими только несколько портов. Сделать надо по принципу "запрещено всё кроме явно указанного"

Сначала пиши политики, потом правила.
Вот простейший вариант, с одним открытым ssh портом.

text

# Чистим
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Политики по-умолчанию в DROP
iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP
# Estabilished, Related
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешения
iptables -A INPUT   -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT  -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT

ы. ssh лучше убирать с 22-го порта, и делать вход только по ключу.
ыы. Если это удаленный сервер, на время отладки добавь в крон, через хотя бы час:

text
# Чистим
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Политики по-умолчанию в ACCEPT
iptables -P INPUT   ACCEPT
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT

Чтобы если вдруг сам себе все закроешь, по крону само все открылось. ;)

#270328
newzenon написал:

1 ssh лучше убирать с 22-го порта, и делать вход только по ключу.
2 Если это удаленный сервер, на время отладки добавь в крон, через хотя бы час:

Совет почти правльный. но. Не самый "безопасный". При потере секретного ключа как войти в систему? Или как войти в систему, если у тебя ключа нет, а войти надо? Поэтому лучше так:
1. Запретить вход ремутным рутом. Вход только бесправным юзером, потом su.
2. Достаточно длинное имя юзера и надежный пароль. надежный - это значит, что использовать оба регистра, спецсимволы и цифры в пароле. И пароль должен быть длиной не менее 6-8 символов. Но без излишнего фанатизьму. Больше 8 - смысла особого нет. Желательно, чтобы этот пароль был для тебя значимым (запомнить легче).
3. Таймаут после ввода имени и пароля. До следующей попытки ввода пароля.
4. Пароль пишем на бумажку, бумажку в конверт запечатываем и в "сейф".
5. Настаиваем беспарольный, по ключу, доступ. Но! Возможность входа по паролю не отключаем. Это запасной ход. Он может пригодиться в самый неожиданный момент.
6. Настаиваем fail2ban (или в iptables ставим счетчики) на ssh-доступ.
7. И вот только после этого можно и 22-й порт перенести. Это даст только один эффект. В логах не будет большого количества записей о попытках брутфорса. Больше от этой операции, от переноса, нет никакого проку.

И по втрому пункту. Если не делать мой п.7, то можно вполне нормально настраивать ssh и iptables (правила которого начинаются с пропуска трафика в установленных соединениях) на живой системе и тестировать результаты из второго терминала. Главное - из первого не выходить, ssh-сессию установленную не прерывать. Ну и перенос 22-го порта лучше делать на уровне PREROUTING в iptables. И оставить себе, со своего IP, вход на 22-й стандартный порт, а со всех остальных адресов - только через новый, дополнительный, а 22-й режектить для них. Тогда и крона можно не задействовать.

#270657

Сервер в Германии :D А местный саппорт не самый дружелюбный..

#270658

Вопрос 2.
Как сделать чтобы порты по факту оставались открытыми, но на сканере не были видны?
Здесь есть такая тема Как закрыть свой сервер от nmap? но не всё понятно. Хочется с комментарияими. Опеннет эту тему не раскрывает, просто рассказывает что ест такой модуль state.

#270659

Вообщем надо чтоб nmap был как у гугла.

text

Starting Nmap 5.21 ( http://nmap.org ) at 2012-08-20 10:22 MSK
Nmap scan report for google.com (74.125.232.2)
Host is up (0.00098s latency).
Hostname google.com resolves to 11 IPs. Only scanned 74.125.232.2
Not shown: 997 filtered ports
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https
8080/tcp open  http-proxy

Но некоторые порты нужны, но не нужно чтобы их было видно сканером.

Это и есть основная задача.

#274630

Я отложил был это дело, подскажите пожалуйста, в каком формате надо писать в файл? У меня выскакивает ошибка.
Я ведь правильно всё понял? Пишу в файл, потом # iptables-restore < /путь к файлу и должно работать?

#274632

посмотрите в каком формате выгружает iptables-save, дальше делаем по аналогии.

#274665
text
iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT

И интернет НЕ работает.

#274666
"Сергей В." написал:
И интернет НЕ работает.

Вы разрешили только подключения извне к своему компьютеру на 80 порт и наружу только с этого же порта.
...ну и соединения уже установленные и связанные с ними.

#274667
Lupo Alberto написал:
[quote="Сергей В."]И интернет НЕ работает.

Вы разрешили только подключения извне к своему компьютеру на 80 порт и наружу только с этого же порта.
...ну и соединения уже установленные и связанные с ними.[/quote]
Так для работы http не это ли нужно?

#274669
"Сергей В." написал:
Так для работы http не это ли нужно?
"Сергей В." написал:
И интернет НЕ работает.

Я вас не правильно понял.

#274671

Но почему не работает????

Никак не получается.. хочу закрыть ВСЁ кроме. (пока с 80 на лок. машине тренируюсь, но надо будет на удалённом сервере потом) Но получается что закрываю, а разрешающие политики не работают...

#274673

Я что, НЕдоразрешил что-ли?

#274675

Вот тема в которой много мелких вопросов подробно обсуждено.

#274689

Хочется наипростейшее решение.

Войдите или зарегистрируйтесь, чтобы ответить.