iptables 여러 소스 IP


답변:


13

원하는 소스 IP를 연속 범위로 집계 할 수있는 경우에만 가능합니다. 예 :

iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT

원하는 IP를 포괄하는 일반적인 넷 마스크를 찾을 수 없으면 원하는 것을 수행하기 위해 동일한 규칙을 여러 개 작성해야합니다.

iptables 규칙 작성의 낮은 수준을 처리 할 수있는 몇 가지 iptables 프레임 워크가 있으므로 규칙을보다 대칭적인 수준으로 정의 할 수 있습니다. Shorewall 은 최신 Linux 배포판과 함께 제공되는 일반적인 것입니다.


//, 이것은 search.cpan.org/~phillips/IPTables-Rule-0.01/lib/IPTables/… 에 따르면 올바르지 않습니다 .
Nathan Basanese

1
Ali Pandidan 의이 답변 은 실제로 가장 핵심적인 답변 입니다.
derHugo

112

단일 명령으로 여러 소스를 추가하려면 다음을 수행하십시오.

iptables -t filter -A INPUT -s 192.168.1.1,2.2.2.2,10.10.10.10 -j ACCEPT

iptables는 자동으로 여러 규칙 으로 변환합니다 .


3
투표의 부족,이 작품과 질문에 올바른 대답에도 불구하고
필 - lavin

//, 포트와 같은 작업을 수행 할 수 있습니까?
Nathan Basanese

1
@NathanBasanese -m multiport --dports 123,456,789여러 포트에 사용할 수 있습니다
mahemoff

Tobia는 이제 이것보다 더 나은 답변을 얻었습니다. 아래를 참조하십시오.
Ben Aveling 11

iptables v1.3.7주어진 명령을 사용 하면 iptables -I FORWARD -s 5.188.206.14,193.238.47.5 -j DROP오류 " host/network '5.188.206.14,193.238.47.5' not found"가 반환 됩니다.
JamesThomasMoon1979

14

다음과 같이 iprange 모듈을 '--src-range'와 함께 사용할 수 있습니다.

-A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT

출처 : iptables 1.4.7 맨 페이지

   iprange
   This matches on a given arbitrary range of IP addresses.

   [!] --src-range from[-to]
          Match source IP in the specified range.

   [!] --dst-range from[-to]
          Match destination IP in the specified range.

(이것은 4 살짜리 질문과 같지만 인터넷에서 이것을 찾는 사람에게 대답하는 것입니다)


14

원래 질문은 2009 년 5 월에서 왔지만 2011 년 5 월부터 Linux 커널에는 ipset 이라는이 요구를 해결하는 기능이 있습니다 .

다음은 ipset을 만들고 주소를 추가 한 다음 방화벽 규칙에서 사용하는 예제입니다.

ipset -N office365 iphash

ipset -A office365 132.245.228.194
ipset -A office365 132.245.77.34
ipset -A office365 132.245.48.34
ipset -A office365 132.245.68.242
ipset -A office365 132.245.55.2
ipset -A office365 40.101.17.98
ipset -A office365 132.245.48.18
ipset -A office365 132.245.229.114
ipset -A office365 132.245.196.34
ipset -A office365 132.245.56.114

iptables -A OUTPUT -m set --match-set office365 dst -j ACCEPT

참조 man iptablesman ipset추가 정보를 원하시면.


5

Bòss King의 의견 외에도 쉼표로 구분 된 여러 주소를 간단히 지정할 수도 있습니다.

[!] -s, --source address[/mask][,...]
      Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address. Hostnames will be resolved once only, before the rule is submitted to the kernel.  Please note  that  specifying
      any  name  to  be resolved with a remote query such as DNS is a really bad idea.  The mask can be either a network mask or a plain number, specifying the number of 1's at the left side of the network mask.  Thus, a mask of 24 is equivalent to
      255.255.255.0.  A "!" argument before the address specification inverts the sense of the address. The flag --src is an alias for this option.  Multiple addresses can be specified, but this will expand to multiple rules (when adding with  -A),
      or will cause multiple rules to be deleted (with -D).

같은 쉘 bash에서 백 슬래시로 반전을 피해야합니다.\! -s 192.168.1.3 ...
Marcos

iptables v1.6.1: ! not allowed with multiple source or destination IP addresses:-(
tu-Reinstate Monica-dor

4

독립적 인 요구 사항 목록을 결합 할 수 있도록 여러 체인을 정의 할 수 있습니다. 나는 이것이 당신이 원하는 것이지 의심하지만 여전히 꽤 편리합니다. 이를 사용하여 IP로 유효한 사용자 유형 목록을 정의한 다음 소스 네트워크에 포트 제한을 적용합니다. 예를 들어,

# Allow SMTP from anywhere
-A tcp_inbound -p tcp -m tcp -s 0/0 --dport 25 -j allowed
#
# Define the set of IP ranges we'll send to the tcp_user_inbound chain
-A tcp_inbound -p tcp -m tcp -s 172.19.1.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.6.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.8.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.10.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.12.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.4.0/23 -j tcp_user_inbound
#
# Ports we allow access to based on a source-address prereq.
# SSH
-A tcp_user_inbound -p tcp -m tcp --dport 22 -j allowed
# VNC
-A tcp_user_inbound -p tcp -m tcp --dport 5950:5958 -j allowed
# https
-A tcp_user_inbound -p tcp -m tcp --dport 443 -j allowed

-1

예를 들어 10.0.0.2 또는 192.168.1.2에서 온 SMTP 패킷 만 허용한다고 가정 해 봅시다. 다음 규칙을 사용할 수 있습니다.

  # create a new chain
  iptables --new-chain multiple_sources_smtp
  # send all SMTP connections to the new chain
  iptables --append INPUT --protocol tcp --dport 25 --jump multiple_sources_smtp
  # use the default INPUT rules for packets coming from allowed sources
  iptables --append multiple_sources_smtp --source 10.0.0.2 --jump RETURN
  iptables --append multiple_sources_smtp --source 192.168.1.2 --jump RETURN
  # drop packets from anywhere else
  iptables --append multiple_sources_smtp -j DROP

또는 출력으로 iptables-save

  # Generated by iptables-save v1.4.14 on Sat Dec  6 09:17:11 2014
  *filter
  :INPUT ACCEPT [32:13325]
  :FORWARD ACCEPT [0:0]
  :OUTPUT ACCEPT [25:3084]
  :multiple_sources_smtp - [0:0]
  -A INPUT -p tcp -m tcp --dport 25 -j multiple_sources_smtp
  -A multiple_sources_smtp -s 10.0.0.2/32 -j RETURN
  -A multiple_sources_smtp -s 192.168.1.2/32 -j RETURN
  -A multiple_sources_smtp -j DROP
  COMMIT
  # Completed on Sat Dec  6 09:17:11 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.