2005/Sep/22

พอดีนั่งทำ Server ให้อยู่ที่หนึ่ง ไอ้เจ้าเครื่องจะให้ทำ Gateway เนี่ยมี Harddisk อยู่แค่ 1.2 GB เอาละสิ ถ้าลง Squid ไปด้วยนี่ Harddisk คงเต็มภายใน 1 อาทิตย์แหงๆ

พวกอยากให้ทำ transparent proxy ด้วย เลยตัดสินใจติดตั้ง squid ที่เครื่องที่เป็น File Server,Web Server ซึ่งเป็น Intranet Server

สั่ง apt-get install squid เสร็จก็แก้ /etc/squid/squid.conf ดังนี้ครับ

http_port 3128
# icp_port 3130
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 128 MB
cache_dir ufs /var/spool/squid 1500 16 256
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl allowall src "/etc/squid/allow.ip"
acl sex_domain dstdomain "/etc/squid/sex.domain"
acl sex_url dstdom_regex "/etc/squid/sex.url"
acl sex_word dstdom_regex "/etc/squid/sex.word"
acl sex_ip dst "/etc/squid/sex.ip"
acl sex_w url_regex "/etc/squid/sex.urly"
acl daytime time 08:00-16:30 MTWHFAS
acl mynetwork src 192.168.16.0/255.255.252.0
acl download urlpath_regex \.exe$ \.EXE$ \.zip$ \.ZIP$ \.rar$ \.RAR$ \.mp3$ \.MP3$ \.mov$ \.MOV$ \.mpg$ \.MPG$ \.mpeg$ \.MPEG$ \.avi$ \.iso$ \.AVI$ \.wma$ \.WMA$
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow allowall
http_access deny download daytime
http_access deny sex_word
http_access deny sex_domain
http_access deny sex_ip
http_access deny sex_url
http_access deny sex_w
http_access allow mynetwork
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_user proxy
cache_effective_group proxyhttpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header oncoredump_dir /var/spool/squid

ทำการบล็อกดาวน์โหลด เว็บโป๊ ตามความต้องการ รวมทั้งอนุญาติสำหรับพวกอภิสิทธิ์ชนยูสเซอร์บางท่าน ตามความประสงค์ อุๆ

ไอ้ตัว Gateway นั้นการ์ด eth0 เป็น Public IP ส่วน eth1 เป็น Private IP มี ip เป็น 192.168.16.1 ส่วนเจ้า Squid Box ก็ 192.168.17.1

ก็ทำการสร้าง rules iptables ตามนี้ครับ

#!/bin/sh
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F

.....

iptables -t nat -A POSTROUTING -s 192.168.16.0/22 -o eth0 -j MASQUERADE
# Transparent Proxy
iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.17.1 -p tcp --dport 80 -j DNAT --to 192.168.17.1:3128
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.16.0/22 -d 192.168.17.1 -j SNAT --to 192.168.16.1
iptables -A FORWARD -s 192.168.16.0/22 -d 192.168.17.1 -i eth1 -o eth1 -p tcp --dport 3128 -j ACCEPT

# Drop SSH Brute Force Attack
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 600 --hitcount 2 -j DROP

*** หมายเหตุ rules บางส่วนตัดออกไปละไว้ในฐานที่เข้าใจ เพื่อความปลอดภัยครับ :)


2005/Aug/14

ได้ผลไม่ได้ผลไม่รู้นะ เพราะผมตั้งพาสเวิร์ดไว้ยาวมากๆ แต่ที่ทำเพราะรำคาญกับ log file ที่โตเร็วเพราะพวกชอบลองของ

ใครเคยเจอปัญหาแบบนี้มัยครับ

Aug 14 19:22:23 ids sshd[469]: Illegal user tracy from 222.90.77.158
Aug 14 19:22:24 ids sshd[469]: error: Could not get shadow information for NOUSER
Aug 14 19:22:24 ids sshd[469]: Failed password for illegal user tracy from 222.90.77.158 port 46792 ssh2
Aug 14 19:22:27 ids sshd[471]: Illegal user content from 222.90.77.158
Aug 14 19:22:28 ids sshd[471]: error: Could not get shadow information for NOUSER
Aug 14 19:22:28 ids sshd[471]: Failed password for illegal user content from 222.90.77.158 port 47655 ssh2
Aug 14 19:22:31 ids sshd[473]: Illegal user article from 222.90.77.158
Aug 14 19:22:31 ids sshd[473]: error: Could not get shadow information for NOUSER
Aug 14 19:22:31 ids sshd[473]: Failed password for illegal user article from 222.90.77.158 port 47917 ssh2
Aug 14 19:22:33 ids sshd[475]: Illegal user ahernandez from 222.90.77.158
Aug 14 19:22:33 ids sshd[475]: error: Could not get shadow information for NOUSER
Aug 14 19:22:34 ids sshd[475]: Failed password for illegal user ahernandez from 222.90.77.158 port 48144 ssh2
Aug 14 19:22:36 ids sshd[477]: Illegal user alberto from 222.90.77.158
Aug 14 19:22:36 ids sshd[477]: error: Could not get shadow information for NOUSER
Aug 14 19:22:36 ids sshd[477]: Failed password for illegal user alberto from 222.90.77.158 port 48322 ssh2
Aug 14 19:22:39 ids sshd[479]: Illegal user alexandra from 222.90.77.158
Aug 14 19:22:39 ids sshd[479]: error: Could not get shadow information for NOUSER
Aug 14 19:22:40 ids sshd[479]: Failed password for illegal user alexandra from 222.90.77.158 port 48511 ssh2

ยาวเป็นพรืดดดดดดดดดดด

ลองกำหนด rules firewall เพิ่มดังนี้ครับ

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent \
--set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent \
--update --seconds 600 --hitcount 2 -j DROP
เป็นการทำ rate-limit incoming connections   ได้ผลดีที่เดียว  

2005/Aug/09