• No results found

Got a tip? Let us know

N/A
N/A
Protected

Academic year: 2021

Share "Got a tip? Let us know"

Copied!
19
0
0

Loading.... (view fulltext now)

Full text

(1)

Powered by Translate

Got a tip? Let us know

Advertise Linux Services About Archives Contact Us Copyright Policy Donate to TecMint Home Linux Distro’s Interview Questions Shell Scripting Free Linux eBooks Linux Commands Tools

Did You Know?

LFCS - Linux Foundation Certified SysAdmin - Exam Preparation Guide

By Ravi Saive Under: Linux Commands On: June 24, 2013

Download Your Free eBooks NOW - 10 Free Linux eBooks for Administrators

Everybody says that Linux is secure by default and agreed to some extend (It’s debatable topics). However, Linux has in-built security model in place by default. Need to tune it up and customize as per your need which may help to make more secure system. Linux is harder to manage but offers more flexibility and configuration options.

(2)

25 Linux Security and Hardening Tips

Securing a system in a production from the hands of hackers and crackers is a challenging task for a System Administrator. This is our first article related to “How to Secure Linux box” or “Hardening a Linux Box“. In this post We’ll explain 25 useful tips & tricks to secure your Linux system. Hope, below tips & tricks will help you some extend to secure your system.

1. Physical System Security

Configure the BIOS to disable booting from CD/DVD, External Devices, Floppy Drive in BIOS. Next, enable BIOS password & also protect GRUB with password to restrict physical access of your system.

Set GRUB Password to Protect Linux Servers 1.

2. Disk Partitions

It’s important to have different partitions to obtain higher data security in case if any disaster happens. By creating different partitions, data can be separated and grouped. When an unexpected accident occurs, only data of that partition will be damaged, while the data on other partitions survived. Make sure you must have following separate partitions and sure that third party applications should be installed on separate file systems under / /boot /usr /var /home /tmp /opt

3. Minimize Packages to Minimize Vulnerability

Do you really want all sort of services installed?. It’s recommended to avoid installing useless packages to avoid vulnerabilities in packages. This may minimize risk that compromise of one service may lead to compromise of other services. Find and remove or disable unwanted services from the server to minimize vulnerability. Use the ‘chkconfig‘ command to find out services which are running on runlevel 3.

(3)

# /sbin/chkconfig --list |grep '3:on'

Once you’ve find out any unwanted service are running, disable them using the following command. # chkconfig serviceName off

Use the RPM package manager such as “yum” or “apt-get” tools to list all installed packages on a system and remove them using the following command.

# yum -y remove package-name

# sudo apt-get remove package-name

5 chkconfig Command Examples 1.

20 Practical Examples of RPM Commands 2.

20 Linux YUM Commands for Linux Package Management 3.

25 APT-GET and APT-CACHE Commands to Manage Package Management 4.

4. Check Listening Network Ports

With the help of ‘netstat‘ networking command you can view all open ports and associated programs. As I said above use ‘chkconfig‘ command to disable all unwanted network services from the system.

# netstat -tulpn

20 Netstat Commands for Network Management in Linux 1.

5. Use Secure Shell(SSH)

Telnet and rlogin protocols uses plain text, not encrypted format which is the security breaches. SSH is a secure protocol that use encryption technology during communication with server.

Never login directly as root unless necessary. Use “sudo” to execute commands. sudo are specified in /etc/sudoers file also can be edited with the “visudo” utility which opens in VI editor.

It’s also recommended to change default SSH 22 port number with some other higher level port number. Open the main SSH configuration file and make some following parameters to restrict users to access.

# vi /etc/ssh/sshd_config

Disable root Login

PermitRootLogin no

Only allow Specific Users

AllowUsers username

Use SSH Protocol 2 Version

Protocol 2

5 Best Practices to Secure and Protect SSH Server 1.

(4)

6. Keep System updated

Always keep system updated with latest releases patches, security fixes and kernel when it’s available. # yum updates

# yum check-update

7. Lockdown Cronjobs

