Назад | Перейти на главную страницу

Есть ли в Linux журналы, которые сообщают, был ли запрещен какой-либо порт?

Предположим, у меня активен брандмауэр или какая-либо другая система безопасности, например, SE linux и т. Д.

Теперь предположим, что пользователь хочет подключиться к порту. 21 а Iptables этого не позволяет.

Теперь, когда пользователям отказывают, это сообщение регистрируется где угодно, чтобы я мог видеть, что использованное частичное заблокировано или почему заблокирован конкретный порт.

Вместо того, чтобы копаться в каждой настройке, чтобы выяснить, почему я не прохожу через это.

Я изменил порт ssh по умолчанию на 8022 но я получаю отказ.

Я проверил telnet и его прослушивание на этом порту. У меня пустые iptables.

Есть ли какой-нибудь журнал, в котором я могу проверить, кто отказывается от подключения

Первый ответ

Нет. Нет журнал по умолчанию показывает это, но

Отображение текущей конфигурации брандмауэра

Посмотрите, как настроен ваш брандмауэр:

iptables -L

Искать Chain [INPUT|OUTPUT] policy первый. Если есть что-то еще, кроме ACCEPT, используемый порт, возможно, придется ACCEPTЭд пена ...

iptables -L INPUT | grep `port=2[01]`

Чтобы показать явные правила для порта 20 и порта 21, но будьте осторожны, вам, возможно, придется прочитать всю конфигурацию брандмауэра, чтобы проверить multiport, user-defined chainsи т. д. это может быть сложно, если вы не знаете iptables вообще.

Пустой открыт Конфигурация межсетевого экрана может выглядеть так:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

видеть:

man iptables

Зная, что может что-то заблокировать в ваших правилах

Я использую такой трюк:

touch /tmp/tmp_iptable_stat.txt
getChanges() {
    pushd /tmp >/dev/null
    for table in $(</proc/self/net/ip_tables_names);do
        echo $RANDOM: - $table
        iptables -t $table -nvxL --line-number
      done |
        diff -u tmp_iptable_stat.txt - |
        tee >(patch -p0) |
        sed '
            s/^+[0-9]*: - /TABLE /p;
            s/^+//p;
            d'
    popd >/dev/null
}

Чем первый звонок getChanges сбросит все таблицы и счетчики. Последующие вызовы одной и той же функции будут печатать только правила, в которых изменен счетчик. Это может помочь выяснить, какое правило что-то блокирует.

Отображение текущего состояния сетевых стеков:

Сетевой стек ядра может быть сброшен

netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
tcp        0   2364 192.168.1.1:21          192.168.1.35:49179      ESTABLISHED

для сокетов TCP или

netstat -uan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      

для сокетов UDP.

Как мой FTP использование сервера TCP сокетов, я мог видеть, что в настоящее время установлен между моим сервером и хостом ... 35, (на данный момент у сервера 2364 пакета для отправки клиенту. Может быть, файл, может быть, список ...)

Отслеживание трафика на конкретном интерфейсе

Вместо того, чтобы использовать log, вы могли наблюдать, что происходит в вашем интерфейсе:

tcpdump -i ethX

Это сбросит полезную информацию о трафике на ethX, но так как по умолчанию и будет больше обычный читаемый, этот инструмент попытается разрешить имя каждого IP-адреса. Таким образом, может быть некоторая задержка между самим событием и дампом на терминале. Так:

tcpdump -ani ethX

не будет пытаться разрешить (opt -n) IP-адреса и имена служб и будут отображать ВСЕ (-a) пакеты, проходящие через интерфейс.

точнее:

tcpdump -ani ethX port 21 or port 20
09:17:58.264453 IP 192.168.1.1.21 > 192.168.24.91.45951: Flags [S.], seq 3593971599, ack 1942867644, win 5792, options [mss 1460,sackOK,TS val 1168768120 ecr 62841986,nop,wscale 7], length 0
09:17:58.299693 IP 192.168.1.35.56485 > 192.168.1.1.21: Flags [S], seq 3334605998, win 5840, options [mss 1368,sackOK,TS val 1936641509 ecr 0,nop,wscale 7], length 0
09:17:58.299728 IP 192.168.1.1.21 > 192.168.1.35.56485: Flags [S.], seq 980554936, ack 3334605999, win 5792, options [mss 1460,sackOK,TS val 1168768129 ecr 1936641509,nop,wscale 7], length 0
...

