IPtables μ΄μ©ν λ°©νλ²½ μ μ± μ€μ λ° λͺ λ Ήνμ©
μ¬μ€ 곡μ κΈ° μνμμ μλ² μ΄μμ λ°©νλ²½μ λ΄λΆ μμ€ν μμ ꡬ체μ μΌλ‘ μ€μ μ ν νμλ μλ€.
μλνλ©΄ 곡μ κΈ° μμ²΄κ° λ°©νλ²½ κΈ°λ₯μ λ΄κ³ μκ³ μ€μ μμ ν¬μλ© κΈ°λ₯μ μ΄μ©ν΄μ μ§μ λ ν¬νΈ μΈμλ μ κ·Όμ΄
λΆκ°λ₯νκΈ° λλ¬Έμ΄λ€. λ€λ§ μ΄ λ°©νλ²½ μ¬μ¬μ κ°μΈ 곡μ κΈ°κ° μλ μ€μ¬λ‘ κ³ μ 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 μ μ± ============================================================================================================= |