1

У меня есть машина CentOS 6.4, и я хотел бы изменить порт SSH по умолчанию, и следовал этим инструкциям:

CentOS Wiki

После внесения этих изменений (включая «semanage port -a -t ssh_port_t -p tcp 2345») и перезапуска SSHD, я все еще не могу подключиться через новый альтернативный порт.

Я вижу, что хост прослушивает новый порт:

# netstat -antp | grep 2345 | grep LISTEN
tcp        0      0 0.0.0.0:2345                0.0.0.0:*                   LISTEN      6998/sshd           
tcp        0      0 :::2345                     :::*                        LISTEN      6998/sshd 

И я вижу, что политика SELINUX выглядит правильно:

# /usr/sbin/semanage port -l | grep ssh
ssh_port_t                     tcp      2345, 22

И я вижу, что IPTABLES тоже кажутся правильными:

# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:domain 
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:domain 
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:bootps 
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:bootps 
 179K  145M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
  185  7200 ACCEPT     icmp --  any    any     anywhere             anywhere            
    2    99 ACCEPT     all  --  lo     any     anywhere             anywhere            
   39  2028 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh 
29763   11M REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24    state RELATED,ESTABLISHED 
    0     0 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere            reject-with icmp-port-unreachable 
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere            reject-with icmp-port-unreachable 
    0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 118K packets, 24M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Наконец, я могу telnet к порту локально:

# telnet localhost 2345
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

Но не может подключиться к Telnet или SSH к новому альтернативному порту извне.

Я не за каким-то брандмауэром.

Есть идеи, предложения? Я сбит с толку.

Дэн

2 ответа2

1

Похоже, ваши iptables не настроены для разрешения на порт 2345, только на 22, который передается с помощью правила

tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh

Вы захотите правило, которое делает то же самое для порта 2345, и вы можете получить это с

iptables -A INPUT -p tcp --dport 2345 -m conntrack --ctstate NEW -j ACCEPT

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

Для дальнейшего использования, если вы можете подключиться к сервису через локальный хост, но не извне, проблема в вашей сети (например, в брандмауэре). Localhost будет иметь другое поведение, потому что трафик будет проходить через устройство обратной связи, которое в вашей системе настроено на прием всего трафика через него.

0

В конце концов я использовал брандмауэр GUI для открытия порта 2345, сохранения и перезагрузки брандмауэра, и теперь я готов к работе.

Я вижу, что это изменило файл /etc /sysconfig /iptables, но по некоторым причинам мои попытки командной строки не сработали.

Короче говоря, нужно было сделать следующее:

1) добавить альтернативный порт в /etc /ssh /sshd_config:

Port 2345 # the additional SSH port
Port 22 # just in case

2) Установите "semanage", чтобы внести изменения в SELinux:

# yum -y install policycoreutils-python

3) Добавить новый порт в политику SELinux:

# semanage port -a -t ssh_port_t -p tcp 2345

4) Перезапустите SSHD:

# service sshd restart

5) В CentOS Firewall GUI в разделе "Другие порты" добавьте 2345 в качестве TCP (не обращайте внимания на тот факт, что служба считает DBM), Apply, Reload

Готово

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .