iptables 원시 테이블에 규칙을 추가하는 방법은 무엇입니까?

iptables 원시 테이블에 규칙을 추가하는 방법은 무엇입니까?

저는 Linux Mint 18.1 및 GNU/Linux Debian 9 Stretch(테스트)에서 작업하고 있습니다.

IPv4만 사용할 수 있습니다. 네트워크 보안을 강화하고 싶은데 다음 내용을 읽었습니다.잘 알려진 TCP 공격 차단. 내가 시도하고 싶다고 가정 해 봅시다이 댓글.

iptables문제는 ' raw테이블?' 에 이러한 규칙을 추가하는 방법을 모른다는 것입니다 .

답변1

여기서는 IPv6에 관심이 없다고 가정합니다. 따라서 편집하려는 파일은 다음과 같습니다.

/etc/sysconfig/iptables

iptables 파일 맨 위에 넣으세요. 이는 RAW 테이블의 뼈대 구현이며 라우팅 관련 테이블(예: FILTER)보다 먼저 사용됩니다. 각 테이블의 정의 맨 아래에는 자체 COMMIT 명령이 있습니다.

*raw
:TCPFLAGS - [0:0]

# the two rules below assure that only TCP packets get examined. All others continue into the *filter table.
-A PREROUTING -p tcp -j TCPFLAGS
-A PREROUTING -j ACCEPT

# quickly accept standard handshakes
# ALLOW ACK or ACK/SYN
#-A TCPFLAGS -j ACCEPT
-A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK  -j ACCEPT

# allow ACK/FIN with either URG or PSH, or both, or neither
# but SYN and RST can't be set
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST  ACK,FIN -j ACCEPT

# allow SYN or ACK/SYN
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACCEPT

# allow RST or ACK/RST
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT

# this rule catches xmas-tree and fin attacks
-A TCPFLAGS -p tcp --tcp-flags FIN     FIN     -j DROP

# this rule catches xmas-tree and syn/rst attacks
-A TCPFLAGS -p tcp --tcp-flags SYN     SYN     -j DROP

# this rule catches null attacks
-A TCPFLAGS -p tcp --tcp-flags ALL     NONE    -j DROP

#-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP
# these rules catch bad ack combinations
#-A TCPFLAGS -p tcp --tcp-flags ACK     ACK     -j ACC
-A TCPFLAGS -j ACCEPT

# so, what do we accept for tcp?
# handshakes (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), and data packets with 
# PSH or URG or FIN or ACK

COMMIT

위의 내용은 * 필터 정의 위에 있습니다. 나는 규칙의 정확성을 보장하지 않습니다. 나에게 적합하지 않은 일부 규칙을 주석 처리했습니다. 내 규칙에 문제가 있는 경우 아래에서 지적해 주세요.

답변2

도움을 받아iptables-save, 저장할 올바른 형식이 무엇인지 찾았습니다.

/etc/iptables/rules.v4

질문에 연결된 규칙의 예는 다음과 같습니다.

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p icmp -m u32 ! --u32 "0x4&0x3fff=0x0" -j DROP
-A PREROUTING -p icmp -m length --length 1492:65535 -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
COMMIT

관련 정보