Saturday, November 1, 2014

System And Network Admin Tools







System and Network Analysis: As an administrator, it is your job to monitor the system and network that you are presiding over. Analysis is an important part of being in the know of what's happening and when a particular action is required. That is where system and network analysis tools come in handy.

1. NTFS Permissions Explorer

2. Xirrus Wi-Fi Inspector

3. Whois

4. ShareEnum

5. PipeList

6. TcpView

7. The Dude

8. Microsoft Baseline Security Analyzer

9. WireShark

10. Look@LAN

11. RogueScanner

12. Capsa Free Network Analyzer

13. SuperScan

14. Blast

15. UDPFlood

16. IPplan

17. NetStumbler

18. PingPlotter

19. SolarWinds Free Permissions Analyzer for AD

20. Angry IP Scanner

21. FreePortMonitor

22. WirelessNetView

23. BluetoothView

24. Vision

25. Attacker

26. Total Network Monitor

27. IIS Logfile Analyser

28. ntop

System testing and troubleshooting: What's the next logical step after analysis your network? Of course, testing whether your analysis was right or wrong. To put it more clearly, as a system or network admin, it is one of your jobs to perform tests on your domain. These are the tools that let you do that.

29. Pinkie

30. VMWare Player

31. Oracle VirtualBox

32. ADInsight

33. Process Monitor

34. SpiceWorks Network Troubleshooting

35. RAMMap

36. Autoruns

37. LogFusion

38. Microsoft Log Parser

39. AppCrashView

40. RootKitRevealer

System and network management: These are tools that allow you to manage the network or system. In a way, they comprise of various tools that help an IT professional to manage a bunch of tasks or certain specific tasks.

41. Bitcricket IP Subnet Calculator

42. EMCO Remote Installer Starter

43. ManagePC

44. Pandora FMS

45. SNARE Audit and EventLog Management

46. OCS Inventory

47. Zenoss Core – Enterprise IT Monitoring

48. Unipress Free Help Desk

49. SysAidIT Free Help Desk

50. Cyberx Password Generator Pro

This tools didn't suit your fancy? Want more? Click here.















Get Secret Information About Your Android Phone.

1. Complete Information About your Phone

Dial this number/code: *#*#4636#*#*

It gives you information about your phone and battery including,

- Phone information
- Battery information
- Battery history
- Usage statistics

2. Factory data reset

The following number/code will be used: *#*#7780#*#*

Dialing this code will give you a prompt that will have the 'Reset phone' button. If you don't want to reset, then press cancel. If you choose to reser then the following data is removed,

- Google account settings
- System and application data and settings
- Downloaded applications

The following data is not removed:

- Current system software and bundled application
- Files on your SD card, like photos, music etc.

3. Format Android Phone

Number/code: *2767*3855#

This code formats your Android device, so do it only if absolutely necessary. The code is used in order to perform a factory format on your device and removes all settings and files, including the internal memory storage. It reinstall's the phone's firmware and there is no way to cancel this operation, except removing the battery from the device.

4. Phone Camera Update

Number/code: *#*#34971539#*#*

This code will give you information about the camera on your phone. The following four menus are shown,

- Update camera firmware in image
- Update camera firmware in SD card
- Camera firmware version
- Firmware update count

Using the 'Update camera firmware in image' option has been known to make your camera stop working, so it is advisable to not choose that option.

5. End Call/Power

Number/code: *#*#7594#*#*

This code allows you to manipulate the function of the power on/off/lock button on your smartphone. Instead of getting the options for silent mode etc. you can choose to make it turn off the power directly.

6. File Copy for Creating Backup

Number/code: *#*#273283*255*663282*#*#*

This is a very useful code that lets you backup your images, media files, video, voice memo etc. You will get a file copy screen allowing you to backup images.

7. Service Mode

Number/code: *#*#197328640#*#*

The idea behind entering the Service Mode is that you can run various tests on your device using this.

8. WLAN, GPS and Bluetooth Test Codes:

There are various codes that you can use for this one.

- *#*#232338#*#* - Shows WiFi MAC Address

- *#*#1472365#*#* - GPS Test

- *#*#1575#*#* - Another GPS Test

- *#*#232331#*#* - Bluetooth Test

- *#*#232337#*# - Shows Bluetooth Device Address

9. Codes to get Firmware version information:

The following codes provide the firmware information about your device.

- *#*#4986*2650468#*#* - PDA, Phone, H/W, RFCallDate

- *#*#1234#*#* - PDA and Phone

- *#*#1111#*#* - FTA SW Version

- *#*#2222#*#* - FTA HW Version

- *#*#44336#*#* - PDA, Phone, CSC, Build Time, Changelist number

10. Codes to launch various Factory Tests:

There are various other factory tests that you can run on a smartphone.

- *#*#0283#*#* - Packet Loopback

- *#*#0*#*#* - LCD test

- *#*#0673#*#* OR *#*#0289#*#* - Melody test

- *#*#0842#*#* - Device test (Vibration test and BackLight test)

- *#*#2663#*#* - Touch screen version

- *#*#2664#*#* - Touch screen test

- *#*#0588#*#* - Proximity sensor test

- *#*#3264#*#* - RAM version

Wednesday, June 11, 2014

Iptables example

Linux comes with a host based firewall called Netfilter.

netfilter is a set of hooks inside the Linux kernel that allows kernel modules to register callback functions with the network stack. A registered callback function is then called back for every packet that traverses the respective hook within the network stack.

This Linux based firewall is controlled by the program called iptables to handles filtering for IPv4, and ip6tables handles filtering for IPv6.This post list most common iptables solutions required by a new Linux user to secure his or her Linux operating system from intruders.

