본문 바로가기

StoreHouse/Server

RedHat iptable 세팅예제

iptables 사용 .....
배포판 7.1k 를 사용 하고 있습니다 7.2 나 상관 없을 겁니다.
모듈로 만들어 진 파일은

여기 팁란에 어느 분이 링크 걸어놓은거
보고 포트 포워딩 부분만 제 시스템에 맡게만 고쳤습니다.
아마 여기 검색 해보시면 있을 겁니다

http://xjoin.wo.to 부분에 bbs 메뉴에서 자료실에서 다운 받으셔서
포트 포워딩 부분만 자기 시스템에 맡게 바꾸시면 됩니다.

rc. firewall 다운 받아서 (자료실 제목iptables)
다른 곳에다가 넣어 두어도 상관 없지만 그래도 관리 편하게하기 위해

1) /etc/rc.d 디렉토리에다가 넣어 주시기 바랍니다.

2) 속성 변경 으로 해주시면 될겁니다.
-rwxr--r-- 1 root root 8832 11월 17 18:54 rc.firewall

3)그리고 나서 vi rc.firewall --- 파일 이름 입니다. 자시 시스템에 맞게
포트 포워딩..(필요 없는 부분 삭제 또는 # 마크)

4) vi /etc/rc.d/rc.local( rc.local 내용 추가)

/etc/rc.d/rc.firewall ----- 부팅 시 적용 될수 있도록 이부분 추가

-------------------- rc.local 파일 내용------------------------
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.


if [ -f /etc/redhat-release ]; then
R=$(cat /etc/redhat-release)

arch=$(uname -m)
a="a"
case "_$arch" in
_a*) a="an";;
_i*) a="an";;
esac

NUMPROC=`egrep -c "^cpu[0-9]+" /proc/stat`
if [ "$NUMPROC" -gt "1" ]; then
SMP="$NUMPROC-processor "
if [ "$NUMPROC" = "8" -o "$NUMPROC" = "11" ]; then
a="an"
else
a="a"
fi
fi

# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
# want to make to /etc/issue here or you will lose them when you reboot.
# echo "" > /etc/issue
# echo "$R" >> /etc/issue
# echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue

# cp -f /etc/issue /etc/issue.net
# echo >> /etc/issue
fi
touch /var/lock/subsys/local

# rc.firewall --- iptables **** 이부분 다른 부분은 신경 쓰지말것
/etc/rc.d/rc.firewall

# apache 자동 실행
apachectl start

# mysql 자동 실행
safe_mysqld --language=korean &
-------------------------------------------------------------
5) ntsysv
[ ] ipchains
[*] iptables

--ipchains 사용 하셨던 분들은 * 체크 풀기 바랍니다
iptables 만 * 체크 해주시 바랍니다
그리고 나서 확인

무슨 뜻인줄 알겠죠 이부분은 부팅시 자동으로 iptables 데몬 올리기 위해
서라는 거 아시죠.

이것으로 설정 끝났습니다.
재 부팅 시기 바랍니다(잘 아시는 분들은 않하시고 하시는 방법 아시죠
./rc.firewall 이것만 가동 시켜주시면 됩니다)

./rc.firewall

-------------------정상 적인 메세지 입니다--------------------
Verifying that all kernel modules are ok
Using /lib/modules/2.4.3-12/kernel/net/ipv4/netfilter/ip_tables.o
insmod: a module named ip_tables already exists
Using /lib/modules/2.4.3-12/kernel/net/ipv4/netfilter/ip_conntrack.o
insmod: a module named ip_conntrack already exists
Using /lib/modules/2.4.3-
12/kernel/net/ipv4/netfilter/ip_conntrack_ftp.o
insmod: a module named ip_conntrack_ftp already exists
Using /lib/modules/2.4.3-12/kernel/net/ipv4/netfilter/iptable_nat.o
insmod: a module named iptable_nat already exists
Using /lib/modules/2.4.3-12/kernel/net/ipv4/netfilter/ip_nat_ftp.o
insmod: a module named ip_nat_ftp already exists
- Enabling packet forwarding in the kernel
- Enabling dynamic addressing measures
- Resetting the firewall and setting the default FORWARD policy to
DROP
- FWD: Allow all connections OUT and only existing and related ones
IN
- Proidea: Test
- Enabling SNAT (MASQUERADE) functionality on eth0

