Skip to content

조회 수 8854 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

test서버 방화벽 셋팅 (하도 자꾸 잊어버려서 기억하는 차원에서)

centos 64 버전(5.2) : 방화벽환경은 NAT가 필요없는 테스트 서버임(나홀로 내맘대로 서버...^^)
모든 버전은 기본 rpm버전이며 절대로 컴팔은 하지 않음!!!!!

#!/bin/sh
# 자체 서버 방화벽 룰 설정 파일
iptables -F -t filter
iptables -F -t nat
iptables -F -t mangle
# 기존에 설정되어 있을지 모를 룰을 모두 초기화한다.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 모든 룰에 매칭되지 않았을 때 실행될 기본 정책을 설정하는 부분이다.
# 자체 서버형태에서는 패킷을 다른 서버로 포워딩하지 않으므로 FORWARD chains 은
# 사용할 필요가 없다. 따라서 기본 정책으로 DROP 하고, OUTPUT은 가급적 허용하도록
# 한다. 단, INPUT에서는 반드시 DROP 하도록 한다.

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 루프백 인터페이스를 통해 오가는 트래픽은 허용한다.
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 255.255.255.255/32 -j DROP
iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 169.254.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.0.2.0/24 -j DROP
#iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP
iptables -A INPUT -i eth0 -s 248.0.0.0/5 -j DROP
# INPUT 패킷중 RFC 1918 에 정의된 사설 ip 및 일반적인 인터넷에서는 사용될 수
# 없는 ip 또는 ip 대역을 소스로 한 패킷을 차단한다.
# 위의 경우 외부 네트워크의 인터페이스로 eth0을 사용하는 경우이다.

# ssh buste attack rule
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 5 --rttl --name SSHSCAN -j LOG --log-prefix SSH_Scan:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 5 --rttl --name SSHSCAN -j DROP

iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 255.255.255.255/32 -j DROP
iptables -A OUTPUT -d 0.0.0.0/8 -j DROP
iptables -A OUTPUT -d 169.254.0.0/16 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.0.2.0/24 -j DROP
#iptables -A OUTPUT -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -d 224.0.0.0/4 -j DROP
iptables -A OUTPUT -d 240.0.0.0/5 -j DROP
iptables -A OUTPUT -d 248.0.0.0/5 -j DROP
# OUTPUT chain 에 대한 설정으로 비정상적인 ip 또는 ip 대역을 목적지로 한 패킷을
# 거부한다. FORWARD 는 어떠한 트래픽도 허용하지 않으므로 별도로 언급하지 않아도
# 된다.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 상태 추적에 따라 허용되어 이미 세션을 맺은 후 뒤따라오는 패킷은 허용하도록 한다.

iptables -A INPUT -i eth0 -p TCP ! --syn -m state --state NEW -j DROP
# tcp 패킷중 상태추적에는 NEW 이면서 syn 패킷이 아닌 패킷을 필터링한다.
# 이외의 패킷은 모두 위조된 패킷이기 때문이다.

iptables -A INPUT -i eth0 -p ALL -m state --state INVALID -j DROP
# 상태추적 테이블에서 INVALID 인 패킷은 차단한다.

iptables -A INPUT -i eth0 -p TCP --sport 1024: --dport 80 -m state --state NEW -j ACCEPT
# 웹 서비스를 제공할 때 목적지 포트가 80번으로 향하는 초기(NEW) 패킷은 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
# 모든 대역에서의 ftp 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
# 모든 에서의 ssh 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT
# 모든 에서의 mysql 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
# 모든 에서의 ssh 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP --sport 1024: --dport 25 -m state --state NEW -j ACCEPT
# SMTP 서비스를 제공할 때 외부에서 오는 메일을 받아 서버에 저장하거나 다른 서버로
# 보내고자 할 때 필요하므로 25/tcp를 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 110 -m state --state NEW -j ACCEPT
# pop3 서비스를 제공할 때 110/tcp 번으로 향하는 초기(NEW) 패킷을 허용한다.

iptables -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type network-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type port-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type time-exceeded -j ACCEPT
# icmp 와 관련된 패킷을 허용한다.
# 허용하고자 하는 icmp type을 지정하면 된다.


전반적인 내용은 kisa 방화벽 가이드와 일치한다.

스크립트 작성후

chmod +x iptables 로 실행권한 부여한다.
그리고 ./iptables 후 iptables -L로 확인

/etc/sysconfig/iptables-config 에서

IPTABLES_SAVE_ON_STOP="yes"

# Save current firewall rules on restart.
#   Value: yes|no,  default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets
# restarted.
IPTABLES_SAVE_ON_RESTART="yes"

2가지 yes로 변경 후 (말그대로 리스타트 할때, 그리고 스톱시킬때 자동 세이브한다는 내용)

/etc/rc.d/init.d/iptables save 하면 기존 스크립트가 /etc/sysconfig/iptables에 저장된다.

ssh 환경 셋팅

/etc/ssh/sshd_config 에서

AllowUsers test --->test 유저만 접속가능
PermitRootLogin no--->#제거후 yes에서 no로. 루트접속금지

List of Articles
번호 제목 글쓴이 날짜 조회 수
88 /etc/passwd 구조 l2zeo 2010.03.31 34919
87 64bit 시스템에 ssl 설치 후 실행 시 X509_free 오류 ADMINPLAY 2009.07.19 9701
86 Apache 에 ModSecurity 모듈 설치하기 ADMINPLAY 2009.08.03 10539
85 apache 웹방화벽 modsecurity용 웹설정 툴, Remo file ADMINPLAY 2009.09.09 9446
84 apache 웹방화벽 모듈 modsecurity용 웹설정 툴, Remo file ADMINPLAY 2009.03.17 10033
83 CentOS 5.2 32bit 에 2.6.27.4 커널 + iptables 1.4.2 + c... ADMIN 2008.11.10 7818
82 CentOS Portsentry 1.2 소스설치 오류 ADMINPLAY 2014.01.19 7052
81 Cisco/Tip/라우터,스위치에서 패킷 캡쳐하기 file l2zeo 2010.03.23 16122
80 DDOS - iptables 방화벽 초간단 문서 ADMINPLAY 2009.05.28 12302
79 denyhosts (ssh, ftp 등의 접근 차단) ADMINPLAY 2010.05.03 21358
78 DOS Attack을 막기 위한 간단한 방법 ADMINPLAY 2009.05.22 9568
77 fcheck - 리눅스 시스템 무결성 검사 툴 ADMIN 2008.12.14 11026
76 find 명령어 활용(보안관련) ADMINPLAY 2009.08.08 9599
75 iframe 이용한 악성코드 삽입, 홈페이지 변조 사고 대비 ... ADMINPLAY 2009.10.15 10806
74 iptables 기본 ADMINPLAY 2009.05.22 8386
73 iptables 리눅스? NETFILTER관련 1 l2zeo 2010.03.08 10122
72 iptables 명령어로 ip 차단 법. ADMINPLAY 2009.05.28 9283
» iptables 설정, centos64 설치 간단셋팅 ADMINPLAY 2009.05.28 8854
70 iptables 옵션 및 상태 추적 테이블 및 rule ADMINPLAY 2009.11.30 8851
69 iptables 포트 포워딩 ADMINPLAY 2009.06.04 12037
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234