Более подробно: ... use -v or -vv for full protocol decode

tcpdump -anvvi ethX port 21 or port 20
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
09:22:40.047486 IP (tos 0x0, ttl 62, id 31488, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.24.91.46011 > 192.168.1.1.21: Flags [S], cksum 0x5985 (correct), seq 3989081263, win 14600, options [mss 1368,sackOK,TS val 62912431 ecr 0,nop,wscale 6], length 0
09:22:40.047525 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.1.1.21 > 192.168.24.91.46011: Flags [S.], cksum 0x926d (correct), seq 2283473829, ack 3989081264, win 5792, options [mss 1460,sackOK,TS val 1168838566 ecr 62912431,nop,wscale 7], length 0
09:22:40.817248 IP (tos 0x0, ttl 62, id 31489, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.24.91.46011 > 192.168.1.1.21: Flags [.], cksum 0xd6e9 (correct), seq 1, ack 1, win 229, options [nop,nop,TS val 62912442 ecr 1168838566], length 0
09:22:40.817567 IP (tos 0x0, ttl 62, id 31490, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.24.91.46011 > 192.168.1.1.21: Flags [F.], cksum 0xd6e3 (correct), seq 1, ack 1, win 229, options [nop,nop,TS val 62912447 ecr 1168838566], length 0
...

Где вы могли следить за каждой операцией.

Если у вас есть ЖУРНАЛ установите в своем правиле iptables, тогда вы должны получить запись в журнале /var/adm/messages. Вот пример:

# --- Log new connections:
-A INPUT -m state --state NEW -j LOG  --log-prefix "NEW: " --log-level info

Правило, подобное приведенному ниже, в вашем наборе правил IP-таблиц может помочь вам начать:

# Enable port 8022 (ssh) but rate limit it:
-A INPUT -p tcp -m tcp --dport 8022 ! --syn -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8022 --syn -m limit --limit 3/minute -j ACCEPT

Команда sestatus сообщит вам, включен ли selinux:

[root@seadog ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Сообщения от selinux отправляются на /var/log/audit/audit.log по умолчанию.

В semanage Команда (находится в rpm: policycoreutils-python) также может быть полезна для перечисления портов, которыми управляет selinux:

root@seadog log]# semanage port -l
SELinux Port Type              Proto    Port Number

afs_bos_port_t                 udp      7007
afs_client_port_t              udp      7001
afs_fs_port_t                  tcp      2040
afs_fs_port_t                  udp      7000, 7005
afs_ka_port_t                  udp      7004
afs_pt_port_t                  udp      7002
afs_vl_port_t                  udp      7003
agentx_port_t                  tcp      705

TCP Wrapper также может быть включен. Проверить /etc/hosts.allow и /etc/hosts.deny файлы.

Опробовать эти вещи на виртуальной машине - отличный способ научиться собирать все это вместе и укреплять уверенность, прежде чем вводить свои правила в производство.

Если iptables и SElinux отключены, журналы для чтения, скорее всего, не будут. Я не совсем понимаю, где telnet вписывается в этот сценарий, поскольку он не имеет ничего общего с ssh. Текущая политика SELinux блокирует только ssh-соединения на нестандартных портах ниже 1023, так что это вряд ли.

В Connection refused сообщение обычно означает, что на запрошенном порту ничего не прослушивается. Вы можете проверить, слушает ли что-то, используя netstat

netstat -tunlp | grep 8022
tcp        0      0 0.0.0.0:8022        0.0.0.0:*           LISTEN      2178/sshd
tcp6       0      0 :::8022             :::*                LISTEN      2178/sshd

Выше показано, что sshd прослушивает порт 8022 на всех интерфейсах IPv4 и IPv6.