Done.
------------- 부팅시 자세히 보시면 이런 메세지 볼수 있습니다 --------
나중에 rc.firewall 파일이 변경 되었을때 재부팅 할 필요 없이

./rc.firewall
이렇게 싱행 시켜주시면
정상적으로 된다면 위와 같은 메세지 볼수 있을 겁니다.



******************* rc.firewall 자료실에서 다운 받을 파일*********
#!/bin/sh
#
# Initial SIMPLE IP Masquerade test for 2.4.x kernels
# using IPTABLES.
#
# Once IP Masquerading has been tested, with this simple
# ruleset, it is highly recommended to use a stronger
# IPTABLES ruleset either given later in this HOWTO or
# from another reputable resource.
#
#
# Load all required IP MASQ modules
#
# NOTE: Only load the IP MASQ modules you need. All current IP MASQ
# modules are shown below but are commented out from loading.
#
# Log:
# 0.60 - 0.50 had a mistake where the ruleset had a rule to DROP
# all forwarded packets but it didn't have a rule to ACCEPT
# any packets to be forwarded either
# - Load the ip_nat_ftp and ip_conntrack_ftp modules by default
# 0.50 - Initial draft
#

#echo -e "

IPMASQ *TEST* rc.firewall ruleset - v0.60
"


# The location of the 'iptables' program
#
# If your Linux distribution came with a copy of iptables, most
# likely it is located in /sbin. If you manually compiled
# iptables, the default location is in /usr/local/sbin
#
# ** Please use the "whereis iptables" command to figure out
# ** where your copy is and change the path below to reflect
# ** your setup
#
IPTABLES=/sbin/iptables
#IPTABLES=/usr/local/sbin/iptables
HOST_IP="`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"


#======================================================================
#== No editing beyond this line is required for initial MASQ testing ==


# Need to verify that all modules have all required dependencies
#
echo " - Verifying that all kernel modules are ok"
/sbin/depmod -a

# With the new IPTABLES code, the core MASQ functionality is now either
# modular or compiled into the kernel. This HOWTO shows [list] IPTABLES
# options as MODULES. If your kernel is compiled correctly, there is
# NO need to load the kernel modules manually.
#
# NOTE: The following items are listed ONLY for informational reasons.
# There is no reason to manual load these modules unless your
# kernel is either mis-configured or you intentionally disabled
# the kernel module autoloader.
#

# Upon the commands of starting up IP Masq on the server, the
# following kernel modules will be automatically loaded:
# ===============================================================

#Load the main body of the IPTABLES module - "iptable"
# - Loaded automatically when the "iptables" command is invoked
#
# - Loaded manually to clean up kernel auto-loading timing issues
#
/sbin/insmod ip_tables


#Load the IPTABLES filtering module - "iptable_filter"
# - Loaded automatically when filter policies are activated


#Load the stateful connection tracking framework - "ip_conntrack"
#
# The conntrack module in itself does nothing without other specific
# conntrack modules being loaded afterwards such as the "ip_conntrack_ftp"
# module
#
# - This module is loaded automatically when MASQ functionality is
# enabled
#
# - Loaded manually to clean up kernel auto-loading timing issues
#
/sbin/insmod ip_conntrack


#Load the FTP tracking mechanism for full FTP tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
/sbin/insmod ip_conntrack_ftp


#Load the general IPTABLES NAT code - "iptable_nat"
# - Loaded automatically when MASQ functionality is turned on
#
# - Loaded manually to clean up kernel auto-loading timing issues
#
/sbin/insmod iptable_nat


#Loads the FTP NAT functionality into the core IPTABLES code
# Required to support non-PASV FTP.
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
/sbin/insmod ip_nat_ftp


