🌟2017λ…„ 이전 ν¬μŠ€νŒ… λͺ¨μŒ 🌟/πŸ’žLinux OSπŸ’ž

IPtables μ΄μš©ν•œ λ°©ν™”λ²½ μ •μ±… μ„€μ • 및 λͺ…λ Ήν™œμš©

🌟BugsBunny🌟 2015. 3. 9. 13:44

 

사싀 곡유기 μƒνƒœμ—μ„œ μ„œλ²„ μš΄μ˜μ‹œ 방화벽을 λ‚΄λΆ€ μ‹œμŠ€ν…œμ—μ„œ ꡬ체적으둜 섀정을 ν•  ν•„μš”λŠ” μ—†λ‹€.

μ™œλƒν•˜λ©΄ 곡유기 μžμ²΄κ°€ λ°©ν™”λ²½ κΈ°λŠ₯을 λ‹΄κ³  있고 μ„€μ •μ—μ„œ ν¬μ›Œλ”© κΈ°λŠ₯을 μ΄μš©ν•΄μ„œ μ§€μ •λœ 포트 μ™Έμ—λŠ” 접근이

λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. λ‹€λ§Œ 이 λ°©ν™”λ²½ μ‚¬μŠ¬μ€ 개인 κ³΅μœ κΈ°κ°€ μ•„λ‹Œ μ‹€μž¬λ‘œ κ³ μ •IPμƒνƒœμ—μ„œ 직접 λ„€νŠΈμ›Œν¬μ— λ¬Όλ €μžˆλŠ” μ„œλ²„ μ»΄ν“¨ν„°μ—μ„œλ§Œ ν•΄ μ£Όλ©΄ 쒋을 것이닀. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ λ³΄μ•ˆμ μœΌλ‘œ 해킹을 λ‹Ήν•  ν™•λ₯ μ΄ λ†’μ•„μ§„λ‹€.

 

root@nsβ™₯Bunnyβ™₯/shellroot]# vi iptables_powerSecurity_script.sh

echo "###################################################################"

echo "#################### μ‹œμŠ€ν…œ λ°©ν™”λ²½ μ •μ±… λ³΄μ•ˆ μ„€μ • #################"

echo "#################### μž‘μ„±μž : ν•˜ νƒœ 용 <bunny>    #################"

echo "#################### http://bunnyblog.tistory.com #################"

echo "#################### E-Mail : bunny@apptree.pe.kr ################"

echo "###################################################################"

IPTABLES="/sbin/iptables"

IP_ADDR=`grep "IPADDR=" /etc/sysconfig/network-scripts/ifcfg-Auto_eth0 | awk -F'=' '{ print $2 }'`

. /etc/init.d/functions

case "$1" in

start|restart)

             echo "$1ing next_firewall :"

             ;;

         stop)

             echo "$1ping next_firewall :"

             $IPTABLES -F

             $IPTABLES -X

             $IPTABLES -P INPUT ACCEPT

             $IPTABLES -P FORWARD ACCEPT

             $IPTABLES -P OUTPUT ACCEPT

             exit

             ;;

            *)

             echo $"Usage: $0 {start|restart|stop}"

             exit

             ;;

esac

echo "================== λ£°μ…‹ μ΄ˆκΈ°ν™” ====================="

$IPTABLES -F

echo "==================  κΈ°λ³Έμ •μ±… μ„€μ • ======================"

$IPTABLES -P INPUT DROP

$IPTABLES -P FORWARD DROP

$IPTABLES -P OUTPUT ACCEPT

echo "================== Loopback νŠΈλž˜ν”½ ν—ˆμš© ================="

$IPTABLES -A INPUT -i lo -j ACCEPT

echo "==================  μžκΈ°μžμ‹ μ„ μ†ŒμŠ€λ‘œ ν•˜λŠ” νŠΈλž˜ν”½ 차단  =================="

$IPTABLES -A INPUT -i eth0 -s $IP_ADDR -j DROP

$IPTABLES -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

echo "================== μƒνƒœμΆ”μ  μ„€μ • ======================="

$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A INPUT -p all -m state --state INVALID -j DROP

echo "================== 비정상적 tcp-flags 차단 ==================="

$IPTABLES -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL PSH,FIN -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,RST,PSH -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,FIN,ACK,RST -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK,FIN,RST,PSH -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

echo "================== ftp servive ========================"

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 20 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 21 -m state --state NEW -j ACCEPT

echo "================== ssh servive ========================"

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT

echo "================== telnet servive ======================"

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 23 -m state --state NEW -j ACCEPT

echo "================== smtp servive  ======================="

#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 25 -m state --state NEW -j ACCEPT

echo "================== domainserver servive ====================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p udp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT

echo "================== http servive ====================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT

echo "================== OpenVPN service ==================="

$IPTABLES -A INPUT -p udp --sport 1024: --dport 1194 -m state --state NEW -j ACCEPT

echo "================== pop3 servive ====================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 110 -m state --state NEW -j ACCEPT

echo "================== identd servive ==================="

$IPTABLES -A INPUT -p tcp --syn --dport 113 -j REJECT --reject-with tcp-reset

echo "================== imap servive =================="

#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 143 -m state --state NEW -j ACCEPT