IPTABLES Rules Example

  • Most of the actions listed in this post are written with the assumption that they will be executed by the root user running the bash or any other modern shell. Do not type commands on remote system as it will disconnect your access.
  • For demonstration purpose I've used RHEL 6.x, but the following command should work with any modern Linux distro.It is a quick cheat sheet to common iptables commands.


#1: Displaying the Status of Your Firewall

Type the following command as root:
# iptables -L -n -v
Sample outputs:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Above output indicates that the firewall is not active. The following sample shows an active firewall:
# iptables -L -n -v
Sample outputs:
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
  394 43586 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
   93 17292 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
    1   142 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 wanin      all  --  vlan2  *       0.0.0.0/0            0.0.0.0/0
    0     0 wanout     all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes)
 pkts bytes target     prot opt in     out     source               destination
Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
Chain wanout (1 references)
 pkts bytes target     prot opt in     out     source               destination 
 
 
 
Where,
  • -L : List rules.
  • -v : Display detailed information. This option makes the list command show the interface name, the rule options, and the TOS masks. The packet and byte counters are also listed, with the suffix 'K', 'M' or 'G' for 1000, 1,000,000 and 1,000,000,000 multipliers respectively.
  • -n : Display IP address and port in numeric format. Do not use DNS to resolve names. This will speed up listing.



#1.1: To inspect firewall with line numbers, enter:

# iptables -n -L -v --line-numbers
Sample outputs:
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID
3    TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
5    wanin      all  --  0.0.0.0/0            0.0.0.0/0
6    wanout     all  --  0.0.0.0/0            0.0.0.0/0
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Chain wanin (1 references)
num  target     prot opt source               destination
Chain wanout (1 references)
num  target     prot opt source               destination
You can use line numbers to delete or insert new rules into the firewall.

#1.2: To display INPUT or OUTPUT chain rules, enter:

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v --line-numbers

#2: Stop / Start / Restart the Firewall

If you are using CentOS / RHEL / Fedora Linux, enter:
# service iptables stop
# service iptables start
# service iptables restart

You can use the iptables command itself to stop the firewall and delete all rules:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

Where,
  • -F : Deleting (flushing) all the rules.
  • -X : Delete chain.
  • -t table_name : Select table (called nat or mangle) and delete/flush rules.
  • -P : Set the default policy (such as DROP, REJECT, or ACCEPT).

#3: Delete Firewall Rules

To display line number along with other information for existing rules, enter:
# iptables -L INPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers
# iptables -L OUTPUT -n --line-numbers | less
# iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1

You will get the list of IP. Look at the number on the left, then use number to delete it. For example delete line number 4, enter:
# iptables -D INPUT 4
OR find source IP 202.54.1.1 and delete from rule:
# iptables -D INPUT -s 202.54.1.1 -j DROP
Where,
  • -D : Delete one or more rules from the selected chain

#4: Insert Firewall Rules

To insert one or more rules in the selected chain as the given rule number use the following syntax. First find out line numbers, enter:
# iptables -L INPUT -n --line-numbers
Sample outputs:
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  202.54.1.1           0.0.0.0/0
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED 
To insert rule between 1 and 2, enter:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP
To view updated rules, enter:
# iptables -L INPUT -n --line-numbers
Sample outputs:
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    DROP       all  --  202.54.1.1           0.0.0.0/0
2    DROP       all  --  202.54.1.2           0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED

#5: Save Firewall Rules

To save firewall rules under CentOS / RHEL / Fedora Linux, enter:
# service iptables save
In this example, drop an IP and save firewall rules:
# iptables -A INPUT -s 202.5.4.1 -j DROP
# service iptables save

For all other distros use the iptables-save command:
# iptables-save > /root/my.active.firewall.rules
# cat /root/my.active.firewall.rules

#6: Restore Firewall Rules

To restore firewall rules form a file called /root/my.active.firewall.rules, enter:
# iptables-restore < /root/my.active.firewall.rules
To restore firewall rules under CentOS / RHEL / Fedora Linux, enter:
# service iptables restart

#7: Set the Default Firewall Policies

To drop all traffic:
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n
#### you will not able to connect anywhere as all traffic is dropped ###
# ping cyberciti.biz
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2

#7.1: Only Block Incoming Traffic

To drop all incoming / forwarded packets, but allow outgoing traffic, enter:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n
### *** now ping and wget should work *** ###
# ping cyberciti.biz
# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.2-rc5.tar.bz2

#8:Drop Private Network Address On Public Interface

IP spoofing is nothing but to stop the following IPv4 address ranges for private networks on your public interfaces. Packets with non-routable source addresses should be rejected using the following syntax:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

#8.1: IPv4 Address Ranges For Private Networks (make sure you block them on public interface)

  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 (C)
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (LOOPBACK)

#9: Blocking an IP Address (BLOCK IP)

To block an attackers ip address called 1.2.3.4, enter:
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

#10: Block Incoming Port Requests (BLOCK PORT)

To block all service requests on port 80, enter:
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

To block port 80 only for an ip address 1.2.3.4, enter:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

#11: Block Outgoing IP Address

To block outgoing traffic to a particular host or domain such as cyberciti.biz, enter:
# host -t a cyberciti.biz
Sample outputs:
cyberciti.biz has address 75.126.153.206
Note down its ip address and type the following to block all outgoing traffic to 75.126.153.206:
# iptables -A OUTPUT -d 75.126.153.206 -j DROP
You can use a subnet as follows:
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP
# iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP

#11.1: Example - Block Facebook.com Domain