# Just to be complete, here is a list of the remaining kernel modules
# and their function. Please note that several modules should be only
# loaded by the correct master kernel module for proper operation.
# --------------------------------------------------------------------
#
# ipt_mark - this target marks a given packet for future action.
# This automatically loads the ipt_MARK module
#
# ipt_tcpmss - this target allows to manipulate the TCP MSS
# option for braindead remote firewalls.
# This automatically loads the ipt_TCPMSS module
#
# ipt_limit - this target allows for packets to be limited to
# to many hits per sec/min/hr
#
# ipt_multiport - this match allows for targets within a range
# of port numbers vs. listing each port individually
#
# ipt_state - this match allows to catch packets with various
# IP and TCP flags set/unset
#
# ipt_unclean - this match allows to catch packets that have invalid
# IP/TCP flags set
#
# iptable_filter - this module allows for packets to be DROPped,
# REJECTed, or LOGged. This module automatically
# loads the following modules:
#
# ipt_LOG - this target allows for packets to be
# logged
#
# ipt_REJECT - this target DROPs the packet and returns
# a configurable ICMP packet back to the
# sender.
#
# iptable_mangle - this target allows for packets to be manipulated
# for things like the TCPMSS option, etc.



#CRITICAL: Enable IP forwarding since it is disabled by default since
#
# Redhat Users: you may try changing the options in
# /etc/sysconfig/network from:
#
# FORWARD_IPV4=false
# to
# FORWARD_IPV4=true
#
echo " - Enabling packet forwarding in the kernel"
echo "1" > /proc/sys/net/ipv4/ip_forward


# Dynamic IP users:
#
# If you get your IP address dynamically from SLIP, PPP, or DHCP,
# enable this following option. This enables dynamic-address hacking
# which makes the life with Diald and similar programs much easier.
#
echo " - Enabling dynamic addressing measures"
echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# Enable simple IP forwarding and Masquerading
#
# NOTE: In IPTABLES speak, IP Masquerading is a form of SourceNAT or SNAT.
#
# NOTE #2: The following is an example for an internal LAN address in the
# 192.168.0.x network with a 255.255.255.0 or a "24" bit subnet mask
# connecting to the Internet on external interface "eth0". This
# example will MASQ internal traffic out to the Internet not not
# allow non-initiated traffic into your internal network.
#
# NOTE #3: You must change "eth0" to say "ppp0" if you are a modem user.
#
# ** Please change the above network numbers, subnet mask, and your
# *** Internet connection interface name to match your setup
#

echo " - Resetting the firewall and setting the default FORWARD policy to DROP"

#Unless specified, the defaults for INPUT, OUTPUT, and FORWARD is ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
# 원래는 forward를 전부 DROP을 시켰는데요. 전 풀어 놓았거든요. 근데. 아래의 소리바다...
# 등을 할려면 ACCEPT를 하고 나서 FORWORD에 대한 설정은 따로 해야 될것 같던데요.
# 함 해보신분은 좀더 좋은게 있음 부탁 드립니다. ^^
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD

echo " - FWD: Allow all connections OUT and only existing and related ones IN"
$IPTABLES -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i eth1 -o eth0 -j ACCEPT
$IPTABLES -A FORWARD -j LOG

echo " - Proidea: Test "
$IPTABLES -A INPUT -i eth0 -p icmp -j DROP
$IPTABLES -A INPUT -i eth0 -p tcp --dport 1024 -j DROP
$IPTABLES -A INPUT -i eth0 -p tcp --dport sunrpc -j DROP

