我尝试使用iptables记录传出连接。我想要的是,在记录它们的同时删除并接受连接。我发现-j选项需要DROP/RESTATE/ACCEPT/RESTATE。但我想做一些像DROP和RESTATE或ACCEPT和RESTATE的事情。有没有方法可以实现这一点?
2lpgd9681#
虽然已经一年多了,我偶然发现这个问题在其他谷歌搜索几次,我相信我可以改善以前的答案为他人的利益。简短的回答是,你不能在一行中合并组合这两个动作,但你可以创建一个链,做你想做的,然后在一行中调用它。让我们创建一个链来记录和接受:
iptables -N LOG_ACCEPT
字符串让我们填充它的规则:
iptables -A LOG_ACCEPT -j LOG --log-level 6 --log-prefix "INPUT:ACCEPT: "iptables -A LOG_ACCEPT -j ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-level 6 --log-prefix "INPUT:ACCEPT: "
iptables -A LOG_ACCEPT -j ACCEPT
型现在让我们创建一个链来记录和删除:
iptables -N LOG_DROP
型让我们填充它的规则:
iptables -A LOG_DROP -j LOG --log-level 6 --log-prefix "INPUT:DROP: "iptables -A LOG_DROP -j DROP
iptables -A LOG_DROP -j LOG --log-level 6 --log-prefix "INPUT:DROP: "
iptables -A LOG_DROP -j DROP
型现在,你可以通过跳转(-j)到你的自定义链而不是默认的删除/接受/删除/删除来一次性完成所有操作:
iptables -A <your_chain_here> <your_conditions_here> -j LOG_ACCEPTiptables -A <your_chain_here> <your_conditions_here> -j LOG_DROP
iptables -A <your_chain_here> <your_conditions_here> -j LOG_ACCEPT
iptables -A <your_chain_here> <your_conditions_here> -j LOG_DROP
型
qacovj5a2#
范例:
iptables -A INPUT -j LOG --log-prefix "INPUT:DROP:" --log-level 6iptables -A INPUT -j DROP
iptables -A INPUT -j LOG --log-prefix "INPUT:DROP:" --log-level 6
iptables -A INPUT -j DROP
字符串日志示例:
Feb 19 14:18:06 servername kernel: INPUT:DROP:IN=eth1 OUT= MAC=aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88 SRC=x.x.x.x DST=x.x.x.x LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=x PROTO=TCP SPT=x DPT=x WINDOW=x RES=0x00 SYN URGP=0
型其他选项:
LOG Turn on kernel logging of matching packets. When this option is set for a rule, the Linux kernel will print some information on all matching packets (like most IP header fields) via the kernel log (where it can be read with dmesg or syslogd(8)). This is a "non-terminating target", i.e. rule traversal continues at the next rule. So if you want to LOG the packets you refuse, use two separate rules with the same matching criteria, first using target LOG then DROP (or REJECT). --log-level level Level of logging (numeric or see syslog.conf(5)). --log-prefix prefix Prefix log messages with the specified prefix; up to 29 letters long, and useful for distinguishing messages in the logs. --log-tcp-sequence Log TCP sequence numbers. This is a security risk if the log is readable by users. --log-tcp-options Log options from the TCP packet header. --log-ip-options Log options from the IP packet header. --log-uid Log the userid of the process which generated the packet.
LOG
Turn on kernel logging of matching packets. When this option
is set for a rule, the Linux kernel will print some
information on all matching packets
(like most IP header fields) via the kernel log (where it can
be read with dmesg or syslogd(8)). This is a "non-terminating
target", i.e. rule traversal
continues at the next rule. So if you want to LOG the packets
you refuse, use two separate rules with the same matching
criteria, first using target LOG
then DROP (or REJECT).
--log-level level
Level of logging (numeric or see syslog.conf(5)).
--log-prefix prefix
Prefix log messages with the specified prefix; up to 29
letters long, and useful for distinguishing messages in
the logs.
--log-tcp-sequence
Log TCP sequence numbers. This is a security risk if the
log is readable by users.
--log-tcp-options
Log options from the TCP packet header.
--log-ip-options
Log options from the IP packet header.
--log-uid
Log the userid of the process which generated the packet.
az31mfrm3#
在工作中,我需要使用iptables记录和阻止端口993(IMAPS)和995(POP3S)上的SSLv3连接。因此,我将Gert货车Dijk的How to take down SSLv3 in your network using iptables firewall? (POODLE)与Prevok的answer结合起来,得出了这样的结果:
iptables -N SSLv3iptables -A SSLv3 -j LOG --log-prefix "SSLv3 Client Hello detected: "iptables -A SSLv3 -j DROPiptables -A INPUT \ -p tcp \! -f -m multiport --dports 993,995 \ -m state --state ESTABLISHED -m u32 --u32 \ "0>>22&0x3C@ 12>>26&0x3C@ 0 & 0xFFFFFF00=0x16030000 && \ 0>>22&0x3C@ 12>>26&0x3C@ 2 & 0xFF=0x01 && \ 0>>22&0x3C@ 12>>26&0x3C@ 7 & 0xFFFF=0x0300" \ -j SSLv3
iptables -N SSLv3
iptables -A SSLv3 -j LOG --log-prefix "SSLv3 Client Hello detected: "
iptables -A SSLv3 -j DROP
iptables -A INPUT \
-p tcp \! -f -m multiport --dports 993,995 \
-m state --state ESTABLISHED -m u32 --u32 \
"0>>22&0x3C@ 12>>26&0x3C@ 0 & 0xFFFFFF00=0x16030000 && \
0>>22&0x3C@ 12>>26&0x3C@ 2 & 0xFF=0x01 && \
0>>22&0x3C@ 12>>26&0x3C@ 7 & 0xFFFF=0x0300" \
-j SSLv3
字符串
1.对于LOG和DROP,创建一个自定义链(例如SSLv3):
DROP
SSLv3
iptables -N SSLv3iptables -A SSLv3 -j LOG --log-prefix "SSLv3 Client Hello detected: "iptables -A SSLv3 -j DROP
型1.然后,将您想要的LOG和DROP重定向到该链(请参阅-j SSLv3):
iptables -A INPUT \ -p tcp \! -f -m multiport --dports 993,995 \ -m state --state ESTABLISHED -m u32 --u32 \ "0>>22&0x3C@ 12>>26&0x3C@ 0 & 0xFFFFFF00=0x16030000 && \ 0>>22&0x3C@ 12>>26&0x3C@ 2 & 0xFF=0x01 && \ 0>>22&0x3C@ 12>>26&0x3C@ 7 & 0xFFFF=0x0300" \ -j SSLv3
**注意:**注意规则的顺序。这些规则对我不起作用,直到我把它们放在我的防火墙脚本上的这个上面:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
wsxa1bj14#
nflog更好
sudo apt-get -y install ulogd2
字符串阻止规则示例:
iptables=/sbin/iptables# Drop ICMP (PING)$iptables -t mangle -A PREROUTING -p icmp -j NFLOG --nflog-prefix 'ICMP Block'$iptables -t mangle -A PREROUTING -p icmp -j DROP
iptables=/sbin/iptables
# Drop ICMP (PING)
$iptables -t mangle -A PREROUTING -p icmp -j NFLOG --nflog-prefix 'ICMP Block'
$iptables -t mangle -A PREROUTING -p icmp -j DROP
型您可以在日志中搜索前缀“阻塞”:
/var/log/ulog/syslogemu.log
5jdjgkvh5#
我已经创建了一个新的内核模块“xt_LOGD”来在一个规则中完成这一任务。这是特别开发的,以最大限度地减少记录和丢弃每个规则具有不同日志前缀的数据包所需的规则数量。https://github.com/MuriloChianfa/xtables-log-and-drop使用这个,你可以在相同的规则中记录和丢弃数据包:
iptables -A INPUT -p tcp --dport 80 -j LOGD --log-prefix "DROP HTTP PORT"
字符串代替
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "DROP HTTP PORT"iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "DROP HTTP PORT"
iptables -A INPUT -p tcp --dport 80 -j DROP
型这只会改变XT_CONTINUE返回常量,该常量默认情况下由NF-DROP模块中的NF-DROP源代码提供,如果你想要另一个目标,如NF-DROP或ACCEPT,你可以自己更改它:https://github.com/torvalds/linux/blob/33cc938e65a98f1d29d0a18403dbbee050dcad9a/net/netfilter/xt_LOG.c#L41
agxfikkp6#
对于中国GFW:
sudo iptables -I INPUT -s 173.194.0.0/16 -p tcp --tcp-flags RST RST -j DROPsudo iptables -I INPUT -s 173.194.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"sudo iptables -I INPUT -s 64.233.0.0/16 -p tcp --tcp-flags RST RST -j DROPsudo iptables -I INPUT -s 64.233.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"sudo iptables -I INPUT -s 74.125.0.0/16 -p tcp --tcp-flags RST RST -j DROPsudo iptables -I INPUT -s 74.125.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"
sudo iptables -I INPUT -s 173.194.0.0/16 -p tcp --tcp-flags RST RST -j DROP
sudo iptables -I INPUT -s 173.194.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"
sudo iptables -I INPUT -s 64.233.0.0/16 -p tcp --tcp-flags RST RST -j DROP
sudo iptables -I INPUT -s 64.233.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"
sudo iptables -I INPUT -s 74.125.0.0/16 -p tcp --tcp-flags RST RST -j DROP
sudo iptables -I INPUT -s 74.125.0.0/16 -p tcp --tcp-flags RST RST -j LOG --log-prefix "drop rst"
6条答案
按热度按时间2lpgd9681#
虽然已经一年多了,我偶然发现这个问题在其他谷歌搜索几次,我相信我可以改善以前的答案为他人的利益。
简短的回答是,你不能在一行中合并组合这两个动作,但你可以创建一个链,做你想做的,然后在一行中调用它。
让我们创建一个链来记录和接受:
字符串
让我们填充它的规则:
型
现在让我们创建一个链来记录和删除:
型
让我们填充它的规则:
型
现在,你可以通过跳转(-j)到你的自定义链而不是默认的删除/接受/删除/删除来一次性完成所有操作:
型
qacovj5a2#
范例:
字符串
日志示例:
型
其他选项:
型
az31mfrm3#
在工作中,我需要使用iptables记录和阻止端口993(IMAPS)和995(POP3S)上的SSLv3连接。因此,我将Gert货车Dijk的How to take down SSLv3 in your network using iptables firewall? (POODLE)与Prevok的answer结合起来,得出了这样的结果:
字符串
说明
1.对于
LOG
和DROP
,创建一个自定义链(例如SSLv3
):型
1.然后,将您想要的
LOG
和DROP
重定向到该链(请参阅-j SSLv3
):型
**注意:**注意规则的顺序。这些规则对我不起作用,直到我把它们放在我的防火墙脚本上的这个上面:
型
wsxa1bj14#
nflog更好
字符串
阻止规则示例:
型
您可以在日志中搜索前缀“阻塞”:
型
5jdjgkvh5#
我已经创建了一个新的内核模块“xt_LOGD”来在一个规则中完成这一任务。
这是特别开发的,以最大限度地减少记录和丢弃每个规则具有不同日志前缀的数据包所需的规则数量。
https://github.com/MuriloChianfa/xtables-log-and-drop
使用这个,你可以在相同的规则中记录和丢弃数据包:
字符串
代替
型
这只会改变XT_CONTINUE返回常量,该常量默认情况下由NF-DROP模块中的NF-DROP源代码提供,如果你想要另一个目标,如NF-DROP或ACCEPT,你可以自己更改它:https://github.com/torvalds/linux/blob/33cc938e65a98f1d29d0a18403dbbee050dcad9a/net/netfilter/xt_LOG.c#L41
agxfikkp6#
对于中国GFW:
字符串