First, find out all ip address of facebook.com, enter:
# host -t a www.facebook.com
Sample outputs:
www.facebook.com has address 69.171.228.40
Find CIDR for 69.171.228.40, enter:
# whois 69.171.228.40 | grep CIDR
Sample outputs:
CIDR:           69.171.224.0/19
To prevent outgoing access to www.facebook.com, enter:
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP
You can also use domain name, enter:
# iptables -A OUTPUT -p tcp -d www.facebook.com -j DROP
# iptables -A OUTPUT -p tcp -d facebook.com -j DROP

From the iptables man page:
... specifying any name to be resolved with a remote query such as DNS (e.g., facebook.com is a really bad idea), a network IP address (with /mask), or a plain IP address ...

#12: Log and Drop Packets

Type the following to log and block IP spoofing on public interface called eth1
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

By default everything is logged to /var/log/messages file.
# tail -f /var/log/messages
# grep --color 'IP SPOOF' /var/log/messages

#13: Log and Drop Packets with Limited Number of Log Entries

The -m limit module can limit the number of log entries created per time. This is used to prevent flooding your log file. To log and drop spoofing per 5 minutes, in bursts of at most 7 entries .
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: "
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

#14: Drop or Accept Traffic From Mac Address

Use the following syntax:
# iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
## *only accept traffic for TCP port # 8080 from mac 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j ACCEPT

#15: Block or Allow ICMP Ping Request

Type the following command to block ICMP ping requests:
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

Ping responses can also be limited to certain networks or hosts:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT
The following only accepts limited type of ICMP requests:
### ** assumed that default INPUT policy set to DROP ** #############
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
## ** all our server to respond to pings ** ##
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#16: Open Range of Ports

Use the following syntax to open a range of ports:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT

#17: Open Range of IP Addresses

Use the following syntax to open a range of IP address:
## only accept connection to tcp port 80 (Apache) if ip is between 192.168.1.100 and 192.168.1.200 ##
iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

## nat example ##
iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25

#18: Established Connections and Restaring The Firewall

When you restart the iptables service it will drop established connections as it unload modules from the system under RHEL / Fedora / CentOS Linux. Edit, /etc/sysconfig/iptables-config and set IPTABLES_MODULES_UNLOAD as follows:
IPTABLES_MODULES_UNLOAD = no

#19: Help Iptables Flooding My Server Screen

Use the crit log level to send messages to a log file instead of console:
iptables -A INPUT -s 1.2.3.4 -p tcp --destination-port 80 -j LOG --log-level crit

#20: Block or Open Common Ports

The following shows syntax for opening and closing common TCP and UDP ports:
 
Replace ACCEPT with DROP to block port:
## open port ssh tcp port 22 ##
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
 
## open cups (printing service) udp/tcp port 631 for LAN users ##
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
 
## allow time sync via NTP for lan users (open udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
 
## open tcp port 25 (smtp) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
 
# open dns server ports for all ##
iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
 
## open http/https (Apache) server port to all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
 
## open tcp port 110 (pop3) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
 
## open tcp port 143 (imap) for all ##
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
 
## open access to Samba file server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
 
## open access to proxy server for lan users only ##
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
 
## open access to mysql server for lan users only ##
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
 

#21: Restrict the Number of Parallel Connections To a Server Per Client IP

You can use connlimit module to put such restrictions. To allow 3 ssh connections per client host, enter:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
Set HTTP requests to 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
Where,
  1. --connlimit-above 3 : Match if the number of existing connections is above 3.
  2. --connlimit-mask 24 : Group hosts using the prefix length. For IPv4, this must be a number between (including) 0 and 32.

#22: HowTO: Use iptables Like a Pro

For more information about iptables, please see the manual page by typing man iptables from the command line:
$ man iptables
You can see the help using the following syntax too:
# iptables -h
To see help with specific commands and targets, enter:
# iptables -j DROP -h

#22.1: Testing Your Firewall

Find out if ports are open or not, enter:
# netstat -tulpn
Find out if tcp port 80 open or not, enter:
# netstat -tulpn | grep :80
If port 80 is not open, start the Apache, enter:
# service httpd start
Make sure iptables allowing access to the port 80:
# iptables -L INPUT -v -n | grep 80
Otherwise open port 80 using the iptables for all users:
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# service iptables save

Use the telnet command to see if firewall allows to connect to port 80:
$ telnet www.cyberciti.biz 80
Sample outputs:
Trying 75.126.153.206...
Connected to www.cyberciti.biz.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
You can use nmap to probe your own server using the following syntax:
$ nmap -sS -p 80 www.cyberciti.biz

Sample outputs:

