που είναι το λάθος; iptables script
Demosthenes Koptsis
demosthenesk at gmail.com
Sat May 7 00:18:35 EEST 2011
Χαίρετε θα ήθελα αν γίνεται κάποια βοήθεια...
έχω κάνει ποστ το ίδιο θέμα στο φόρουμ του ubuntu σχετικά με το
iptables.
http://forum.ubuntu-gr.org/viewtopic.php?f=25&t=18334#p185409
Η ιστορία έχει ως εξής,
* Επεξεργασία δημοσίευσης
* Αποδοχή αυτής της απάντησης
* Αναφέρετε αυτήν την δημοσίευση
* Παράθεση demosthenesk
Ρύθμιση iptables
Δημοσίευσηαπό demosthenesk » Σήμερα, 19:29
Θέλω σε πρώτη φάση με το iptables να μπλοκάρω τα πάντα, δλδ να έχω
Default Policy DROP και στην συνέχεια να ανοίγω μία μία τρύπες
1) προς τις υπηρεσίες που θέλω να χρησιμοποιήσω σαν client και
2) προς τις υπηρεσίες που θέλω να προσφέρω σαν server.
στην προσπάθεια αυτή έκανα ένα μικρό script που με start/stop ξεκινά και
σταματά το firewall. (Θέλω να είναι σε αυτήν την μορφή για να το αλλάζω
εύκολα).
Όμως ενώ έχω ισχυρά την πεποίθηση ότι δεν κάνω κάποιο λάθος δεν μπορώ να
ανοίξω τρύπα στο firewall για να χρησιμοποιώ το απλό έναν ssh client.
Παρακάτω είναι το script.
---------------------------
#!/bin/sh
#
# Initscript for firewall.
#
# description: Starts and stops firewall
#
### BEGIN INIT INFO
# Provides: firewall script
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Starts and stops firewall
### END INIT INFO
# Check if root is running this script
if [ $(id -u) -ne 0 ] ; then
echo "ERROR: Try to run this as root."
# LSB specification errorcode
exit 4
fi
modprobe ip_conntrack_ftp
INTERFACE="eth1"
LOOPBACK_INTERFACE="lo"
IPADDR="192.168.0.5"
LOOPBACK="127.0.0.1"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
BROADCAST_SRC="0.0.0.0"
BROADCAST_DEST="255.255.255.255"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
#########################################
#Enable broadcast echo protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
#Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
#Dont send redirect messages
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
#Drop Spoofed Packets
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
#Log packets with impossible addresses
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
#########################################
flush()
{
#Remove any existing rules from all chains
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
}
accept_policy()
{
#set default policy to accept
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
iptables -t nat --policy PREROUTING ACCEPT
iptables -t nat --policy OUTPUT ACCEPT
iptables -t nat --policy POSTROUTING ACCEPT
iptables -t mangle --policy PREROUTING ACCEPT
iptables -t mangle --policy OUTPUT ACCEPT
}
drop_policy()
{
#set default policy to drop
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
# iptables -t nat --policy PREROUTING DROP
# iptables -t nat --policy OUTPUT DROP
# iptables -t nat --policy POSTROUTING DROP
iptables -t mangle --policy PREROUTING DROP
iptables -t mangle --policy OUTPUT DROP
}
remove_user_chains()
{
iptables -X
iptables -t nat -X
iptables -t mangle -X
}
rules()
{
####### Allow ssh client to remote ssh server
# iptables -A OUTPUT -p tcp -s $IPADDR --sport $UNPRIVPORTS --dport 22
-j ACCEPT
# iptables -A INPUT -p tcp --sport 22 -d $IPADDR --dport $UNPRIVPORTS
-j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
##########################################################
}
start()
{
flush
#unlimited traffic on loopback interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
drop_policy
remove_user_chains
rules
}
stop()
{
flush
remove_user_chains
accept_policy
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
----------------------
όλο το ζουμί είναι στην ρουτίνα rules().
Εκεί είναι οι κανόνες για να ανοίγω τρύπες στο firewall.
Επεξεργασία δημοσίευσης
* Διαγραφή δημοσίευσης
* Αποδοχή αυτής της απάντησης
* Αναφέρετε αυτήν την δημοσίευση
* Παράθεση demosthenesk
Re: Ρύθμιση iptables
Δημοσίευσηαπό demosthenesk » Σήμερα, 19:42
Η γραμμή
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
λέει ότι επιτρέπεται ένα εξερχόμενο πακέτο tcp από το σύστημα (πιο καλά
από οπουδήποτε) προς οποιοδήποτε ssh server
η επόμενη γραμμή λέει ότι να δέχεται από οποιοδήποτε ssh server τα
πακέτα tcp σε οποιοδήποτε interface
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
επίτηδες έχω αυτήν την μορφή για να δω αν λειτουργεί. Όταν καταλάβω που
είναι το λάθος θα γράψω πιο σοφιστικέ κανόνες όπως
iptables -A OUTPUT -p tcp -s $IPADDR --sport $UNPRIVPORTS --dport 22 -j
ACCEPT
iptables -A INPUT -p tcp --sport 22 -d $IPADDR --dport $UNPRIVPORTS -j
ACCEPT
αλλά έλα μου ντε που ούτε το απλό δεν λειτουργεί.
Υπόψιν εδώ θέλω να μπορώ να χρησιμοποιήσω έναν ssh client από το
μηχάνημα μου.
Τι λάθος κάνω;
--
Regards,
Demosthenes
More information about the Linux-greek-users
mailing list