echo " - Enabling SNAT (MASQUERADE) functionality on eth0"
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Popdesk (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -i eth0 -p udp --dport 2000:2020 -j DNAT --to 192.168.0.3
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 2000:2020 -j DNAT --to 192.168.0.3

#soribada (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 9065 -j DNAT --to 192.168.0.3:9065
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 9066 -j DNAT --to 192.168.0.3:9066
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 9067 -j DNAT --to 192.168.0.3:9067
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 9068 -j DNAT --to 192.168.0.3:9068


#FTP server (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -p tcp -d $HOST_IP --dport 8819 -j DNAT --to 192.168.0.9:21
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 8819 -j DNAT --to 192.168.0.9:21


#FTP server (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -p tcp -d $HOST_IP --dport 8820 -j DNAT --to 192.168.0.3:21
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 8820 -j DNAT --to 192.168.0.3:21



#80 (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 8881 -j DNAT --to 192.168.0.3:80
$IPTABLES -t nat -A PREROUTING -p tcp -d $HOST_IP --dport 8881 -j DNAT --to 192.168.0.3:80

# mms 미디어 동영상 192.168.0.3 1755 (포트 포워딩 부분)

$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 1755 -j DNAT --to 192.168.0.3:1755
$IPTABLES -t nat -A PREROUTING -p tcp -d $HOST_IP --dport 1755 -j DNAT --to 192.168.0.3:1755

# win 2000 터미널 서버 연결 192.168.0.3 3389 (포트 포워딩 부분)
$IPTABLES -t nat -A PREROUTING -p udp -d $HOST_IP --dport 3389 -j DNAT --to 192.168.0.3:3389
$IPTABLES -t nat -A PREROUTING -p tcp -d $HOST_IP --dport 3389 -j DNAT --to 192.168.0.3:3389


echo -e "
Done.
"

#############################################################
#!/bin/sh
host_ip="`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

## Mail to proidea IP ADDRESS
echo "$host_ip" | /bin/mail -s "proidea" fineday@dreamwiz.com
echo "$host_ip" | /bin/mail -s "proidea" imguru@lycos.net

*************************************************************

저기 위에서 (포트 포워딩 부분 이란 곳만 자기 시스템에맞게고 쳐주면
됩니다) 제가 이거 저것 사용 하다 보니 많이 들어 갔습니다.

그리고 밑에 부분에 kkk@hananet.net 이부분은 .....
유동아이피일경우 아이피가 변경 되면 재부팅시나...
./rc.firewall 실행 시켜 주면 메일이 오게 되어 있습니다.
물로 pop3 가 지원 되는 메일이어야 겠죠..
저도 hanmail.net 로는 오지 않지만 hananet.net 로는 아이피가 배달 됩니다
******만약에 포트 포워딩부분이 잘 되지 않을경우..
한줄이어야 하는데 두줄로 인식 되서 에러가 뜨는 경우도 있습니다.
그때는
:set number 로 확인 해보시 바랍니다.

저도 이것 때문에 고생 했습니다. 몰라서
팝데스크와 소리 바다는 제가 사용하지 않아서 테스트 해보지 않았지만
나머지는 정상 적으로 운용 되고 있습니다.

윈도우 터미널 은 아직 테스트 해보지 않았습니다.
윈 2000 터미널 클라이언트가 있으신 분은 ...
211.37.25.121
로 테스트 해보시 바랍니다.
윈도우2000 로그인 창이 뜨면 되는 겁니다...
테스트 부탁 합니다..제가 아직 해보지 않아서
내부내트워크 텔넷 부분도 운영 했으나 그부분은 삭제 해버렸습니다.
제가 지금 전혀 사용 하지 않고 있었서..

위 부분은 adsl 부분만 빼고 모두 되는 것입니다.
adsl 부분은 제가 adsl 환경이 아니라서 해보시 않았습니다.

지금 제 한경은 케이블 모뎀입니다. 유동아이피 입니다.
누구나 쉽게 조금 자세히 설명 하려니 길어졌습니다.

지금 사설 비비에스가 내부아이 피 쪽에 에 있었는데....

지금은 웹서버랑 사설 비비에스 랑 함께 있었서 그부분이 빠진겁니다.
한마디로 말해서 포트포워딩 잘 시켜 주면 ...내부랑 잘 연결 된다는
뜻이기도 합니다.

'StoreHouse > Server' 카테고리의 다른 글

RedHat crontab 사용하기  (0) 2004.12.10
RedHat 삼바 설치방법  (0) 2004.12.10
RedHat 삼바세팅 스왓이용 관련 FAQ  (0) 2004.12.10
SSH 완벽 가이드  (0) 2004.12.10
RSS 서버만들기 asp.net  (1) 2004.12.01