Cron has it’s own built in feature, where it allows to specify who may, and who may not want to run jobs. This is controlled by the use of files called /etc/cron.allow and /etc/cron.deny. To lock a user using cron, simply add user names in cron.deny and to allow a user to run cron add in cron.allow file. If you would like to disable all users from using cron, add the ‘ALL‘ line to cron.deny file.

# echo ALL >>/etc/cron.deny

11 Cron Scheduling Examples in Linux 1.

8. Disable USB stick to Detect

Many times it happens that we want to restrict users from using USB stick in systems to protect and secure data from stealing. Create a file ‘/etc/modprobe.d/no-usb‘ and adding below line will not detect USB storage. install usb-storage /bin/true

9. Turn on SELinux

Security-Enhanced Linux (SELinux) is a compulsory access control security mechanism provided in the kernel. Disabling SELinux means removing security mechanism from the system. Think twice carefully before removing, if your system is attached to internet and accessed by the public, then think some more on it.

SELinux provides three basic modes of operation and they are.

Enforcing: This is default mode which enable and enforce the SELinux security policy on the machine. 1.

Permissive: In this mode, SELinux will not enforce the security policy on the system, only warn and log actions. This mode is very useful in term of troubleshooting

2.

Disabled: SELinux is turned off. 3.

You can view current status of SELinux mode from the command line using ‘ ‘getenforce‘ or ‘sestatus‘ commands.

# sestatus

If it is disabled, enable SELinux using the following command. # setenforce enforcing

It also can be managed from ‘/etc/selinux/config‘ file, where you can enable or disable it.

10. Remove KDE/GNOME Desktops

There is no need to run X Window desktops like KDE or GNOME

(5)

‘/etc/inittab‘ and set run level to 3. If you wish to remove it completely from the system use the below command. # yum groupremove "X Window System"

11. Turn Off IPv6

If you’re not using a IPv6 protocol, then you should disable it because most of the applications or policies not required IPv6 protocol and currently it doesn’t required on the server. Go to network configuration file and add followings lines to disable it.

# vi /etc/sysconfig/network

NETWORKING_IPV6=no IPV6INIT=no

12. Restrict Users to Use Old Passwords

This is very useful if you want to disallow users to use same old passwords. The old password file is located at /etc/security/opasswd. This can be achieved by using PAM module.

Open ‘/etc/pam.d/system-auth‘ file under RHEL / CentOS / Fedora. # vi /etc/pam.d/system-auth

Open ‘/etc/pam.d/common-password‘ file under Ubuntu/Debian/Linux Mint. # vi /etc/pam.d/common-password

Add the following line to ‘auth‘ section.

auth sufficient pam_unix.so likeauth nullok

Add the following line to ‘password‘ section to disallow a user from re-using last 5 password of his or her. password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5

Only last 5 passwords are remember by server. If you tried to use any of last 5 old passwords, you will get an error like.

Password has been already used. Choose another.

13. How to Check Password Expiration of User

In Linux, user’s passwords are stored in ‘/etc/shadow‘ file in encrypted format. To check password expiration of user’s, you need to use ‘chage‘ command. It displays information of password expiration details along with last password change date. These details are used by system to decide when a user must change his/her password. To view any existing user’s aging information such as expiry date

#chage -l username

To change password aging of any user, use the following command. #chage -M 60 username

(6)

Parameters

-M Set maximum number of days 1.

-m Set minimum number of days 2.

-W Set the number of days of warning 3.

14. Lock and Unlock Account Manually

The lock and unlock features are very useful, instead of removing an account from the system, you can lock it for an week or a month. To lock a specific user, you can use the follow command.

# passwd -l accountName

Note : The locked user is still available for root user only. The locking is performed by replacing encrypted password with an (!) string. If someone trying to access the system using this account, he will get an error similar to below.

# su - accountName

This account is currently not available.

To unlock or enable access to an locked account, use the command as. This will remove (!) string with encrypted password.

# passwd -u accountName

15. Enforcing Stronger Passwords

A number of users use soft or weak passwords and their password might be hacked with a dictionary based or brute-force attacks. The ‘pam_cracklib‘ module is available in PAM (Pluggable Authentication Modules) module stack which will force user to set strong passwords. Open the following file with an editor.

