Как удалить доступ к порту с помощью брандмауэра на Centos7?

13

Если бы порт был открыт для публичного использования с помощью firewall-cmd, я хотел ограничить этот порт определенным IP-адресом, ответ на который я нашел на этом САЙТЕ .

Я использовал следующее, чтобы открыть его:

$ firewall-cmd --permanent --zone=public --add-port=10050/tcp
$ firewall-cmd --reload

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

Или я могу просто добавить новое правило следующим образом, и это решит проблему для меня?

$ firewall-cmd --new-zone=special
$ firewall-cmd --permanent --zone=special --add-rich-rule='
  rule family="ipv4"
  source address=”123.1.1.1"
  port protocol="tcp" port="10050" accept'

Я пробовал следующее:

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --reload

Но когда я запускаю следующее:

$ firewall-cmd --list-ports 

10050/tcp все еще отображается.

Пожалуйста, поймите, я не слишком знаком с конфигурациями на стороне сервера.

Soultion: Не забудьте про --runtime-to-перманент

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --runtime-to-permanent
$ firewall-cmd --reload 
MCV
источник
Ах, я забыл --перманент
MCV
1
Вы должны опубликовать это как ответ (и принять это). Это вполне приемлемо, чтобы принять ваши собственные ответы, таким образом, вопрос помечается как решенный.
Джеральд Шнайдер
1
Лучше не использовать --permanent, если вы допустили ошибку с правилом брандмауэра. Если вы использовали --permanentи заблокировали себя, вам будет довольно сложно вернуться обратно, так как у вас нет возможности выздороветь. Вместо этого не используйте --permanent, а когда вы довольны правилами, используйте firewall-cmd --runtime-to-permanentдля фиксации правил. Если вы заблокированы, перезагрузка брандмауэра или перезагрузка вернутся.
Майкл Хэмптон
Так может ли это firewall-cmd --runtime-to-permanentприменяться после firewall-cmd --reloadили полностью заменить? Я обязательно попробую это.
MCV

Ответы:

28

Решение: не забывайте --runtime-to-constant

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --runtime-to-permanent 
$ firewall-cmd --reload 
MCV
источник
1
Я все еще должен был следовать systemctl restart firewalld.
JaKu
Это не сработало для меня. systemctlявляется версией 219и firewall-cmdверсией 0.5.3для CentOS 7.5 64bit.
Pred
5
# firewall-cmd --zone=public --remove-port=12345/tcp --permanent
# firewall-cmd --reload

Замените 12345 на порт, который вы хотите удалить.

Зинг Ли
источник
1
Я где-то читал, что в Fedora doc он предлагает поставить --permanentв качестве первого варианта. Но да, --permanentэто ключ.
WesternGun
Я обычно оставляю это как последний вариант, чтобы гарантировать, что если правило по какой-либо причине неверно, я могу просто перезагрузиться, не делая правило постоянным. Если он делает то, что я хочу, я могу стрелку вверх и добавить --permanentв конец.
Джастин Э
0

Следуйте этим шагам, у вас все будет хорошо:

  1. $ firewall-cmd --zone = public --remove-port = 10050 / tcp
  2. $ firewall-cmd --runtime-to-constant
  3. $ firewall-cmd --reload
  4. $ systemctl restart firewalld
  5. $ firewall-cmd --zone = public --list-ports
Дэн Хауэль
источник
Я не думаю, что вам нужно перезапускать firewalld, firewalldфактически он был разработан, чтобы избежать перезапуска всех сервисов каждый раз, когда вы меняете конфигурацию.
августа