이 간단한 스크립트 파트 2를 사용하여 iptables로 나만의 방화벽 만들기

Firewall_ (네트워킹)

안녕하세요 여러분, 오늘 저는 iptables가있는 방화벽에 대한이 튜토리얼 시리즈의 두 번째 부분을 가져 왔습니다. 복사하여 붙여 넣을 수 있도록 매우 간단합니다. 하루가 끝나면 모든 초보자가 찾거나 심지어 가장 경험이 많은 사람이 찾는 것이라 생각합니다. 바퀴를 100 번 재발 명해야 하죠?

이번에는 방화벽이 OUTPUT DROP 정책으로 훨씬 더 공격적이기를 원하는지 여부에 대한 매우 구체적인 사례에 초점을 맞추도록 지시합니다. 이 게시물은 또한이 페이지와 내 게시물의 독자의 요청에 따른 것입니다. (내 마음 속에 wiiiiiiiiiiiii)

Output Drop 정책을 설정하는 "장단점"에 대해 조금 이야기 해 봅시다. 제가 말씀 드릴 수있는 것은 작업을 훨씬 더 지루하고 힘들게 만든다는 것입니다. 정책을 잘 생각하고 설계하고 계획하려면 훨씬 더 안전한 서버를 갖게됩니다.

주제에서 벗어나지 않기 위해 규칙이 얼마나 많거나 적어야하는지 예를 들어 빠르게 설명하겠습니다.

iptables -A 출력 -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
-A 우리가 규칙을 추가했기 때문에
-o 아웃 바운드 트래픽을 참조하면 인터페이스가 모두 일치하므로 지정되지 않은 경우 배치됩니다.
-스포츠 원산지 포트는 중요한 역할을합니다. 대부분의 경우 요청을 할 포트를 모르기 때문에 dport를 사용할 수 있습니다.
–Dport 나가는 연결이 특정 포트로만 가야한다는 것을 미리 구체적으로 알고있는 경우 대상 포트. 예를 들어 원격 mysql 서버와 같이 매우 구체적인 것이어야합니다.
-m state – 상태 ESTABLISHED 이것은 이미 확립 된 연결을 유지하기위한 장식입니다. 우리는 향후 포스트에서 그것에 대해 탐구 할 수 있습니다.
-d 예를 들어 IP를 통해 특정 시스템에 대한 ssh와 같이 지정할 수있는 경우 대상에 대해 설명합니다.

#!/bin/bash

# iptables 테이블을 정리합니다. -F iptables -X # NAT iptables를 정리합니다. -t nat -F iptables -t nat -X # PPPoE, PPP 및 ATM과 같은 항목을위한 mangle 테이블 iptables -t mangle -F iptables -t mangle -X # 정책 나는 이것이 초보자에게 가장 좋은 방법이라고 생각하고 # 여전히 나쁘지 않습니다. # 나가는 연결이기 때문에 출력을 모두 설명하겠습니다. 입력은 모든 것을 버리고 서버는 전달하지 않아야합니다. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # 인트라넷 LAN 인트라넷 = eth0 #Extranet wan extranet = eth1 # 상태 유지. 이미 연결된 (설정된) 모든 것은 다음과 같이 둡니다. iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
# 루프 장치. iptables -A INPUT -i lo -j ACCEPT
# Iptables 루프백 출력 -A OUTPUT -o lo -j ACCEPT

# http, https, 인터페이스를 지정하지 않습니다. # 모든 iptables가되기를 원하기 때문에 -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 출발
# http, https, 우리는 인터페이스를 지정하지 않습니다.
# 모두를위한 것이지만 출력 포트를 지정하면
iptables -A 출력 -p tcp --sport 80 -j 수락 iptables -A 출력 -p tcp --sport 443 -j 수락

# ssh는 내부적으로 만이 ip의 iptables 범위에서 -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT
# output # ssh는 내부적으로 만 그리고이 IP 범위에서
iptables -A OUTPUT -p tcp -d 192.168.xx / 24 -o $ intranet --sport 7659 -j ACCEPT
# 예를 들어 zabbix 또는 다른 snmp 서비스 iptables가 있는지 모니터링 -A INPUT -p tcp -s 192.168.1.1 -i $ intranet --dport 10050 -j ACCEPT
# 출발
# 예를 들어 zabbix 또는 다른 snmp 서비스가 있는지 모니터링
iptables -A OUTPUT -p tcp -d 192.168.1.1 -o $ 인트라넷 --dport 10050 -j ACCEPT

# icmp, ping good은 당신의 결정입니다 iptables -A INPUT -p icmp -s 192.168.xx / 24 -i $ intranet -j ACCEPT
# 출발
# icmp, 좋은 핑은 당신의 결정입니다
iptables -A OUTPUT -p icmp -d 192.168.xx / 24 -o $ 인트라넷 -j ACCEPT

#mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT
# 출력-사용자가 매우 구체적인 규칙 서버를 만들도록 요청한 # 질문 : 192.168.1.2 mysql : 192.168.1.3
#postgres가있는 mysql은 포트 5432입니다.
iptables -A OUTPUT -p tcp -s 192.168.1.2 -d 192.168.1.3 -dport 3306 -o $ 인트라넷 -j ACCEPT

#sendmail bueeeh 메일을 보내려면 #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx"# ​​서버 IP-귀하의 실제 WAN IP server LAN_RANGE = "192.168.xx / 21"# 네트워크의 LAN 범위 또는 # 엑스트라 넷에 들어가서는 안되는 VLAN # IP, 순전히 WAN 인터페이스가있는 경우 # 약간의 논리를 사용하는 것입니다. # 트래픽을 입력해서는 안됩니다. 해당 인터페이스를 통한 LAN 유형 SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"# 기본 동작-규칙이 ACTION = "와 일치 할 때 수행됩니다. DROP "# wan iptables를 통해 내 서버와 동일한 ip를 가진 패킷 -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION
iptables -A OUTPUT -o $ 엑스트라 넷 -s $ SERVER_IP -j $ ACTION

# wan에 대한 LAN 범위가있는 패킷, 특정 네트워크가있는 경우에 이렇게 넣습니다. #하지만 이것은 "for"루프 iptables 내부에서 다음 # 규칙과 중복됩니다. -A INPUT -i $ extranet -s $ LAN_RANGE -j $ 액션
iptables -A OUTPUT -o $ 엑스트라 넷 -s $ LAN_RANGE -j $ ACTION

## wan이 허용하지 않는 모든 SPOOF 네트워크는 $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION
iptables -A OUTPUT -o $ 엑스트라 넷 -s $ ip -j $ ACTION

다음 검토에서는 포트 범위를 수행하고 이름별로 구성된 정책을 설정할 것입니다. 여러분의 의견과 요청을 기다리고 있습니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.