all-in-one 2 (portsentry+iptables+apt-proxy+squid3)
เรื่อง network
ปรับตั้ง interfaces
# vi /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.1.3 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 auto eth1 iface eth1 inet static address 192.168.5.3 netmask 255.255.255.0 network 192.168.5.0 broadcast 192.168.5.255 gateway 192.168.5.1
เพื่อให้เครือข่ายภายในสามารถออกสู่ภายนอกได้ โดยใช้เซิร์ฟเวอร์ตัวนี้เป็นเกตเวย์ จะตั้งให้ฟอร์เวิร์ดไอพีได้
# vi /etc/sysctl.conf
... net.ipv4.ip_forward=1
ทำให้มีผลทันที
# echo 1 > /proc/sys/net/ipv4/ip_forward
portsentry + iptables พื้นฐาน
ติดตั้ง
# aptitude install portsentry iptables
สำหรับ portsentry ใช้ค่าปริยายทั้งหมด
สำหรับ iptables จะทำเป็นแบบสคริปต์ ไว้รันเวลาเปิดเครื่อง (จริง ๆ คือ รันตอนอินเทอร์เฟส eth1 เปิดขึ้นมาใช้งาน)
มีการเพิ่มกฎในการบล๊อกไอพีนิดหน่อย ทำให้ลดภาระ web server ในการกรองไอพี
เตรียมไฟล์ข้อมูล
# mkdir -p /sys1/sysb/etc/iptables
# ln -sf /sys1/sysb/etc/iptables /etc
# echo "#BLOCKED IP LIST" >> /etc/iptables/block_ip
สร้างสคริปต์ไว้เรียกตอนเปิด eth1 คือ /usr/local/sbin/d.eth1-iptables
# vi /usr/local/sbin/d.eth1-iptables
#!/bin/bash # SIMPLE IPTABLES INTERFACE=eth1 INT_NET=192.168.0.0/16 BLOCK_FILE=/etc/iptables/block_ip #DELETE OLD RULES iptables -F > /dev/null iptables -F -t nat > /dev/null #NAT iptables -t nat -A POSTROUTING -o $INTERFACE -j MASQUERADE #BLOCK SPECIFIC IP #SORT IP LIST IF DATA CHANGED touch $BLOCK_FILE "$BLOCK_FILE.bak" cmp -s "$BLOCK_FILE" "$BLOCK_FILE.bak" if [ $? -ne 0 ]; then TEMP_FILE=/tmp/block_ip touch $TEMP_FILE mv $BLOCK_FILE "$BLOCK_FILE.bak" cat "$BLOCK_FILE.bak" | while read LINE; do if [ ${LINE:0:1} == "#" ]; then echo $LINE >> $BLOCK_FILE else echo $LINE >> $TEMP_FILE fi done cat $TEMP_FILE | sort >> $BLOCK_FILE rm $TEMP_FILE fi #DO BLOCK cat $BLOCK_FILE | grep -v "#" | cut -d \ -f 1 | while read IP; do iptables -A INPUT -s $IP -j DROP done #BLOCK ssh INTRUDER BY RATE-LIMIT 4 FOR 600 SECONDS #FROM http://www.debian-administration.org/articles/187 iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --update --seconds 600 --hitcount 4 -j DROP #FORWARD INTERNAL iptables -A FORWARD -s $INT_NET -j ACCEPT iptables -A FORWARD -d $INT_NET -j ACCEPT #DROP REST iptables -A FORWARD -s ! $INT_NET -j DROP
# chmod 755 /usr/local/sbin/d.eth1-iptables
สร้างไพล์ข้อมูลไอพีที่ต้องการบล๊อก ชื่อ block_ip เอาไว้ที่ /etc/iptables
# vi /etc/iptables/block_ip
#BLOCKED IP LIST WWW.XXX.YYY.ZZZ #COMMENT ...
เปลี่ยนตัวเลขเอาตามจริงนะครับ
เวลาเราจะเพิ่มไอพี ก็มาแก้ไขที่ไฟล์นี้
นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces
# vi /etc/network/interfaces
... auto eth1 iface eth1 inet static address 192.168.5.3 netmask 255.255.255.0 network 192.168.5.0 broadcast 192.168.5.255 gateway 192.168.5.1 post-up /usr/local/sbin/d.eth1-iptables pre-down /sbin/iptables-save > /etc/iptables/rules-backup
(เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules-backup มาใช้อ้างอิงดูในการปรับปรุงได้)
สำหรับครั้งแรก ต้องรัน 1 ครั้ง ครั้งต่อไปไม่ต้องแล้ว จะรันผ่านอินเทอร์เฟส eth1 เอง
# /usr/local/sbin/d.eth1-iptables
apt-proxy
เอาไว้เก็บแพกเกจเดเบียน สำหรับเครือข่ายภายใน อันนี้เนื้อหาไม่ค่อยจำเป็น จะเอาเก็บไว้ที่ /sys1/syst
เตรียมไดเรกทอรี่
# mkdir -p /sys1/syst/var/cache/apt-proxy
# ln -sf /sys1/syst/var/cache/apt-proxy /var/cache
ติดตั้งและปรับแต่ง
# aptitude install apt-proxy
# mv /etc/apt-proxy /sys1/sysb/etc
# ln -sf /sys1/sysb/etc/apt-proxy /etc
# vi /etc/apt-proxy/apt-proxy-v2.conf
... [debian] backends = http://ftp.debianclub.org/debian http://ftp.debian.org/debian ... [security] backends = ftp://security.debian.org/debian-security http://security.debian.org/ ...
ลูกข่ายสามารถใช้งานผ่าน apt-proxy โดยเปลี่ยน sources.list ดังนี้
... #deb http://ftp.debian.org/debian stable main contrib non-free deb http://server1.example.com:9999/debian stable main contrib non-free ... #deb http://security.debian.org/ stable/updates main contrib non-free deb http://server1.example.com:9999/security stable/updates main contrib non-free ...
แก้ปัญหา apt-proxy ชอบตายบ่อย ๆ ด้วยการให้เริ่ม apt-proxy ใหม่ ตอนเที่ยงคืนทุกวัน
# crontab -e
... 5 0 * * * /etc/init.d/apt-proxy restart >&2 ...
squid3
เพื่อให้ประหยัดแบนด์วิธสูงสุด ควรติดตั้งพร๊อกซี่สำหรับภายในด้วย
ติดตั้ง
# aptitude install squid3
ปรับเล็กน้อย
# vi /etc/squid3/squid.conf
... #http_port 3128 #MOVE 3128 TO 8080 AND MAKE TRANSPARENT PROXY http_port 8080 transparent ... acl to_localhost dst 127.0.0.0/8 acl ournetwork src 192.168.0.0/16 acl SSL_ports port 443 ... http_access allow localhost http_access allow ournetwork ...
- Printer-friendly version
- 4488 reads
Recent comments