Read Also:

# vi /etc/pam.d/system-auth

And add line using credit parameters as (lcredit, ucredit, dcredit and/or ocredit respectively lower-case, upper-case, digit and other)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Enable Iptables (Firewall)

It’s highly recommended to enable Linux firewall to secure unauthorised access of your servers. Apply rules in iptables to filters incoming, outgoing and forwarding packets. We can specify the source and destination address to allow and deny in specific udp/tcp port number.

Basic IPTables Guide and Tips 1.

17. Disable Ctrl+Alt+Delete in Inittab

In most Linux distributions, pressing ‘CTRL-ALT-DELETE’ will takes your system to reboot process. So, it’s not a good idea to have this option enabled at least on production servers, if someone by mistakenly does this.

(7)

This is defined in ‘/etc/inittab‘ file, if you look closely in that file you will see a line similar to below. By default line is not commented out. We have to comment it out. This particular key sequence signalling will shut-down a system.

# Trap CTRL-ALT-DELETE

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Checking Accounts for Empty Passwords

Any account having an empty password means its opened for unauthorized access to anyone on the web and it’s a part of security within a Linux server. So, you must make sure all accounts have strong passwords and no one has any authorized access. Empty password accounts are security risks and that can be easily hackable. To check if there were any accounts with empty password, use the following command.

# cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Display SSH Banner Before Login

It’s always a better idea to have an legal banner or security banners with some security warnings before SSH authentication. To set such banners read the following article.

Display SSH Warning Message to Users 1.

20. Monitor User Activities

If you are dealing with lots of users, then its important to collect the information of each user activities and processes consumed by them and analyse them at a later time or in case if any kind of performance, security issues. But how we can monitor and collect user activities information.

There are two useful tools called ‘psacct‘ and ‘acct‘ are used for monitoring user activities and processes on a system. These tools runs in a system background and continuously tracks each user activity on a system and resources consumed by services such as Apache, MySQL, SSH, FTP, etc. For more information about installation, configuration and usage, visit the below url.

Monitor User Activity with psacct or acct Commands 1.

21. Review Logs Regularly

Move logs in dedicated log server, this may prevents intruders to easily modify local logs. Below are the Common Linux default log files name and their usage:

/var/log/message – Where whole system logs or current activity logs are available. 1.

/var/log/auth.log – Authentication logs. 2.

/var/log/kern.log – Kernel logs. 3.

/var/log/cron.log – Crond logs (cron job). 4.

/var/log/maillog – Mail server logs. 5.

/var/log/boot.log – System boot log. 6.

/var/log/mysqld.log – MySQL database server log file. 7.

/var/log/secure – Authentication log. 8.

/var/log/utmp or /var/log/wtmp : Login records file. 9.

/var/log/yum.log: Yum log files. 10.

(8)

Bio Latest Posts

22. Important file Backup

In a production system, it is necessary to take important files backup and keep them in safety vault, remote site or offsite for Disasters recovery.

23. NIC Bonding

There are two types of mode in NIC bonding, need to mention in bonding interface. mode=0 – Round Robin

1.

mode=1 – Active and Backup 2.

NIC Bonding helps us to avoid single point of failure. In NIC bonding, we bond two or more Network Ethernet Cards together and make one single virtual Interface where we can assign IP address to talk with other servers. Our network will be available in case of one NIC Card is down or unavailable due to any reason.

Read Also : Create NIC Channel Bonding in Linux

24. Keep /boot as read-only

Linux kernel and its related files are in /boot directory which is by default as read-write. Changing it to read-only reduces the risk of unauthorized modification of critical boot files. To do this, open “/etc/fstab” file.

# vi /etc/fstab

Add the following line at the bottom, save and close it.

LABEL=/boot /boot ext2 defaults,ro 1 2

Please note that you need to reset the change to read-write if you need to upgrade the kernel in future.

25. Ignore ICMP or Broadcast Request

Add following line in “/etc/sysctl.conf” file to ignore ping or broadcast request. Ignore ICMP request:

