У меня есть следующий вопрос: Как я могу закрыть все порты кроме порта 22. nmap показывает мне все используемые порты:
nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-02-20 20:06 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000050s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
также netstate
дисплеи открывают соединения:
sudo netstat -tulpen | grep -v '127.0.0.1' | grep -v '::1:'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 160309215 286/sshd
tcp6 0 0 :::22 :::* LISTEN 0 160309218 286/sshd
но эти 999 действительно не закрываются, они не используются.
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
таким образом, каждый порт открыт теперь.
Так как это - внешний сервер, я должен сохранить порт 22 открытыми, так как я использую соединение SSH через порт 22 во время изменения настроек.
Каков мог бы быть лучший способ настроить это?
Я могу остановить iptables и лучше запустить firewalld и сделать там конфигурации? Или я могу временно остановить iptables, внести изменения и затем перезапустить iptables?
Или есть ли некоторые конфигурационные файлы, которые я могу отредактировать?
Я не действительно знаком с этими конфигурациями, но я должен сделать это тщательно и правильно.
Заранее спасибо за Вашу справку!
Для чего-то простого как это я использовал бы ufw. Это установлено по умолчанию, но давайте удостоверимся:
~$ which ufw
должен возвратиться \usr\bin\ufw
, если ufw установлен. Если ufw не установлен: ~$ sudo apt-get install ufw
.
следующие шаги не возьмут влияние, пока Вы не включите или перезагружаете брандмауэр, таким образом, Вы не будете выгнаны.
~$ sudo ufw default deny incoming
~$ sudo ufw default allow outgoing
~$ sudo ufw allow in 22/tcp
Вы просто сказали брандмауэру (a) не впускать что-либо, (b) освобождать все и (c) впускать tcp на порте 22. Сделать эти правила эффективными:
~ $ sudo ufw disable
~ $ sudo ufw enable
Вас теперь предупредят:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
, Если Вы уверены, что следовали этим инструкциям тщательно, ответьте на да. Наконец, давайте отобразим состояние брандмауэра с sudo ufw status verbose
:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
прочитайте ufw страницу справочника для получения дополнительной информации.