Да, конечно!
iptables
правила применяются по порядку. Таким образом, вы можете начать с очень ограничительной политики для своей цепочки, а затем разрешить трафик на определенных портах.
Вы можете сначала установить политики CHAIN по умолчанию, такие как :(, по умолчанию они установлены как ACCEPT)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Таким образом, вы настраиваете каждую ЦЕПЬ так, чтобы она отклоняла что-либо. Затем вы можете разрешить трафик только по одному порту или только по какому-то сегменту сети, как хотите:
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
INPUT
— это имя ЦЕПИ, для которой вы добавляете правило, -i
— для указания того, к какому интерфейсу применяется правило(eth0
в примере)-p
— для указания протокола(tcp
)в данном случае, с --dport
вы указываете, на каком порту вы разрешаете трафик, -m state
дает указание брандмауэру смотреть на состояние соединения, это для того, чтобы вы могли использовать --state NEW,ESTABLISHED
, которые являются двумя состояниями, в которых разрешено соединение, наконец, -j ACCEPT
сообщает брандмауэру, что соединения, соответствующие ранее описанному правилу, будут приняты.
Поскольку ваш последний вопрос касается диапазонов IP-адресов и/или портов, способ сделать это с помощью правила--dport 80:10010
(применяется к портам от 80 до 10010 ), а для диапазона IP-адресов вы можете использовать -m iprange --src-range 192.168.1.100-192.168.1.200
, поэтому правило будет применяться к любому трафику, приходящему с любого ip в диапазоне 192.168.1.100 -192.168.1.200
Полный рабочий пример:
iptables -A INPUT -i eth0 -p tcp --dport 80:10010 -m iprange --src-range 192.168.1.100-192.168.1.200 -m state --state NEW,ESTABLISHED -j ACCEPT
С достаточно свежей версией Миллера
$ ~/src/miller/c/mlr --ixtab --ips ':' --ocsvlite clean-whitespace then unsparsify yourfile
A,B,C
1,2,
3,2,8
,2,4
Если в ваших данных нет пробелов в конце, вы можете опустить clean-whitespace
, и в этом случае будет достаточно старой версии mlr
. Если у вас есть версия без clean-whitespace
, но она нужна вашим данным, вы можете объединить ее с отдельным инструментом, напримерsed
:
sed 's/ *$//' yourfile | mlr --ixtab --ips ':' --ocsvlite unsparsify