net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:

net.ipv4.icmp_echo_ignore_broadcasts = 1

Load new settings or changes, by running following command #sysctl -p

If you’ve missed any important security or hardening tip in the above list, or you’ve any other tip that needs to be included in the list. Please drop your comments in our comment box.

comments, suggestions as well as discussion for improvement.

Ravi Saive

Owner at TecMint.com

(9)

Simple Word a Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux.

Download Free eBooks

Tweet 182 807 Like Like 27 comments « Previous Post

The Power of Linux “History Command” in Bash Shell Next Post »

20 Advanced Commands for Linux Experts

Related Post(s):

How to Monitor User Activity with psacct or acct Tools 1.

10 Examples of Linux Free Command 2.

Fun in Linux Terminal – Play with Word and Character Counts 3.

15 Practical Examples of ‘cd’ Command in Linux 4.

20 MySQL (Mysqladmin) Commands for Database Administration in Linux 5.

Switching From Windows to Nix or a Newbie to Linux – 20 Useful Commands for Linux Newbies 6.

27 Responses

Ganesh says: June 24, 2013 at 6:54 pm

Thanks Ravi for sharing such an important doc. Here we are missing on

1.

11 ShareShare

(10)

1.ftp service :- Disabling the ftp services eg.vsftpd if it is not required..

2.WWW files:- Secondly monitor the WWW files /folders, if possiable pls set strong umask . We should not have any system config files with WWW permissions,

3.Enable audit and seconday login logs if you are using SUDO access,

4.Stop sharing the users id’s, every end users should have his named id instead of using the genric user id’s..eg. on database servers normally we are having oracle / db2 / sybase user id’s used for binary

installation purpose. We should disable the direct logins post the installation gets over and enable db team to have sudo su – , this will help us to segrate ownership.

Reply

Siddesh says: August 14, 2013 at 9:15 am

Excellent Article. Thanks so much :)) Reply

2.

Chelton says:

September 12, 2013 at 6:45 pm

Comment on 5. Never log in as root and use sudo, sudo encourages a weak passwords and hence weaker security (For example a 30+ password on root would be tedious, but this is what I have on my servers) Better to log in to root and do complex work that running multiple sudo commands. While you do get a sudo log, in my opinion working in this way on non trivial tasks is ridiculous.

Reply

Shane says:

December 13, 2013 at 2:27 pm

Why does sudo encourage weak passwords? If you find yourself constantly being timed out in sudo, and having to constantly enter your password, you can increase the timeout value.

It’s safer to prevent root SSH login. SSH in as a different user, and su to root if you need to. Reply

3.

Vareg says:

September 16, 2013 at 8:22 pm Thanks for the tips,

but .., beware tip #24, as it sent me in maintenance mode, and i’m running CentOS 6.4, the ext2 filesystem type should have rung a bell but didn’t and before i know it, i lost control of my system, although i learned something valuable outta this:

If you’re stuck in maintenance mode (during bootstrap) and you get a root shell but everything’s read-only, and you can’t edit the file that sent you here, use the following command

(11)

mount -o remount,rw /

Many people go automatically fetch their livecd for that matter but i don’t think it’s adequate, this way, you don’t even to mount sysimage using your install cd. Hope it helps

Reply

Michael says: October 18, 2013 at 9:55 pm

Well done Ravi, a nice start for hardening/securing a Linux system!

If you want a more extensive audit, consider my open source tool Lynis: http://www.rootkit.nl/projects /lynis.html Reply 5. massy says: November 3, 2013 at 4:38 pm Thank you. Reply 6. icefyre says: December 6, 2013 at 7:06 pm

Great article, one note though. ‘chkconfig’ is a Red Hat tool, that command won’t work on Ubuntu, you would need to follow a different process to stop/remove services for other distros.

Reply

Ravi Saive says: December 7, 2013 at 3:30 pm

Yes you right the chkconfig command won’t work on Debian based distro’s. You need to follow some other tactics to on/off services.

