http://forum.ubuntuclub.com/index.php?topic=107.0
http://askubuntu.com/questions/270693/how-can-set-these-iptables-rules-to-run-at-startup
http://attasit.ptl.ac.th/Jml/index.php?option=com_content&view=article&id=30:-port-iptable&catid=10:2010-02-11-15-46-39&Itemid=22
การblockให้หมด เช่น เวป http และ https
ทำ2 แบบ คือ 1
1.block http หรือ port 80 ใช้ squid ดังลา่ง
acl mac_nb_joe arp 20:6a:8a:34:32:f2
acl mac_poo arp 74:ea:3a:81:05:94
.
.
.
http_access deny mac_nb_joe
http_access deny mac_poo
ใน # nano /etc/squid/squid.conf แล้วสั่ง /etc/init.d/squid reload
และให้ลองสั่ง ว่า คำสั่งใน squid ได้โหลดผ่านหมดไหม ใช้ service squid stop และสั่ง service squid start ถ้าไม่มี error ก็ผ่าน
2.block https ทำใน nano /etc/init.d/firewall.sh ทำเสร้จ ให้ สั่ง sh /etc/initd./firewall.sh ดู ที่ตั้งไป # iptables -L -v
iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.20 -m string --string "facebook.com" --algo bm --to 65535 -j DROP
iptables -I FORWARD -m mac --mac-source aa:bb:cc:dd:ee:ff -j DROP
iptables -A FORWARD -m mac --mac-source 20:6a:8a:34:32:f2 -m string --string "facebook.com" --algo bm --to 65535 -j DROP
================
ขอถามพี่ๆเรื่อง iptables block web และ bypass ip บางเครื่องให้เข้าได้
« on: September 23, 2013, 12:19:38 AM »
คือตอนนี้ผมทำ server block web โดย web ที่เป็น url port 80 จะ block ด้วย squid3 ก็ใช้งานได้โอเค
แต่จะติดปัญหากับการ block facebook https ซึ่ง squid3 ไม่สามารถเอาอยู่ ผมเลยมา block facebook https ผ่าน iptables แทนก็สามารถ block ได้โอเคเลยครับ แต่ติดปัญหาที่ เครื่องระดับหัวหน้าเค้าต้องการ facebook เข้าได้ผมเลยจะถามพี่ๆว่า ถ้า
จะให้บางเครื่องหรือบาง ip สามารถทะลุหรือผ่านเข้า facebook https ได้ มันสามารถทำได้ไหมครับ ถ้าทำได้ต้องใช้คำสั่งว่าอะไรบ้างครับ รบกวนๆพี่ๆช่วยด้วยนะครับ :) :'(
ซึ่งผมลองค้นหาในเน็ตอยู่พักนึงได้มาแบบนี้ครับ ลองดูมันไม่ได้ผลครับ เข้า facebook ไม่ได้อยู่ดี
iptables -I FORWARD -s 192.168.1.0/24 --match iprange --dst-range 192.168.1.50-192.168.1.70 -p tcp -d 69.63.176.0/20 -j ACCEPT
รบกวนด้วยนะครับ
---
ตอบช้าไปไหมนิ ทำได้ครับ คุณก็ทำแบบเดิมเหมือนที่คุณ Block Https ครับ แต่ว่าอันนี้คุณ ระบุ IP ของคนที่ต้องการให้เข้า และกำหนดเป็น ACCEPT แค่นั้นครับ
** ข้อสำคัญคือ ลำดับการจัดวางมีความสำคัญมาก เช่น
1. 192.168.1.0/24 https Deny
2. 192.168.1.10 https Accept
จะต่างกับ
1. 192.168.1.10 https Accept
2. 192.168.1.0/24 https Deny
อันบนคือ 192.168.1.10 จะไม่สามารถเข้า https ได้ครับ เพราะว่าโดนบรรทัดแรก Deny ไปแล้ว ที่คุณต้องทำคือทำแบบอันล่าง
** ผิดถูกยังไงต้อง ขอ อภัย ด้วยครับ ถ้าผมผิด วานผู้รู้ช่วยแก้ด้วยครับ
--
ตามนั้นครับ จำง่ายๆ คือมันทำงานทุกคำสั่งโดยเรียงจากล่างขึ้นบน ( กรณีนี้คือปิด https ทุกคนก่อน ตามด้วยเปิด https ให้กับ 192.168.1.10)
ปล.มันจะไม่มีปัญหากับ web อื่นที่เป็น https เหรอครับ เช่น google, hotmail พวกนี้ ทำไมไม่ลองชี้ domain facebook ไปที่ ip อื่นดู โดยแก้ที่ไฟล์ /etc/hosts
======================
ส่วนถ้าถามว่า ควร จะปิดหรือเปิด PORT อะไรบ้าง อันนี้ตอบแบบฟันธงไม่ได้ จะขึ้นอยู่กับหน่วยงานของท่านเองว่าจะต้องใช้ PORT อะไรบ้าง แต่พอร์ตที่ จำเป็นจะต้องเปิดมีดังนี้
หทายเลขพอร์ต
|
การเชื่อมต่อ
|
หน้าที่เชื่อมต่อ
|
53
|
TCP/UDP
|
DNS การแปลงชื่อกับหมายเลข IP
|
80,8080
|
TCP
|
HTTP การใช้ WEB
|
443,8443
|
TCP
|
HTTPS การใช้ WEB ความปลอดภัยสูง
|
20,21
|
TCP/UDP
|
FTP บริการ FTP โอนถ่ายข้อมูล
|
22
|
TCP
|
SSH บริการควบคุมระยะไกล
|
25,110
|
TCP
|
EMAIL อีเมล์ Server เท่านั้น เช่นการใช้ Outlook เป็นต้น
ไม่เกี่ยวกับการเข้า email ด้วย web
|
1863
|
TCP
|
MSN การแชท
|
554
|
TCP/UDP
|
RTSP ระบบมัลติมีเดีย เช่น วิทยุ ทีวี ฟังเพลง Online
|
สำหรับส่วนประกอบของ IPTABLES นั้นจะมีส่วนประกอบหลัก ๆ อยู่ 3 ส่วนด้วยกัน
- INPUT คือส่วนของข้อมูลที่เข้ามาสู่เครืองคอมพิวเตอร์ Server
- OUTPUT คือส่วนของข้อมูลที่ออกจะเครื่องคอมพิวเตอร์ Server
- FORWARD คือส่วนที่ส่งต่อข้อมูลจะเครือข่ายภายในสู่ภายนอกนั้นเองครับ (การบล็อกพอร์ตจะใช้ในส่วนที่เป็นหลัก สำหรับการติดต่อระหว่างเครื่องภายในและภายนอก)
สำหรับวิธีการการบล็อกพอร์ทนั้น จะมีวิธีที่นิยมอยู่ 2 วิธีการคือ
1.เปิดทั้งหมดแล้ว ทำการบล็อกพอร์ทที่จะปิด
ตัวอย่าง
$IPTABLES -P FORWARD ACCEPT #OPEN ALL
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 1863 -j DROP #BLOCK MSN
$IPTABLES -A FORWARD -p udp --dport 1863 -j DROP #BLOCK MSN
$IPTABLES -A FORWARD -p tcp --dport 4000 -j DROP #BLOCK qq
$IPTABLES -A FORWARD -p tcp --dport 5050 -j DROP #BLOCK YAHOO CHAT
$IPTABLES -A FORWARD -p tcp --dport 2778 -j DROP #BLOCK CamFrox
$IPTABLES -A FORWARD -p udp --dport 1863 -j DROP #BLOCK MSN
$IPTABLES -A FORWARD -p tcp --dport 4000 -j DROP #BLOCK qq
$IPTABLES -A FORWARD -p tcp --dport 5050 -j DROP #BLOCK YAHOO CHAT
$IPTABLES -A FORWARD -p tcp --dport 2778 -j DROP #BLOCK CamFrox
2. ปิดทั้งหมดแล้วเปิดพอร์ทที่ใช้เท่านั้น (วิธีการนี้จะมีความปลอดภัยมากกว่าคือ ต้องการเปิดปิดไหนก็เปิดเอาเองได้เลยครับ แต่ถ้าเราเปิดไม่ครบอาจมีปัญหาได้ครับ)
ตัวอย่าง
$IPTABLES -P FORWARD DROP #CLOSE PORT ALL$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 53 -j ACCEPT #DNS
$IPTABLES -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
$IPTABLES -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP
$IPTABLES -A FORWARD -p tcp --dport 8080 -j ACCEPT #HTTP
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT #HTTPS
$IPTABLES -A FORWARD -p tcp --dport 8443 -j ACCEPT #HTTPS
$IPTABLES -A FORWARD -p tcp --dport 20 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p udp --dport 20 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p tcp --dport 21 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p udp --dport 21 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT #SSH
$IPTABLES -A FORWARD -p tcp --dport 23 -j ACCEPT #TELNET
$IPTABLES -A FORWARD -p tcp --dport 25 -j ACCEPT #MAIL
$IPTABLES -A FORWARD -p tcp --dport 110 -j ACCEPT #MAIL
$IPTABLES -A FORWARD -p tcp --dport 1863 -j ACCEPT #MSN
$IPTABLES -A FORWARD -p udp --dport 1863 -j ACCEPT #MSN
$IPTABLES -A FORWARD -p tcp --dport 4000 -j ACCEPT #qq
$IPTABLES -A FORWARD -p tcp --dport 554 -j ACCEPT #RTSP
$IPTABLES -A FORWARD -p udp --dport 554 -j ACCEPT #RTSP
$IPTABLES -A FORWARD -p tcp --dport 5050 -j ACCEPT #YAHOO
$IPTABLES -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
$IPTABLES -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP
$IPTABLES -A FORWARD -p tcp --dport 8080 -j ACCEPT #HTTP
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT #HTTPS
$IPTABLES -A FORWARD -p tcp --dport 8443 -j ACCEPT #HTTPS
$IPTABLES -A FORWARD -p tcp --dport 20 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p udp --dport 20 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p tcp --dport 21 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p udp --dport 21 -j ACCEPT #FTP
$IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT #SSH
$IPTABLES -A FORWARD -p tcp --dport 23 -j ACCEPT #TELNET
$IPTABLES -A FORWARD -p tcp --dport 25 -j ACCEPT #MAIL
$IPTABLES -A FORWARD -p tcp --dport 110 -j ACCEPT #MAIL
$IPTABLES -A FORWARD -p tcp --dport 1863 -j ACCEPT #MSN
$IPTABLES -A FORWARD -p udp --dport 1863 -j ACCEPT #MSN
$IPTABLES -A FORWARD -p tcp --dport 4000 -j ACCEPT #qq
$IPTABLES -A FORWARD -p tcp --dport 554 -j ACCEPT #RTSP
$IPTABLES -A FORWARD -p udp --dport 554 -j ACCEPT #RTSP
$IPTABLES -A FORWARD -p tcp --dport 5050 -j ACCEPT #YAHOO
ทำใน nano /etc/init.d/firewall.sh ทำเสร้จ ให้ สั่ง sh /etc/initd./firewall.sh ดู ที่ตั้งไป # iptables -L -v
iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.20 -m string --string "facebook.com" --algo bm --to 65535 -j DROP
iptables -I FORWARD -m mac --mac-source aa:bb:cc:dd:ee:ff -j DROP
iptables -A FORWARD -m mac --mac-source 20:6a:8a:34:32:f2 -m string --string "facebook.com" --algo bm --to 65535 -j DROP
================
ขอถามพี่ๆเรื่อง iptables block web และ bypass ip บางเครื่องให้เข้าได้
« on: September 23, 2013, 12:19:38 AM »
คือตอนนี้ผมทำ server block web โดย web ที่เป็น url port 80 จะ block ด้วย squid3 ก็ใช้งานได้โอเค
แต่จะติดปัญหากับการ block facebook https ซึ่ง squid3 ไม่สามารถเอาอยู่ ผมเลยมา block facebook https ผ่าน iptables แทนก็สามารถ block ได้โอเคเลยครับ แต่ติดปัญหาที่ เครื่องระดับหัวหน้าเค้าต้องการ facebook เข้าได้ผมเลยจะถามพี่ๆว่า ถ้า
จะให้บางเครื่องหรือบาง ip สามารถทะลุหรือผ่านเข้า facebook https ได้ มันสามารถทำได้ไหมครับ ถ้าทำได้ต้องใช้คำสั่งว่าอะไรบ้างครับ รบกวนๆพี่ๆช่วยด้วยนะครับ :) :'(
ซึ่งผมลองค้นหาในเน็ตอยู่พักนึงได้มาแบบนี้ครับ ลองดูมันไม่ได้ผลครับ เข้า facebook ไม่ได้อยู่ดี
iptables -I FORWARD -s 192.168.1.0/24 --match iprange --dst-range 192.168.1.50-192.168.1.70 -p tcp -d 69.63.176.0/20 -j ACCEPT
รบกวนด้วยนะครับ
---
ตอบช้าไปไหมนิ ทำได้ครับ คุณก็ทำแบบเดิมเหมือนที่คุณ Block Https ครับ แต่ว่าอันนี้คุณ ระบุ IP ของคนที่ต้องการให้เข้า และกำหนดเป็น ACCEPT แค่นั้นครับ
** ข้อสำคัญคือ ลำดับการจัดวางมีความสำคัญมาก เช่น
1. 192.168.1.0/24 https Deny
2. 192.168.1.10 https Accept
จะต่างกับ
1. 192.168.1.10 https Accept
2. 192.168.1.0/24 https Deny
อันบนคือ 192.168.1.10 จะไม่สามารถเข้า https ได้ครับ เพราะว่าโดนบรรทัดแรก Deny ไปแล้ว ที่คุณต้องทำคือทำแบบอันล่าง
** ผิดถูกยังไงต้อง ขอ อภัย ด้วยครับ ถ้าผมผิด วานผู้รู้ช่วยแก้ด้วยครับ
--
ตามนั้นครับ จำง่ายๆ คือมันทำงานทุกคำสั่งโดยเรียงจากล่างขึ้นบน ( กรณีนี้คือปิด https ทุกคนก่อน ตามด้วยเปิด https ให้กับ 192.168.1.10)
ปล.มันจะไม่มีปัญหากับ web อื่นที่เป็น https เหรอครับ เช่น google, hotmail พวกนี้ ทำไมไม่ลองชี้ domain facebook ไปที่ ip อื่นดู โดยแก้ที่ไฟล์ /etc/hosts
======================
1.เปิดทั้งหมดแล้ว ทำการบล็อกพอร์ทที่จะปิด
$IPTABLES -P FORWARD ACCEPT #OPEN ALL
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 1863 -j DROP #BLOCK MSN
แบบ 2
2. ปิดทั้งหมดแล้วเปิดพอร์ทที่ใช้เท่านั้น (วิธีการนี้จะมีความปลอดภัยมากกว่าคือ ต้องการเปิดปิดไหนก็เปิดเอาเองได้เลยครับ แต่ถ้าเราเปิดไม่ครบอาจมีปัญหาได้ครับ)
ตัวอย่าง
$IPTABLES -P FORWARD DROP #CLOSE PORT ALL
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 53 -j ACCEPT #DNS
$IPTABLES -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
===============================
How Do I Block an IP Address on My Linux server?
by VIVEK GITE on MARCH 29, 2006
How do I block an IP address or subnet under Linux operating system?
In order to block an IP on your Linux server you need to use iptables tools (administration tool for IPv4 packet filtering and NAT) and netfilter firewall. First you need to log into shell as root user. To block an IP address you need to type the iptables command as follows:
Syntax to block an IP address under Linux
iptables -A INPUT -s IP-ADDRESS -j DROP
Replace IP-ADDRESS with your actual IP address. For example, if you wish to block an ip address 65.55.44.100 for whatever reason then type the command as follows:
# iptables -A INPUT -s 65.55.44.100 -j DROP
If you have IP tables firewall script, add the above rule to your script.
If you just want to block access to one port from an ip 65.55.44.100 to port 25 then type command:
# iptables -A INPUT -s 65.55.44.100 -p tcp --destination-port 25 -j DROP
The above rule will drop all packets coming from IP 65.55.44.100 to port mail server port 25.
CentOS / RHEL / Fedora Block An IP And Save It To Config File
Type the following two command:
# iptables -A INPUT -s 65.55.44.100 -j DROP
# service iptables save
How Do I Unblock An IP Address?
Use the following syntax (the -d options deletes the rule from table):
# iptables -D INPUT -s xx.xxx.xx.xx -j DROP
# iptables -D INPUT -s 65.55.44.100 -j DROP
# service iptables save
==============