echo "================== snmp servive =================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 161 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p udp --sport 1024: --dport 161 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p udp --sport 1024: --dport 199 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 199 -m state --state NEW -j ACCEPT

echo "================== https servive ================="

#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 443 -m state --state NEW -j ACCEPT

echo "================== rsync servive ================="

#$IPTABLES -A INPUT -p tcp --sport 1024: --dport 873 -m state --state NEW -j ACCEPT

echo "================== mysql servive ================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT

echo "================== http servive 3000 =================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 3000 -m state --state NEW -j ACCEPT

echo "================== servive luxe =================="

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 39789 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p tcp --sport 1024: --dport 36785 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

[root@nsβ™₯Bunnyβ™₯/shellroot]# sh iptables_powerSecurity_script.sh

[root@nsβ™₯Bunnyβ™₯/shellroot]# iptables –L Γ¨ λ°©ν™”λ²½ 정책을 ν™•μΈν•œλ‹€.

[root@nsβ™₯Bunnyβ™₯/shellroot]# iptables –F Γ¨ λ°©ν™”λ²½ 정책을 μ΄ˆκΈ°ν™” ν•œλ‹€.

<μ°Έκ³  λ‚΄μš©>

iptables λ³΄μ•ˆ μ‚¬μŠ¬ μ˜΅μ…˜

-A(--append) : μ •μ±…μ•ˆμ— κ·œμΉ™μ„ 덧뢙인닀. -D(--delete) : ν•œκ°œλ˜λŠ” κ·Έμ΄μƒμ˜ μ„ νƒλœ κ·œμΉ™μ„ μ§€μš΄λ‹€

-R(--replace) :μ„ νƒλœ κ·œμΉ™μ„ μƒˆλ‘œμš΄ κ·œμΉ™μœΌλ‘œ λŒ€μ²΄ν•œλ‹€. -I(--insert) : 정책속에 μƒˆλ‘œμš΄ κ·œμΉ™μ„ λ„£λŠ”λ‹€.

-P(--policy) : κΈ°λ³Έ 정책을 λ³€κ²½ν•œλ‹€  -N(--new-chain) : μƒˆλ‘œμš΄ μ •μ±…μˆ˜λ¦½ν•œλ‹€

-X(--delete-chain) : μ •μ˜λ˜μ§€ μ•Šμ€ κ·œμΉ™μ€ μ§€μš΄λ‹€.  -L(--list) : 각 정책을 λ‚˜μ—΄ν•œλ‹€.

0-F(--flush) : λͺ¨λ“ μ •책을 μ§€μš΄λ‹€  -Z(--zero) μ •μ±…μ•ˆμ—μžˆλŠ” λͺ¨λ“  κ·œμΉ™λ“€μ˜ νŒ¨ν‚·μ΄λ‚˜ μΉ΄μš΄ν„°μ˜ λ°”μ΄νŠΈκ°’μ„ 0으둜

μ΄ˆκΈ°ν™”ν•œλ‹€.

μΆ”κ°€μ˜΅μ…˜  Γ¨ ACCEPT <λ‹Ήμ—°νžˆ λ°›μ•„λ“€μΈλ‹€λŠ” 뜻이고>   REJECT

– DENY <κ±°λΆ€ν•œλ‹€λŠ” 뜻인데 REJECTλŠ” μΉœμ ˆν•˜κ²Œ 'κ±°λΆ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€>

DENY <λΆˆμΉœμ ˆν•˜κ²Œ μ•„λ¬΄λŸ° 응닡이 μ—†λŠ” 것을 μ˜λ―Έν•œλ‹€>

μ„ΈλΆ€ μ˜΅μ…˜  Γ¨ -p(--protocol) 이 κ·œμΉ™μ˜ protocol  -s(--source)  λ°œμ‹ μ§€ μ£Όμ†Œ  -sport(--source-port)

 λ°œμ‹ μ§€ port(λͺ¨λ“ μ£Όμ†Œμ— λŒ€ν•΄μ„œ) 

-d(--destination) 도착지 μ£Όμ†Œ  -dport(--destination-port) 도착지 port(λͺ¨λ“  μ£Όμ†Œμ— λŒ€ν•΄μ„œ) -icmp-type 

ICMP type을 λ‚˜νƒ€λ‚Έλ‹€ -j(--jump)  νŒ¨ν‚·μ„ μ ν”„μ‹œν‚¨λ‹€. -i(--interface) μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ§€μ •ν•΄μ€€λ‹€.

======================================================================================

iptables -s 211.238.165.111 -j DROP   Γ¨ 막기

iptables -A INPUT -s 211.238.165.111 -p tcp --destination-port telnet -j DROP Γ¨ Service μ°¨λ‹¨ν•˜κΈ°

iptables -A INPUT -p tcp --destination-port telnet -i ppp0 -j DROP  Γ¨ 선택적인 차단

iptables -A INPUT -i ppp0 -p tcp --syn -j DROP  Γ¨ SYN Packets 막기

iptables -A INPUT -i ppp0 -p tcp --syn --destination-port ! 80 -j DROP Γ¨ SYN Packets web 막기

iptables -P FORWARD ACCEPT  Γ¨ Chain μ •μ±…

=============================================================================================================