Reply Alex says: February 25, 2014 at 2:56 am rcconf in debian Reply 7. Ali says: January 30, 2014 at 5:23 pm 8.

(12)

Hello,

Thanks for writing such an informative post on Linux server security. Reply

Alex says:

February 25, 2014 at 3:02 am

Use tcp wrappers to allow and deny connections and have an email notification when someone is trying to access from not allowed locations.

Reply 9.

Steve says:

February 26, 2014 at 6:37 pm Hi Ravi,

This is an excellent article for someone new to Linux, I have a question with regard to No 3 how do I know what is needed and what is not, as I have quite few services running. Playing around with owncloud as a practical introduction to Linux.

Reply 10.

Bash says: April 22, 2014 at 1:43 am

Thanks. Would you please explain how to setup a firewall from A to Z? It is so hard and I need your support. Thanks.

Reply 11.

iron says: May 9, 2014 at 2:43 am

Please remove the part that says to disable ipv6. This does not harden a server and is grossly untrue as to say it is not needed.

Some isp’s use ipv6. It has its place.

When an isp has ipv6, and it is setup correctly on the pc’s, it doesn’t slow things down, cause stalls, etc etc. That happens when the isp in use doesnt support the potocol and the pc’s are searching for it.

Reply 12.

Mayur says: May 21, 2014 at 9:42 pm

I want to but linux whm server so let me know which port open in configserver firewall and ad which to be 13.

(13)

block

Can you explain me the steps Regards

Mayur Reply

Purushotham says: May 30, 2014 at 11:22 pm

I would like to shift over from Windows to Linux, i have gone through ur valuable tips… can i get any links or suggestion for achieving the Certification in Linux….. kindly help… preparing for RHCSA…

Reply

Ravi Saive says: May 31, 2014 at 12:21 pm

You will find many ebooks and lerning sites for such linux certification. Go through following link for such ebooks. http://tecmint.tradepub.com/c/search.mpl?keyword=LINUX+CERTIFICATION. Reply 14. Greg says: July 20, 2014 at 12:29 am

Ravi, your article does not even touch the surface of linux hardening. Even distros where syslinux is not available can be maintained in many ways not mentioned in article. Starting from file system encryption and ending on warnings about specific services (i.e. mail servers should be tested for open relay, web servers should be kept in chrooted environment etc. etc.)

Reply 15.

Lasse says:

November 11, 2014 at 9:36 am

Great article! Way too many people do not even know how vulnerable they are. You should really work on your English though.

Reply 16.

Karthick.Ar says: November 13, 2014 at 11:06 pm 17.

(14)

Good one. Excellent. But a few tips can be added which are related to basic services. Reply

Ravi Saive says: November 14, 2014 at 9:19 pm @Karthick,

We glad that if you could provide those basic few tips, so that we could include in the article…Thanks.

Reply

Pugazhendhi says: November 14, 2014 at 5:26 pm

Hi can u suggest from where can i get more on pam authentication. I googled but unable to grab one Reply

Ravi Saive says: November 14, 2014 at 9:06 pm @Pugazhendhi,

Here is the link to the complete guide on the PAM module..

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html /Managing_Smart_Cards/Pluggable_Authentication_Modules.html Reply 18. vaibhav says: November 24, 2014 at 4:27 pm

“Minimize Packages to Minimize Vulnerability”

in this which which package/services i have to remove/stop can you please tell me Reply

Ravi Saive says: November 24, 2014 at 4:54 pm @Vaibhav,

These two articles will help you out..

http://www.tecmint.com/remove-unwanted-services-from-linux/ http://www.tecmint.com/remove-unwanted-services-in-centos-7/ Reply

(15)

Syed says:

November 24, 2014 at 5:35 pm Hi,

Thanks for sharing information. i have one query, while adding below lines in /etc/pam.d/system-auth file. Is there any problem in system booting.

password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1 Reply

20.

Leave a Reply

Name (Required)

Mail (will not be published) (Required) Website

Twitter 1838 Twitter

Facebook 42041 Facebook

Google+ 8004 Google+

(16)

Become A ecMint Subscriber to receive latest Updates.