Starting Nmap 5.00 ( http://nmap.org ) at 2011-12-13 13:19 IST
Interesting ports on www.cyberciti.biz (75.126.153.206):
PORT   STATE SERVICE
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 1.00 seconds
 
I also recommend you install and use sniffer such as tcpdupm and ngrep to test your firewall settings.

Conclusion:

This post only list basic rules for new Linux users. You can create and build more complex rules. This requires good understanding of TCP/IP, Linux kernel tuning via sysctl.conf, and good knowledge of your own setup. Stay tuned for next topics:
  • Stateful packet inspection.
  • Using connection tracking helpers.
  • Network address translation.
  • Layer 2 filtering.
  • Firewall testing tools.
  • Dealing with VPNs, DNS, Web, Proxy, and other protocols.

 
 
 
 
 

Tuesday, June 10, 2014

Linux security hardening

sysctl is an interface that allows you to make changes to a running Linux kernel. With /etc/sysctl.conf you can configure various Linux networking and system settings such as:
  1. Limit network-transmitted configuration for IPv4
  2. Limit network-transmitted configuration for IPv6
  3. Turn on execshield protection
  4. Prevent against the common 'syn flood attack'
  5. Turn on source IP address verification
  6. Prevents a cracker from using a spoofing attack against the IP address of the server.
  7. Logs several types of suspicious packets, such as spoofed packets, source-routed packets, and redirects.

sysctl command

The sysctl command is used to modify kernel parameters at runtime. /etc/sysctl.conf is a text file containing sysctl values to be read in and set by sysct at boot time. To view current values, enter:
# sysctl -a
# sysctl -A
# sysctl mib
# sysctl net.ipv4.conf.all.rp_filter

To load settings, enter:
# sysctl -p

Sample /etc/sysctl.conf

Edit /etc/sysctl.conf and update it as follows. The file is documented with comments. However, I recommend reading the official Linux kernel sysctl tuning help file (see below):


# The following is suitable for dedicated web server, mail, ftp server etc. 
# ---------------------------------------
# BOOLEAN Values:
# a) 0 (zero) - disabled / no / false
# b) Non zero - enabled / yes / true
# --------------------------------------
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
 
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
 
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
 
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
 
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
 
# Controls the use of TCP syncookies
#net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
 
########## IPv4 networking start ##############
# Send redirects, if router, but this is just server
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
 
# Accept packets with SRR option? No
net.ipv4.conf.all.accept_source_route = 0
 
# Accept Redirects? No, this is not router
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
 
# Log packets with impossible addresses to kernel log? yes
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
 
# Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast
net.ipv4.icmp_echo_ignore_broadcasts = 1
 
# Prevent against the common 'syn flood attack'
net.ipv4.tcp_syncookies = 1
 
# Enable source validation by reversed path, as specified in RFC1812
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
########## IPv6 networking start ##############
# Number of Router Solicitations to send until assuming no routers are present.
# This is host and not router
net.ipv6.conf.default.router_solicitations = 0
 
# Accept Router Preference in RA?
net.ipv6.conf.default.accept_ra_rtr_pref = 0
 
# Learn Prefix Information in Router Advertisement
net.ipv6.conf.default.accept_ra_pinfo = 0
 
# Setting controls whether the system will accept Hop Limit settings from a router advertisement
net.ipv6.conf.default.accept_ra_defrtr = 0
 
#router advertisements can cause the system to assign a global unicast address to an interface
net.ipv6.conf.default.autoconf = 0
 
#how many neighbor solicitations to send out per address?
net.ipv6.conf.default.dad_transmits = 0
 
# How many global unicast IPv6 addresses can be assigned to each interface?
net.ipv6.conf.default.max_addresses = 1
 
########## IPv6 networking ends ##############
 
#Enable ExecShield protection
kernel.exec-shield = 1
kernel.randomize_va_space = 1
 
# TCP and memory optimization 
# increase TCP max buffer size setable using setsockopt()
#net.ipv4.tcp_rmem = 4096 87380 8388608
#net.ipv4.tcp_wmem = 4096 87380 8388608
 
# increase Linux auto tuning TCP buffer limits
#net.core.rmem_max = 8388608
#net.core.wmem_max = 8388608
#net.core.netdev_max_backlog = 5000
#net.ipv4.tcp_window_scaling = 1
 
# increase system file descriptor limit    
fs.file-max = 65535
 
#Allow for more PIDs 
kernel.pid_max = 65536
 
#Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000

What is git

Git

Git is a version control software, which was developed by Github Inc, formerly known as Logical Awesome, developers Chris Wanstrath, PJ Hyett, and Tom Preston-Werner. It was written using the Ruby on Rails and Erlang programming languages and is the heart of the developers’ social network we know as Github, Inc.

Why use it?

If two or more people are working on a website, there can easily come a time when both of you are working on the website simultaneously. What may happen then is that one of you will have your work overwritten and hence erased. This is where version control Git comes in. This software saves two copies, which can be merged later. Moreover, you can also go back to earlier versions any time you wish to, because the software keeps a copy of all the changes that have been made.

Git, though, is not the easiest of software to learn. It still needs the user to operate from the command line or the terminal (for Mac users). So, it needs you to type in codes, which is not everyone’s cup of tea. The answer to this is Github, which makes it more user friendly.

Downloading the Github software provides a visual interface for yourversion controlled projects. In addition, you can create an account on Github, to make these projects available on the web and get the social network benefits. It allows you to browse through projects by other users as well and download them if you wish to. There are other obvious benefits like developer opinions etc. as well.

Github

Many or even most users today learn Github before they learn Git. This is because the software doesn’t require you to be a proficient coder and have a strong programming base in order to use it. The problem though is that when you try to go into the depths of this community, you find your lack of programming knowledge hampering your progress.

The first misconception that people have about Github is that it is a development tool. Untrue. Github is a social network, for developers. If Facebook allowed it, developers would gladly approve their projects on to the social network. Buy while Facebook doesn’t allow it, Github does.

Further, uploading on Github doesn’t mean that you’ve lost ownership of your project. In fact, the social network specifically provides for this in its terms of service. In its terms it says, “We claim no intellectual property rights over the material you provide to the Service. Your profile and materials uploaded remain yours.”

While Git lacks a graphical user interface and ease of use, Github is the opposite. It is arguably one of the most seamless and easy to use GUIs ever and an user doesn’t have to know coding in order to sign up for it. It’s full of developers and coders though, so you might as well learn some. Chances are, a few months after joining and being an active Github user, you would have got some coding knowledge from others anyway.

Git users’ jargon

There are certain words that you will often read, while you’re on Github. You might be confused now, but once you’re done with this article, you will be proficient at the jargon.

Command Line: Known as the Terminal on the Mac, the command line is a program that you download along with Git. This is where you type in the commands for Git and can’t use a mouse to click away to glory.

Repository: Like we said before, people upload their projects on Github. This is what makes Github a repository or repo, as many call it.

Version Control: Everytime you save a file, you’re losing an older copy for a newer one. But what if you want to go back to the older copy? That is where version control comes in. As mentioned before, Git saves a snapshot of each and every save that you make of a project.

Commit: This is a Git command that allows you to create a checkpoint in your project. You can restore your project to this checkpoint whenever needed.

Branch: Each user on Git has their own version of the project to work with, which is why multiple users can work on a project without hampering each other’s work. All these copies are branches and you can ‘merge’ them later.

That's it for now. After reading this article, you should find it much easier to understand this open source tool. We also have a list of Git commands for you. Stay tuned to EFY Times for more!

Linux quick commands

apropos: Search through the Help manual pages
apt-get: Install and search for software packages
aspell: Spell checker
awk: It lets you find text and replace it

basename: Strips suffixes off files and directories
bash: GNU Bourne-Again Shell
bc: Arbitrary precision calculator language
bg: Sends to the background
break: Exit from a loop
builtin: Run a shell builtin
bzip2: Compresses or decompresses files

cal: Displays calendar
case: Perform a command conditionally
cat: Displays the content of the files after concatenation
cd: Change Directory
cfdisk: Partition table manipulator
chgrp: Changes the ownership of a group
chmod: Changes the access permissions
chown: Changes the owner and group of a file
chroot: Run a command, but with a different root directory
cksum: It displays the CRC checksum ad byte counts
clear: Clears the terminal screen
cmp: Compares two files
comm: Compares two sorted files line by line
continue: Resumes the next iteration of a particular loop
cp: Makes a copy of files to a different location
cron: Executes scheduled commands
crontab: Schedules a command that will run at a specified time
csplit: Splits a file into context-determined pieces

date: Changes the date and time
dc: Desk Calculator
ddrescue: Disk recovery tool
declare: Declares the variables and gives attributes
df: Gives the free space on your disk
diff: Prints the differences between two files
dig: Looks up the DNS
dir: Lists directory contents briefly
dirname: Changes a full pathname into just a path
dirs: Shows you the list of directories that are remembered
du: Get an estimation of the file space usage

echo: Displays message on the screen
egrep: Searches for files that have lines matching an extended expression
enable: Disable/enable bulletin shell commands
ethtool: Ethernet card settings
eval: Evaluates many commands
exec: Executes a command
exit: Exiting the shell
expand: Converts all the tabs to spaces
export: Sets an environment variable
expr: Evaluates expressions

false: Do nothing, unsuccessfully
fdformat: Perform low level format of a floppy disk
fdisk: Partition table manipulator for Linux systems
fg: Sends a task to the foreground
fgrep: Searches through files for tasks that match a string
file: Determines the file type
find: Find files that match a desired criteria
fmt: Reformats paragraph text
fold: Wraps text in order to fit a certain width
format: Formats tapes/disks
free: Reveals the memory usage
fsck: Checks the consistency of the file system and repairs it
fuser: Identifies and kills the process accessing a file

gawk: Finds text within files and replaces it
getopts: Parse positional parameters
grep: Searches in files for lines matching a certain pattern
groupadd: Adds security user groups
groupdel: Deletes a certain group
groupmod: Modifies a group
groups: Prints the names of groups in which a user is located
gzip: Compresses/decompresses files

hash: Complete pathname of a name argument
head: Outputs the first part of files
history: Command History
hostname: Print/set system name

iconv: Converts the character set in files
id: Displays the group ids/user ids
if: Conditional command
ifconfig: Configures network interfaces
ifdown: Stops a network interface
ifup: Starts a network interface app
import: Captures a screen and saves image in X server
Install: Sets attributes and copies files

jobs: Lists jobs that are active
Join: Joins lines on a common field

kill: Stops a process from running
Killall: Kills processes by name

less: Displays the output on a single screen at a time
let: Performs arithmetic on shell variables
link: Creates a link to another file
ln: Creates a symbolic link to another file
local: Creates variables
locate: Finds files
logname: Print the login name being used currently
logout: Use this command to exit a login shell.
lpc: Line Printer Control
lpr: Offline print
lprint: Prints a file
lprintd: Aborts an ongoing print job
lprintq: Lists the print queue
lprm: Removes the jobs from the print queue

make: Recompiles the group of programs
man: Provides help on a command
mkdir: Creates directories
mkfifo: Makes FIFOs
mknod: Creates character special files or block files
more: Displays the output in a single screen at a time
mount: Mounts a particular filesystem
mtools: Manipulates files from MS-DOS
mtr: Network diagnostics command
mv: Moves and renames files and directories
mmv: Mass Move and Rename

netstat: Provides information on networking
nice: Sets the priority of a job or a command
nl: Writes files and number lines
nohup: Runs a command not affected by hangups
notify-send: Sends desktop notifications
nslookup: Queries internet name servers interactively

open: Opens a file in its default application
op: Provides operator access

passwd: Modifies user passwords
paste: Merges lines in files
pathchk: Checks the portability of a file name
ping: Tests network connections
pkill: Stops processes from running
popd: Restores the previous value of the directory you’re currently in
pr: Prepares your files for printing
printcap: Printer capability database
printenv: Print environment variables
printf: Formats and prints data
ps: Process Status
pushd: Changes the directory and saves it first
pwd: Print Working Directory

quota: Displays the disk usage and its limits
quotacheck: Lets you scan a file system to find its disk usage
quotactl: Sets disk quotas

ram: Ram disk device
rcp: Copies files between two devices.
read: Reads a line from standard input
readarray: Reads from stdin into an array variable
readonly: Marks the variables and functions as readonly
reboot: Reboots your system
rename: Renames files
renice: Alters the priority of the processes running
remsync: Synchronises remote files through email
rev: Reverses the lines in a file
rm: Removes particular files
rsync: Synchronises file trees

screen: Run remote shells using ssh
scp: Creates a secure copy
sdiff: Merges two files in a secure manner
sed: Stream editor
select: Accepts keyboard inputs
seq: Prints numeric sequences
set: Manipulates shell functions and variables
sftp: Runs the secure file transfer program
shift: Shifts positional parameters
shopt: Shell Options
shutdown: Shuts down Linux or restarts it
sleep: Adds a delay
slocate: Finds particular files
sort: Sorts text files
source: Runs commands from a file
split: Breaks a file into fixed sizes
ssh: Runs the remote login program
strace: Traces signals and system calls
su: Substitutes the user identity
sudo: Executes commands as a different user
suspend: Suspends the execution of the current shell
sync: Synchronises data from a disk with the memory

tail: Outputs only the last part of a file
tar: Stores a list or extracts files in an archive
tee: Redirects output into multiple files
test: Evaluates conditional expressions
time: Measures the running time of a program
timeout: Puts a time limit on a command
times: Finds the user and system times
touch: Changes timestamps on a file
traceroute: Trace Route to a host
tr: Deletes characters, translates or squeezes them
tsort: Topological sorting

ulimit: Limits the user resources
umask: Determines the file permission for a new file
umount: Unmounts a device from the system
unalias: Removes an alias
uname: Prints the system information
unexpand: Converts the spaces in a file to tabs
uniq: Uniquify your files
units: Converts the units from one scale to another
unset: Removes the variable names or the function names
unshar: Unpacks the shell archive scripts
until: Executes a command until there is an error
uptime: Shows the uptime
usermod: Modifies a user account
users: Gives you a list of users who are currently logged in
uuencode: Encodes binary files

v: Lists the contents of a directory
vi: Text editor
vmstat: Reports on the virtual memory statistics

wait: Directs the system to wait for a process to finish
watch: Displays or executes a program periodically
wc: Prints the word, byte and line counts
while: Executes commands
who: Prints the usernames that are currently logged into the system
whoami: Prints the current name and user id
wget: Retrieves the web pages or files through HTTP, HTTPS or FTP
write: Sends messages to other users

xargs: Executes a utility and passes a constructed argument list
xdg-open: Opens a URL or a file in the user's preferred application

yes: Prints a string until it is interrupted

Sunday, June 8, 2014

Iptables Firewall Configuration Tips

The default config files for RHEL / CentOS / Fedora Linux are:


/etc/sysconfig/iptables - The system scripts that activate the firewall by reading this file.

Task: Display Default Rules

Type the following command:
iptables --line-numbers -n -L

Task: Turn On Firewall



Type the following two commands to turn on firewall:
monospace;">
chkconfig iptables on
service iptables start
# restart the firewall
service iptables restart
# stop the firewall
service iptables stop



Understanding Firewall

There are total 4 chains:
  1. INPUT - The default chain is used for packets addressed to the system. Use this to open or close incoming ports (such as 80,25, and 110 etc) and ip addresses / subnet (such as 202.54.1.20/29).
  2. OUTPUT - The default chain is used when packets are generating from the system. Use this open or close outgoing ports and ip addresses / subnets.
  3. FORWARD - The default chains is used when packets send through another interface. Usually used when you setup Linux as router. For example, eth0 connected to ADSL/Cable modem and eth1 is connected to local LAN. Use FORWARD chain to send and receive traffic from LAN to the Internet.
  4. RH-Firewall-1-INPUT - This is a user-defined custom chain. It is used by the INPUT, OUTPUT and FORWARD chains.

Packet Matching Rules

  1. Each packet starts at the first rule in the chain .
  2. A packet proceeds until it matches a rule.
  3. If a match found, then control will jump to the specified target (such as REJECT, ACCEPT, DROP).

Target Meanings

  1. The target ACCEPT means allow packet.
  2. The target REJECT means to drop the packet and send an error message to remote host.
  3. The target DROP means drop the packet and do not send an error message to remote host or sending host.

/etc/sysconfig/iptables

Edit /etc/sysconfig/iptables, enter:
# vi /etc/sysconfig/iptables


You will see default rules as follows:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Drop All Traffic

Find lines:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
Update as follows to change the default policy to DROP from ACCEPT for the INPUT and FORWARD built-in chains:

:INPUT DROP [0:0]
:FORWARD DROP [0:0]

Log and Drop Spoofing Source Addresses

Append the following lines before final COMMIT line:
-A INPUT -i eth0 -s 10.0.0.0/8 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 172.16.0.0/12 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 192.168.0.0/16 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 224.0.0.0/4 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 240.0.0.0/5 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -d 127.0.0.0/8 -j LOG --log-prefix "IP DROP LOOPBACK "
-A INPUT -i eth0 -s 169.254.0.0/16  -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 0.0.0.0/8  -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s  240.0.0.0/4  -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s  255.255.255.255/32  -j LOG --log-prefix "IP DROP  "
-A INPUT -i eth0 -s 168.254.0.0/16  -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 248.0.0.0/5  -j LOG --log-prefix "IP DROP "

Log And Drop All Traffic

Find the lines:
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Update it as follows:
-A RH-Firewall-1-INPUT -j LOG
-A RH-Firewall-1-INPUT -j DROP
COMMIT

Open Port

To open port 80 (Http server) add the following before COMMIT line:
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
To open port 53 (DNS Server) add the following before COMMIT line:
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
To open port 443 (Https server) add the following before COMMIT line:
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
To open port 25 (smtp server) add the following before COMMIT line:
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT

Only allow SSH traffic From 192.168.1.0/24

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

Enable Printing Access For 192.168.1.0/24

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

Allow Legitimate NTP Clients to Access the Server

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

Open FTP Port 21 (FTP)

-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
Save and close the file. Edit /etc/sysconfig/iptables-config, enter:
# vi /etc/sysconfig/iptables-config
Make sure ftp module is loaded with the space-separated list of modules:
IPTABLES_MODULES="ip_conntrack_ftp"
To restart firewall, type the following commands:
# service iptables restart
# iptables -vnL --line-numbers

Edit /etc/sysctl.conf For DoS and Syn Protection

Edit /etc/sysctl.conf to defend against certain types of attacks and append / update as follows:
 
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
#net.ipv4.icmp_ignore_bogus_error_messages = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
 
 
 

Alternate Configuration Option

You can skip /etc/sysconfig/iptables file and create a shell script from scratch as follows:

#!/bin/bash
# A sample firewall shell script 
IPT="/sbin/iptables"
SPAMLIST="blockedip"
SPAMDROPMSG="BLOCKED IP DROP"
SYSCTL="/sbin/sysctl"
BLOCKEDIPS="/root/scripts/blocked.ips.txt"
 
# Stop certain attacks
echo "Setting sysctl IPv4 settings..."
$SYSCTL net.ipv4.ip_forward=0
$SYSCTL net.ipv4.conf.all.send_redirects=0
$SYSCTL net.ipv4.conf.default.send_redirects=0
$SYSCTL net.ipv4.conf.all.accept_source_route=0
$SYSCTL net.ipv4.conf.all.accept_redirects=0
$SYSCTL net.ipv4.conf.all.secure_redirects=0
$SYSCTL net.ipv4.conf.all.log_martians=1
$SYSCTL net.ipv4.conf.default.accept_source_route=0
$SYSCTL net.ipv4.conf.default.accept_redirects=0
$SYSCTL net.ipv4.conf.default.secure_redirects=0
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=1
#$SYSCTL net.ipv4.icmp_ignore_bogus_error_messages=1
$SYSCTL net.ipv4.tcp_syncookies=1
$SYSCTL net.ipv4.conf.all.rp_filter=1
$SYSCTL net.ipv4.conf.default.rp_filter=1
$SYSCTL kernel.exec-shield=1
$SYSCTL kernel.randomize_va_space=1
 
echo "Starting IPv4 Firewall..."
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
 
# load modules
modprobe ip_conntrack
 
[ -f "$BLOCKEDIPS" ] && BADIPS=$(egrep -v -E "^#|^$" "${BLOCKEDIPS}")
 
# interface connected to the Internet 
PUB_IF="eth0"
 
#Unlimited traffic for loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
 
# DROP all incomming traffic
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
 
if [ -f "${BLOCKEDIPS}" ];
then
# create a new iptables list
$IPT -N $SPAMLIST
 
for ipblock in $BADIPS
do
   $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG "
   $IPT -A $SPAMLIST -s $ipblock -j DROP
done
 
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST
fi
 
# Block sync
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW  -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Drop Sync"
$IPT -A INPUT -i ${PUB_IF} -p tcp ! --syn -m state --state NEW -j DROP
 
# Block Fragments
$IPT -A INPUT -i ${PUB_IF} -f  -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fragments Packets"
$IPT -A INPUT -i ${PUB_IF} -f -j DROP
 
# Block bad stuff
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL ALL -j DROP
 
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "NULL Packets"
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL NONE -j DROP # NULL packets
 
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
 
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "XMAS Packets"
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP #XMAS
 
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "Fin Packets Scan"
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags FIN,ACK FIN -j DROP # FIN packet scans
 
$IPT  -A INPUT -i ${PUB_IF} -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
 
# Allow full outgoing connection but no incomming stuff
$IPT -A INPUT -i ${PUB_IF} -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o ${PUB_IF} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
# Allow ssh
$IPT -A INPUT -i ${PUB_IF} -p tcp --destination-port 22 -j ACCEPT
 
# Allow http / https (open port 80 / 443)
$IPT -A INPUT -i ${PUB_IF} -p tcp --destination-port 80 -j ACCEPT
#$IPT -A INPUT -o ${PUB_IF} -p tcp --destination-port 443 -j ACCEPT
 
# allow incomming ICMP ping pong stuff
$IPT -A INPUT -i ${PUB_IF} -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$IPT -A OUTPUT -o ${PUB_IF} -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Allow port 53 tcp/udp (DNS Server)
$IPT -A INPUT -i ${PUB_IF} -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$IPT -A OUTPUT -o ${PUB_IF} -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
$IPT -A INPUT -i ${PUB_IF} -p tcp --destination-port 53 -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT
#$IPT -A OUTPUT -o ${PUB_IF} -p tcp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Open port 110 (pop3) / 143
$IPT -A INPUT -i ${PUB_IF} -p tcp --destination-port 110 -j ACCEPT
$IPT -A INPUT -i ${PUB_IF} -p tcp --destination-port 143 -j ACCEPT
 
##### Add your rules below ######
#
# 
##### END your rules ############
 
# Do not log smb/windows sharing packets - too much logging
$IPT -A INPUT -p tcp -i ${PUB_IF} --dport 137:139 -j REJECT
$IPT -A INPUT -p udp -i ${PUB_IF} --dport 137:139 -j REJECT
 
# log everything else and drop
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
$IPT -A INPUT -j DROP
 
exit 0

 

Thursday, May 29, 2014

Linux distro and official site

Absolute Linux Official website
AbulEdu Official website
AgiliaLinux Official website
aLinux Official website
Alpine Linux Official website
ALT Linux Official website
Antergos Official website
antiX Official website
aptosid Official website
Arch Linux Official website
ArchBang Linux Official website
Archie Official website
AriOS Official website
ArtistX Official website
AsteriskNOW Official website
Asturix Official website
AUSTRUMI Official website
AV Linux Official website
BackBox Linux Official website
Berry Linux Official website
BigLinux Official website
Bio-Linux Official website
blackPanther Official website
BlankOn Linux Official website
Bluewall GNULinux Official website
Bluewhite64 Linux Official website
Bodhi Linux Official website
BOSS Linux Official website
Bridge Linux Official website
CAELinux Official website
CAINE Official website
Calculate Linux Official website
Canaima Official website
CÃ tix Official website
CDlinux Official website
CentOS Official website
Chakra GNU/Linux Official website
ClearOS Official website
Clonezilla Official website
ComFusion Official website
CrunchBang Linux Official website
CRUX Official website
Damn Small Linux Official website
Debian Official website
DEFT Linux Official website
Descent|OS Official website
Devil-Linux Official website
DigAnTel Official website
DoudouLinux Official website
DragonFly BSD Official website
Dragora GNU/Linux Official website
DreamStudio Unity Official website
Easy Pease Official website
Edubuntu Official website
Ekaaty Official website
Elastix Official website
Elive Official website
Emmabuntüs Official website
Endian Firewall Official website
Epidemic GNU/Linux Official website
ExTiX Official website
Fedora Official website
Finnix Official website
Foresight Linux Official website
FreeBSD Official website
FreeNAS Official website
Frenzy Official website
Frugalware Linux Official website
Fusion Linux Official website
GALPon MiniNo Official website
GeeXboX Official website
Gentoo Official website
GhostBSD Official website
gNewSense Official website
GParted Official website
Greenie Linux Official website
Grml Official website
Guadalinex Official website
Hacao Linux Official website
Hanthana Linux Official website
Hybryde Linux Official website
IPCop Firewall Official website
IPFire Official website
ISlack Official website
Jibbed Official website
Jolicloud Official website
kademar Official website
Kahel OS Official website
Kali Linux Official website
KANOTIX Official website
Karoshi Official website
Kiwi linux Official website
Knoppix Official website
Kubuntu Linux Official website
Kwheezy Official website
Kwort Linux Official website
Leeenux Linux Official website
Legacy OS Official website
Liberté Linux Official website
Lightweight Portable Security Official website
LinEx Official website
LinHES Official website
Linpus Linux Official website
Linux Deepin Official website
Linux From Scratch Official website
Linux Lite Official website
Linux Mint Official website
LinuxConsole Official website
LliureX Official website
Lubuntu Official website
Lunar-Linux Official website
LuninuX OS Official website
LXLE Official website
m0n0wall Official website
Macpup Official website
Mageia Official website
MakuluLinux Official website
Mandriva Official website
Manjaro Linux Official website
MidnightBSD Official website
MINIX Official website
Momonga Linux Official website
Musix Official website
Mythbuntu Official website
NetBSD Official website
Netrunner Official website
NetSecL OS Official website
Network Security Toolkit Official website
NexentaStor Official website
NuTyX Official website
Ojuba Official website
OLPC OS Official website
OpenBSD Official website
OpenELEC Official website
OpenIndiana Official website
openmamba GNU/Linux Official website
OpenMediaVault Official website
openSUSE Official website
Openwall GNU*Linux Official website
Ophcrack Official website
Oracle Linux Official website
Oracle Solaris Official website
OS4 OpenLinux Official website
Overclockix Official website
Parabola GNU/Linux Official website
Pardus Official website
Parsix Official website
Parted Magic Official website
PC-BSD Official website
PCLinuxOS Official website
Pear OS Official website
Pentoo Official website
Peppermint OS Official website
pfSense Official website
PHLAK Official website
Pinguy OS Official website
Plamo Linux Official website
PLD Linux Distribution Official website
Plop Linux Official website
Point Linux Official website
Porteus Official website
Proxmox Official website
Puppy Linux Official website
PureOS Official website
Qomo Linux Official website
Qubes OS Official website
Quirky Official website
Raspbian Official website
Rebellin Linux Official website
Red Flag Linux Official website
Red Hat Enterprise Linux Official website
Redo Backup & Recovery Official website
Rocks Cluster Official website
ROSA Official website
Sabayon Linux Official website
SalentOS Official website
Saline OS Official website
Salix OS Official website
SchilliX Official website
Scientific Linux Official website
Semplice Linux Official website
siduction Official website
Simplicity Linux Official website
Skolelinux Official website
Slackel Official website
Slackware Official website
SLAX Official website
SliTaz GNU/Linux Official website
SME Server Official website
Smoothwall Official website
Snowlinux Official website
SolydXK Official website
Sophos Official website
Source Mage GNULinux Official website
SparkyLinux Official website
Springdale Linux Official website
Stella Official website
Super OS Official website
Superb Mini Server Official website
SuperX Official website
SUSE Official website
Swift Linux Official website
SystemRescueCD Official website
T2 Linux Official website
Tails Official website
Thinstation Official website
Tiny Core Linux Official website
Toorox Official website
Toutou Linux Official website
Trisquel GNU/Linux Official website
Tuquito Official website
Turbolinux Official website
TurnKey Linux Official website
UberStudent Official website
Ubuntu Official website
Ubuntu Christian Edition Official website
Ubuntu GNOME Official website
Ubuntu Privacy Remix Official website
Ubuntu Studio Official website
UbuntuKylin Official website
Ultimate Edition Official website
Unity Linux Official website
Univention Corporate Server Official website
Untangle Gateway Official website
Ututo Official website
VectorLinux Official website
VENENUX GNU/Linux Official website
Vine Linux Official website
Vinux Official website
VortexBox Official website
Voyager Live Official website
Vyatta Official website
wattOS Official website
Webconverger Official website
Wifislax Official website
Window Maker Live Official website
Xubuntu Official website
YellowDog Official website
ZevenOS Official website
Zorin OS Official website