how can I know who enter web server and how can I protect my IP from others?
Your access logs should show who accesses what files.
I would install shorewall and allow incoming access only to limited services. It is very flexible in allowing you to log connections into and out of the server.
filter outgoing traffic. deny all of it and allow only for connections established to your serve and only to few destinations you need [ eg automatic updates checking for some web apps or operating system you have ]. in this way it'll be more difficult to download potentially harmful payload attacker might need. preferably limit on external firewall, in worst case on system itself [ iptables for OUTPUT on linux ]
keep your system/webapps up to date.
use fail2ban or similar to prevent password guessing. allow ftp / ssh / rdp access only from trusted list of hosts.
if you are paranoid - run consistency scans to check for file content replaced without your knowledge.
as part of security via obscurity - leave your default vhost with error page [eg 403 not permitted] and serve your actual content from other vhosts so random bot scanning based on ip address cannot harm you.