Popular Latest Comments Tags

How to Add Linux Host to Nagios Monitoring Server Using NRPE Plugin 239 Comments

Nagios 4.0.1 Released – Install on RHEL/CentOS 6.x/5.x and Fedora 19/18/17 193 Comments

CentOS 6.4 Step by Step Installation Guide with Screenshots

Install Wine 1.6.2 Stable in RHEL/CentOS 7.0/6.x/5.x and Fedora 20-12

Install Apache 2.2.15, MySQL 5.5.34 & PHP 5.5.4 on RHEL/CentOS 6.4/5.9 & Fedora 19-12 Comments

Google Chrome 39 Released – Install on RHEL/CentOS 7/6 and Fedora 20-15

(17)

:: Download Free Linux eBooks ::

Complete Linux Command Line Cheat Sheet The GNU/Linux Advanced Administration Guide Securing & Optimizing Linux Servers

Linux Patch Management: Keeping Linux Up To Date Introduction to Linux – A Hands on Guide

Understanding the Linux® Virtual Memory Manager Linux Bible – Packed with Updates and Exercises A Newbie’s Getting Started Guide to Linux Linux from Scratch – Create Your Own Linux OS Linux Shell Scripting Cookbook, Second Edition Securing & Optimizing Linux: The Hacking Solution User Mode Linux – Understanding and Administration

(18)

Know More

Submit Order

Advertise Now

:: About ::

TecMint.com is a website that publishes practical and useful out-of-the-box articles for aspirant like you and me. We seek to present exceptional, remarkable tips, tutorials, and resources that the modern web professional will appreciate.

:: Our Services ::

We offer wide range of Linux Web Hosting and Management Services includes Linux hosting,

WordPress hosting, Joomla Hosting, CMS hosting, Website migration and Custom solutions, making us a one-stop destination for all your possible hosting needs at fair minimum rates.

:: Advertise ::

TecMint.com is visited by tens of thousands of Linux users and has a excellent reputation in the

search engine ranking. Most of the traffic comes from Google organic search (80%). Spread your messages or products to an engaged readers by advertising with us.

This work is licensed under a (cc) BY-NC | TecMint uses cookies. By using our services, you comply to use of our cookies. More info: Privacy Policy.

© 2012-2014 All Rights Reserved.

10 Useful Free Linux eBooks for Newbies and Administrators 25 Hardening Security Tips for Linux Servers

60 Commands of Linux : A Guide from Newbies to System Administrator 15 Command Line Tools to Monitor Linux Performance

5 Best Practices to Secure and Protect SSH Server 18 Tar Command Examples in Linux

20 Linux YUM (Yellowdog Updater, Modified) Commands 25 Useful Basic Commands of APT-GET and APT-CACHE

(19)

20 Funny Commands of Linux or Linux is Fun in Terminal 35 Practical Examples of Linux Find Command

References

Related documents

Indeed, the Web survey of 411 risk managers— conducted by the Flaspöhler Research Group, in partnership with National Underwriter—found that 45.8 percent are “very

• Now, we’ll look at some additional commands, enabling you to make directories, move files, copy files, remove files, view files and

You favor open pdf file using graphical as chase as command line tools ie without GUI Linux supports following PDF viewer under X window.. Portable Document Format PDF is a file

If you have a Linux web hosting account, you can use SSH to connect to our Linux servers and start using the MySQL command-line tools straight away.. If you have a Windows web

CTRL-Z will terminate output of the above or any other command. Perhaps the most useful option with grep is -s. If you search through system files as anything other than root,

telnet 23 (default) Telnet command-line interface connection -TCP SSH 22 (default) Secure Shell (SSH) command-line interface - TCP SNMP agent 161 (default) SNMP get/set commands -

Ikan papuyu betina dan jantan memiliki bobot (Gambar 1A), pertumbuhan bobot mutlak (PBM) (Gambar 1B), dan panjang baku (Gambar 1D) yang sama sampai umur 120 hpt, kemudian

5 If neither the -task or a set of files and/or folders was provided on the command line, the client must inform the user that a required option is missing and that either the