Подскажите как написать правило iptables чтобы из инета через ssh по удалённому доступу пускать на шлюз только определённые ip адреса которые я хочу пускать на шлюз а не любые. Операционка Debian Lenny 5.04
Как написать правило iptables
В конфиге SSH можно указать, с каких адресов разрешено подключаться
ну... это не одно правило.
Скрипт
#!/bin/bash
ipt=/usr/sbin/iptables
# политика по умолчанию
$ipt -P INPUT DROP
# Задаем список тех кому можно подцепляться
$ipt -N allowed_users
$ipt -A allowed_users -s ip_addr -j ACCEPT
# Разрешаем проходить пакетам от установленных соединений
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем пинговать
$ipt -A INPUT -p icmp -j ACCEPT
# Пропускаем наших разрешенных пользователей
$ipt -A INPUT -p tcp -i имя_интерфейса_во_внешку --dport 22 -j allowed_users
# Сохраняем изменения. Чтоб после перезагрузки не стерлись
/usr/sbin/iptables-save
Можно подробнее почитать тут:
http://www.opennet.ru/docs/RUS/iptables/index.html
Ну и... еще вот тут разжевано попроще:
http://ihtiandr.info/unix/1-unix/40-iptables-for-beginers-manual.html
$ man sshd_config
...
AllowUsers
This keyword can be followed by a list of user name patterns, separated by spaces. If specified, login is allowed only for user names that
match one of the patterns. Only user names are valid; a numerical user ID is not recognized. By default, login is allowed for all users. If
the pattern takes the form USER@HOST then USER and HOST are separately checked, restricting logins to particular users from particular hosts.
The allow/deny directives are processed in the following order: DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.
...
Просто указывай кому на 22/TCP подключаться есть смысл, а кому нет.
Все ссылки, особенно на opennet выше.
$ man sshd_config
...
Не вариант. Попытки коннекта будут, лишний флуд в сети...
Ребята, помогите!!!
Нужен ваш совет. Проблема в настройке SSH. (Прошу прощения, сейчас не могу посмотреть вывод сообщений, нахожусь на работе и моя машинка под рукой будет только вечером.) :|
Итак, существует 3 машины, на всех стоят Debian Lenny: первая моя - 192.168.0.2 (клиент) , вторая жены - 192.168.0.3 (сервер). Есть еще сестра, которая вскоре перейдет на Debian, и ее придется удаленно администрировать (далеко ездить). Для практики решил сначала настроить соединение между моей машиной и машиной жены. Установил у обоих (#aptitude install ssh) и клиент и сервер. В каталоге /etc/ssh/ появились несколько конфиг. файлов (ssh.config и sshd.config ) и ключей!!!(Понадобятся ли мне они????), причем ключи для рута. Удаленно админить буду через Х-ы (у сестры скорее всего возникнут вопросы по GUI-шным приложениям) и командами, поэтому в настройках клинета - ssh.conf и сервера - sshd.conf включил соотв. опции
("ForwardX11 yes
ForwardX11Trusted yes" - для клиента
и
"X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes" - для сервера).
Установил протокол на 4900 в обоих конфигах.
Далее, отключил опции входа по поролю, чтобы только ключи оставались.
Сгенерировал ключи от имени пользователя клиента - user ($ ssh-keygen -t rsa)
размещаю на сервере - ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.0.3
выдает, что доступ запрещен.
Пытаюсь зайти $ssh -p 4900 user@192.168.0.3 - что то пишет, что соединение на может быть установлено, далее что то еще
и снова доступ запрещен.
Конфиг сервера привожу. Что не так?
Может это потому что на сервере нет моей учетной записи???
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 4900
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
#RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
AllowUsers user
odinokiyklaus вам нужно "предоставление удалённым компьютерам графического доступа к локальному"?
видели когда нибудь RAdmin?
вот такое же, только бесплатное vnc4server
Слышал про это. Говорят что это неUnix путь и все такое.. Попробую еще и этот путь. Но все же разобраться в SSH не помешает :)
Нашел кое что интересное в плане быстрого запуска VNC4server http://www.linuxshop.ru/index.php?autocom=ibwiki&cmd=article&id=72
Сегодня вечерком попробую и его.
vini1979, Если свосем туго то Easy Firewall Generator for IPTables можешь сделать конфиг и от туда цепочку правил выдернуть :)
vini1979, Если свосем туго то Easy Firewall Generator for IPTables можешь сделать конфиг и от туда цепочку правил выдернуть :)
не, я сначала при отключенном firewall-е настраивал соединение. с Iptables потом буду разбираться
Говорят что это неUnix путь и все такое..
юникс пути неисповедимы, а говорят.. говорят в Москве кур доют.
дао же говорит - все должно быть красиво и без мучения в конфигах.
vnc4server же даст возможность вашим домочадцам видеть что вы делаете на экране, чтоб потом самим повторять =))
odinokiyklaus, socklist |grep sshd что покажет? он хоть слушает этот порт что ты указал?
#ListenAddress 0.0.0.0 - я так понимаю ты будешь слушать ssh на всех своих адресах :)
далее:
grep 4900 /etc/services
hfcs 4900/tcp # Hyper File Client/Server Database Engine
hfcs 4900/udp # Hyper File Client/Server Database Engine
тебе это о чем либо говорит? хотя ... привиди конфиг пока что к стандартному виду) У тебя же 2 машинки рядом стоят, не так ли? Для удаленной машинки надо будет еще указать некие свойства в /etc/hosts.allow
#ListenAddress 0.0.0.0 - я так понимаю ты будешь слушать ssh на всех своих адресах :)
так это же закоментировано, значит не используется. Разве нет??
можно так и так использовать :) но я все же жестко привязал к ip, ip-tables то все= будешь настраивать)
можно так и так использовать :) но я все же жестко привязал к ip, ip-tables то все= будешь настраивать)
ты хочешь сказать, что в конфиге сервера лучше тогда указать не
AllowUsers user,
а
AllowUsers user@192.168.0.2 ?
[quote=i2ks]vini1979, Если свосем туго то Easy Firewall Generator for IPTables можешь сделать конфиг и от туда цепочку правил выдернуть :)
не, я сначала при отключенном firewall-е настраивал соединение. с Iptables потом буду разбираться[/quote]
Спасибо за ссылку! :)
Что тоя уже запутался: у меня есть некая машинка в сети, конфиг "кастрирован" и при этом еще и иксы форвардит :)
vif82:/etc # cat /etc/ssh/sshd_config |grep -v "#"
Protocol 2
PasswordAuthentication no
UsePAM yes
X11Forwarding yes
Subsystem sftp /usr/lib/ssh/sftp-server
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
и
vif82:/etc # cat /etc/ssh/ssh_config |grep -v "#"
Host *
ForwardX11Trusted yes
Protocol 2
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv LC_IDENTIFICATION LC_ALL
# socklist |grep ssh
tcp 22 10820 0 2385 3 sshd
tcp 22 15994 0 4061 3 sshd
tcp6 22 10824 0 2385 4 sshd
vif82:/etc # netstat -an|grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.0.82:22 192.168.0.220:51248 ESTABLISHED
tcp 0 0 :::22 :::* LISTEN
К чему призываю я тебя, сделай простой конфиг, так что бы ты мог логиниться на удаленную машинку, а вот потом уже начинай прикручивать то что тебе необходимо)
То что я написал это просто пример и не более :) А то сейчас начнется :)
Ок, сегодня вечером буду разбираться. Без доступа к машинке разбираться тяжело. Пасиб! :)