iptables блокирует доступ к порту 8000 кроме IP-адреса

80

Я никогда не использовал iptables, и документация в Интернете кажется немного непрозрачной.

Я хочу заблокировать все запросы к порту 8000 на моем сервере, кроме тех, которые поступают с определенного IP-адреса. Как мне это сделать с помощью iptables?

будут
источник
2
//, будьте любезны, поделитесь ссылкой на непрозрачную документацию?
Натан Басанезе,

Ответы:

149

Этот вопрос должен быть о сбое сервера . Тем не менее, следующее должно помочь, если вы говорите о TCP, а IP-адрес, который вы хотите разрешить, равен 1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
Джон Брайт
источник
3
Как бы вы отменили это ограничение IP / порта, которое вы здесь установили? (на случай, если я захочу отменить это в будущем)
тестер
4
тестировщик, чтобы удалить материал, обратитесь к этому - stackoverflow.com/questions/10197405/…
Quest Monger
2
Я знаю, что это относительно старый, и это полностью прибило то, что мне нужно. И поскольку ответ все равно был принят, как сделать то же самое с определенным диапазоном IP-адресов? Благодаря! :)
jagc
1
@JiegoCordoviz Вы можете добавить маску к исходному адресу: «-s 1.2.3.0/24» будет принимать все, что начинается с «1.2.3.». Поищите "калькулятор маски сети", если у вас есть диапазон и вы хотите вычислить маску сети.
Джон Брайт
17

Другая альтернатива:

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

У меня была аналогичная проблема, что 3 виртуальные машины с мостом просто нуждались в доступе друг к другу с другой комбинацией, поэтому я протестировал эту команду, и она хорошо работает.

Редактировать**

Согласно комментарию Фернандо, восклицательный знак ссылки ( !) будет помещен перед -sпараметром:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
HRgiger
источник
1
Восклицательный ( !) теперь должны быть помещены перед -sпараметром: sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP.
Фернандо Силвейра,
Я не уверен, что здесь означает восклицательный знак. Это лучше принятого ответа?
aexl
@aexl - почти то же самое, кроме одной строки
HRgiger
5

Вы всегда можете использовать iptables для удаления правил. Если у вас много правил, просто выведите их с помощью следующей команды.

iptables-save > myfile

viчтобы редактировать их из строки одобрения. Просто используйте "дд", чтобы удалить строки, которые вам больше не нужны.

iptables-restore < myfile and you're good to go.  

ПОМНИТЕ, ЧТО, ЕСЛИ ВЫ НЕ НАСТРАИВАЕТЕ ОС НА СОХРАНЕНИЕ ПРАВИЛ В ФАЙЛ, И ЗАТЕМ ЗАГРУЗИТЕ ФАЙЛ ВО ВРЕМЯ ЗАГРУЗКИ, ВАШИ ПРАВИЛА БУДУТ УТЕРЯНЫ.

RecentCoin
источник
3
В Debian нет iptables-load, но есть iptables-restore iptables-restore < myfile// wiki.debian.org/iptables
Fedir RYKHTIK